1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-25 01:05:27 +03:00
Changed mask var from 16 to 32 bits
Changed variables names
Inverse logic
Added definitions to cli settings
Added logging_fields_mask to blackbox header
This commit is contained in:
fgiudice98 2020-04-21 17:42:24 +02:00
parent 6d9e4a813a
commit d21b1fa77a
5 changed files with 67 additions and 59 deletions

View file

@ -88,15 +88,17 @@
#define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_SERIAL #define DEFAULT_BLACKBOX_DEVICE BLACKBOX_DEVICE_SERIAL
#endif #endif
PG_REGISTER_WITH_RESET_TEMPLATE(blackboxConfig_t, blackboxConfig, PG_BLACKBOX_CONFIG, 1); PG_REGISTER_WITH_RESET_TEMPLATE(blackboxConfig_t, blackboxConfig, PG_BLACKBOX_CONFIG, 2);
PG_RESET_TEMPLATE(blackboxConfig_t, blackboxConfig, PG_RESET_TEMPLATE(blackboxConfig_t, blackboxConfig,
.sample_rate = BLACKBOX_RATE_QUARTER, .sample_rate = BLACKBOX_RATE_QUARTER,
.device = DEFAULT_BLACKBOX_DEVICE, .device = DEFAULT_BLACKBOX_DEVICE,
.fields = 0xffff, .fields_mask = 0, // default log all fields
.mode = BLACKBOX_MODE_NORMAL .mode = BLACKBOX_MODE_NORMAL
); );
STATIC_ASSERT((sizeof(blackboxConfig()->fields_mask) * 8) >= FLIGHT_LOG_FIELD_SELECT_COUNT, too_many_flight_log_fields_selections);
#define BLACKBOX_SHUTDOWN_TIMEOUT_MILLIS 200 #define BLACKBOX_SHUTDOWN_TIMEOUT_MILLIS 200
// Some macros to make writing FLIGHT_LOG_FIELD_* constants shorter: // Some macros to make writing FLIGHT_LOG_FIELD_* constants shorter:
@ -104,6 +106,7 @@ PG_RESET_TEMPLATE(blackboxConfig_t, blackboxConfig,
#define PREDICT(x) CONCAT(FLIGHT_LOG_FIELD_PREDICTOR_, x) #define PREDICT(x) CONCAT(FLIGHT_LOG_FIELD_PREDICTOR_, x)
#define ENCODING(x) CONCAT(FLIGHT_LOG_FIELD_ENCODING_, x) #define ENCODING(x) CONCAT(FLIGHT_LOG_FIELD_ENCODING_, x)
#define CONDITION(x) CONCAT(FLIGHT_LOG_FIELD_CONDITION_, x) #define CONDITION(x) CONCAT(FLIGHT_LOG_FIELD_CONDITION_, x)
#define FIELD_SELECT(x) CONCAT(FLIGHT_LOG_FIELD_SELECT_, x)
#define UNSIGNED FLIGHT_LOG_FIELD_UNSIGNED #define UNSIGNED FLIGHT_LOG_FIELD_UNSIGNED
#define SIGNED FLIGHT_LOG_FIELD_SIGNED #define SIGNED FLIGHT_LOG_FIELD_SIGNED
@ -407,9 +410,9 @@ static bool blackboxIsOnlyLoggingIntraframes(void)
return blackboxPInterval == 0; return blackboxPInterval == 0;
} }
static bool isFieldSelected(SelectField field) static bool isFieldEnabled(FlightLogFieldSelect_e field)
{ {
return (blackboxConfig()->fields & (1 << field)) != 0; return (blackboxConfig()->fields_mask & (1 << field)) == 0;
} }
static bool testBlackboxConditionUncached(FlightLogFieldCondition condition) static bool testBlackboxConditionUncached(FlightLogFieldCondition condition)
@ -426,66 +429,66 @@ static bool testBlackboxConditionUncached(FlightLogFieldCondition condition)
case CONDITION(AT_LEAST_MOTORS_6): case CONDITION(AT_LEAST_MOTORS_6):
case CONDITION(AT_LEAST_MOTORS_7): case CONDITION(AT_LEAST_MOTORS_7):
case CONDITION(AT_LEAST_MOTORS_8): case CONDITION(AT_LEAST_MOTORS_8):
return (getMotorCount() >= condition - FLIGHT_LOG_FIELD_CONDITION_AT_LEAST_MOTORS_1 + 1) && isFieldSelected(SELECT_FIELD_MOTOR); return (getMotorCount() >= condition - FLIGHT_LOG_FIELD_CONDITION_AT_LEAST_MOTORS_1 + 1) && isFieldEnabled(FIELD_SELECT(MOTOR));
case CONDITION(TRICOPTER): case CONDITION(TRICOPTER):
return (mixerConfig()->mixerMode == MIXER_TRI || mixerConfig()->mixerMode == MIXER_CUSTOM_TRI) && isFieldSelected(SELECT_FIELD_MOTOR); return (mixerConfig()->mixerMode == MIXER_TRI || mixerConfig()->mixerMode == MIXER_CUSTOM_TRI) && isFieldEnabled(FIELD_SELECT(MOTOR));
case CONDITION(PID): case CONDITION(PID):
return isFieldSelected(SELECT_FIELD_PID); return isFieldEnabled(FIELD_SELECT(PID));
case CONDITION(NONZERO_PID_D_0): case CONDITION(NONZERO_PID_D_0):
case CONDITION(NONZERO_PID_D_1): case CONDITION(NONZERO_PID_D_1):
case CONDITION(NONZERO_PID_D_2): case CONDITION(NONZERO_PID_D_2):
return (currentPidProfile->pid[condition - FLIGHT_LOG_FIELD_CONDITION_NONZERO_PID_D_0].D != 0) && isFieldSelected(SELECT_FIELD_PID); return (currentPidProfile->pid[condition - FLIGHT_LOG_FIELD_CONDITION_NONZERO_PID_D_0].D != 0) && isFieldEnabled(FIELD_SELECT(PID));
case CONDITION(RC_COMMANDS): case CONDITION(RC_COMMANDS):
return isFieldSelected(SELECT_FIELD_RC_COMMANDS); return isFieldEnabled(FIELD_SELECT(RC_COMMANDS));
case CONDITION(SETPOINT): case CONDITION(SETPOINT):
return isFieldSelected(SELECT_FIELD_SETPOINT); return isFieldEnabled(FIELD_SELECT(SETPOINT));
case CONDITION(MAG): case CONDITION(MAG):
#ifdef USE_MAG #ifdef USE_MAG
return sensors(SENSOR_MAG) && isFieldSelected(SELECT_FIELD_MAG); return sensors(SENSOR_MAG) && isFieldEnabled(FIELD_SELECT(MAG));
#else #else
return false; return false;
#endif #endif
case CONDITION(BARO): case CONDITION(BARO):
#ifdef USE_BARO #ifdef USE_BARO
return sensors(SENSOR_BARO) && isFieldSelected(SELECT_FIELD_ALTITUDE); return sensors(SENSOR_BARO) && isFieldEnabled(FIELD_SELECT(ALTITUDE));
#else #else
return false; return false;
#endif #endif
case CONDITION(VBAT): case CONDITION(VBAT):
return (batteryConfig()->voltageMeterSource != VOLTAGE_METER_NONE) && isFieldSelected(SELECT_FIELD_BATTERY); return (batteryConfig()->voltageMeterSource != VOLTAGE_METER_NONE) && isFieldEnabled(FIELD_SELECT(BATTERY));
case CONDITION(AMPERAGE_ADC): case CONDITION(AMPERAGE_ADC):
return (batteryConfig()->currentMeterSource != CURRENT_METER_NONE) && (batteryConfig()->currentMeterSource != CURRENT_METER_VIRTUAL) && isFieldSelected(SELECT_FIELD_BATTERY); return (batteryConfig()->currentMeterSource != CURRENT_METER_NONE) && (batteryConfig()->currentMeterSource != CURRENT_METER_VIRTUAL) && isFieldEnabled(FIELD_SELECT(BATTERY));
case CONDITION(RANGEFINDER): case CONDITION(RANGEFINDER):
#ifdef USE_RANGEFINDER #ifdef USE_RANGEFINDER
return sensors(SENSOR_RANGEFINDER) && isFieldSelected(SELECT_FIELD_ALTITUDE); return sensors(SENSOR_RANGEFINDER) && isFieldEnabled(FIELD_SELECT(ALTITUDE));
#else #else
return false; return false;
#endif #endif
case CONDITION(RSSI): case CONDITION(RSSI):
return isRssiConfigured() && isFieldSelected(SELECT_FIELD_RSSI); return isRssiConfigured() && isFieldEnabled(FIELD_SELECT(RSSI));
case FLIGHT_LOG_FIELD_CONDITION_NOT_LOGGING_EVERY_FRAME: case FLIGHT_LOG_FIELD_CONDITION_NOT_LOGGING_EVERY_FRAME:
return blackboxPInterval != blackboxIInterval; return blackboxPInterval != blackboxIInterval;
case CONDITION(GYRO): case CONDITION(GYRO):
return isFieldSelected(SELECT_FIELD_GYRO); return isFieldEnabled(FIELD_SELECT(GYRO));
case CONDITION(ACC): case CONDITION(ACC):
return sensors(SENSOR_ACC) && isFieldSelected(SELECT_FIELD_ACC); return sensors(SENSOR_ACC) && isFieldEnabled(FIELD_SELECT(ACC));
case CONDITION(DEBUG): case CONDITION(DEBUG):
return (debugMode != DEBUG_NONE) && isFieldSelected(SELECT_FIELD_DEBUG); return (debugMode != DEBUG_NONE) && isFieldEnabled(FIELD_SELECT(DEBUG));
case CONDITION(NEVER): case CONDITION(NEVER):
return false; return false;
@ -632,7 +635,7 @@ static void writeIntraframe(void)
blackboxWriteSigned16VBArray(blackboxCurrent->debug, DEBUG16_VALUE_COUNT); blackboxWriteSigned16VBArray(blackboxCurrent->debug, DEBUG16_VALUE_COUNT);
} }
if (isFieldSelected(SELECT_FIELD_MOTOR)) { if (isFieldEnabled(FIELD_SELECT(MOTOR))) {
//Motors can be below minimum output when disarmed, but that doesn't happen much //Motors can be below minimum output when disarmed, but that doesn't happen much
blackboxWriteUnsignedVB(blackboxCurrent->motor[0] - motorOutputLow); blackboxWriteUnsignedVB(blackboxCurrent->motor[0] - motorOutputLow);
@ -781,7 +784,7 @@ static void writeInterframe(void)
blackboxWriteMainStateArrayUsingAveragePredictor(offsetof(blackboxMainState_t, debug), DEBUG16_VALUE_COUNT); blackboxWriteMainStateArrayUsingAveragePredictor(offsetof(blackboxMainState_t, debug), DEBUG16_VALUE_COUNT);
} }
if (isFieldSelected(SELECT_FIELD_MOTOR)) { if (isFieldEnabled(FIELD_SELECT(MOTOR))) {
blackboxWriteMainStateArrayUsingAveragePredictor(offsetof(blackboxMainState_t, motor), getMotorCount()); blackboxWriteMainStateArrayUsingAveragePredictor(offsetof(blackboxMainState_t, motor), getMotorCount());
if (testBlackboxCondition(FLIGHT_LOG_FIELD_CONDITION_TRICOPTER)) { if (testBlackboxCondition(FLIGHT_LOG_FIELD_CONDITION_TRICOPTER)) {
@ -1470,6 +1473,8 @@ static bool blackboxWriteSysinfo(void)
#endif // USE_RC_SMOOTHING_FILTER #endif // USE_RC_SMOOTHING_FILTER
BLACKBOX_PRINT_HEADER_LINE("rates_type", "%d", currentControlRateProfile->rates_type); BLACKBOX_PRINT_HEADER_LINE("rates_type", "%d", currentControlRateProfile->rates_type);
BLACKBOX_PRINT_HEADER_LINE("logging_fields_mask", "%d", blackboxConfig()->fields_mask);
default: default:
return true; return true;
} }
@ -1573,7 +1578,7 @@ STATIC_UNIT_TESTED bool blackboxShouldLogIFrame(void)
STATIC_UNIT_TESTED bool blackboxShouldLogGpsHomeFrame(void) STATIC_UNIT_TESTED bool blackboxShouldLogGpsHomeFrame(void)
{ {
if ((GPS_home[0] != gpsHistory.GPS_home[0] || GPS_home[1] != gpsHistory.GPS_home[1] if ((GPS_home[0] != gpsHistory.GPS_home[0] || GPS_home[1] != gpsHistory.GPS_home[1]
|| (blackboxPFrameIndex == blackboxIInterval / 2 && blackboxIFrameIndex % 128 == 0)) && isFieldSelected(SELECT_FIELD_GPS)) { || (blackboxPFrameIndex == blackboxIInterval / 2 && blackboxIFrameIndex % 128 == 0)) && isFieldEnabled(FIELD_SELECT(GPS))) {
return true; return true;
} }
return false; return false;
@ -1625,7 +1630,7 @@ STATIC_UNIT_TESTED void blackboxLogIteration(timeUs_t currentTimeUs)
writeInterframe(); writeInterframe();
} }
#ifdef USE_GPS #ifdef USE_GPS
if (featureIsEnabled(FEATURE_GPS) && isFieldSelected(SELECT_FIELD_GPS)) { if (featureIsEnabled(FEATURE_GPS) && isFieldEnabled(FIELD_SELECT(GPS))) {
if (blackboxShouldLogGpsHomeFrame()) { if (blackboxShouldLogGpsHomeFrame()) {
writeGPSHomeFrame(); writeGPSHomeFrame();
writeGPSFrame(currentTimeUs); writeGPSFrame(currentTimeUs);
@ -1693,7 +1698,7 @@ void blackboxUpdate(timeUs_t currentTimeUs)
if (!sendFieldDefinition('I', 'P', blackboxMainFields, blackboxMainFields + 1, ARRAYLEN(blackboxMainFields), if (!sendFieldDefinition('I', 'P', blackboxMainFields, blackboxMainFields + 1, ARRAYLEN(blackboxMainFields),
&blackboxMainFields[0].condition, &blackboxMainFields[1].condition)) { &blackboxMainFields[0].condition, &blackboxMainFields[1].condition)) {
#ifdef USE_GPS #ifdef USE_GPS
if (featureIsEnabled(FEATURE_GPS) && isFieldSelected(SELECT_FIELD_GPS)) { if (featureIsEnabled(FEATURE_GPS) && isFieldEnabled(FIELD_SELECT(GPS))) {
blackboxSetState(BLACKBOX_STATE_SEND_GPS_H_HEADER); blackboxSetState(BLACKBOX_STATE_SEND_GPS_H_HEADER);
} else } else
#endif #endif
@ -1705,7 +1710,7 @@ void blackboxUpdate(timeUs_t currentTimeUs)
blackboxReplenishHeaderBudget(); blackboxReplenishHeaderBudget();
//On entry of this state, xmitState.headerIndex is 0 and xmitState.u.fieldIndex is -1 //On entry of this state, xmitState.headerIndex is 0 and xmitState.u.fieldIndex is -1
if (!sendFieldDefinition('H', 0, blackboxGpsHFields, blackboxGpsHFields + 1, ARRAYLEN(blackboxGpsHFields), if (!sendFieldDefinition('H', 0, blackboxGpsHFields, blackboxGpsHFields + 1, ARRAYLEN(blackboxGpsHFields),
NULL, NULL) && isFieldSelected(SELECT_FIELD_GPS)) { NULL, NULL) && isFieldEnabled(FIELD_SELECT(GPS))) {
blackboxSetState(BLACKBOX_STATE_SEND_GPS_G_HEADER); blackboxSetState(BLACKBOX_STATE_SEND_GPS_G_HEADER);
} }
break; break;
@ -1713,7 +1718,7 @@ void blackboxUpdate(timeUs_t currentTimeUs)
blackboxReplenishHeaderBudget(); blackboxReplenishHeaderBudget();
//On entry of this state, xmitState.headerIndex is 0 and xmitState.u.fieldIndex is -1 //On entry of this state, xmitState.headerIndex is 0 and xmitState.u.fieldIndex is -1
if (!sendFieldDefinition('G', 0, blackboxGpsGFields, blackboxGpsGFields + 1, ARRAYLEN(blackboxGpsGFields), if (!sendFieldDefinition('G', 0, blackboxGpsGFields, blackboxGpsGFields + 1, ARRAYLEN(blackboxGpsGFields),
&blackboxGpsGFields[0].condition, &blackboxGpsGFields[1].condition) && isFieldSelected(SELECT_FIELD_GPS)) { &blackboxGpsGFields[0].condition, &blackboxGpsGFields[1].condition) && isFieldEnabled(FIELD_SELECT(GPS))) {
blackboxSetState(BLACKBOX_STATE_SEND_SLOW_HEADER); blackboxSetState(BLACKBOX_STATE_SEND_SLOW_HEADER);
} }
break; break;

View file

@ -61,7 +61,7 @@ typedef enum FlightLogEvent {
typedef struct blackboxConfig_s { typedef struct blackboxConfig_s {
uint8_t sample_rate; // sample rate uint8_t sample_rate; // sample rate
uint8_t device; uint8_t device;
uint16_t fields; uint32_t fields_mask; // 1 to not log that field, 0 to log that field
uint8_t mode; uint8_t mode;
} blackboxConfig_t; } blackboxConfig_t;

View file

@ -59,21 +59,21 @@ typedef enum FlightLogFieldCondition {
FLIGHT_LOG_FIELD_CONDITION_LAST = FLIGHT_LOG_FIELD_CONDITION_NEVER FLIGHT_LOG_FIELD_CONDITION_LAST = FLIGHT_LOG_FIELD_CONDITION_NEVER
} FlightLogFieldCondition; } FlightLogFieldCondition;
typedef enum SelectField { // no more than 16 typedef enum FlightLogFieldSelect_e { // no more than 32
SELECT_FIELD_PID = 0, FLIGHT_LOG_FIELD_SELECT_PID = 0,
SELECT_FIELD_RC_COMMANDS, FLIGHT_LOG_FIELD_SELECT_RC_COMMANDS,
SELECT_FIELD_SETPOINT, FLIGHT_LOG_FIELD_SELECT_SETPOINT,
SELECT_FIELD_BATTERY, FLIGHT_LOG_FIELD_SELECT_BATTERY,
SELECT_FIELD_MAG, FLIGHT_LOG_FIELD_SELECT_MAG,
SELECT_FIELD_ALTITUDE, FLIGHT_LOG_FIELD_SELECT_ALTITUDE,
SELECT_FIELD_RSSI, FLIGHT_LOG_FIELD_SELECT_RSSI,
SELECT_FIELD_GYRO, FLIGHT_LOG_FIELD_SELECT_GYRO,
SELECT_FIELD_ACC, FLIGHT_LOG_FIELD_SELECT_ACC,
SELECT_FIELD_DEBUG, FLIGHT_LOG_FIELD_SELECT_DEBUG,
SELECT_FIELD_MOTOR, FLIGHT_LOG_FIELD_SELECT_MOTOR,
FLIGHT_LOG_FIELD_SELECT_GPS,
SELECT_FIELD_GPS = 15 FLIGHT_LOG_FIELD_SELECT_COUNT
} SelectField; } FlightLogFieldSelect_e;
typedef enum FlightLogFieldPredictor { typedef enum FlightLogFieldPredictor {
//No prediction: //No prediction:

View file

@ -778,18 +778,26 @@ const clivalue_t valueTable[] = {
#ifdef USE_BLACKBOX #ifdef USE_BLACKBOX
{ "blackbox_sample_rate", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_BLACKBOX_SAMPLE_RATE }, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, sample_rate) }, { "blackbox_sample_rate", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_BLACKBOX_SAMPLE_RATE }, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, sample_rate) },
{ "blackbox_device", VAR_UINT8 | HARDWARE_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_BLACKBOX_DEVICE }, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, device) }, { "blackbox_device", VAR_UINT8 | HARDWARE_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_BLACKBOX_DEVICE }, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, device) },
{ "bb_log_pids", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = SELECT_FIELD_PID, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields) }, { "blackbox_disable_pids", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_PID, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_mask) },
{ "bb_log_rc", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = SELECT_FIELD_RC_COMMANDS, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields) }, { "blackbox_disable_rc", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_RC_COMMANDS, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_mask) },
{ "bb_log_setpoint", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = SELECT_FIELD_SETPOINT, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields) }, { "blackbox_disable_setpoint", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_SETPOINT, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_mask) },
{ "bb_log_bat", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = SELECT_FIELD_BATTERY, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields) }, { "blackbox_disable_bat", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_BATTERY, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_mask) },
{ "bb_log_mag", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = SELECT_FIELD_MAG, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields) }, #ifdef USE_MAG
{ "bb_log_alt", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = SELECT_FIELD_ALTITUDE, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields) }, { "blackbox_disable_mag", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_MAG, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_mask) },
{ "bb_log_rssi", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = SELECT_FIELD_RSSI, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields) }, #endif
{ "bb_log_gyro", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = SELECT_FIELD_GYRO, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields) }, #if defined(USE_BARO) || defined(USE_RANGEFINDER)
{ "bb_log_acc", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = SELECT_FIELD_ACC, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields) }, { "blackbox_disable_alt", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_ALTITUDE, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_mask) },
{ "bb_log_debug", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = SELECT_FIELD_DEBUG, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields) }, #endif
{ "bb_log_motors", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = SELECT_FIELD_MOTOR, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields) }, { "blackbox_disable_rssi", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_RSSI, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_mask) },
{ "bb_log_gps", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = SELECT_FIELD_GPS, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields) }, { "blackbox_disable_gyro", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_GYRO, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_mask) },
#if defined(USE_ACC)
{ "blackbox_disable_acc", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_ACC, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_mask) },
#endif
{ "blackbox_disable_debug", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_DEBUG, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_mask) },
{ "blackbox_disable_motors", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_MOTOR, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_mask) },
#ifdef USE_GPS
{ "blackbox_disable_gps", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_GPS, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_mask) },
#endif
{ "blackbox_mode", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_BLACKBOX_MODE }, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, mode) }, { "blackbox_mode", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_BLACKBOX_MODE }, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, mode) },
#endif #endif

