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

Reformat using clang format

This commit is contained in:
Allen Hill 2023-08-18 21:27:32 -04:00
parent e8d7f5b297
commit 1da1a52c68
8 changed files with 1193 additions and 1127 deletions

6
.clang-format Normal file
View File

@ -0,0 +1,6 @@
---
BasedOnStyle: LLVM
UseCRLF: false
BreakBeforeBraces: Attach
AllowShortBlocksOnASingleLine: Empty
...

View File

@ -1,36 +1,35 @@
/*
Copyright (C) 2006 Marcin Slonicki <marcin@softservice.com.pl>.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-----------------------------------------------------------------------
this file is a part of the TOYOTA Corolla MP3 Player Project
-----------------------------------------------------------------------
http://www.softservice.com.pl/corolla/avc
May 28 / 2009 - version 2
*/
#include "GlobalDef.h"
// max 10 events in fifo
byte EventCount;
byte EventCmd[10];
byte Event;
byte showLog;
byte showLog2;
/*
Copyright (C) 2006 Marcin Slonicki <marcin@softservice.com.pl>.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-----------------------------------------------------------------------
this file is a part of the TOYOTA Corolla MP3 Player Project
-----------------------------------------------------------------------
http://www.softservice.com.pl/corolla/avc
May 28 / 2009 - version 2
*/
#include "GlobalDef.h"
// max 10 events in fifo
byte EventCount;
byte EventCmd[10];
byte Event;
byte showLog;
byte showLog2;

View File

@ -12,49 +12,49 @@
#include <avr/io.h>
#define FALSE 0
#define TRUE (!FALSE)
#define FALSE 0
#define TRUE (!FALSE)
// AVC LAN bus on AC2 (PA6/7)
// PA6 AINP0 +
// PA7 AINN1 -
#define INPUT_IS_SET ( bit_is_set( AC2_STATUS, AC_STATE_bp ) )
#define INPUT_IS_CLEAR ( bit_is_clear( AC2_STATUS, AC_STATE_bp ) )
#define INPUT_IS_SET (bit_is_set(AC2_STATUS, AC_STATE_bp))
#define INPUT_IS_CLEAR (bit_is_clear(AC2_STATUS, AC_STATE_bp))
#define LED_DDR DDRB
#define LED_PORT PORTB
#define LEDOUT _BV(PORT5)
#define LED_DDR DDRB
#define LED_PORT PORTB
#define LEDOUT _BV(PORT5)
#define sbi(port, bit) (port) |= (1 << (bit)) // Set bit (i.e. to 1)
#define cbi(port, bit) (port) &= ~(1 << (bit)) // Clear bit (i.e. set bit to 0)
typedef unsigned char byte;
typedef unsigned int word;
typedef unsigned char byte;
typedef unsigned int word;
inline void LedOff( void );
inline void LedOn( void );
inline void LedOff(void);
inline void LedOn(void);
// max 10 events in fifo
extern byte EventCount;
extern byte EventCmd[10];
extern byte Event;
#define EV_NOTHING 0
#define EV_DISPLAY 1
#define EV_STATUS 4
#define EV_NOTHING 0
#define EV_DISPLAY 1
#define EV_STATUS 4
// const
#define smYear 1
#define smMonth 2
#define smDay 3
#define smHour 4
#define smMin 5
#define smWDay 6
#define smYear 1
#define smMonth 2
#define smDay 3
#define smHour 4
#define smMin 5
#define smWDay 6
//#define STOPEvent cbi(TIMSK, TOIE1); cbi(UCSRB, RXCIE);
//#define STARTEvent sbi(TIMSK, TOIE1); sbi(UCSRB, RXCIE);
// #define STOPEvent cbi(TIMSK, TOIE1); cbi(UCSRB, RXCIE);
// #define STARTEvent sbi(TIMSK, TOIE1); sbi(UCSRB, RXCIE);
extern byte showLog;
extern byte showLog2;
#endif // _GLOBALDEF_H_
#endif // _GLOBALDEF_H_

