@@ -58,18 +58,23 @@ var FlightLogParser = function(logData) {
5858 //Predict that this field is minthrottle
5959 FLIGHT_LOG_FIELD_PREDICTOR_MINMOTOR = 11 ,
6060
61+ //Predict that this field is dshot status and other data
62+ FLIGHT_LOG_FIELD_PREDICTOR_DSHOT_STATUS_N_VOLTAGE = 12 ,
63+ FLIGHT_LOG_FIELD_PREDICTOR_DSHOT_STATUS_N_ERPM_FRACTION_18 = 13 ,
64+
6165 //Home coord predictors appear in pairs (two copies of FLIGHT_LOG_FIELD_PREDICTOR_HOME_COORD). Rewrite the second
6266 //one we see to this to make parsing easier
6367 FLIGHT_LOG_FIELD_PREDICTOR_HOME_COORD_1 = 256 ,
6468
65- FLIGHT_LOG_FIELD_ENCODING_SIGNED_VB = 0 , // Signed variable-byte
66- FLIGHT_LOG_FIELD_ENCODING_UNSIGNED_VB = 1 , // Unsigned variable-byte
67- FLIGHT_LOG_FIELD_ENCODING_NEG_14BIT = 3 , // Unsigned variable-byte but we negate the value before storing, value is 14 bits
68- FLIGHT_LOG_FIELD_ENCODING_TAG8_8SVB = 6 ,
69- FLIGHT_LOG_FIELD_ENCODING_TAG2_3S32 = 7 ,
70- FLIGHT_LOG_FIELD_ENCODING_TAG8_4S16 = 8 ,
71- FLIGHT_LOG_FIELD_ENCODING_NULL = 9 , // Nothing is written to the file, take value to be zero
72- FLIGHT_LOG_FIELD_ENCODING_TAG2_3SVARIABLE = 10 ,
69+ FLIGHT_LOG_FIELD_ENCODING_SIGNED_VB = 0 , // Signed variable-byte
70+ FLIGHT_LOG_FIELD_ENCODING_UNSIGNED_VB = 1 , // Unsigned variable-byte
71+ FLIGHT_LOG_FIELD_ENCODING_NEG_14BIT = 3 , // Unsigned variable-byte but we negate the value before storing, value is 14 bits
72+ FLIGHT_LOG_FIELD_ENCODING_TAG8_8SVB = 6 ,
73+ FLIGHT_LOG_FIELD_ENCODING_TAG2_3S32 = 7 ,
74+ FLIGHT_LOG_FIELD_ENCODING_TAG8_4S16 = 8 ,
75+ FLIGHT_LOG_FIELD_ENCODING_NULL = 9 , // Nothing is written to the file, take value to be zero
76+ FLIGHT_LOG_FIELD_ENCODING_TAG2_3SVARIABLE = 10 ,
77+ FLIGHT_LOG_FIELD_ENCODING_PACK_1F_1F_1F_1G_4U_8U = 11 , // 1 flagBit, 1 flagBit, 1 flagBit, 1 gapBit, 4 unsignedIntBit, 8 unsignedIntBit
7378
7479 FLIGHT_LOG_EVENT_LOG_END = 255 ,
7580
@@ -513,9 +518,9 @@ var FlightLogParser = function(logData) {
513518 function translateFieldName ( fieldName ) {
514519 var translation = translationValues [ fieldName ] ;
515520 if ( typeof translation !== 'undefined' ) {
516- return translation ;
521+ return translation ;
517522 } else {
518- return fieldName ;
523+ return fieldName ;
519524 }
520525 }
521526
@@ -585,14 +590,14 @@ var FlightLogParser = function(logData) {
585590 case "Cleanflight" :
586591 that . sysConfig . firmwareType = FIRMWARE_TYPE_CLEANFLIGHT ;
587592 $ ( 'html' ) . removeClass ( 'isBaseF' ) ;
588- $ ( 'html' ) . addClass ( 'isCF' ) ;
593+ $ ( 'html' ) . addClass ( 'isCF' ) ;
589594 $ ( 'html' ) . removeClass ( 'isBF' ) ;
590595 $ ( 'html' ) . removeClass ( 'isINAV' ) ;
591596 break ;
592597 default :
593598 that . sysConfig . firmwareType = FIRMWARE_TYPE_BASEFLIGHT ;
594599 $ ( 'html' ) . addClass ( 'isBaseF' ) ;
595- $ ( 'html' ) . removeClass ( 'isCF' ) ;
600+ $ ( 'html' ) . removeClass ( 'isCF' ) ;
596601 $ ( 'html' ) . removeClass ( 'isBF' ) ;
597602 $ ( 'html' ) . removeClass ( 'isINAV' ) ;
598603 }
@@ -919,7 +924,7 @@ var FlightLogParser = function(logData) {
919924 $ ( 'html' ) . addClass ( 'isINAV' ) ;
920925 } else {
921926
922- // Cleanflight 1.x and others
927+ // Cleanflight 1.x and others
923928 that . sysConfig . firmwareVersion = '0.0.0' ;
924929 that . sysConfig . firmware = 0.0 ;
925930 that . sysConfig . firmwarePatch = 0 ;
@@ -1080,6 +1085,40 @@ var FlightLogParser = function(logData) {
10801085 % that . sysConfig . frameIntervalPDenom < that . sysConfig . frameIntervalPNum ;
10811086 }
10821087
1088+ /**
1089+ * Debug data interpretation depends on the chosen debug mode encodings and other parameters could need to be fixed
1090+ */
1091+ function assimilateDebugMode ( sysConfig , frameDef )
1092+ {
1093+ var k ;
1094+
1095+ console . log ( "Debug mode is " + DEBUG_MODE [ sysConfig . debug_mode ] + ":" + sysConfig . debug_mode ) ;
1096+
1097+ if ( DEBUG_MODE [ sysConfig . debug_mode ] . startsWith ( "DSHOT_STATUS_N_" ) )
1098+ {
1099+ for ( k = 0 ; k < frameDef . name . length ; k ++ )
1100+ {
1101+ if ( frameDef . name [ k ] . startsWith ( "debug" ) ) {
1102+ // Assimilate encoding depending on debug mode
1103+ frameDef . encoding [ k ] = FLIGHT_LOG_FIELD_ENCODING_PACK_1F_1F_1F_1G_4U_8U ;
1104+
1105+ // Assimilate predictor depending on debug mode
1106+ switch ( DEBUG_MODE [ sysConfig . debug_mode ] )
1107+ {
1108+ case "DSHOT_STATUS_N_VOLTAGE" :
1109+ frameDef . predictor [ k ] = FLIGHT_LOG_FIELD_PREDICTOR_DSHOT_STATUS_N_VOLTAGE ;
1110+ break ;
1111+ case "DSHOT_STATUS_N_ERPM_FRACTION_18" :
1112+ frameDef . predictor [ k ] = FLIGHT_LOG_FIELD_PREDICTOR_DSHOT_STATUS_N_ERPM_FRACTION_18 ;
1113+ break ;
1114+ default :
1115+ break ;
1116+ }
1117+ }
1118+ }
1119+ }
1120+ }
1121+
10831122 /**
10841123 * Attempt to parse the frame of into the supplied `current` buffer using the encoding/predictor
10851124 * definitions from `frameDefs`. The previous frame values are used for predictions.
@@ -1095,7 +1134,7 @@ var FlightLogParser = function(logData) {
10951134 encoding = frameDef . encoding ,
10961135 values = new Array ( 8 ) ,
10971136 i , j , groupCount ;
1098-
1137+
10991138 i = 0 ;
11001139 while ( i < frameDef . count ) {
11011140 var
@@ -1164,6 +1203,19 @@ var FlightLogParser = function(logData) {
11641203
11651204 continue ;
11661205 break ;
1206+ case FLIGHT_LOG_FIELD_ENCODING_PACK_1F_1F_1F_1G_4U_8U :
1207+ value = stream . readSignedVB ( ) ;
1208+
1209+ current [ i ] = new Array ( 5 ) ;
1210+ current [ i ] [ 0 ] = ( ( value & 0x8000 ) != 0 ) ? 1 : 0 ;
1211+ current [ i ] [ 1 ] = ( ( value & 0x4000 ) != 0 ) ? 1 : 0 ;
1212+ current [ i ] [ 2 ] = ( ( value & 0x2000 ) != 0 ) ? 1 : 0 ;
1213+ current [ i ] [ 3 ] = ( value >> 8 ) & 0x000F ;
1214+ current [ i ] [ 4 ] = applyPrediction ( i , raw ? FLIGHT_LOG_FIELD_PREDICTOR_0 : predictor [ i ] , value & 0x00FF , current , previous , previous2 ) ;
1215+ i ++ ;
1216+
1217+ continue ;
1218+ break ;
11671219 case FLIGHT_LOG_FIELD_ENCODING_NULL :
11681220 //Nothing to read
11691221 value = 0 ;
@@ -1337,6 +1389,12 @@ var FlightLogParser = function(logData) {
13371389 if ( mainHistory [ 1 ] )
13381390 value += mainHistory [ 1 ] [ FlightLogParser . prototype . FLIGHT_LOG_FIELD_INDEX_TIME ] ;
13391391 break ;
1392+ case FLIGHT_LOG_FIELD_PREDICTOR_DSHOT_STATUS_N_VOLTAGE :
1393+ value /= 4 ;
1394+ break ;
1395+ case FLIGHT_LOG_FIELD_PREDICTOR_DSHOT_STATUS_N_ERPM_FRACTION_18 :
1396+ value *= 18 ;
1397+ break ;
13401398 default :
13411399 throw "Unsupported field predictor " + predictor ;
13421400 }
@@ -1674,6 +1732,8 @@ var FlightLogParser = function(logData) {
16741732 } else {
16751733 lastSlow = [ ] ;
16761734 }
1735+
1736+ assimilateDebugMode ( that . sysConfig , this . frameDefs . I ) ;
16771737 } ;
16781738
16791739 /**
0 commit comments