diff --git a/AVCLan_mini/AVCLanDrv.cpp b/AVCLan_mini/AVCLanDrv.cpp index 5895de0..4a2077d 100644 --- a/AVCLan_mini/AVCLanDrv.cpp +++ b/AVCLan_mini/AVCLanDrv.cpp @@ -544,7 +544,12 @@ byte AVCLanDrv::getActionID(const AvcInCmdTable messageTable[], byte mtSize) return ACT_NONE; } - byte idx = ((dataSize == 8) ? 0 : (dataSize == 9 ? 6 : 9)); // position in AvcInMessageTable + // position in AvcInMessageTable + byte idx = 0; + if (dataSize == 6) idx = 0; + else if (dataSize == 8) idx = 1; + else if (dataSize == 9) idx = 7; + else idx = 10; for (; idx < mtSize; ++idx) { if (dataSize != pgm_read_byte_near(&messageTable[idx].dataSize)) return ACT_NONE; // Because first unsized value from other range diff --git a/AVCLan_mini/AVCLanHonda.cpp b/AVCLan_mini/AVCLanHonda.cpp index 1c33e91..427c57a 100644 --- a/AVCLan_mini/AVCLanHonda.cpp +++ b/AVCLan_mini/AVCLanHonda.cpp @@ -2,20 +2,31 @@ #include "limits.h" #include "AVCLanDrv.h" #include "AVCLanHonda.h" +#include "AVCLan_BT.h" #include //-------------------------------------------------------------------------------- //-------------------------------------------------------------------------------- //TODO: master -> 131 +// < d 183 131 06170D31020158 +// +++ +// < d 183 131 08590D31020122712F +// Rear camm off + // 09780D3103024B000009 - next track ? // 08590D3102012212D0 // 08590D3102012213D1 // 08590D3102012214D2 +// 0618023102004D - mute button press +// < d 183 100 0B600D01000140165400000B - time 16:54 +// < d 100 183 0D60073100010003011018FF5008 - FM1 101.8 +// 0D60073100010000021014FF5002 - FM2 101.4 // { action_name, packed_size, end_off_packege_word(check_sum) } const AvcInCmdTable mtSearchHead[] PROGMEM = { - { ACT_BUTTON_DOWN, 0x08, 0xBC}, // 08590D3102012000BC + { ACT_PREP_CAMOFF, 0x06, 0x58}, //06170D31020158 + { ACT_BUTTON_DOWN, 0x08, 0xBC}, // 08590D3102012000BC { ACT_BUTTON_UP, 0x08, 0xBE}, // 08590D3102012101BE { ACT_B_DISPOFF, 0x08, 0x2F}, // 08590D31020122712F { ACT_B_DISPFULL_DOWN, 0x08, 0x43}, // 08590D310201228543 @@ -24,8 +35,8 @@ const AvcInCmdTable mtSearchHead[] PROGMEM = { { ACT_CAM_ON, 0x09, 0x31}, // 09590D31020194000031 { ACT_CAM_OFF, 0x09, 0x30}, // 09590D31020191020030 { ACT_DISP_OFF, 0x09, 0x2E}, // 09590D3102019100002E - { ACT_TEL, 0x0A, 0xE3}, // start Tel Action - { ACT_TEL_CANCEL, 0x0A, 0xDC} // Cancel or End Call_ACTION + { ACT_TEL, 0x0A, 0xE3}, // start Tel Action + { ACT_TEL_CANCEL, 0x0A, 0xDC} // Cancel or End Call_ACTION // { ACT_VOL, 0x0A, 0x06, {0x68, 0x02, 0x31, 0x02, 0x02, 0x00}, 0x00, {0x00}} //0x05 = 1 }; @@ -37,6 +48,7 @@ void AVCLanHonda::begin() { avclan.deviceAddress = 0x0131; + bPrepareCamOff = false; bShowHondaDisp = true; setHondaDisLast(true); bShowRearCam = false; @@ -86,8 +98,12 @@ void AVCLanHonda::processAction( AvcActionID ActionID ) return; } if ( INIT2_TIME < millis() ) bFirstStart_20 = false; - } + } + if ( bPrepareCamOff && (ACT_B_DISPOFF == ActionID) ) { + ActionID = ACT_CAM_OFF; + avclanBT.print("CAMOFF+DISPOFF"); + } else bPrepareCamOff = false; switch ( ActionID ) { case ACT_BUTTON_UP: @@ -123,6 +139,9 @@ void AVCLanHonda::processAction( AvcActionID ActionID ) bShowHondaDisp = bHondaDisLast; setWaitTime(0L); break; + case ACT_PREP_CAMOFF: + bPrepareCamOff = true; + break; } }; diff --git a/AVCLan_mini/AVCLanHonda.h b/AVCLan_mini/AVCLanHonda.h index 26b5d81..1325751 100644 --- a/AVCLan_mini/AVCLanHonda.h +++ b/AVCLan_mini/AVCLanHonda.h @@ -44,7 +44,8 @@ typedef enum { ACT_B_DISPFULL_UP, ACT_B_DISPHULF, ACT_TEL, - ACT_TEL_CANCEL + ACT_TEL_CANCEL, + ACT_PREP_CAMOFF // ACT_VOL } AvcActionID; @@ -84,10 +85,9 @@ class AVCLanHonda private: unsigned long waitTime; - bool bWait; - + bool bPrepareCamOff; bool bShowRearCam; bool bShowHondaDisp; bool bTimeSwitch; diff --git a/AVCLan_mini/AVCLan_BT.cpp b/AVCLan_mini/AVCLan_BT.cpp index 8d7bf80..a194f4d 100644 --- a/AVCLan_mini/AVCLan_BT.cpp +++ b/AVCLan_mini/AVCLan_BT.cpp @@ -161,6 +161,7 @@ void AVCLanBT::printAction( AvcActionID ActionID ) 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<<"); } } diff --git a/AVCLan_mini/AVCLan_mini.ino b/AVCLan_mini/AVCLan_mini.ino index 142b3d6..94ad7c2 100644 --- a/AVCLan_mini/AVCLan_mini.ino +++ b/AVCLan_mini/AVCLan_mini.ino @@ -78,12 +78,12 @@ void loop() avclan.printMessage(true); avclanHonda.getActionID(); - if ( avclanHonda.bFirstStart_20 && (avclan.actionID == ACT_CAM_ON) ) + if ( (INIT2_TIME > millis()) && (avclan.actionID == ACT_CAM_ON) ) { avclanBT.printAction( (AvcActionID)avclan.actionID ); avclanHonda.processAction( (AvcActionID)avclan.actionID ); } - else if ( (avclan.actionID != ACT_NONE) && ( INIT2_TIME < millis() ) && (!avclanHonda.bFreeze)) + else if ( (avclan.actionID != ACT_NONE) && ( INIT2_TIME < millis() ) && (!avclanHonda.bFreeze) ) { avclanBT.printAction((AvcActionID)avclan.actionID); avclanHonda.processAction( (AvcActionID)avclan.actionID ); @@ -133,7 +133,7 @@ void loop() //------- ERROR CHECKING BLOCK ---------------------------------- if ( (error_count > MAX_ERROR_COUNT) && !avclanHonda.isShowHondaDisp() ) { -// avclanHonda.bFirstStart_20 = false; + // avclanHonda.bFirstStart_20 = false; error_count = 0; beforeErrorComute = avclanHonda.getCommute(); diff --git a/AVCLan_mini/config.h b/AVCLan_mini/config.h index 18d1542..54336bc 100644 --- a/AVCLan_mini/config.h +++ b/AVCLan_mini/config.h @@ -1,4 +1,4 @@ -#define IEBUS_VERSION "0.7" +#define IEBUS_VERSION "0.8" // type of AVCLan hardwire driver #define AVCLAN_PCA82C250