File diff suppressed because it is too large Load Diff

View File

@ -27,66 +27,67 @@
*/
#ifndef __AVCLANDRV_H
#define __AVCLANDRV_H
#include "GlobalDef.h"
#define STOPEvent cbi(RTC.PITINTCTRL, RTC_PI_bp); cbi(USART0.CTRLA, USART_RXCIE_bp);
#define STARTEvent sbi(RTC.PITINTCTRL, RTC_PI_bp); sbi(USART0.CTRLA, USART_RXCIE_bp);
#define STOPEvent \
cbi(RTC.PITINTCTRL, RTC_PI_bp); \
cbi(USART0.CTRLA, USART_RXCIE_bp);
#define STARTEvent \
sbi(RTC.PITINTCTRL, RTC_PI_bp); \
sbi(USART0.CTRLA, USART_RXCIE_bp);
#define CHECK_AVC_LINE if (INPUT_IS_SET) AVCLan_Read_Message();
#define CHECK_AVC_LINE \
if (INPUT_IS_SET) \
AVCLan_Read_Message();
void AVC_HoldLine();
void AVC_ReleaseLine();
#define MAXMSGLEN 32
#define MAXMSGLEN 32
// Head Unid ID
extern byte HU_ID_1; // 0x01
extern byte HU_ID_2; // 0x40
extern byte CD_ID_1; // 0x03
extern byte CD_ID_2; // 0x60
extern byte HU_ID_1; // 0x01
extern byte HU_ID_2; // 0x40
extern byte CD_ID_1; // 0x03
extern byte CD_ID_2; // 0x60
// DVD CHANGER
//#define CD_ID_1 0x02
//#define CD_ID_2 0x50
// #define CD_ID_1 0x02
// #define CD_ID_2 0x50
#define cmNull 0
#define cmStatus1 1
#define cmStatus2 2
#define cmStatus3 3
#define cmStatus4 4
#define cmNull 0
#define cmStatus1 1
#define cmStatus2 2
#define cmStatus3 3
#define cmStatus4 4
#define cmRegister 100
#define cmInit 101
#define cmCheck 102
#define cmPlayIt 103
#define cmBeep 110
#define cmRegister 100
#define cmInit 101
#define cmCheck 102
#define cmPlayIt 103
#define cmBeep 110
#define cmNextTrack 120
#define cmPrevTrack 121
#define cmNextDisc 122
#define cmPrevDisc 123
#define cmNextTrack 120
#define cmPrevTrack 121
#define cmNextDisc 122
#define cmPrevDisc 123
#define cmScanModeOn 130
#define cmScanModeOff 131
#define cmScanModeOn 130
#define cmScanModeOff 131
#define cmPlayReq1 5
#define cmPlayReq2 6
#define cmPlayReq3 7
#define cmStopReq 8
#define cmStopReq2 9
#define cmPlayReq1 5
#define cmPlayReq2 6
#define cmPlayReq3 7
#define cmStopReq 8
#define cmStopReq2 9
typedef enum { stStop=0, stPlay=1 } cd_modes;
typedef enum { stStop = 0, stPlay = 1 } cd_modes;
extern cd_modes CD_Mode;
extern byte broadcast;
extern byte master1;
extern byte master2;
@ -104,12 +105,12 @@ void AVCLan_Send_Status();
void AVCLan_Init();
void AVCLan_Register();
byte AVCLan_SendData();
byte AVCLan_SendAnswer();
byte AVCLan_SendDataBroadcast();
byte AVCLan_Command(byte command);
byte AVCLan_SendData();
byte AVCLan_SendAnswer();
byte AVCLan_SendDataBroadcast();
byte AVCLan_Command(byte command);
byte incBCD(byte data);
byte incBCD(byte data);
extern byte check_timeout;
@ -127,10 +128,10 @@ void ShowInMessage();
void ShowOutMessage();
#ifdef SOFTWARE_DEBUG
void AVCLan_Measure();
void AVCLan_Measure();
#endif
#ifdef HARDWARE_DEBUG
void SetHighLow();
void SetHighLow();
#endif
extern byte answerReq;

