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

Uncommitted changes from 8 years ago

This commit is contained in:
Allen Hill 2023-07-16 15:46:01 -04:00
parent 1b66ecf306
commit 49ceb1e5e8
7 changed files with 1726 additions and 1562 deletions

View File

@ -10,7 +10,7 @@ sniffer.hex: sniffer.elf
avr-objcopy -j .text -j .data -O ihex sniffer.elf sniffer.hex
sniffer.elf: sniffer.o com232.o avclandrv.o GlobalDef.o
$(CC) $(LFLAGS) $(DEFS) -o sniffer.elf sniffer.o com232.o avclandrv.o GlobalDef.o
$(CC) $(LFLAGS) -o sniffer.elf sniffer.o com232.o avclandrv.o GlobalDef.o
sniffer.o: sniffer.c GlobalDef.h com232.h avclandrv.h
$(CC) $(CFLAGS) $(DEFS) sniffer.c
@ -29,8 +29,11 @@ clean::
.PHONY: upload connect size
upload: sniffer.hex
avrdude -C/home/allen/Programs/arduino-1.6.5/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -carduino -P/dev/arduino -b57600 -D -Uflash:w:sniffer.hex:i
upload-final: sniffer.hex
avrdude -C/home/allen/Programs/arduino-1.6.5/hardware/tools/avr/etc/avrdude.conf -patmega328p -cstk500v1 -P/dev/arduino -b19200 -D -U flash:w:sniffer.hex:i
upload-arduino: sniffer.hex
avrdude -C/home/allen/Programs/arduino-1.6.5/hardware/tools/avr/etc/avrdude.conf -patmega328p -carduino -P/dev/arduino -b57600 -D -U flash:w:sniffer.hex:i
connect:
@picocom --nolock -b 115200 /dev/arduino ||:

File diff suppressed because it is too large Load Diff

View File

@ -19,9 +19,9 @@
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-----------------------------------------------------------------------
this file is a part of the TOYOTA Corolla MP3 Player Project
this file is a part of the TOYOTA Corolla MP3 Player Project
-----------------------------------------------------------------------
http://www.softservice.com.pl/corolla/avc
http://www.softservice.com.pl/corolla/avc
May 28 / 2009 - version 2
@ -128,7 +128,12 @@ byte AVCLan_SendMyDataBroadcast(byte *data_tmp, byte s_len);
void ShowInMessage();
void ShowOutMessage();
void AVCLan_Measure();
#ifdef SOFTWARE_DEBUG
void AVCLan_Measure();
#endif
#ifdef HARDWARE_DEBUG
void SetHighLow();
#endif
//------------------------------------------------------------------------------
extern byte answerReq;

124
capture.md Normal file
View File

