1
0
mirror of https://github.com/halleysfifthinc/Toyota-AVC-LAN synced 2025-06-07 07:56:21 +00:00

Switch master/slave replacements to OSHWA recommended controller/peripheral

This commit is contained in:
Allen Hill 2023-09-03 13:42:12 -04:00
parent 3e008f32eb
commit b736816de0
3 changed files with 31 additions and 29 deletions

View File

@ -437,27 +437,27 @@ uint8_t AVCLAN_readframe() {
frame.broadcast = AVCLan_Read_Byte(1, &parity);
parity = 0;
uint8_t *sender_hi = ((uint8_t *)&frame.sender_addr) + 1;
uint8_t *sender_lo = ((uint8_t *)&frame.sender_addr) + 0;
*sender_hi = AVCLan_Read_Byte(4, &parity);
*sender_lo = AVCLan_Read_Byte(8, &parity);
uint8_t *controller_hi = ((uint8_t *)&frame.controller_addr) + 1;
uint8_t *controller_lo = ((uint8_t *)&frame.controller_addr) + 0;
*controller_hi = AVCLan_Read_Byte(4, &parity);
*controller_lo = AVCLan_Read_Byte(8, &parity);
if ((parity & 1) != AVCLan_Read_Byte(1, &parity_check)) {
STARTEvent;
return 0;
}
parity = 0;
uint8_t *responder_hi = ((uint8_t *)&frame.responder_addr) + 1;
uint8_t *responder_lo = ((uint8_t *)&frame.responder_addr) + 0;
*responder_hi = AVCLan_Read_Byte(4, &parity);
*responder_lo = AVCLan_Read_Byte(8, &parity);
uint8_t *peripheral_hi = ((uint8_t *)&frame.peripheral_addr) + 1;
uint8_t *peripheral_lo = ((uint8_t *)&frame.peripheral_addr) + 0;
*peripheral_hi = AVCLan_Read_Byte(4, &parity);
*peripheral_lo = AVCLan_Read_Byte(8, &parity);
if ((parity & 1) != AVCLan_Read_Byte(1, &parity_check)) {
STARTEvent;
return 0;
}
// is this command for me ?
for_me = (frame.responder_addr == CD_ID);
for_me = (frame.peripheral_addr == CD_ID);
if (for_me)
AVCLan_Send_ACK();
@ -602,16 +602,16 @@ uint8_t AVCLAN_sendframe(const AVCLAN_frame_t *frame) {
AVCLan_Send_StartBit();
AVCLAN_sendbits((uint8_t *)&frame->broadcast, 1);
parity = AVCLAN_sendbits(&frame->sender_addr, 12);
parity = AVCLAN_sendbits(&frame->controller_addr, 12);
AVCLan_Send_ParityBit(parity);
parity = AVCLAN_sendbits(&frame->responder_addr, 12);
parity = AVCLAN_sendbits(&frame->peripheral_addr, 12);
AVCLan_Send_ParityBit(parity);
if (!frame->broadcast && AVCLan_Read_ACK()) {
AVC_OUT_DIS();
STARTEvent;
RS232_Print("Error NAK: Responder\n");
RS232_Print("Error NAK: Addresses\n");
return 1;
}
@ -664,8 +664,8 @@ uint8_t AVCLAN_sendframe(const AVCLAN_frame_t *frame) {
uint8_t AVCLan_SendInitCommands() {
uint8_t r;
AVCLAN_frame_t frame = {.broadcast = BROADCAST,
.sender_addr = CD_ID,
.responder_addr = HU_ID,
.controller_addr = CD_ID,
.peripheral_addr = HU_ID,
.control = 0xF,
.length = c1.length};
frame.data = (uint8_t *)&c1.data[0];
@ -731,8 +731,8 @@ void AVCLan_Send_Status() {
STATUS[9] = 0;
AVCLAN_frame_t status = {.broadcast = UNICAST,
.sender_addr = CD_ID,
.responder_addr = HU_ID,
.controller_addr = CD_ID,
.peripheral_addr = HU_ID,
.control = 0xF,
.length = 11,
.data = &STATUS[0]};
@ -743,8 +743,8 @@ void AVCLan_Send_Status() {
uint8_t AVCLan_SendAnswer() {
uint8_t r = 0;
AVCLAN_frame_t frame = {.broadcast = UNICAST,
.sender_addr = CD_ID,
.responder_addr = HU_ID,
.controller_addr = CD_ID,
.peripheral_addr = HU_ID,
.control = 0xF,
.length = 0};
@ -858,8 +858,8 @@ uint8_t AVCLan_SendAnswer() {
void AVCLan_Register() {
AVCLAN_frame_t register_frame = {.broadcast = CMD_REGISTER.broadcast,
.sender_addr = CD_ID,
.responder_addr = HU_ID,
.controller_addr = CD_ID,
.peripheral_addr = HU_ID,
.control = 0xF,
.length = CMD_REGISTER.length,
.data = (uint8_t *)&CMD_REGISTER.data[0]};
@ -881,8 +881,8 @@ uint8_t incBCD(uint8_t data) {
}
void AVCLAN_printframe(const AVCLAN_frame_t *frame) {
if (frame->responder_addr == CD_ID ||
(frame->broadcast && frame->responder_addr == 0x1FF))
if (frame->peripheral_addr == CD_ID ||
(frame->broadcast && frame->peripheral_addr == 0x1FF))
RS232_Print(" < ");
else
RS232_Print(">< ");
@ -890,11 +890,11 @@ void AVCLAN_printframe(const AVCLAN_frame_t *frame) {
RS232_PrintHex4(frame->broadcast);
RS232_Print(" 0x");
RS232_PrintHex4(*(((uint8_t *)&frame->sender_addr) + 1));
RS232_PrintHex8(*(((uint8_t *)&frame->sender_addr) + 0));
RS232_PrintHex4(*(((uint8_t *)&frame->controller_addr) + 1));
RS232_PrintHex8(*(((uint8_t *)&frame->controller_addr) + 0));
RS232_Print(" 0x");
RS232_PrintHex4(*(((uint8_t *)&frame->responder_addr) + 1));
RS232_PrintHex8(*(((uint8_t *)&frame->responder_addr) + 0));
RS232_PrintHex4(*(((uint8_t *)&frame->peripheral_addr) + 1));
RS232_PrintHex8(*(((uint8_t *)&frame->peripheral_addr) + 0));
RS232_Print(" 0x");
RS232_PrintHex4(frame->control);

View File

@ -98,8 +98,8 @@ typedef struct AVCLAN_KnownMessage_struct {
typedef struct AVCLAN_frame_struct {
uint8_t valid;
MSG_TYPE_t broadcast;
uint16_t sender_addr; // formerly "master"
uint16_t responder_addr; // formerly "slave"
uint16_t controller_addr; // formerly "master"
uint16_t peripheral_addr; // formerly "slave"
uint8_t control;
uint8_t length;
uint8_t *data;

View File

@ -50,7 +50,7 @@ int main() {
uint8_t data_tmp[32];
AVCLAN_frame_t msg = {
.broadcast = UNICAST,
.sender_addr = CD_ID,
.controller_addr = CD_ID,
.control = 0xF,
.data = data_tmp,
};
@ -116,8 +116,10 @@ int main() {
printAllFrames = 1;
readSeq = 0;
msg.broadcast = BROADCAST;
msg.peripheral_addr = 0x1FF;
msg.length = s_len;
AVCLAN_sendframe(&msg);
msg.peripheral_addr = HU_ID;
break;
case 'R':
RS232_Print("REGIST:\n");