mirror of
https://github.com/halleysfifthinc/Toyota-AVC-LAN
synced 2025-07-27 03:36:48 +00:00
Uncommitted changes from 8 years ago
This commit is contained in:
parent
1b66ecf306
commit
49ceb1e5e8
9
Makefile
9
Makefile
@ -10,7 +10,7 @@ sniffer.hex: sniffer.elf
|
|||||||
avr-objcopy -j .text -j .data -O ihex sniffer.elf sniffer.hex
|
avr-objcopy -j .text -j .data -O ihex sniffer.elf sniffer.hex
|
||||||
|
|
||||||
sniffer.elf: sniffer.o com232.o avclandrv.o GlobalDef.o
|
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
|
sniffer.o: sniffer.c GlobalDef.h com232.h avclandrv.h
|
||||||
$(CC) $(CFLAGS) $(DEFS) sniffer.c
|
$(CC) $(CFLAGS) $(DEFS) sniffer.c
|
||||||
@ -29,8 +29,11 @@ clean::
|
|||||||
|
|
||||||
.PHONY: upload connect size
|
.PHONY: upload connect size
|
||||||
|
|
||||||
upload: sniffer.hex
|
upload-final: 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
|
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:
|
connect:
|
||||||
@picocom --nolock -b 115200 /dev/arduino ||:
|
@picocom --nolock -b 115200 /dev/arduino ||:
|
||||||
|
138
avclandrv.c
138
avclandrv.c
@ -38,8 +38,8 @@
|
|||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
#define AVC_OUT_EN() sbi(PORTD, 6); sbi(DDRD, 6); sbi(DDRD, 7); sbi(ACSR, ACD);
|
#define AVC_OUT_EN() sbi(PORTD, 6); sbi(DDRD, 6); sbi(DDRD, 7); sbi(ACSR, ACD); // Write mode
|
||||||
#define AVC_OUT_DIS() cbi(PORTD, 6); cbi(DDRD, 6); cbi(DDRD, 7); cbi(ACSR, ACD);
|
#define AVC_OUT_DIS() cbi(PORTD, 6); cbi(DDRD, 6); cbi(DDRD, 7); cbi(ACSR, ACD); // Read mpde
|
||||||
#define AVC_SET_1() sbi(PORTD, 6);
|
#define AVC_SET_1() sbi(PORTD, 6);
|
||||||
#define AVC_SET_0() cbi(PORTD, 6);
|
#define AVC_SET_0() cbi(PORTD, 6);
|
||||||
|
|
||||||
@ -98,8 +98,6 @@ const byte lan_init[] = { 0x3, SW_ID, 0x01, 0x01 };
|
|||||||
const byte lan_check[] = { 0x3, SW_ID, 0x01, 0x20 };
|
const byte lan_check[] = { 0x3, SW_ID, 0x01, 0x20 };
|
||||||
const byte lan_playit[] = { 0x4, SW_ID, 0x01, 0x45, 0x63 };
|
const byte lan_playit[] = { 0x4, SW_ID, 0x01, 0x45, 0x63 };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const byte play_req1[] = { 0x4, 0x00, 0x25, 0x63, 0x80 };
|
const byte play_req1[] = { 0x4, 0x00, 0x25, 0x63, 0x80 };
|
||||||
|
|
||||||
#ifdef __AVENSIS__
|
#ifdef __AVENSIS__
|
||||||
@ -108,7 +106,7 @@ const byte play_req1[] = { 0x4, 0x00, 0x25, 0x63, 0x80 };
|
|||||||
const byte play_req2[] = { 0x6, 0x00, SW_ID, 0x63, 0x42, 0x01, 0x00 };
|
const byte play_req2[] = { 0x6, 0x00, SW_ID, 0x63, 0x42, 0x01, 0x00 };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const byte play_req3[] = { 0x6, 0x00, SW_ID, 0x63, 0x42, 0x41, 0x00 };
|
const byte play_req3[] = { 0x5, 0x00, SW_ID, 0x63, 0x42, 0x41 };
|
||||||
const byte stop_req[] = { 0x5, 0x00, SW_ID, 0x63, 0x43, 0x01 };
|
const byte stop_req[] = { 0x5, 0x00, SW_ID, 0x63, 0x43, 0x01 };
|
||||||
const byte stop_req2[] = { 0x5, 0x00, SW_ID, 0x63, 0x43, 0x41 };
|
const byte stop_req2[] = { 0x5, 0x00, SW_ID, 0x63, 0x43, 0x41 };
|
||||||
|
|
||||||
@ -192,6 +190,7 @@ void AVCLan_Init()
|
|||||||
// Analog comparator
|
// Analog comparator
|
||||||
|
|
||||||
cbi(ADCSRB, ACME); // Analog Comparator Multiplexer Enable - NO
|
cbi(ADCSRB, ACME); // Analog Comparator Multiplexer Enable - NO
|
||||||
|
//cbi(ADCSRA, ADEN);
|
||||||
/*
|
/*
|
||||||
cbi(ACSR, ACBG); // Analog Comparator Bandgap Select
|
cbi(ACSR, ACBG); // Analog Comparator Bandgap Select
|
||||||
// ACI: Analog Comparator Interrupt Flag
|
// ACI: Analog Comparator Interrupt Flag
|
||||||
@ -249,11 +248,11 @@ byte AVCLan_Send_StartBit()
|
|||||||
TCNT0 = 0;
|
TCNT0 = 0;
|
||||||
while( TCNT0 < 255 );
|
while( TCNT0 < 255 );
|
||||||
TCNT0 = 0;
|
TCNT0 = 0;
|
||||||
while( TCNT0 < 76 );
|
while( TCNT0 < 77 );
|
||||||
|
|
||||||
AVC_SET_0();
|
AVC_SET_0();
|
||||||
TCNT0 = 0;
|
TCNT0 = 0;
|
||||||
while( TCNT0 < 61 );
|
while( TCNT0 < 38 );
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -277,11 +276,11 @@ void AVCLan_Send_Bit0()
|
|||||||
{
|
{
|
||||||
AVC_SET_1();
|
AVC_SET_1();
|
||||||
TCNT0 = 0;
|
TCNT0 = 0;
|
||||||
while( TCNT0 < 65 ); // 28-37 us
|
while( TCNT0 < 68 ); // 28-37 us
|
||||||
|
|
||||||
AVC_SET_0();
|
AVC_SET_0();
|
||||||
TCNT0 = 0;
|
TCNT0 = 0;
|
||||||
while( TCNT0 < 15 ); // 00-09 us
|
while( TCNT0 < 11 ); // 00-09 us
|
||||||
}
|
}
|
||||||
|
|
||||||
// DONE: Timing adjusted.
|
// DONE: Timing adjusted.
|
||||||
@ -290,19 +289,15 @@ byte AVCLan_Read_ACK()
|
|||||||
{
|
{
|
||||||
AVC_SET_1();
|
AVC_SET_1();
|
||||||
TCNT0 = 0;
|
TCNT0 = 0;
|
||||||
while( TCNT0 < 39 );
|
while( TCNT0 < 38 );
|
||||||
|
|
||||||
AVC_SET_0();
|
|
||||||
TCNT0 = 0;
|
|
||||||
while( TCNT0 < 4 ); // Replace with AVC_ReleaseLine?
|
|
||||||
|
|
||||||
|
|
||||||
|
AVC_SET_0(); // Replace with AVC_ReleaseLine?
|
||||||
AVC_OUT_DIS(); // switch to read mode
|
AVC_OUT_DIS(); // switch to read mode
|
||||||
TCNT0 = 1;
|
|
||||||
while(1) {
|
while(1) {
|
||||||
if (INPUT_IS_SET && (TCNT0 > 5)) break; // Make sure INPUT is not still set from us
|
if (INPUT_IS_SET && (TCNT0 > 52 )) break; // Make sure INPUT is not still set from us
|
||||||
// Line of experimentation: Try changing TCNT0 comparison value or remove check entirely
|
// Line of experimentation: Try changing TCNT0 comparison value or remove check entirely
|
||||||
if (TCNT0 > 174 ) return 1; // Not sure if this fix is intent correct
|
if (TCNT0 > 75 ) return 1; // Not sure if this fix is intent correct
|
||||||
}
|
}
|
||||||
|
|
||||||
while(INPUT_IS_SET);
|
while(INPUT_IS_SET);
|
||||||
@ -324,11 +319,11 @@ byte AVCLan_Send_ACK()
|
|||||||
|
|
||||||
AVC_SET_1();
|
AVC_SET_1();
|
||||||
TCNT0 = 0;
|
TCNT0 = 0;
|
||||||
while( TCNT0 < 65 ); //28-37
|
while( TCNT0 < 68 ); //28-37
|
||||||
|
|
||||||
AVC_SET_0();
|
AVC_SET_0();
|
||||||
TCNT0 = 0;
|
TCNT0 = 0;
|
||||||
while( TCNT0 < 15 ); //00-09
|
while( TCNT0 < 11 ); //00-09
|
||||||
|
|
||||||
AVC_OUT_DIS();
|
AVC_OUT_DIS();
|
||||||
|
|
||||||
@ -944,53 +939,100 @@ void ShowOutMessage()
|
|||||||
AVC_ReleaseLine();
|
AVC_ReleaseLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef SOFTWARE_DEBUG
|
||||||
|
word temp_b[100];
|
||||||
|
|
||||||
void AVCLan_Measure()
|
void AVCLan_Measure()
|
||||||
{
|
{
|
||||||
STOPEvent;
|
STOPEvent;
|
||||||
|
|
||||||
word tmp, tmp1, tmp2, bit0, bit1;
|
//word tmp, tmp1, tmp2, bit0, bit1;
|
||||||
word n = 0;
|
byte n = 0;
|
||||||
|
|
||||||
cbi(TCCR1B,CS12);
|
cbi(TCCR1B,CS12);
|
||||||
TCCR1B = _BV(CS10);
|
TCCR1B = _BV(CS10);
|
||||||
|
|
||||||
while ( n < 1000 )
|
|
||||||
{
|
|
||||||
while(INPUT_IS_CLEAR);
|
|
||||||
|
|
||||||
TCNT1 = 0;
|
TCNT1 = 0;
|
||||||
|
|
||||||
while(INPUT_IS_SET);
|
char str[5];
|
||||||
|
|
||||||
tmp = TCNT1;
|
|
||||||
|
|
||||||
|
while ( n < 100 )
|
||||||
|
{
|
||||||
|
temp_b[n] = TCNT1;
|
||||||
while(INPUT_IS_CLEAR);
|
while(INPUT_IS_CLEAR);
|
||||||
|
temp_b[n+1] = TCNT1;
|
||||||
tmp1 = TCNT1;
|
|
||||||
|
|
||||||
while(INPUT_IS_SET);
|
while(INPUT_IS_SET);
|
||||||
|
temp_b[n+2] = TCNT1;
|
||||||
tmp2 = TCNT1;
|
while(INPUT_IS_CLEAR);
|
||||||
|
temp_b[n+3] = TCNT1;
|
||||||
bit0 = tmp1-tmp;
|
while(INPUT_IS_SET);
|
||||||
bit1 = tmp2-tmp1;
|
temp_b[n+4] = TCNT1;
|
||||||
|
while(INPUT_IS_CLEAR);
|
||||||
RS232_Print_P(PSTR("1,"));
|
temp_b[n+5] = TCNT1;
|
||||||
RS232_PrintDec(bit1);
|
while(INPUT_IS_SET);
|
||||||
RS232_Print_P(PSTR("\n"));
|
temp_b[n+6] = TCNT1;
|
||||||
|
while(INPUT_IS_CLEAR);
|
||||||
RS232_Print_P(PSTR("0,"));
|
temp_b[n+7] = TCNT1;
|
||||||
RS232_PrintDec(bit0);
|
while(INPUT_IS_SET);
|
||||||
RS232_Print_P(PSTR("\n"));
|
temp_b[n+8] = TCNT1;
|
||||||
n++;
|
while(INPUT_IS_CLEAR);
|
||||||
|
temp_b[n+9] = TCNT1;
|
||||||
|
while(INPUT_IS_SET);
|
||||||
|
//
|
||||||
|
// while(INPUT_IS_CLEAR);
|
||||||
|
//
|
||||||
|
// tmp1 = TCNT1;
|
||||||
|
//
|
||||||
|
// while(INPUT_IS_SET);
|
||||||
|
//
|
||||||
|
// tmp2 = TCNT1;
|
||||||
|
//
|
||||||
|
// bit0 = tmp1-tmp;
|
||||||
|
// bit1 = tmp2-tmp1;
|
||||||
|
//
|
||||||
|
// RS232_Print_P(PSTR("1,"));
|
||||||
|
// RS232_PrintDec(bit1);
|
||||||
|
// RS232_Print_P(PSTR("\n"));
|
||||||
|
//
|
||||||
|
// RS232_Print_P(PSTR("0,"));
|
||||||
|
// RS232_PrintDec(bit0);
|
||||||
|
// RS232_Print_P(PSTR("\n"));
|
||||||
|
n += 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
RS232_Print_P(PSTR("Done.\n"));
|
for(byte i =0; i < 100; i++)
|
||||||
|
{
|
||||||
|
itoa(temp_b[i],str);
|
||||||
|
if(i & 1) {
|
||||||
|
RS232_Print_P(PSTR("High,"));
|
||||||
|
} else {
|
||||||
|
RS232_Print_P(PSTR("Low,"));
|
||||||
|
}
|
||||||
|
RS232_Print(str);
|
||||||
|
RS232_Print_P(PSTR("\n"));
|
||||||
|
}
|
||||||
|
RS232_Print_P(PSTR("\nDone.\n"));
|
||||||
|
|
||||||
cbi(TCCR1B,CS10);
|
cbi(TCCR1B,CS10);
|
||||||
TCCR1B = _BV(CS12);
|
TCCR1B = _BV(CS12);
|
||||||
|
|
||||||
STARTEvent;
|
STARTEvent;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HARDWARE_DEBUG
|
||||||
|
void SetHighLow() {
|
||||||
|
AVC_OUT_EN();
|
||||||
|
sbi(TCCR1B, CS10);
|
||||||
|
word n = 60000;
|
||||||
|
TCNT1 = 0;
|
||||||
|
AVC_SET_1();
|
||||||
|
while ( TCNT1 < n );
|
||||||
|
TCNT1 = 0;
|
||||||
|
AVC_SET_0();
|
||||||
|
while ( TCNT1 < n );
|
||||||
|
cbi(TCCR1B, CS10);
|
||||||
|
AVC_OUT_DIS();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
@ -128,7 +128,12 @@ byte AVCLan_SendMyDataBroadcast(byte *data_tmp, byte s_len);
|
|||||||
void ShowInMessage();
|
void ShowInMessage();
|
||||||
void ShowOutMessage();
|
void ShowOutMessage();
|
||||||
|
|
||||||
|
#ifdef SOFTWARE_DEBUG
|
||||||
void AVCLan_Measure();
|
void AVCLan_Measure();
|
||||||
|
#endif
|
||||||
|
#ifdef HARDWARE_DEBUG
|
||||||
|
void SetHighLow();
|
||||||
|
#endif
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
extern byte answerReq;
|
extern byte answerReq;
|
||||||
|
124
capture.md
Normal file
124
capture.md
Normal 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
|
||||||
|
|
||||||
|
```
|
20
com232.c
20
com232.c
@ -126,4 +126,24 @@ void RS232_PrintDec2(byte Data)
|
|||||||
if (Data<10) RS232_SendByte('0');
|
if (Data<10) RS232_SendByte('0');
|
||||||
RS232_PrintDec(Data);
|
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;
|
||||||
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
1
com232.h
1
com232.h
@ -44,6 +44,7 @@ extern void RS232_PrintHex4(byte Data);
|
|||||||
extern void RS232_PrintHex8(byte Data);
|
extern void RS232_PrintHex8(byte Data);
|
||||||
extern void RS232_PrintDec(byte Data);
|
extern void RS232_PrintDec(byte Data);
|
||||||
extern void RS232_PrintDec2(byte Data);
|
extern void RS232_PrintDec2(byte Data);
|
||||||
|
extern char* itoa(int i, char b[]);
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// LED
|
// LED
|
||||||
|
91
sniffer.c
91
sniffer.c
@ -52,8 +52,6 @@ byte rcv_time_clr = 0;
|
|||||||
//
|
//
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// byte h;
|
|
||||||
|
|
||||||
|
|
||||||
byte readSeq = 0;
|
byte readSeq = 0;
|
||||||
byte s_len = 0;
|
byte s_len = 0;
|
||||||
@ -63,20 +61,17 @@ int main()
|
|||||||
byte data_tmp[32];
|
byte data_tmp[32];
|
||||||
|
|
||||||
Setup();
|
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");
|
RS232_Print("AVCLan reader 1.00\nReady\n\n");
|
||||||
LED_OFF();
|
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"));
|
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) {
|
while (1) {
|
||||||
|
|
||||||
@ -107,44 +102,6 @@ int main()
|
|||||||
RS232_RxCharBegin = RS232_RxCharEnd = 0; // do reset Buffer
|
RS232_RxCharBegin = RS232_RxCharEnd = 0; // do reset Buffer
|
||||||
sbi(UCSR0B, RXCIE0); // enable RX complete interrupt
|
sbi(UCSR0B, RXCIE0); // enable RX complete interrupt
|
||||||
switch (readkey) {
|
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;
|
case 'S': showLog = 0;
|
||||||
RS232_Print_P(PSTR("READ SEQUENCE > \n"));
|
RS232_Print_P(PSTR("READ SEQUENCE > \n"));
|
||||||
readSeq = 1;
|
readSeq = 1;
|
||||||
@ -160,8 +117,6 @@ int main()
|
|||||||
readSeq=0;
|
readSeq=0;
|
||||||
AVCLan_SendMyDataBroadcast(data_tmp, s_len);
|
AVCLan_SendMyDataBroadcast(data_tmp, s_len);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case 'R': RS232_Print_P(PSTR("REGIST:\n"));
|
case 'R': RS232_Print_P(PSTR("REGIST:\n"));
|
||||||
AVCLan_Command( cmRegister );
|
AVCLan_Command( cmRegister );
|
||||||
TCNT0 = 0;
|
TCNT0 = 0;
|
||||||
@ -170,15 +125,12 @@ int main()
|
|||||||
break;
|
break;
|
||||||
case 'r': AVCLan_Register();
|
case 'r': AVCLan_Register();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case 'l': RS232_Print_P(PSTR("Log OFF\n"));
|
case 'l': RS232_Print_P(PSTR("Log OFF\n"));
|
||||||
showLog = 0;
|
showLog = 0;
|
||||||
break;
|
break;
|
||||||
case 'L': RS232_Print_P(PSTR("Log ON\n"));
|
case 'L': RS232_Print_P(PSTR("Log ON\n"));
|
||||||
showLog = 1;
|
showLog = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'k': RS232_Print_P(PSTR("str OFF\n"));
|
case 'k': RS232_Print_P(PSTR("str OFF\n"));
|
||||||
showLog2 = 0;
|
showLog2 = 0;
|
||||||
break;
|
break;
|
||||||
@ -187,16 +139,33 @@ int main()
|
|||||||
break;
|
break;
|
||||||
case 'B':
|
case 'B':
|
||||||
data_tmp[0] = 0x00;
|
data_tmp[0] = 0x00;
|
||||||
data_tmp[0] = 0x5E;
|
data_tmp[1] = 0x5E;
|
||||||
data_tmp[0] = 0x29;
|
data_tmp[2] = 0x29;
|
||||||
data_tmp[0] = 0x60;
|
data_tmp[3] = 0x60;
|
||||||
data_tmp[0] = 0x01;
|
data_tmp[4] = 0x01;
|
||||||
s_len = 5;
|
s_len = 5;
|
||||||
AVCLan_SendMyData(data_tmp, s_len);
|
AVCLan_SendMyData(data_tmp, s_len);
|
||||||
break;
|
break;
|
||||||
case 'T':
|
|
||||||
|
#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();
|
AVCLan_Measure();
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
default :
|
default :
|
||||||
if (readSeq==1) {
|
if (readSeq==1) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user