@ -0,0 +1,124 @@
``` c
HU < (bro) 190| FFF| 11 01 00 // lan_reg
out > 00 01 11 10 63 // CMD_REGISTER
HU < (bro) 190| FFF| 11 01 45 60 // Tuner in use
HU < (bro) 190| FFF| 11 01 01 // lan_init
out > 63 31 F1 00 80 FF FF FF FF 00 80 // /*
out > 63 31 F3 00 3F 00 00 00 00 02
out > 63 31 F3 00 3F 00 01 00 01 02
out > 63 31 F3 00 3D 00 01 00 01 02
out > 63 31 F3 00 39 00 01 00 01 02 // Registration gobbledygook
out > 63 31 F3 00 31 00 01 00 01 02 // probably not all necessary
out > 63 31 F3 00 21 00 01 00 01 02
out > 63 31 F1 00 90 01 FF FF FF 00 80
out > 63 31 F3 00 01 00 01 00 01 02
out > 63 31 F1 00 30 01 FF FF FF 00 80 // */
HU < (dir) 190| 360| 00 31 63 E0 // Similar to play_req1
// Logic device ID 31 => Me (63)
// Command E0
// What is logic device 31???
HU < (dir) 190| 360| 00 25 63 E4 // Also similar to play_req1
HU < (bro) 190| FFF| 01 01 59 39 // Nothing heard?
HU < (bro) 190| FFF| 01 01 59 39 // What is logic device 59???
HU < (dir) 190| 360| 00 31 63 E0
HU < (dir) 190| 360| 00 31 63 E0 // Try again?
HU < (dir) 190| 360| 00 31 63 E0
HU < (dir) 190| 360| 00 31 63 E2
HU < (dir) 190| 360| 00 31 63 E2
HU < (dir) 190| 360| 00 31 63 E2
HU < (dir) 190| 360| 00 31 63 E2
HU < (bro) 190| FFF| 11 01 00
out > 00 01 11 10 63
HU < (bro) 190| FFF| 11 01 45 60 // Tuner in use
HU < (bro) 190| FFF| 11 01 01
out > 63 31 F1 00 80 FF FF FF FF 00 80
out > 63 31 F3 00 3F 00 00 00 00 02
out > 63 31 F3 00 3F 00 01 00 01 02
out > 63 31 F3 00 3D 00 01 00 01 02
out > 63 31 F3 00 39 00 01 00 01 02
out > 63 31 F3 00 31 00 01 00 01 02
out > 63 31 F3 00 21 00 01 00 01 02
out > 63 31 F1 00 90 01 FF FF FF 00 80
out > 63 31 F3 00 01 00 01 00 01 02
out > 63 31 F1 00 30 01 FF FF FF 00 80
HU < (dir) 190| 360| 00 31 63 E0
HU < (dir) 190| 360| 00 25 63 E4
HU < (bro) 190| FFF| 01 01 59 39
HU < (bro) 190| FFF| 01 01 59 39
HU < (bro) 190| FFF| 11 01 45 60 // Tuner in use
HU < (bro) 190| FFF| 01 01 59 39
HU < (dir) 190| 360| 00 31 63 E0
HU < (dir) 190| 360| 00 31 63 E0
HU < (dir) 190| 360| 00 31 63 E0
HU < (dir) 190| 360| 00 25 63 80
out > 00 63 11 50 01
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 31 63 E2
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 31 63 E2
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 25 63 80
out > 00 63 11 50 01
HU < (dir) 190| 360| 00 31 63 E2
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 31 63 E2
HU < (dir) 190| 360| 00 25 63 80 // play_req1
out > 00 63 11 50 01 // CMD_PLAY_OK1
HU < (dir) 190| 360| 00 11 63 43 01 // stop_req
out > 00 63 11 53 01 // CMD_STOP1
out > 63 31 F1 00 30 01 01 00 00 00 80 // Player Status
HU < (bro) 190| FFF| 11 01 45 60 // Tuner in use
HU < (dir) 190| 360| 00 25 63 80 // play_req1
out > 00 63 11 50 01 // CMD_PLAY_OK1
HU < (dir) 190| 360| 00 11 63 42 41 // play_req3 but without ending 00
HU < (dir) 190| 360| 00 11 63 42 41 // Trying again?
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 25 63 80
out > 00 63 11 50 01
HU < (dir) 190| 360| 00 25 63 80
out > 00 63 11 50 01
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 25 63 80
out > 00 63 11 50 01
HU < (dir) 190| 360| 00 11 63 43 01
out > 00 63 11 53 01
out > 63 31 F1 00 30 01 01 00 00 00 80
HU < (bro) 190| FFF| 11 01 45 60 // Tuner in use
HU < (dir) 190| 360| 00 25 63 80
out > 00 63 11 50 01
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 25 63 80
out > 00 63 11 50 01
HU < (dir) 190| 360| 00 11 63 43 01
out > 00 63 11 53 01
out > 63 31 F1 00 30 01 01 00 00 00 80
HU < (bro) 190| FFF| 11 01 45 60 // Tuner in use
HU < (dir) 190| 360| 00 25 63 80
out > 00 63 11 50 01
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 11 63 42 41
HU < (dir) 190| 360| 00 11 63 43 01
out > 00 63 11 53 01
out > 63 31 F1 00 30 01 01 00 00 00 80
```