179
com232.c
View File

@ -16,126 +16,123 @@
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
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include "com232.h"
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
byte RS232_RxCharBuffer[25], RS232_RxCharBegin, RS232_RxCharEnd;
byte readkey;
void RS232_Init(void)
{
// // init LED
// sbi(DDRB, 5);
// cbi(PORTB, 5);
void RS232_Init(void) {
// // init LED
// sbi(DDRB, 5);
// cbi(PORTB, 5);
RS232_RxCharBegin = RS232_RxCharEnd = 0;
RS232_RxCharBegin = RS232_RxCharEnd = 0;
USART0.CTRLA = USART_RXCIE_bm; // Enable receive interrupts
USART0.CTRLB = USART_RXEN_bm | USART_TXEN_bm | USART_RXMODE_NORMAL_gc; // Enable Rx/Tx and set receive mode normal
USART0.CTRLC = USART_CMODE_ASYNCHRONOUS_gc | USART_PMODE_DISABLED_gc | USART_CHSIZE_8BIT_gc | USART_SBMODE_1BIT_gc; // Async UART with 8N1 config
USART0.BAUD = 256; // 250k baud rate (64*F_CPU/(16*250k)) for F_CPU = 16MHz
USART0.CTRLA = USART_RXCIE_bm; // Enable receive interrupts
USART0.CTRLB = USART_RXEN_bm | USART_TXEN_bm |
USART_RXMODE_NORMAL_gc; // Enable Rx/Tx and set receive mode
// normal
USART0.CTRLC = USART_CMODE_ASYNCHRONOUS_gc | USART_PMODE_DISABLED_gc |
USART_CHSIZE_8BIT_gc |
USART_SBMODE_1BIT_gc; // Async UART with 8N1 config
USART0.BAUD = 256; // 250k baud rate (64*F_CPU/(16*250k)) for F_CPU = 16MHz
}
ISR(USART0_RXC_vect)
{
RS232_RxCharBuffer[RS232_RxCharEnd] = USART0_RXDATAL; // Store received character to the End of Buffer
RS232_RxCharEnd++;
ISR(USART0_RXC_vect) {
RS232_RxCharBuffer[RS232_RxCharEnd] = USART0_RXDATAL; // Store received
// character to the End
// of Buffer
RS232_RxCharEnd++;
}
void RS232_SendByte(byte Data)
{
loop_until_bit_is_set(USART0_STATUS, USART_DREIF_bp); // wait for UART to become available
USART0_TXDATAL = Data; // send character
void RS232_SendByte(byte Data) {
loop_until_bit_is_set(USART0_STATUS,
USART_DREIF_bp); // wait for UART to become available
USART0_TXDATAL = Data; // send character
}
void RS232_Print_P(const char * str_addr)
{
register byte c;
while ( (c = pgm_read_byte(str_addr++) ) )
{
if (c == '\n')
RS232_SendByte('\r');
RS232_SendByte(c);
}
void RS232_Print_P(const char *str_addr) {
register byte c;
while ((c = pgm_read_byte(str_addr++))) {
if (c == '\n')
RS232_SendByte('\r');
RS232_SendByte(c);
}
}
void RS232_Print(const char *pBuf)
{
register byte c;
while ((c = *pBuf++))
{
if (c == '\n')
RS232_SendByte('\r');
RS232_SendByte(c);
}
void RS232_Print(const char *pBuf) {
register byte c;
while ((c = *pBuf++)) {
if (c == '\n')
RS232_SendByte('\r');
RS232_SendByte(c);
}
}
void RS232_PrintHex4(byte Data)
{
byte Character = Data & 0x0f;
Character += '0';
if (Character > '9')
Character += 'A' - '0' - 10;
RS232_SendByte(Character);
void RS232_PrintHex4(byte Data) {
byte Character = Data & 0x0f;
Character += '0';
if (Character > '9')
Character += 'A' - '0' - 10;
RS232_SendByte(Character);
}
void RS232_PrintHex8(byte Data)
{
RS232_PrintHex4(Data >> 4);
RS232_PrintHex4(Data);
void RS232_PrintHex8(byte Data) {
RS232_PrintHex4(Data >> 4);
RS232_PrintHex4(Data);
}
void RS232_PrintDec(byte Data)
{
if (Data>99) {
RS232_SendByte('*');
return;
}
if (Data<10) {
RS232_SendByte('0'+Data);
return;
}
byte c;
unsigned short v,v1;
v = Data;
v1 = v/10;
c = '0' + (v-v1*10);
RS232_SendByte('0'+v1);
RS232_SendByte(c);
void RS232_PrintDec(byte Data) {
if (Data > 99) {
RS232_SendByte('*');
return;
}
if (Data < 10) {
RS232_SendByte('0' + Data);
return;
}
byte c;
unsigned short v, v1;
v = Data;
v1 = v / 10;
c = '0' + (v - v1 * 10);
RS232_SendByte('0' + v1);
RS232_SendByte(c);
}
void RS232_PrintDec2(byte Data)
{
if (Data<10) RS232_SendByte('0');
RS232_PrintDec(Data);
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;
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

@ -1,49 +1,45 @@
/*
Copyright (C) 2006 Marcin Slonicki <marcin@softservice.com.pl>.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-----------------------------------------------------------------------
this file is a part of the TOYOTA Corolla MP3 Player Project
-----------------------------------------------------------------------
http://www.softservice.com.pl/corolla/avc
May 28 / 2009 - version 2
*/
#ifndef __COM232_H
#define __COM232_H
#include "GlobalDef.h"
extern byte RS232_RxCharBuffer[25], RS232_RxCharBegin, RS232_RxCharEnd;
extern byte readkey;
void RS232_Init(void);
extern void RS232_Print_P(const char * str_addr);
extern void RS232_SendByte(byte Data);
extern void RS232_Print(const char *pBuf);
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
#define LED_ON() cbi(PORTB, 5)
#define LED_OFF() sbi(PORTB, 5)
#endif // __COM232_H
/*
Copyright (C) 2006 Marcin Slonicki <marcin@softservice.com.pl>.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-----------------------------------------------------------------------
this file is a part of the TOYOTA Corolla MP3 Player Project
-----------------------------------------------------------------------
http://www.softservice.com.pl/corolla/avc
May 28 / 2009 - version 2
*/
#ifndef __COM232_H
#define __COM232_H
#include "GlobalDef.h"
extern byte RS232_RxCharBuffer[25], RS232_RxCharBegin, RS232_RxCharEnd;
extern byte readkey;
void RS232_Init(void);
extern void RS232_Print_P(const char *str_addr);
extern void RS232_SendByte(byte Data);
extern void RS232_Print(const char *pBuf);
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[]);
#endif // __COM232_H

328
sniffer.c
View File

@ -24,13 +24,13 @@
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include "GlobalDef.h"
#include "com232.h"
#include "avclandrv.h"
#include "com232.h"
void Setup();
@ -38,198 +38,208 @@ byte rcv_command[5];
byte rcv_pos = 0;
byte rcv_time_clr = 0;
int main()
{
byte readSeq = 0;
byte s_len = 0;
byte s_dig = 0;
byte s_c[2];
byte i;
byte data_tmp[32];
int main() {
byte readSeq = 0;
byte s_len = 0;
byte s_dig = 0;
byte s_c[2];
byte i;
byte data_tmp[32];
Setup();
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"));
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"));
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"));
RS232_Print_P(PSTR("M - Measure high and low lengths\n"));
#endif
while (1) {
while (1) {
if (INPUT_IS_SET) { // if message from some device on AVCLan begin
// LED_ON();
AVCLan_Read_Message();
// show message
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();
// LED_OFF();
// check command from HU
if (answerReq != 0)
AVCLan_SendAnswer();
}
// HandleEvent
switch (Event) {
case EV_STATUS: Event &= ~EV_STATUS;
AVCLan_Send_Status();
break;
case EV_STATUS:
Event &= ~EV_STATUS;
AVCLan_Send_Status();
break;
}
// Key handler
if (RS232_RxCharEnd) {
cbi(USART0.CTRLA, USART_RXCIE_bp); // disable RX complete interrupt
readkey = RS232_RxCharBuffer[RS232_RxCharBegin]; // read begin of received Buffer
RS232_RxCharBegin++;
if (RS232_RxCharBegin == RS232_RxCharEnd) // if Buffer is empty
RS232_RxCharBegin = RS232_RxCharEnd = 0; // reset Buffer
sbi(USART0.CTRLA, USART_RXCIE_bp); // enable RX complete interrupt
switch (readkey) {
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;
case 'W' : showLog = 1;
readSeq=0;
AVCLan_SendMyData(data_tmp, s_len);
break;
case 'Q' : showLog = 1;
readSeq=0;
AVCLan_SendMyDataBroadcast(data_tmp, s_len);
break;
case 'R': RS232_Print_P(PSTR("REGIST:\n"));
AVCLan_Command( cmRegister );
TCB1.CNT = 0;
while( TCB1.CNT < 540 );
CHECK_AVC_LINE;
break;
case 'r': AVCLan_Register();
break;
case 'l': RS232_Print_P(PSTR("Log OFF\n"));
showLog = 0;
break;
case 'L': RS232_Print_P(PSTR("Log ON\n"));
showLog = 1;
break;
case 'k': RS232_Print_P(PSTR("str OFF\n"));
showLog2 = 0;
break;
case 'K': RS232_Print_P(PSTR("str ON\n"));
showLog2 = 1;
break;
case 'B':
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;
cbi(USART0.CTRLA, USART_RXCIE_bp); // disable RX complete interrupt
readkey = RS232_RxCharBuffer[RS232_RxCharBegin]; // read begin of received
// Buffer
RS232_RxCharBegin++;
if (RS232_RxCharBegin == RS232_RxCharEnd) // if Buffer is empty
RS232_RxCharBegin = RS232_RxCharEnd = 0; // reset Buffer
sbi(USART0.CTRLA, USART_RXCIE_bp); // enable RX complete interrupt
switch (readkey) {
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;
case 'W':
showLog = 1;
readSeq = 0;
AVCLan_SendMyData(data_tmp, s_len);
break;
case 'Q':
showLog = 1;
readSeq = 0;
AVCLan_SendMyDataBroadcast(data_tmp, s_len);
break;
case 'R':
RS232_Print_P(PSTR("REGIST:\n"));
AVCLan_Command(cmRegister);
TCB1.CNT = 0;
while (TCB1.CNT < 540) {}
CHECK_AVC_LINE;
break;
case 'r':
AVCLan_Register();
break;
case 'l':
RS232_Print_P(PSTR("Log OFF\n"));
showLog = 0;
break;
case 'L':
RS232_Print_P(PSTR("Log ON\n"));
showLog = 1;
break;
case 'k':
RS232_Print_P(PSTR("str OFF\n"));
showLog2 = 0;
break;
case 'K':
RS232_Print_P(PSTR("str ON\n"));
showLog2 = 1;
break;
case 'B':
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;
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;
case 'M':
AVCLan_Measure();
break;
#endif
default :
if (readSeq==1) {
s_c[s_dig]=readkey;
default:
if (readSeq == 1) {
s_c[s_dig] = readkey;
s_dig++;
if (s_dig==2) {
if (s_c[0]<':') s_c[0] -= 48;
else s_c[0] -= 55;
data_tmp[s_len] = 16 * s_c[0];
if (s_c[1]<':') s_c[1] -= 48;
else s_c[1] -= 55;
data_tmp[s_len] += s_c[1];
s_len++;
s_dig=0;
s_c[0]=s_c[1]=0;
}
if (showLog2) {
RS232_Print_P(PSTR("CURRENT SEQUENCE > "));
for (i=0; i<s_len; i++) {
RS232_PrintHex8(data_tmp[i]);
RS232_SendByte(' ');
}
RS232_Print_P(PSTR("\n"));
}
}
} // switch (readkey)
}// if (RS232_RxCharEnd)
}
return 0;
s_dig++;
if (s_dig == 2) {
if (s_c[0] < ':')
s_c[0] -= 48;
else
s_c[0] -= 55;
data_tmp[s_len] = 16 * s_c[0];
if (s_c[1] < ':')
s_c[1] -= 48;
else
s_c[1] -= 55;
data_tmp[s_len] += s_c[1];
s_len++;
s_dig = 0;
s_c[0] = s_c[1] = 0;
}
if (showLog2) {
RS232_Print_P(PSTR("CURRENT SEQUENCE > "));
for (i = 0; i < s_len; i++) {
RS232_PrintHex8(data_tmp[i]);
RS232_SendByte(' ');
}
RS232_Print_P(PSTR("\n"));
}
}
} // switch (readkey)
} // if (RS232_RxCharEnd)
}
return 0;
}
void Setup()
{
CD_ID_1 = 0x03;
CD_ID_2 = 0x60;
void Setup() {
CD_ID_1 = 0x03;
CD_ID_2 = 0x60;
HU_ID_1 = 0x01;
HU_ID_2 = 0x90;
HU_ID_1 = 0x01;
HU_ID_2 = 0x90;
showLog = 1;
showLog2 = 1;
showLog = 1;
showLog2 = 1;
// Default is zero; resetting/zeroing unnecessary
// MCUCR = 0;
// Default is zero; resetting/zeroing unnecessary
// MCUCR = 0;
loop_until_bit_is_clear(RTC_STATUS, RTC_CTRLABUSY_bp);
RTC.CTRLA = RTC_PRESCALER_DIV1_gc;
RTC.CLKSEL = RTC_CLKSEL_INT32K_gc;
RTC.PITINTCTRL = RTC_PI_bm;
loop_until_bit_is_clear(RTC_PITSTATUS, RTC_CTRLBUSY_bp);
RTC.PITCTRLA = RTC_PERIOD_CYC32768_gc | RTC_PITEN_bm;
loop_until_bit_is_clear(RTC_STATUS, RTC_CTRLABUSY_bp);
RTC.CTRLA = RTC_PRESCALER_DIV1_gc;
RTC.CLKSEL = RTC_CLKSEL_INT32K_gc;
RTC.PITINTCTRL = RTC_PI_bm;
loop_until_bit_is_clear(RTC_PITSTATUS, RTC_CTRLBUSY_bp);
RTC.PITCTRLA = RTC_PERIOD_CYC32768_gc | RTC_PITEN_bm;
RS232_Init();
RS232_Init();
AVCLan_Init();
AVCLan_Init();
Event = EV_NOTHING;
sei();
Event = EV_NOTHING;
sei();
}
// Periodic interrupt with a 1 sec period
ISR(RTC_PIT_vect)
{
if (CD_Mode==stPlay)
{
cd_Time_Sec=incBCD(cd_Time_Sec);
if (cd_Time_Sec==0x60) {
cd_Time_Sec = 0;
cd_Time_Min=incBCD(cd_Time_Min);
if (cd_Time_Min==0xA0) {
cd_Time_Min=0x0;
}
}
ISR(RTC_PIT_vect) {
if (CD_Mode == stPlay) {
cd_Time_Sec = incBCD(cd_Time_Sec);
if (cd_Time_Sec == 0x60) {
cd_Time_Sec = 0;
cd_Time_Min = incBCD(cd_Time_Min);
if (cd_Time_Min == 0xA0) {
cd_Time_Min = 0x0;
}
}
Event |= EV_STATUS;
RTC.PITINTFLAGS |= RTC_PI_bm;
}
Event |= EV_STATUS;
RTC.PITINTFLAGS |= RTC_PI_bm;
}