mirror of
				https://github.com/Oleg-Stepanenko-owo/IEBUS
				synced 2025-10-31 02:17:12 +00:00 
			
		
		
		
	Bug fix with package analisys
This commit is contained in:
		
							parent
							
								
									0a364bcdf2
								
							
						
					
					
						commit
						ae701c2f4a
					
				| @ -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; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -548,13 +548,19 @@ byte AVCLanDrv::getActionID(const AvcInCmdTable messageTable[], byte mtSize) | |||||||
|   if (dataSize == 6) 		idx = 0; |   if (dataSize == 6) 		idx = 0; | ||||||
|   else if (dataSize == 8) 	idx = 1; |   else if (dataSize == 8) 	idx = 1; | ||||||
|   else if (dataSize == 9) 	idx = 7; |   else if (dataSize == 9) 	idx = 7; | ||||||
|   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; | ||||||
| } | } | ||||||
|  | |||||||
| @ -25,8 +25,8 @@ | |||||||
| 
 | 
 | ||||||
| // { action_name,  packed_size, end_off_packege_word(check_sum)  }
 | // { action_name,  packed_size, end_off_packege_word(check_sum)  }
 | ||||||
| const AvcInCmdTable  mtSearchHead[] PROGMEM = { | const AvcInCmdTable  mtSearchHead[] PROGMEM = { | ||||||
|   { ACT_PREP_CAMOFF,       0x06,   0x58},      //06170D31020158
 |   { ACT_PREP_CAMOFF,       0x06,   0x58},     // 06170D31020158
 | ||||||
|   { ACT_BUTTON_DOWN,       0x08,   0xBC},	   // 08590D3102012000BC
 |   { ACT_BUTTON_DOWN,       0x08,   0xBC},	    // 08590D3102012000BC
 | ||||||
|   { ACT_BUTTON_UP,         0x08,   0xBE},     // 08590D3102012101BE
 |   { ACT_BUTTON_UP,         0x08,   0xBE},     // 08590D3102012101BE
 | ||||||
|   { ACT_B_DISPOFF,         0x08,   0x2F},     // 08590D31020122712F
 |   { ACT_B_DISPOFF,         0x08,   0x2F},     // 08590D31020122712F
 | ||||||
|   { ACT_B_DISPFULL_DOWN,   0x08,   0x43},     // 08590D310201228543
 |   { ACT_B_DISPFULL_DOWN,   0x08,   0x43},     // 08590D310201228543
 | ||||||
| @ -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;
 | ||||||
|   } |   } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| @ -181,11 +183,8 @@ void AVCLanHonda::setHondaDis( bool val ) | |||||||
|   bShowHondaDisp = val; |   bShowHondaDisp = val; | ||||||
|   setHondaDisLast( val ); |   setHondaDisLast( val ); | ||||||
|   setWaitTime(0L); |   setWaitTime(0L); | ||||||
|   if( val ) avclanBT.println("#2"); |   if ( val ) avclanBT.println("#2"); | ||||||
|   else avclanBT.println("#16"); |   else avclanBT.println("#16"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| AVCLanHonda avclanHonda; | AVCLanHonda avclanHonda; | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|  | |||||||
| @ -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; | ||||||
|  | |||||||
| @ -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; | ||||||
|  | |||||||
| @ -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,18 +72,19 @@ 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() ) { | ||||||
|         HONDA_DIS_ON; |     HONDA_DIS_ON; | ||||||
|         LED_ON; |     LED_ON; | ||||||
|   } else if ( 2 == avclanBT.getDisplayStatus() ){ |   } else if ( 2 == avclanBT.getDisplayStatus() ) { | ||||||
|         HONDA_DIS_OFF; |     HONDA_DIS_OFF; | ||||||
|         LED_OFF; |     LED_OFF; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // First 5 sec should be Honda logo
 |   // First 5 sec should be Honda logo
 | ||||||
| @ -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 ) | ||||||
|  | |||||||
| @ -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 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user