View File

@ -126,4 +126,24 @@ void RS232_PrintDec2(byte Data)
if (Data<10) RS232_SendByte('0');
RS232_PrintDec(Data);
}
char* itoa(int i, char b[]){
char const digit[] = "0123456789";
char* p = b;
if(i<0){
*p++ = '-';
i *= -1;
}
int shifter = i;
do{ //Move to where representation ends
++p;
shifter = shifter/10;
}while(shifter);
*p = '\0';
do{ //Move back, inserting digits as u go
*--p = digit[i%10];
i = i/10;
}while(i);
return b;
}
//------------------------------------------------------------------------------

View File

@ -44,6 +44,7 @@ extern void RS232_PrintHex4(byte Data);
extern void RS232_PrintHex8(byte Data);
extern void RS232_PrintDec(byte Data);
extern void RS232_PrintDec2(byte Data);
extern char* itoa(int i, char b[]);
//------------------------------------------------------------------------------
// LED

203
sniffer.c
View File

@ -52,50 +52,45 @@ byte rcv_time_clr = 0;
//
int main()
{
// byte h;
byte readSeq = 0;
byte s_len = 0;
byte s_dig = 0;
byte s_c[2];
byte i;
byte data_tmp[32];
byte readSeq = 0;
byte s_len = 0;
byte s_dig = 0;
byte s_c[2];
byte i;
byte data_tmp[32];
Setup();
TCNT0 = 0;
while( TCNT0 < 250 );
TCNT0 = 0;
while( TCNT0 < 250 );
TCNT0 = 0;
while( TCNT0 < 250 );
RS232_Print("AVCLan reader 1.00\nReady\n\n");
LED_OFF();
RS232_Print_P(PSTR("D - device id\nH - HU id\nS - read sequence\nW - send command\nQ - send broadcast\nL/l - log on/off\nK/k - seq. echo on/off\nR/r - register device\nB - Beep\nT - Measure interval\n"));
Setup();
RS232_Print("AVCLan reader 1.00\nReady\n\n");
LED_OFF();
RS232_Print_P(PSTR("\nS - read sequence\nW - send command\nQ - send broadcast\nL/l - log on/off\nK/k - seq. echo on/off\n"));
RS232_Print_P(PSTR("R/r - register device\nB - Beep\n"));
#ifdef HARDWARE_DEBUG
RS232_Print_P(PSTR("1 - Hold High/low\nE - Print line status\n"));
#endif
#ifdef SOFTWARE_DEBUG
RS232_Print_P(PSTR("M - Measure high and low lengths\n"));
#endif
while (1) {
if (INPUT_IS_SET) { // if message from some device on AVCLan begin
LED_ON();
AVCLan_Read_Message();
// show message
} else {
LED_OFF();
// check command from HU
if (answerReq != 0) AVCLan_SendAnswer();
}
if (INPUT_IS_SET) { // if message from some device on AVCLan begin
LED_ON();
AVCLan_Read_Message();
// show message
} else {
LED_OFF();
// check command from HU
if (answerReq != 0) AVCLan_SendAnswer();
}
// HandleEvent
switch (Event) {
case EV_STATUS: Event &= ~EV_STATUS;
AVCLan_Send_Status();
break;
}
// HandleEvent
switch (Event) {
case EV_STATUS: Event &= ~EV_STATUS;
AVCLan_Send_Status();
break;
}
// Key handler
@ -107,96 +102,70 @@ int main()
RS232_RxCharBegin = RS232_RxCharEnd = 0; // do reset Buffer
sbi(UCSR0B, RXCIE0); // enable RX complete interrupt
switch (readkey) {
case 'D': if (readSeq) {
CD_ID_1 = data_tmp[0];
CD_ID_2 = data_tmp[1];
RS232_Print_P(PSTR("DEV ID SET: 0x"));
RS232_PrintHex8(CD_ID_1);
RS232_PrintHex8(CD_ID_2);
RS232_Print_P(PSTR("\n"));
showLog = 1;
readSeq=0;
} else {
showLog = 0;
RS232_Print_P(PSTR("DEV ID > \n"));
readSeq = 1;
s_len=0;
s_dig=0;
s_c[0]=s_c[1]=0;
}
break;
case 'H': if (readSeq) {
HU_ID_1 = data_tmp[0];
HU_ID_2 = data_tmp[1];
RS232_Print_P(PSTR("HU ID SET: 0x"));
RS232_PrintHex8(HU_ID_1);
RS232_PrintHex8(HU_ID_2);
RS232_Print_P(PSTR("\n"));
showLog = 1;
readSeq=0;
} else {
showLog = 0;
RS232_Print_P(PSTR("HU ID > \n"));
readSeq = 1;
s_len=0;
s_dig=0;
s_c[0]=s_c[1]=0;
}
break;
case 'S': showLog = 0;
RS232_Print_P(PSTR("READ SEQUENCE > \n"));
readSeq = 1;
s_len=0;
s_dig=0;
s_c[0]=s_c[1]=0;
break;
RS232_Print_P(PSTR("READ SEQUENCE > \n"));
readSeq = 1;
s_len=0;
s_dig=0;
s_c[0]=s_c[1]=0;
break;
case 'W' : showLog = 1;
readSeq=0;
AVCLan_SendMyData(data_tmp, s_len);
break;
readSeq=0;
AVCLan_SendMyData(data_tmp, s_len);
break;
case 'Q' : showLog = 1;
readSeq=0;
AVCLan_SendMyDataBroadcast(data_tmp, s_len);
break;
readSeq=0;
AVCLan_SendMyDataBroadcast(data_tmp, s_len);
break;
case 'R': RS232_Print_P(PSTR("REGIST:\n"));
AVCLan_Command( cmRegister );
TCNT0 = 0;
while( TCNT0 < 135 );
CHECK_AVC_LINE;
break;
AVCLan_Command( cmRegister );
TCNT0 = 0;
while( TCNT0 < 135 );
CHECK_AVC_LINE;
break;
case 'r': AVCLan_Register();
break;
break;
case 'l': RS232_Print_P(PSTR("Log OFF\n"));
showLog = 0;
break;
showLog = 0;
break;
case 'L': RS232_Print_P(PSTR("Log ON\n"));
showLog = 1;
break;
showLog = 1;
break;
case 'k': RS232_Print_P(PSTR("str OFF\n"));
showLog2 = 0;
break;
showLog2 = 0;
break;
case 'K': RS232_Print_P(PSTR("str ON\n"));
showLog2 = 1;
break;
showLog2 = 1;
break;
case 'B':
data_tmp[0] = 0x00;
data_tmp[0] = 0x5E;
data_tmp[0] = 0x29;
data_tmp[0] = 0x60;
data_tmp[0] = 0x01;
s_len = 5;
AVCLan_SendMyData(data_tmp, s_len);
break;
case 'T':
AVCLan_Measure();
break;
data_tmp[0] = 0x00;
data_tmp[1] = 0x5E;
data_tmp[2] = 0x29;
data_tmp[3] = 0x60;
data_tmp[4] = 0x01;
s_len = 5;
AVCLan_SendMyData(data_tmp, s_len);
break;
#ifdef HARDWARE_DEBUG
case '1':
SetHighLow();
break;
case 'E':
if(INPUT_IS_SET) {
RS232_Print_P(PSTR("Set/High/1\n"));
} else if (INPUT_IS_CLEAR) {
RS232_Print_P(PSTR("Unset/Low/0\n"));
} else {
RS232_Print_P(PSTR("WTF?\n"));
}
break;
#endif
#ifdef SOFTWARE_DEBUG
case 'M':
AVCLan_Measure();
break;
#endif
default :
if (readSeq==1) {