diff --git a/AVCLan_mini/AVCLanDrv.cpp b/AVCLan_mini/AVCLanDrv.cpp index bccb104..293ab17 100644 --- a/AVCLan_mini/AVCLanDrv.cpp +++ b/AVCLan_mini/AVCLanDrv.cpp @@ -99,7 +99,6 @@ byte AVCLanDrv::_readMessage () if (t < AVC_START_BIT_HOLD_ON_MIN_LENGTH) { //if (t < 0x16){ - avclanBT.print("-->t=", true); avclanBT.printDec(t); avclanBT.println(); SREG = oldSREG; return 2; } @@ -531,7 +530,6 @@ void AVCLanDrv::printMessage(bool incoming) avclanBT.printHex8(message[i]); } avclanBT.println(); - } diff --git a/AVCLan_mini/AVCLanHonda.cpp b/AVCLan_mini/AVCLanHonda.cpp index 3d27c02..663eab2 100644 --- a/AVCLan_mini/AVCLanHonda.cpp +++ b/AVCLan_mini/AVCLanHonda.cpp @@ -95,6 +95,7 @@ void AVCLanHonda::processAction( AvcActionID ActionID ) bShowHondaDisp = true; bFirstStart_20 = false; setWaitTime(0L); + avclanBT.println("#8"); return; } if ( INIT2_TIME < millis() ) bFirstStart_20 = false; @@ -102,7 +103,7 @@ void AVCLanHonda::processAction( AvcActionID ActionID ) if ( bPrepareCamOff && (ACT_B_DISPOFF == ActionID) ) { ActionID = ACT_CAM_OFF; - avclanBT.println("[CAMOFF+DISPOFF]"); + avclanBT.println("#9"); } else bPrepareCamOff = false; switch ( ActionID ) { @@ -113,6 +114,7 @@ void AVCLanHonda::processAction( AvcActionID ActionID ) if ( ULONG_MAX > (millis() + BUTT_WAIT) ) setWaitTime( (unsigned long)((millis() + BUTT_WAIT)) ); else setWaitTime( BUTT_WAIT ); + avclanBT.println("#10"); } } break; @@ -121,6 +123,7 @@ void AVCLanHonda::processAction( AvcActionID ActionID ) setHondaDisLast( isShowHondaDisp() ); bShowHondaDisp = true; setWaitTime(0L); + avclanBT.println("#11"); break; case ACT_B_DISPOFF: case ACT_B_DISPFULL_UP: @@ -130,6 +133,7 @@ void AVCLanHonda::processAction( AvcActionID ActionID ) bShowHondaDisp = false; setHondaDisLast( false ); setWaitTime(0L); + avclanBT.println("#11"); bFreeze = true; freezeTime = (millis() + FREEZE_TIME); } @@ -138,6 +142,7 @@ void AVCLanHonda::processAction( AvcActionID ActionID ) bShowRearCam = false; bShowHondaDisp = bHondaDisLast; setWaitTime(0L); + avclanBT.println("#11"); break; case ACT_PREP_CAMOFF: bPrepareCamOff = true; @@ -176,6 +181,8 @@ void AVCLanHonda::setHondaDis( bool val ) bShowHondaDisp = val; setHondaDisLast( val ); setWaitTime(0L); + if( val ) avclanBT.println("#2"); + else avclanBT.println("#16"); } diff --git a/AVCLan_mini/AVCLan_BT.cpp b/AVCLan_mini/AVCLan_BT.cpp index 0a452f8..6214347 100644 --- a/AVCLan_mini/AVCLan_BT.cpp +++ b/AVCLan_mini/AVCLan_BT.cpp @@ -3,9 +3,23 @@ #include #include #include - +//-------------------------------------------------------------------------------- +// *1 - Rear camera ON +// *2 - Rear camera Off +// *3 - Display off +// *4 - Button donw +// *5 - >>A:BUTTON UP<<" +// *6 ">>A:B_DISP_OFF<<" +// *7 ">>A:B_DISP_FULL_DOWN<<" +// *8 ">>A:B_DISP_FULL_UP<<" +// *9 ">>A:B_DISP_HILF<<" +// *10 ">>A:TEL<<" +// *11 ">>A:TEL CANCEL<<" +// *12 ">>A:PREP_CAMOFF<<" +// *99 ">>A:UNDEFINED<<"); //-------------------------------------------------------------------------------- #define E_LOGG 0 +#define E_DISPLAY 0 //-------------------------------------------------------------------------------- SoftwareSerial mySerial(4, 3); // RX | TX @@ -16,11 +30,16 @@ bool startCommand; void AVCLanBT::begin() //-------------------------------------------------------------------------------- { + dispalyStatus = 0; mySerial.begin(9600); - mySerial.println("BlueTooth is ready"); - mySerial.println("@log+@ - start logging"); - mySerial.println("@log-@ - end logging"); - mySerial.println("@save@ - save logging in EEPROM"); + mySerial.println("BlueTooth:"); + mySerial.println("@l+@"); + mySerial.println("@l-@"); + mySerial.println("@s@"); + mySerial.println("@d0,1,2@"); + // d0 - default + // d1 - always HONDA + // d2 - always GVN logging = false; command_i = 0; startCommand = false; @@ -79,20 +98,27 @@ void AVCLanBT::checkCommand( char command ) command_buff[command_i] = '\0'; startCommand = false; - if ( 0 == strcmp( command_buff, "log+" ) ) { + if ( 0 == strcmp( command_buff, "l+" ) ) { logging = true; - mySerial.println(">>Logging ON<<"); - // Serial.println(">>Logging ON<<"); - } else if ( 0 == strcmp( command_buff, "log-" ) ) { - mySerial.println(">>Logging OFF<<"); - // Serial.println(">>Logging OFF<<"); + mySerial.println("#ON"); + } else if ( 0 == strcmp( command_buff, "l-" ) ) { + mySerial.println("#OFF"); logging = false; - } else if ( 0 == strcmp( command_buff, "save" ) ) { + } else if ( 0 == strcmp( command_buff, "s" ) ) { EEPROM.write( E_LOGG, (int)logging ); + EEPROM.write( E_DISPLAY, dispalyStatus ); + mySerial.println("#Store"); + } else if ( 0 == strcmp( command_buff, "d0" ) ) { + dispalyStatus = 0; + mySerial.println("#D0"); + } else if ( 0 == strcmp( command_buff, "d1" ) ) { + dispalyStatus = 1; + mySerial.println("#D1"); + } else if ( 0 == strcmp( command_buff, "d2" ) ) { + dispalyStatus = 2; + mySerial.println("#D2"); } - println(command_buff); - // Serial.println(command_buff); } } @@ -153,29 +179,38 @@ void AVCLanBT::printAction( AvcActionID ActionID ) { switch ( ActionID ) { - case ACT_CAM_ON: mySerial.println(">>A:CAM ON<<"); break; - case ACT_CAM_OFF: mySerial.println(">>A:CAM OFF<<"); break; - case ACT_DISP_OFF: mySerial.println(">>A:DISP OFF<<"); break; - case ACT_BUTTON_DOWN: mySerial.println(">>A:BUTTON DOWN<<"); break; - case ACT_BUTTON_UP: mySerial.println(">>A:BUTTON UP<<"); break; - case ACT_B_DISPOFF: mySerial.println(">>A:B_DISP_OFF<<"); break; - case ACT_B_DISPFULL_DOWN: mySerial.println(">>A:B_DISP_FULL_DOWN<<"); break; - case ACT_B_DISPFULL_UP: mySerial.println(">>A:B_DISP_FULL_UP<<"); break; - case ACT_B_DISPHULF: mySerial.println(">>A:B_DISP_HILF<<"); break; - case ACT_TEL: mySerial.println(">>A:TEL<<"); break; - case ACT_TEL_CANCEL: mySerial.println(">>A:TEL CANCEL<<"); break; - case ACT_PREP_CAMOFF: mySerial.println(">>A:PREP_CAMOFF<<"); break; - default: mySerial.println(">>A:UNDEFINED<<"); + case ACT_CAM_ON: mySerial.println("*1"); break; + case ACT_CAM_OFF: mySerial.println("*2"); break; + case ACT_DISP_OFF: mySerial.println("*3"); break; + case ACT_BUTTON_DOWN: mySerial.println("*4"); break; + case ACT_BUTTON_UP: mySerial.println("*5"); break; + case ACT_B_DISPOFF: mySerial.println("*6"); break; + case ACT_B_DISPFULL_DOWN: mySerial.println("*7"); break; + case ACT_B_DISPFULL_UP: mySerial.println("*8"); break; + case ACT_B_DISPHULF: mySerial.println("*9"); break; + case ACT_TEL: mySerial.println("*10"); break; + case ACT_TEL_CANCEL: mySerial.println("*11"); break; + case ACT_PREP_CAMOFF: mySerial.println("*12"); break; + default: mySerial.println("*99"); } } +//-------------------------------------------------------------------------------- +int AVCLanBT::getDisplayStatus() +//-------------------------------------------------------------------------------- +{ + return dispalyStatus; +} + //-------------------------------------------------------------------------------- void AVCLanBT::EERPOM_read_config() //-------------------------------------------------------------------------------- { - if (EEPROM.read(E_LOGG) == 1 ) logging = true; + if ( EEPROM.read(E_LOGG) == 1 ) logging = true; + dispalyStatus = EEPROM.read(E_DISPLAY); logging ? mySerial.println(">>Logging ON<<") : mySerial.println(">>Logging OFF<<"); + mySerial.print("DisplStatus:"); mySerial.println(dispalyStatus); } AVCLanBT avclanBT; diff --git a/AVCLan_mini/AVCLan_BT.h b/AVCLan_mini/AVCLan_BT.h index ee9e2bd..135a9b5 100644 --- a/AVCLan_mini/AVCLan_BT.h +++ b/AVCLan_mini/AVCLan_BT.h @@ -31,9 +31,12 @@ class AVCLanBT void checkCommand(char command ); void printAction( AvcActionID ActionID ); + int getDisplayStatus(); + private: void EERPOM_read_config(); bool logging; + int dispalyStatus; }; extern AVCLanBT avclanBT; diff --git a/AVCLan_mini/AVCLan_mini.ino b/AVCLan_mini/AVCLan_mini.ino index 25bb8cd..3af4559 100644 --- a/AVCLan_mini/AVCLan_mini.ino +++ b/AVCLan_mini/AVCLan_mini.ino @@ -12,9 +12,7 @@ #define HONDA_DIS_ON sbi(COMMUT_PORT, COMMUT_OUT); #define HONDA_DIS_OFF cbi(COMMUT_PORT, COMMUT_OUT); - char BUFFF[15]; -int len = 0; //stores the length of the commands //------ Error time updating ----------------------------------------------------- // unsigned long waitErrorTime; @@ -25,6 +23,24 @@ int error_count; #define ERROR_TIME 4000 +// ERRORs------------------------------------------------------------- +// #1 - First 20 sec start, should be GVN show +// #2 - Set setHondaDis value true +// #3 - HONDA DISP ON +// #4 - HONDA DISP OFF +// #5 - after 5 sec honda logo show GVN +// #6 - reset Freeze time +// #7 - set rear cam in first 10 sek +// #8 - processAction : show rear cam in first 20 sek +// #9 - before was action for preparing cam off and now cam DISPOFF action +// #10 - set wait time +// #11 - set wait time 0 +// #12 - default action updating +// #13 - first 20 sek we should react only on rear cam on/off +// #14 - so many error comes +// #15 - after wait try to show honda display +// #16 - Set setHondaDis value false + //-------------------------------------------------------------------------------- void setup() //-------------------------------------------------------------------------------- @@ -41,9 +57,9 @@ void setup() // waitErrorTime = 0; avclanBT.begin(); - avclanBT.print("Start HONDA avclan.#", true ); - sprintf( BUFFF, "%s", IEBUS_VERSION ); + sprintf( BUFFF, "Start Ver:%s", IEBUS_VERSION ); avclanBT.println( BUFFF, true ); + avclanHonda.setHondaDis( true ); } //-------------------------------------------------------------------------------- @@ -52,21 +68,33 @@ void loop() { if ( avclanBT.available() ) { - len = avclanBT.available(); + int len = avclanBT.available(); for (int i = 0; i < len; i++) avclanBT.checkCommand(avclanBT.read()); } - if ( avclanHonda.bFirstStart_20 && !avclanHonda.isShowRearCam() && (INIT_TIME < millis()) ) - { - avclanBT.print("[setHondaDis = false]"); - avclanHonda.setHondaDis( false ); //Show GVN screen + if( 1 == avclanBT.getDisplayStatus() ){ + HONDA_DIS_ON; + LED_ON; + } else if ( 2 == avclanBT.getDisplayStatus() ){ + HONDA_DIS_OFF; + LED_OFF; + } + + // First 5 sec should be Honda logo + if ( !avclanHonda.isShowHondaDisp() && avclanHonda.bFirstStart_20 && (INIT_TIME > millis()) ) { + avclanBT.println("#1"); + avclanHonda.setHondaDis( true ); //Show GVN screen + } else if ( avclanHonda.isShowHondaDisp() && !avclanHonda.isShowRearCam() + && (INIT_TIME < millis()) && (INIT2_TIME > millis()) && avclanHonda.bFirstStart_20 ) { + avclanBT.println("#5"); + avclanHonda.setHondaDis( false ); } if ( avclanHonda.bFreeze ) { if ( avclanHonda.freezeTime < millis() ) { avclanHonda.bFreeze = false; avclanHonda.freezeTime = 0L; - avclanBT.print("[reset freezeTime]"); + avclanBT.print("#6"); } } @@ -74,7 +102,7 @@ void loop() byte res = avclan.readMessage(); if ( !res ) { - LED_OFF; + // LED_OFF; error_count = 0; avclan.printMessage(true); @@ -84,28 +112,29 @@ void loop() { if ( (INIT2_TIME > millis()) && (avclan.actionID == ACT_CAM_ON) ) { - avclanBT.println("[Time < INIT2_TIME]"); + avclanBT.println("#7"); avclanBT.printAction( (AvcActionID)avclan.actionID ); avclanHonda.processAction( (AvcActionID)avclan.actionID ); } else if ( ( INIT2_TIME < millis() ) && (!avclanHonda.bFreeze) ) { + avclanBT.println("#12"); avclanBT.printAction((AvcActionID)avclan.actionID); avclanHonda.processAction( (AvcActionID)avclan.actionID ); } else // first 20 sek we should react only on rear cam on/off { - avclanBT.println("[------SKIP------]"); + avclanBT.println("#13"); avclanBT.printAction( (AvcActionID)avclan.actionID ); - avclanBT.println("[----------------]"); } } - LED_ON; + // LED_ON; // back to screeen that was before Error: if ( error_count >= MAX_ERROR_COUNT ) { + avclanBT.println("#14"); error_count = 0; if ( !avclanHonda.isShowRearCam() ) avclanHonda.setHondaDis( beforeErrorComute ); @@ -125,7 +154,7 @@ void loop() { avclanHonda.checkWait(); if ( !avclanHonda.isWait() ) { - avclanBT.println("[reset isWait]"); + avclanBT.println("#15"); avclanHonda.tryToShowHondaDisp(); } } @@ -134,12 +163,14 @@ void loop() if ( avclanHonda.getCommute() ) { HONDA_DIS_ON; - avclanBT.println("[HONDA_DIS_ON]"); + LED_ON; + // avclanBT.println("#3"); } else { HONDA_DIS_OFF; - avclanBT.println("[HONDA_DIS_OFF]"); + LED_OFF; + // avclanBT.println("#4"); } } @@ -151,11 +182,11 @@ void loop() beforeErrorComute = avclanHonda.getCommute(); avclanHonda.setHondaDis(true); // Show Honda display - LED_OFF; + LED_ON; HONDA_DIS_ON; - avclanBT.println("[HONDA_DIS_ON]"); + avclanBT.println("#3"); - sprintf(BUFFF, "Error: %d", errorID ); + sprintf(BUFFF, "E:%d", errorID ); avclanBT.println( BUFFF, true ); } } diff --git a/AVCLan_mini/config.h b/AVCLan_mini/config.h index 54336bc..65bebfe 100644 --- a/AVCLan_mini/config.h +++ b/AVCLan_mini/config.h @@ -1,4 +1,4 @@ -#define IEBUS_VERSION "0.8" +#define IEBUS_VERSION "0.82" // type of AVCLan hardwire driver #define AVCLAN_PCA82C250