File tree Expand file tree Collapse file tree 2 files changed +30
-2
lines changed
Expand file tree Collapse file tree 2 files changed +30
-2
lines changed Original file line number Diff line number Diff line change @@ -1339,7 +1339,9 @@ typedef struct __attribute__((packed)) {
13391339
13401340typedef enum {
13411341 FLOAT_COMMAND_ID = 101 , // float/refloat custom commands
1342+ LCM_COMMAND_ID = 202 , // bms custom commands
13421343} custom_app_data_command_ids ;
1344+
13431345typedef enum {
13441346 FLOAT_COMMAND_GET_INFO = 0 , // get version / package info
13451347 FLOAT_COMMAND_GET_RTDATA = 1 , // get rt data
@@ -1404,6 +1406,10 @@ typedef enum {
14041406 DEBUG = 255 ,
14051407} control_commands ;
14061408
1409+ typedef enum {
1410+ LCM_COMMAND_EXTERNAL_SHUTDOWN_STATUS = 0 , // shutdown status notification
1411+ } LCM_commands ;
1412+
14071413typedef enum {
14081414 BOOT_DEFAULT = 0 ,
14091415 BOOT_REDWHITEBLUE = 1 ,
Original file line number Diff line number Diff line change @@ -333,12 +333,34 @@ uint8_t Protocol_Parse(uint8_t * message)
333333
334334 case COMM_CUSTOM_APP_DATA :
335335
336- if (len < 12 ) {
336+ if (len < 3 ) {
337337 break ;
338338 }
339339 uint8_t magicnr = pdata [ind ++ ];
340340 uint8_t cmdid = pdata [ind ++ ];
341- if ((magicnr != FLOAT_COMMAND_ID ) || (cmdid != FLOAT_COMMAND_LCM_POLL )) {
341+
342+ if (magicnr == LCM_COMMAND_ID )
343+ {
344+ switch (cmdid )
345+ {
346+ case LCM_COMMAND_EXTERNAL_SHUTDOWN_STATUS :
347+ if (len != 4 ) return 1 ;
348+ if (Power_Flag == 2 &&
349+ pdata [ind ] == 1 ) // shutting down
350+ {
351+ #ifdef ADV2
352+ Power_Flag = 5 ;
353+ Power_Time = 0 ;
354+ Idle_Time = 0 ;
355+ #endif
356+ }
357+ break ;
358+ }
359+
360+ return 0 ;
361+ }
362+
363+ if ((magicnr != FLOAT_COMMAND_ID ) || (cmdid != FLOAT_COMMAND_LCM_POLL ) || (len < 12 )) {
342364 break ;
343365 }
344366 data .floatPackageSupported = true;
You can’t perform that action at this time.
0 commit comments