1
0
mirror of https://github.com/Oleg-Stepanenko-owo/IEBUS synced 2025-06-27 09:46:30 +00:00

added some loggs; added new command for eerom

This commit is contained in:
OlegStepanenko_noute 2016-05-14 16:43:22 +03:00
parent e806f0d3e4
commit 0a364bcdf2
6 changed files with 127 additions and 53 deletions

View File

@ -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();
}

View File

@ -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");
}

View File

@ -3,9 +3,23 @@
#include <SoftwareSerial.h>
#include <avr/pgmspace.h>
#include <EEPROM.h>
//--------------------------------------------------------------------------------
// *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;

View File

@ -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;

View File

@ -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 );
}
}

View File

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