//------------------------------------------------------------------------------ void ShowInMessage() { if (message_len==0) return; AVC_HoldLine(); RS232_S((u16)PSTR("HU < (")); if (broadcast==0) RS232_S((u16)PSTR("bro) ")); else RS232_Print("dir) "); RS232_PrintHex4(master1); RS232_PrintHex8(master2); RS232_Print("| "); RS232_PrintHex4(slave1); RS232_PrintHex8(slave2); RS232_Print("| "); u08 i; for (i=0;i<message_len;i++) { RS232_PrintHex8(message[i]); RS232_Print(" "); } RS232_Print("\n"); AVC_ReleaseLine(); }
//------------------------------------------------------------------------------ void ShowOutMessage() { u08 i; AVC_HoldLine(); RS232_S((u16)PSTR("out > ")); for (i=0; i<data_len; i++) { RS232_PrintHex8(data[i]); RS232_SendByte(' '); } RS232_Print("\n"); AVC_ReleaseLine(); }
// ------------------------------------------------------------------------------------- // 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; }