1
0
mirror of https://github.com/Oleg-Stepanenko-owo/IEBUS synced 2025-06-24 16:26:10 +00:00

Bug fix with package analisys

This commit is contained in:
OlegStepanenko_noute 2016-05-15 16:37:44 +03:00
parent 0a364bcdf2
commit ae701c2f4a
6 changed files with 49 additions and 37 deletions

View File

@ -199,7 +199,7 @@ byte AVCLanDrv::readMessage ()
{
while (!avclan.isAvcBusFree());
}
// else avclan.printMessage(true);
else avclan.printMessage(true);
return res;
}
@ -538,8 +538,8 @@ void AVCLanDrv::printMessage(bool incoming)
byte AVCLanDrv::getActionID(const AvcInCmdTable messageTable[], byte mtSize)
//--------------------------------------------------------------------------------
{
if ( ((slaveAddress != deviceAddress) && (slaveAddress != 0x0FFF))
|| (( dataSize < 8) || (dataSize > 10 )) ) {
if ( ((dataSize < 8) && ( dataSize != 6 )) || (dataSize > 10 ) ) {
avclanBT.println("#18");
return ACT_NONE;
}
@ -548,13 +548,19 @@ byte AVCLanDrv::getActionID(const AvcInCmdTable messageTable[], byte mtSize)
if (dataSize == 6) idx = 0;
else if (dataSize == 8) idx = 1;
else if (dataSize == 9) idx = 7;
else idx = 10;
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
if (dataSize != pgm_read_byte_near(&messageTable[idx].dataSize)) {
avclanBT.println("#19");
return ACT_NONE; // Because first unsized value from other range
}
if ( message[dataSize - 1] == pgm_read_byte_near(&messageTable[idx].command) )
{
avclanBT.println("#20");
return pgm_read_byte_near( &messageTable[idx].actionID );
}
}
return ACT_NONE;
}

View File

@ -25,8 +25,8 @@
// { action_name, packed_size, end_off_packege_word(check_sum) }
const AvcInCmdTable mtSearchHead[] PROGMEM = {
{ ACT_PREP_CAMOFF, 0x06, 0x58}, //06170D31020158
{ 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
@ -46,9 +46,9 @@ const byte mtSearchHeadSize = sizeof(mtSearchHead) / sizeof(AvcInCmdTable);
void AVCLanHonda::begin()
//--------------------------------------------------------------------------------
{
avclan.deviceAddress = 0x0131;
// avclan.deviceAddress = 0x0131;
bPrepareCamOff = false;
// bPrepareCamOff = false;
bShowHondaDisp = true;
setHondaDisLast(true);
bShowRearCam = false;
@ -81,6 +81,7 @@ void AVCLanHonda::getActionID()
//--------------------------------------------------------------------------------
{
avclan.actionID = avclan.getActionID( mtSearchHead, mtSearchHeadSize );
avclanBT.println("#17");
};
// process action
@ -101,10 +102,10 @@ void AVCLanHonda::processAction( AvcActionID ActionID )
if ( INIT2_TIME < millis() ) bFirstStart_20 = false;
}
if ( bPrepareCamOff && (ACT_B_DISPOFF == ActionID) ) {
ActionID = ACT_CAM_OFF;
avclanBT.println("#9");
} else bPrepareCamOff = false;
// if ( bPrepareCamOff && (ACT_B_DISPOFF == ActionID) ) {
// ActionID = ACT_CAM_OFF;
// avclanBT.println("#9");
// } else bPrepareCamOff = false;
switch ( ActionID ) {
case ACT_BUTTON_UP:
@ -138,15 +139,16 @@ void AVCLanHonda::processAction( AvcActionID ActionID )
freezeTime = (millis() + FREEZE_TIME);
}
break;
case ACT_PREP_CAMOFF:
case ACT_CAM_OFF:
bShowRearCam = false;
bShowHondaDisp = bHondaDisLast;
setWaitTime(0L);
avclanBT.println("#11");
break;
case ACT_PREP_CAMOFF:
bPrepareCamOff = true;
break;
// case ACT_PREP_CAMOFF:
// bPrepareCamOff = true;
// break;
}
};
@ -181,11 +183,8 @@ void AVCLanHonda::setHondaDis( bool val )
bShowHondaDisp = val;
setHondaDisLast( val );
setWaitTime(0L);
if( val ) avclanBT.println("#2");
if ( val ) avclanBT.println("#2");
else avclanBT.println("#16");
}
AVCLanHonda avclanHonda;

