1
0
mirror of https://github.com/Oleg-Stepanenko-owo/IEBUS synced 2025-06-25 00:36:13 +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()); while (!avclan.isAvcBusFree());
} }
// else avclan.printMessage(true); else avclan.printMessage(true);
return res; return res;
} }
@ -538,8 +538,8 @@ void AVCLanDrv::printMessage(bool incoming)
byte AVCLanDrv::getActionID(const AvcInCmdTable messageTable[], byte mtSize) byte AVCLanDrv::getActionID(const AvcInCmdTable messageTable[], byte mtSize)
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
{ {
if ( ((slaveAddress != deviceAddress) && (slaveAddress != 0x0FFF)) if ( ((dataSize < 8) && ( dataSize != 6 )) || (dataSize > 10 ) ) {
|| (( dataSize < 8) || (dataSize > 10 )) ) { avclanBT.println("#18");
return ACT_NONE; return ACT_NONE;
} }
@ -551,11 +551,17 @@ byte AVCLanDrv::getActionID(const AvcInCmdTable messageTable[], byte mtSize)
else idx = 10; else idx = 10;
for (; idx < mtSize; ++idx) { 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) ) if ( message[dataSize - 1] == pgm_read_byte_near(&messageTable[idx].command) )
{
avclanBT.println("#20");
return pgm_read_byte_near( &messageTable[idx].actionID ); return pgm_read_byte_near( &messageTable[idx].actionID );
} }
}
return ACT_NONE; return ACT_NONE;
} }

View File

@ -46,9 +46,9 @@ const byte mtSearchHeadSize = sizeof(mtSearchHead) / sizeof(AvcInCmdTable);
void AVCLanHonda::begin() void AVCLanHonda::begin()
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
{ {
avclan.deviceAddress = 0x0131; // avclan.deviceAddress = 0x0131;
bPrepareCamOff = false; // bPrepareCamOff = false;
bShowHondaDisp = true; bShowHondaDisp = true;
setHondaDisLast(true); setHondaDisLast(true);
bShowRearCam = false; bShowRearCam = false;
@ -81,6 +81,7 @@ void AVCLanHonda::getActionID()
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
{ {
avclan.actionID = avclan.getActionID( mtSearchHead, mtSearchHeadSize ); avclan.actionID = avclan.getActionID( mtSearchHead, mtSearchHeadSize );
avclanBT.println("#17");
}; };
// process action // process action
@ -101,10 +102,10 @@ void AVCLanHonda::processAction( AvcActionID ActionID )
if ( INIT2_TIME < millis() ) bFirstStart_20 = false; if ( INIT2_TIME < millis() ) bFirstStart_20 = false;
} }
if ( bPrepareCamOff && (ACT_B_DISPOFF == ActionID) ) { // if ( bPrepareCamOff && (ACT_B_DISPOFF == ActionID) ) {
ActionID = ACT_CAM_OFF; // ActionID = ACT_CAM_OFF;
avclanBT.println("#9"); // avclanBT.println("#9");
} else bPrepareCamOff = false; // } else bPrepareCamOff = false;
switch ( ActionID ) { switch ( ActionID ) {
case ACT_BUTTON_UP: case ACT_BUTTON_UP:
@ -138,15 +139,16 @@ void AVCLanHonda::processAction( AvcActionID ActionID )
freezeTime = (millis() + FREEZE_TIME); freezeTime = (millis() + FREEZE_TIME);
} }
break; break;
case ACT_PREP_CAMOFF:
case ACT_CAM_OFF: case ACT_CAM_OFF:
bShowRearCam = false; bShowRearCam = false;
bShowHondaDisp = bHondaDisLast; bShowHondaDisp = bHondaDisLast;
setWaitTime(0L); setWaitTime(0L);
avclanBT.println("#11"); avclanBT.println("#11");
break; break;
case ACT_PREP_CAMOFF: // case ACT_PREP_CAMOFF:
bPrepareCamOff = true; // bPrepareCamOff = true;
break; // break;
} }
}; };
@ -185,7 +187,4 @@ void AVCLanHonda::setHondaDis( bool val )
else avclanBT.println("#16"); else avclanBT.println("#16");
} }
AVCLanHonda avclanHonda; AVCLanHonda avclanHonda;

View File

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

View File

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

View File

@ -40,6 +40,10 @@ int error_count;
// #14 - so many error comes // #14 - so many error comes
// #15 - after wait try to show honda display // #15 - after wait try to show honda display
// #16 - Set setHondaDis value false // #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() void setup()
@ -49,6 +53,8 @@ void setup()
LED_ON; LED_ON;
// Serial.begin(9600); // Serial.begin(9600);
// Serial.print("Init by 9600");
avclan.begin(); avclan.begin();
avclanHonda.begin(); avclanHonda.begin();
errorID = 0; errorID = 0;
@ -66,10 +72,11 @@ void setup()
void loop() void loop()
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
{ {
// int len = 0; //avclanBT.available();
if ( avclanBT.available() ) if ( avclanBT.available() )
{ {
int len = avclanBT.available(); // Serial.print("available");
for (int i = 0; i < len; i++) avclanBT.checkCommand(avclanBT.read()); avclanBT.checkCommand(avclanBT.read());
} }
if ( 1 == avclanBT.getDisplayStatus() ) { if ( 1 == avclanBT.getDisplayStatus() ) {
@ -104,8 +111,6 @@ void loop()
{ {
// LED_OFF; // LED_OFF;
error_count = 0; error_count = 0;
avclan.printMessage(true);
avclanHonda.getActionID(); avclanHonda.getActionID();
if ( avclan.actionID != ACT_NONE ) 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 // type of AVCLan hardwire driver
#define AVCLAN_PCA82C250 #define AVCLAN_PCA82C250