Skip to content

Commit 505f44a

Browse files
Merge pull request #4516 from iNavFlight/dzikuvx-fix-blackbox-servo-logging
Fix servo logging into blackbox
2 parents e52b5d9 + 9bfd8d8 commit 505f44a

2 files changed

Lines changed: 19 additions & 15 deletions

File tree

src/main/blackbox/blackbox.c

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -289,14 +289,14 @@ static const blackboxDeltaFieldDefinition_t blackboxMainFields[] = {
289289
{"motor", 7, UNSIGNED, .Ipredict = PREDICT(MOTOR_0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(AT_LEAST_MOTORS_8)},
290290

291291
/* servos */
292-
{"servo", 0, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(ALWAYS)},
293-
{"servo", 1, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(ALWAYS)},
294-
{"servo", 2, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(ALWAYS)},
295-
{"servo", 3, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(ALWAYS)},
296-
{"servo", 4, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(ALWAYS)},
297-
{"servo", 5, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(ALWAYS)},
298-
{"servo", 6, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(ALWAYS)},
299-
{"servo", 7, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(ALWAYS)},
292+
{"servo", 0, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(SERVOS)},
293+
{"servo", 1, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(SERVOS)},
294+
{"servo", 2, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(SERVOS)},
295+
{"servo", 3, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(SERVOS)},
296+
{"servo", 4, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(SERVOS)},
297+
{"servo", 5, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(SERVOS)},
298+
{"servo", 6, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(SERVOS)},
299+
{"servo", 7, UNSIGNED, .Ipredict = PREDICT(1500), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(SERVOS)},
300300

301301
#ifdef NAV_BLACKBOX
302302
{"navState", -1, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(ALWAYS)},
@@ -563,8 +563,8 @@ static bool testBlackboxConditionUncached(FlightLogFieldCondition condition)
563563
case FLIGHT_LOG_FIELD_CONDITION_AT_LEAST_MOTORS_8:
564564
return getMotorCount() >= condition - FLIGHT_LOG_FIELD_CONDITION_AT_LEAST_MOTORS_1 + 1;
565565

566-
case FLIGHT_LOG_FIELD_CONDITION_TRICOPTER:
567-
return mixerConfig()->platformType == PLATFORM_TRICOPTER;
566+
case FLIGHT_LOG_FIELD_CONDITION_SERVOS:
567+
return isMixerUsingServos();
568568

569569
case FLIGHT_LOG_FIELD_CONDITION_NONZERO_PID_D_0:
570570
case FLIGHT_LOG_FIELD_CONDITION_NONZERO_PID_D_1:
@@ -798,9 +798,11 @@ static void writeIntraframe(void)
798798
blackboxWriteSignedVB(blackboxCurrent->motor[x] - blackboxCurrent->motor[0]);
799799
}
800800

801-
for (int x = 0; x < MAX_SUPPORTED_SERVOS; x++) {
802-
//Assume that servos spends most of its time around the center
803-
blackboxWriteSignedVB(blackboxCurrent->servo[x] - servoParams(x)->middle);
801+
if (testBlackboxCondition(FLIGHT_LOG_FIELD_CONDITION_SERVOS)) {
802+
for (int x = 0; x < MAX_SUPPORTED_SERVOS; x++) {
803+
//Assume that servos spends most of its time around the center
804+
blackboxWriteSignedVB(blackboxCurrent->servo[x] - 1500);
805+
}
804806
}
805807

806808
#ifdef NAV_BLACKBOX
@@ -1001,7 +1003,9 @@ static void writeInterframe(void)
10011003
}
10021004
blackboxWriteMainStateArrayUsingAveragePredictor(offsetof(blackboxMainState_t, motor), getMotorCount());
10031005

1004-
blackboxWriteMainStateArrayUsingAveragePredictor(offsetof(blackboxMainState_t, servo), MAX_SUPPORTED_SERVOS);
1006+
if (testBlackboxCondition(FLIGHT_LOG_FIELD_CONDITION_SERVOS)) {
1007+
blackboxWriteMainStateArrayUsingAveragePredictor(offsetof(blackboxMainState_t, servo), MAX_SUPPORTED_SERVOS);
1008+
}
10051009

10061010
#ifdef NAV_BLACKBOX
10071011
blackboxWriteSignedVB(blackboxCurrent->navState - blackboxLast->navState);

src/main/blackbox/blackbox_fielddefs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ typedef enum FlightLogFieldCondition {
3232
FLIGHT_LOG_FIELD_CONDITION_AT_LEAST_MOTORS_6,
3333
FLIGHT_LOG_FIELD_CONDITION_AT_LEAST_MOTORS_7,
3434
FLIGHT_LOG_FIELD_CONDITION_AT_LEAST_MOTORS_8,
35-
FLIGHT_LOG_FIELD_CONDITION_TRICOPTER,
35+
FLIGHT_LOG_FIELD_CONDITION_SERVOS,
3636

3737
FLIGHT_LOG_FIELD_CONDITION_MAG,
3838
FLIGHT_LOG_FIELD_CONDITION_BARO,

0 commit comments

Comments
 (0)