View File

@ -87,7 +87,7 @@ class AVCLanHonda
bool bWait;
bool bPrepareCamOff;
// bool bPrepareCamOff;
bool bShowRearCam;
bool bShowHondaDisp;
bool bTimeSwitch;

View File

@ -19,7 +19,7 @@
// *99 ">>A:UNDEFINED<<");
//--------------------------------------------------------------------------------
#define E_LOGG 0
#define E_DISPLAY 0
#define E_DISPLAY 1
//--------------------------------------------------------------------------------
SoftwareSerial mySerial(4, 3); // RX | TX
@ -88,6 +88,8 @@ int AVCLanBT::available()
void AVCLanBT::checkCommand( char command )
//--------------------------------------------------------------------------------
{
// Serial.print("command:"); Serial.println(command);
if ( (command == '@') && !startCommand ) {
startCommand = true;
command_i = 0;
@ -107,7 +109,7 @@ void AVCLanBT::checkCommand( char command )
} else if ( 0 == strcmp( command_buff, "s" ) ) {
EEPROM.write( E_LOGG, (int)logging );
EEPROM.write( E_DISPLAY, dispalyStatus );
mySerial.println("#Store");
mySerial.print("#S:"); mySerial.print(logging); mySerial.print(":"); mySerial.println(dispalyStatus);
} else if ( 0 == strcmp( command_buff, "d0" ) ) {
dispalyStatus = 0;
mySerial.println("#D0");
@ -118,7 +120,7 @@ void AVCLanBT::checkCommand( char command )
dispalyStatus = 2;
mySerial.println("#D2");
}
println(command_buff);
// println(command_buff);
}
}
@ -209,8 +211,8 @@ void AVCLanBT::EERPOM_read_config()
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);
logging ? mySerial.println("Log+;") : mySerial.println("Log-;");
mySerial.print("Disp:"); mySerial.println(dispalyStatus);
}
AVCLanBT avclanBT;

View File

@ -40,6 +40,10 @@ int error_count;
// #14 - so many error comes
// #15 - after wait try to show honda display
// #16 - Set setHondaDis value false
// #17 - call getActionID function
// #18 - ((dataSize < 8) && ( dataSize != 6 )) || (dataSize > 10 ) // for fast action pars
// #19 - return NOT Action find
// #20 - Action find OK
//--------------------------------------------------------------------------------
void setup()
@ -49,6 +53,8 @@ void setup()
LED_ON;
// Serial.begin(9600);
// Serial.print("Init by 9600");
avclan.begin();
avclanHonda.begin();
errorID = 0;
@ -66,18 +72,19 @@ void setup()
void loop()
//--------------------------------------------------------------------------------
{
// int len = 0; //avclanBT.available();
if ( avclanBT.available() )
{
int len = avclanBT.available();
for (int i = 0; i < len; i++) avclanBT.checkCommand(avclanBT.read());
// Serial.print("available");
avclanBT.checkCommand(avclanBT.read());
}
if( 1 == avclanBT.getDisplayStatus() ){
HONDA_DIS_ON;
LED_ON;
} else if ( 2 == avclanBT.getDisplayStatus() ){
HONDA_DIS_OFF;
LED_OFF;
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
@ -104,8 +111,6 @@ void loop()
{
// LED_OFF;
error_count = 0;
avclan.printMessage(true);
avclanHonda.getActionID();
if ( avclan.actionID != ACT_NONE )

View File

@ -1,4 +1,4 @@
#define IEBUS_VERSION "0.82"
#define IEBUS_VERSION "0.9"
// type of AVCLan hardwire driver
#define AVCLAN_PCA82C250