View file

@ -1592,7 +1592,6 @@ static bool mspProcessOutCommand(int16_t cmdMSP, sbuf_t *dst)
sbufWriteU8(dst, blackboxGetRateDenom()); sbufWriteU8(dst, blackboxGetRateDenom());
sbufWriteU16(dst, blackboxGetPRatio()); sbufWriteU16(dst, blackboxGetPRatio());
sbufWriteU8(dst, blackboxConfig()->sample_rate); sbufWriteU8(dst, blackboxConfig()->sample_rate);
sbufWriteU16(dst, blackboxConfig()->fields);
#else #else
sbufWriteU8(dst, 0); // Blackbox not supported sbufWriteU8(dst, 0); // Blackbox not supported
sbufWriteU8(dst, 0); sbufWriteU8(dst, 0);
@ -1600,7 +1599,6 @@ static bool mspProcessOutCommand(int16_t cmdMSP, sbuf_t *dst)
sbufWriteU8(dst, 0); sbufWriteU8(dst, 0);
sbufWriteU16(dst, 0); sbufWriteU16(dst, 0);
sbufWriteU8(dst, 0); sbufWriteU8(dst, 0);
sbufWriteU16(dst, 0);
#endif #endif
break; break;
@ -2783,9 +2781,6 @@ static mspResult_e mspProcessInCommand(mspDescriptor_t srcDesc, int16_t cmdMSP,
// sample_rate not specified in MSP, so calculate it from old p_ratio // sample_rate not specified in MSP, so calculate it from old p_ratio
blackboxConfigMutable()->sample_rate = blackboxCalculateSampleRate(pRatio); blackboxConfigMutable()->sample_rate = blackboxCalculateSampleRate(pRatio);
} }
if (sbufBytesRemaining(src) >= 2) {
blackboxConfigMutable()->fields = sbufReadU16(src);
}
} }
break; break;
#endif #endif