mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-25 01:05:27 +03:00
Logging of the S -term values in blackbox for Fixed wings. (#14012)
* The S term values are added to blackbox logging for airplanes * The axisS log fields are placed into NONZERO_WING_S_n group
This commit is contained in:
parent
e422e42122
commit
57d32ea1da
2 changed files with 39 additions and 0 deletions
|
@ -205,6 +205,11 @@ static const blackboxDeltaFieldDefinition_t blackboxMainFields[] = {
|
|||
{"axisF", 0, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(PID)},
|
||||
{"axisF", 1, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(PID)},
|
||||
{"axisF", 2, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(PID)},
|
||||
#ifdef USE_WING
|
||||
{"axisS", 0, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(NONZERO_WING_S_0)},
|
||||
{"axisS", 1, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(NONZERO_WING_S_1)},
|
||||
{"axisS", 2, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(SIGNED_VB), CONDITION(NONZERO_WING_S_2)},
|
||||
#endif
|
||||
/* rcCommands are encoded together as a group in P-frames: */
|
||||
{"rcCommand", 0, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(TAG8_4S16), CONDITION(RC_COMMANDS)},
|
||||
{"rcCommand", 1, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(PREVIOUS), .Pencode = ENCODING(TAG8_4S16), CONDITION(RC_COMMANDS)},
|
||||
|
@ -343,6 +348,7 @@ typedef struct blackboxMainState_s {
|
|||
int32_t axisPID_I[XYZ_AXIS_COUNT];
|
||||
int32_t axisPID_D[XYZ_AXIS_COUNT];
|
||||
int32_t axisPID_F[XYZ_AXIS_COUNT];
|
||||
int32_t axisPID_S[XYZ_AXIS_COUNT];
|
||||
|
||||
int16_t rcCommand[4];
|
||||
int16_t setpoint[4];
|
||||
|
@ -502,6 +508,13 @@ static bool testBlackboxConditionUncached(FlightLogFieldCondition condition)
|
|||
case CONDITION(NONZERO_PID_D_2):
|
||||
return (currentPidProfile->pid[condition - FLIGHT_LOG_FIELD_CONDITION_NONZERO_PID_D_0].D != 0) && isFieldEnabled(FIELD_SELECT(PID));
|
||||
|
||||
#ifdef USE_WING
|
||||
case CONDITION(NONZERO_WING_S_0):
|
||||
case CONDITION(NONZERO_WING_S_1):
|
||||
case CONDITION(NONZERO_WING_S_2):
|
||||
return (currentPidProfile->pid[condition - CONDITION(NONZERO_WING_S_0)].S != 0) && isFieldEnabled(FIELD_SELECT(PID));
|
||||
#endif
|
||||
|
||||
case CONDITION(RC_COMMANDS):
|
||||
return isFieldEnabled(FIELD_SELECT(RC_COMMANDS));
|
||||
|
||||
|
@ -642,6 +655,14 @@ static void writeIntraframe(void)
|
|||
}
|
||||
|
||||
blackboxWriteSignedVBArray(blackboxCurrent->axisPID_F, XYZ_AXIS_COUNT);
|
||||
|
||||
#ifdef USE_WING
|
||||
for (int x = 0; x < XYZ_AXIS_COUNT; x++) {
|
||||
if (testBlackboxCondition(CONDITION(NONZERO_WING_S_0) + x)) {
|
||||
blackboxWriteSignedVB(blackboxCurrent->axisPID_S[x]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (testBlackboxCondition(CONDITION(RC_COMMANDS))) {
|
||||
|
@ -813,6 +834,14 @@ static void writeInterframe(void)
|
|||
|
||||
arraySubInt32(deltas, blackboxCurrent->axisPID_F, blackboxLast->axisPID_F, XYZ_AXIS_COUNT);
|
||||
blackboxWriteSignedVBArray(deltas, XYZ_AXIS_COUNT);
|
||||
|
||||
#ifdef USE_WING
|
||||
for (int x = 0; x < XYZ_AXIS_COUNT; x++) {
|
||||
if (testBlackboxCondition(CONDITION(NONZERO_WING_S_0) + x)) {
|
||||
blackboxWriteSignedVB(blackboxCurrent->axisPID_S[x] - blackboxLast->axisPID_S[x]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1185,8 +1214,12 @@ static void loadMainState(timeUs_t currentTimeUs)
|
|||
blackboxCurrent->axisPID_I[i] = lrintf(pidData[i].I);
|
||||
blackboxCurrent->axisPID_D[i] = lrintf(pidData[i].D);
|
||||
blackboxCurrent->axisPID_F[i] = lrintf(pidData[i].F);
|
||||
#ifdef USE_WING
|
||||
blackboxCurrent->axisPID_S[i] = lrintf(pidData[i].S);
|
||||
#endif
|
||||
blackboxCurrent->gyroADC[i] = lrintf(gyro.gyroADCf[i] * blackboxHighResolutionScale);
|
||||
blackboxCurrent->gyroUnfilt[i] = lrintf(gyro.gyroADC[i] * blackboxHighResolutionScale);
|
||||
|
||||
#if defined(USE_ACC)
|
||||
blackboxCurrent->accADC[i] = lrintf(acc.accADC.v[i]);
|
||||
#endif
|
||||
|
|
|
@ -58,6 +58,12 @@ typedef enum FlightLogFieldCondition {
|
|||
FLIGHT_LOG_FIELD_CONDITION_NONZERO_PID_D_0,
|
||||
FLIGHT_LOG_FIELD_CONDITION_NONZERO_PID_D_1,
|
||||
FLIGHT_LOG_FIELD_CONDITION_NONZERO_PID_D_2,
|
||||
|
||||
#ifdef USE_WING
|
||||
FLIGHT_LOG_FIELD_CONDITION_NONZERO_WING_S_0,
|
||||
FLIGHT_LOG_FIELD_CONDITION_NONZERO_WING_S_1,
|
||||
FLIGHT_LOG_FIELD_CONDITION_NONZERO_WING_S_2,
|
||||
#endif
|
||||
|
||||
FLIGHT_LOG_FIELD_CONDITION_RC_COMMANDS,
|
||||
FLIGHT_LOG_FIELD_CONDITION_SETPOINT,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue