diff --git a/src/avclandrv.c b/src/avclandrv.c index c54a987..5cd33d8 100644 --- a/src/avclandrv.c +++ b/src/avclandrv.c @@ -131,8 +131,6 @@ #define TCB_CNTMODE TCB_CNTMODE_PW_gc #endif -uint16_t CD_ID; -uint16_t HU_ID; uint8_t printAllFrames; uint8_t verbose; @@ -623,7 +621,8 @@ uint8_t AVCLAN_readframe() { return 0; } - uint8_t shouldACK = !AVCLAN_ismuted() && (frame.peripheral_addr == CD_ID); + uint8_t shouldACK = + !AVCLAN_ismuted() && (frame.peripheral_addr == DEVICE_ADDR); if (shouldACK) AVCLAN_sendbit_ACK(); diff --git a/src/avclandrv.h b/src/avclandrv.h index 6ea0281..8edcf17 100644 --- a/src/avclandrv.h +++ b/src/avclandrv.h @@ -38,14 +38,10 @@ sbi(RTC.PITINTCTRL, RTC_PI_bp); \ sbi(USART0.CTRLA, USART_RXCIE_bp); -#define CHECK_AVC_LINE \ - if (!BUS_IS_IDLE) \ - AVCLAN_readframe(); - #define MAXMSGLEN 32 -extern uint16_t CD_ID; // CD Changer ID -extern uint16_t HU_ID; // Head-unit ID +#define DEVICE_ADDR 0x360 // CD Changer address +#define HU_ADDR 0x190 // Head-unit address extern uint8_t printAllFrames; extern uint8_t verbose; diff --git a/src/sniffer.c b/src/sniffer.c index 634a578..8e24fc5 100644 --- a/src/sniffer.c +++ b/src/sniffer.c @@ -50,7 +50,7 @@ int main() { uint8_t data_tmp[MAXMSGLEN]; AVCLAN_frame_t msg = { .broadcast = UNICAST, - .controller_addr = CD_ID, + .controller_addr = DEVICE_ADDR, .control = 0xF, .data = data_tmp, }; @@ -120,7 +120,7 @@ int main() { msg.peripheral_addr = 0x1FF; msg.length = s_len; AVCLAN_sendframe(&msg); - msg.peripheral_addr = HU_ID; + msg.peripheral_addr = HU_ADDR; break; case 'l': // Print received messages printAllFrames ^= 1; @@ -143,8 +143,16 @@ int main() { break; case 'b': case 'B': // Beep - // answerReq = cm_Beep; - AVCLAN_respond(); + data_tmp[0] = 0x00; + data_tmp[1] = 0x63; + data_tmp[2] = 0x29; + data_tmp[3] = 0x60; + data_tmp[4] = 0x01; + msg.length = 5; + msg.broadcast = UNICAST; + msg.controller_addr = DEVICE_ADDR; + msg.peripheral_addr = HU_ADDR; + AVCLAN_sendframe(&msg); break; case 'e': data_tmp[0] = 0x00; @@ -154,8 +162,8 @@ int main() { data_tmp[4] = 0x63; msg.length = 5; msg.broadcast = UNICAST; - msg.controller_addr = CD_ID; - msg.peripheral_addr = HU_ID; + msg.controller_addr = DEVICE_ADDR; + msg.peripheral_addr = HU_ADDR; AVCLAN_sendframe(&msg); break; @@ -225,9 +233,6 @@ int main() { } void Setup() { - CD_ID = 0x360; - HU_ID = 0x190; - printAllFrames = 1; echoCharacters = 1; readBinary = 0; @@ -257,6 +262,10 @@ void general_GPIO_init() { PORTC.PIN2CTRL = PORT_PULLUPEN_bm | PORT_ISC_INPUT_DISABLE_gc; PORTB.PIN0CTRL = PORT_PULLUPEN_bm | PORT_ISC_INPUT_DISABLE_gc; + // TODO: Remove once IGN_SENSE hardware is fixed + PORTB.DIRSET = PIN3_bm; + PORTB.OUTSET = PIN3_bm; + // Output only pins: PA3-5, PB1-2,4-5; PC0-1 // TODO: TxD (PA1), RTS (PA3) is output only, test if RxD needs the input // buffer or if the UART peripheral bypasses it