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

View File

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

View File

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