@@ -289,23 +289,23 @@ static const blackboxDeltaFieldDefinition_t blackboxMainFields[] = {
289
289
{"gyroADC" , 0 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), CONDITION (ALWAYS )},
290
290
{"gyroADC" , 1 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), CONDITION (ALWAYS )},
291
291
{"gyroADC" , 2 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), CONDITION (ALWAYS )},
292
-
292
+
293
293
{"gyroRaw" , 0 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_GYRO_RAW },
294
294
{"gyroRaw" , 1 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_GYRO_RAW },
295
295
{"gyroRaw" , 2 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_GYRO_RAW },
296
-
296
+
297
297
{"gyroPeakRoll" , 0 , UNSIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (UNSIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_GYRO_PEAKS_ROLL },
298
298
{"gyroPeakRoll" , 1 , UNSIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (UNSIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_GYRO_PEAKS_ROLL },
299
299
{"gyroPeakRoll" , 2 , UNSIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (UNSIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_GYRO_PEAKS_ROLL },
300
-
300
+
301
301
{"gyroPeakPitch" , 0 , UNSIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (UNSIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_GYRO_PEAKS_PITCH },
302
302
{"gyroPeakPitch" , 1 , UNSIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (UNSIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_GYRO_PEAKS_PITCH },
303
303
{"gyroPeakPitch" , 2 , UNSIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (UNSIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_GYRO_PEAKS_PITCH },
304
-
304
+
305
305
{"gyroPeakYaw" , 0 , UNSIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (UNSIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_GYRO_PEAKS_YAW },
306
306
{"gyroPeakYaw" , 1 , UNSIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (UNSIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_GYRO_PEAKS_YAW },
307
307
{"gyroPeakYaw" , 2 , UNSIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (UNSIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_GYRO_PEAKS_YAW },
308
-
308
+
309
309
310
310
{"accSmooth" , 0 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_ACC },
311
311
{"accSmooth" , 1 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_ACC },
@@ -366,6 +366,7 @@ static const blackboxDeltaFieldDefinition_t blackboxMainFields[] = {
366
366
{"navTgtPos" , 0 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (PREVIOUS ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_NAV_POS },
367
367
{"navTgtPos" , 1 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (PREVIOUS ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_NAV_POS },
368
368
{"navTgtPos" , 2 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (PREVIOUS ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_NAV_POS },
369
+ {"navTgtHdg" , -1 , UNSIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (PREVIOUS ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_NAV_POS },
369
370
{"navSurf" , -1 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (PREVIOUS ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_NAV_POS },
370
371
{"navAcc" , 0 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_NAV_ACC },
371
372
{"navAcc" , 1 , SIGNED , .Ipredict = PREDICT (0 ), .Iencode = ENCODING (SIGNED_VB ), .Ppredict = PREDICT (AVERAGE_2 ), .Pencode = ENCODING (SIGNED_VB ), FLIGHT_LOG_FIELD_CONDITION_NAV_ACC },
@@ -517,7 +518,7 @@ typedef struct blackboxMainState_s {
517
518
int16_t navTargetVel [XYZ_AXIS_COUNT ];
518
519
int32_t navTargetPos [XYZ_AXIS_COUNT ];
519
520
int16_t navHeading ;
520
- int16_t navTargetHeading ;
521
+ uint16_t navTargetHeading ;
521
522
int16_t navSurface ;
522
523
} blackboxMainState_t ;
523
524
@@ -740,7 +741,7 @@ static void blackboxBuildConditionCache(void)
740
741
{
741
742
blackboxConditionCache = 0 ;
742
743
for (uint8_t cond = FLIGHT_LOG_FIELD_CONDITION_FIRST ; cond <= FLIGHT_LOG_FIELD_CONDITION_LAST ; cond ++ ) {
743
-
744
+
744
745
const uint64_t position = ((uint64_t )1 ) << cond ;
745
746
746
747
if (testBlackboxConditionUncached (cond )) {
@@ -891,7 +892,7 @@ static void writeIntraframe(void)
891
892
}
892
893
893
894
blackboxWriteSigned16VBArray (blackboxCurrent -> gyroADC , XYZ_AXIS_COUNT );
894
-
895
+
895
896
if (testBlackboxCondition (FLIGHT_LOG_FIELD_CONDITION_GYRO_RAW )) {
896
897
blackboxWriteSigned16VBArray (blackboxCurrent -> gyroRaw , XYZ_AXIS_COUNT );
897
898
}
@@ -970,6 +971,7 @@ static void writeIntraframe(void)
970
971
blackboxWriteSignedVB (blackboxCurrent -> navTargetPos [x ]);
971
972
}
972
973
974
+ blackboxWriteSignedVB (blackboxCurrent -> navTargetHeading );
973
975
blackboxWriteSignedVB (blackboxCurrent -> navSurface );
974
976
}
975
977
@@ -1226,6 +1228,7 @@ static void writeInterframe(void)
1226
1228
blackboxWriteSignedVB (blackboxHistory [0 ]-> navTargetPos [x ] - blackboxLast -> navTargetPos [x ]);
1227
1229
}
1228
1230
1231
+ blackboxWriteSignedVB (blackboxCurrent -> navTargetHeading - blackboxLast -> navTargetHeading );
1229
1232
blackboxWriteSignedVB (blackboxCurrent -> navSurface - blackboxLast -> navSurface );
1230
1233
}
1231
1234
@@ -1298,6 +1301,16 @@ static void writeSlowFrame(void)
1298
1301
static void loadSlowState (blackboxSlowState_t * slow )
1299
1302
{
1300
1303
memcpy (& slow -> flightModeFlags , & rcModeActivationMask , sizeof (slow -> flightModeFlags )); //was flightModeFlags;
1304
+ // Also log Nav auto selected flight modes rather than just those selected by boxmode
1305
+ if (!IS_RC_MODE_ACTIVE (BOXANGLE ) && FLIGHT_MODE (ANGLE_MODE )) {
1306
+ slow -> flightModeFlags |= (1 << BOXANGLE );
1307
+ }
1308
+ if (navigationGetHeadingControlState () == NAV_HEADING_CONTROL_AUTO ) {
1309
+ slow -> flightModeFlags |= (1 << BOXHEADINGHOLD );
1310
+ }
1311
+ if (navigationRequiresTurnAssistance ()) {
1312
+ slow -> flightModeFlags |= (1 << BOXTURNASSIST );
1313
+ }
1301
1314
slow -> stateFlags = stateFlags ;
1302
1315
slow -> failsafePhase = failsafePhase ();
1303
1316
slow -> rxSignalReceived = rxIsReceivingSignal ();
@@ -1328,7 +1341,7 @@ static void loadSlowState(blackboxSlowState_t *slow)
1328
1341
bool valid_temp ;
1329
1342
int16_t newTemp = 0 ;
1330
1343
valid_temp = getIMUTemperature (& newTemp );
1331
- if (valid_temp )
1344
+ if (valid_temp )
1332
1345
slow -> imuTemperature = newTemp ;
1333
1346
else
1334
1347
slow -> imuTemperature = TEMPERATURE_INVALID_VALUE ;
@@ -1661,6 +1674,7 @@ static void loadMainState(timeUs_t currentTimeUs)
1661
1674
blackboxCurrent -> navTargetVel [i ] = navDesiredVelocity [i ];
1662
1675
blackboxCurrent -> navTargetPos [i ] = navTargetPosition [i ];
1663
1676
}
1677
+ blackboxCurrent -> navTargetHeading = navDesiredHeading ;
1664
1678
blackboxCurrent -> navSurface = navActualSurface ;
1665
1679
}
1666
1680
0 commit comments