예제 #1
0
//------------------------------------------------------------------------------
int main()
{
 PIN_Setup();
 
 //delay_ms(100);

 AVCLan_Init();

 #ifndef SNIFFER
 	iPod_Init();
 #endif

#ifdef MONITOR
	RS232_Print("********************** RESET *********************\n");
 #endif

 while (1) {

	if (INPUT_IS_SET) {	 // if message from some device on AVCLan begin
  		AVCLan_Read_Message();
		// check command from HU
		if (answerReq != 0) AVCLan_SendAnswer();
	}

	#ifndef SNIFFER
	// HandleEvent
	if (Event & EV_STATUS)
		{
		Event &= ~EV_STATUS;
	  	if (CD_Mode!=stStop) {
			AVCLan_Send_Status();
			};
		}

	if (Event & EV_DISPLAY)
		{
		Event &= ~EV_DISPLAY;
		AVCLan_Send_Changer_Status();
		}
	#endif

	RS232_SendStuff();
 } // end while(1)
}
예제 #2
0
파일: sniffer.c 프로젝트: kosiu/ToyotaCD
// -------------------------------------------------------------------------------------
//	MAIN PROGRAM
//
int main()
{

 u08 readSeq 	= 0;
 u08 s_len	= 0;
 u08 s_dig	= 0;
 u08 s_c[2];
 u08 i;
 u08 data_tmp[32];

 Setup();
 
 RS232_S((u16)PSTR("AVCLan reader 1.00\nReady\n\n"));
 LED_OFF();
 RS232_S((u16)PSTR("T - device id\n"));
 RS232_S((u16)PSTR("H - HU id\n"));
 RS232_S((u16)PSTR("S - read sequence\n"));
 RS232_S((u16)PSTR("W - send command\n"));
 RS232_S((u16)PSTR("Q - send broadcast\n"));
 RS232_S((u16)PSTR("L/l - log on/off\n"));
 RS232_S((u16)PSTR("K/k - seq. echo on/off\n"));
 RS232_S((u16)PSTR("R/r - register device\n"));
 
 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();
	}

	// HandleEvent
	switch (Event) {
	  case EV_STATUS:	Event &= ~EV_STATUS;
						AVCLan_Send_Status();
						break;
	}


	// Key handler
	if (RS232_RxCharEnd) {
		cbi(UCSR0B, RXCIE0);				// 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;// do reset Buffer
		sbi(UCSR0B, RXCIE0);				// enable RX complete interrupt
		switch (readkey) {
			case 'T':	if (readSeq) {
						  CD_ID_1 = data_tmp[0];
						  CD_ID_2 = data_tmp[1];
						  RS232_Print("DEV ID SET: 0x");
						  RS232_PrintHex8(CD_ID_1);
						  RS232_PrintHex8(CD_ID_2);
						  RS232_Print("\n");
						  showLog = 1;	
						  readSeq=0;
						} else {
						  showLog = 0;
						  RS232_Print("DEV ID SET: 0x");
						  RS232_PrintHex8(CD_ID_1);
						  RS232_PrintHex8(CD_ID_2);
						  RS232_Print("\n");
						  RS232_Print("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("HU ID SET: 0x");
						  RS232_PrintHex8(HU_ID_1);
						  RS232_PrintHex8(HU_ID_2);
						  RS232_Print("\n");
						  showLog = 1;	
						  readSeq=0;
						} else {
						  showLog = 0;
						  RS232_Print("HU ID SET: 0x");
						  RS232_PrintHex8(HU_ID_1);
						  RS232_PrintHex8(HU_ID_2);
						  RS232_Print("\n");
						  RS232_Print("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("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("REGIST:\n");
						AVCLan_Command( cmRegister );
 						_delay_us(15);
 						CHECK_AVC_LINE;
						break;
			case 'r':	AVCLan_Register();
						break;


			case 'l':	RS232_Print("Log OFF\n");
						showLog = 0;
						break;
			case 'L':	RS232_Print("Log ON\n");
						showLog = 1;
						break;

			case 'k':	RS232_Print("str OFF\n");
						showLog2 = 0;
						break;
			case 'K':	RS232_Print("str ON\n");
						showLog2 = 1;
						break;

			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("CURREENT SEQUENCE > ");
						for (i=0; i<s_len; i++) {
								RS232_PrintHex8(data_tmp[i]);
								RS232_SendByte(' ');
						}
						RS232_Print("\n");
					}
				}
		} // switch (readkey)

	}// if (RS232_RxCharEnd)

 }
 return 0;
}
예제 #3
0
//------------------------------------------------------------------------------
int main()
{

 PIN_Setup();

 AVCLan_Init();

 iPod_Init();


#ifdef MONITOR
	delay_ms(100);
	 RS232_Print("********************** RESET *********************8\n");
 #endif

 while (1) {

	//Wait1msForAVCLan();
	if ((INPUT_IS_SET>0) & (ACC_IS_ON>0)) {	 // if message from some device on AVCLan begin
  		AVCLan_Read_Message();
	} else {
		// check command from HU
		if ((answerReq != 0) & (RXState == WAITING_FOR_FF)) AVCLan_SendAnswer();
	
    }

	// HandleEvent
	if (((Event & EV_STATUS)>0) & (RXState == WAITING_FOR_FF)) {
	  	if (CD_Mode != stStop) {
			if ((CD_Mode == stFF) | (CD_Mode == stRR)) {
				if (!AVCLan_Send_Status(0x18)) Event &= ~EV_STATUS;
				}
			else
				{
			    switch (playMode) {
					case 0: if (!AVCLan_Send_Status(0x03)) Event &= ~EV_STATUS; break;
					case 1:	if (!AVCLan_Send_Status(0x10)) Event &= ~EV_STATUS; break;
				};
			};
		};
    }

	if (Event & EV_DISPLAY)	{
		if (!AVCLan_Send_Changer_Status()) Event &= ~EV_DISPLAY;;
	};

	if (ACC_IS_ON) 	{
		// audio output
		if (CD_Mode == stStop)
			CHANNELS_OFF();

		if (CD_Mode == stPlay)
			{
			if (AuxInput==Aux2)
				CHANNEL_TWO();
			if (AuxInput==Aux1)
				CHANNEL_ONE();
			}
		}	else 	{ 
			CHANNELS_OFF();
			CD_Mode = stStop;
			playMode = 0;
		};

	// iPod
	if (AUX1ISIPOD)
		iPod_Poll();
	
	if (!(ACC_IS_ON))
		registered = 0;
	// zzzzz
	//if (sleepcounter > 5)
	//	{ 
	//	CHANNELS_OFF();
	//	sleep_mode();
	//	sleepcounter = 0;
	//	}
 } // end while(1)
}