Skip to content

Commit

Permalink
Merge pull request #9021 from RomanLut/submit-allow-hitl-run-with-hw-…
Browse files Browse the repository at this point in the history
…baro-failure

allow HITL to run with HW baro failure
  • Loading branch information
DzikuVx committed Jun 4, 2023
2 parents 1b5c671 + 9710caa commit b5f0883
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 9 deletions.
11 changes: 9 additions & 2 deletions src/main/fc/fc_msp.c
Expand Up @@ -3483,7 +3483,9 @@ bool mspFCProcessInOutCommand(uint16_t cmdMSP, sbuf_t *dst, sbuf_t *src, mspResu
DISABLE_ARMING_FLAG(SIMULATOR_MODE_HITL);

#ifdef USE_BARO
if ( requestedSensors[SENSOR_INDEX_BARO] != BARO_NONE ) {
baroStartCalibration();
}
#endif
#ifdef USE_MAG
DISABLE_STATE(COMPASS_CALIBRATED);
Expand All @@ -3494,10 +3496,15 @@ bool mspFCProcessInOutCommand(uint16_t cmdMSP, sbuf_t *dst, sbuf_t *src, mspResu

disarm(DISARM_SWITCH); // Disarm to prevent motor output!!!
}
} else if (!areSensorsCalibrating()) {
} else {
if (!ARMING_FLAG(SIMULATOR_MODE_HITL)) { // Just once
#ifdef USE_BARO
baroStartCalibration();
if ( requestedSensors[SENSOR_INDEX_BARO] != BARO_NONE ) {
sensorsSet(SENSOR_BARO);
setTaskEnabled(TASK_BARO, true);
DISABLE_ARMING_FLAG(ARMING_DISABLED_HARDWARE_FAILURE);
baroStartCalibration();
}
#endif

#ifdef USE_MAG
Expand Down
14 changes: 7 additions & 7 deletions src/main/sensors/barometer.c
Expand Up @@ -254,6 +254,12 @@ uint32_t baroUpdate(void)
{
static barometerState_e state = BAROMETER_NEEDS_SAMPLES;

#ifdef USE_SIMULATOR
if (ARMING_FLAG(SIMULATOR_MODE_HITL)) {
return 0;
}
#endif

switch (state) {
default:
case BAROMETER_NEEDS_SAMPLES:
Expand All @@ -274,14 +280,8 @@ uint32_t baroUpdate(void)
if (baro.dev.start_ut) {
baro.dev.start_ut(&baro.dev);
}
#ifdef USE_SIMULATOR
if (!ARMING_FLAG(SIMULATOR_MODE_HITL)) {
//output: baro.baroPressure, baro.baroTemperature
baro.dev.calculate(&baro.dev, &baro.baroPressure, &baro.baroTemperature);
}
#else
//output: baro.baroPressure, baro.baroTemperature
baro.dev.calculate(&baro.dev, &baro.baroPressure, &baro.baroTemperature);
#endif
state = BAROMETER_NEEDS_SAMPLES;
return baro.dev.ut_delay;
break;
Expand Down
11 changes: 11 additions & 0 deletions src/main/sensors/diagnostics.c
Expand Up @@ -94,6 +94,17 @@ hardwareSensorStatus_e getHwCompassStatus(void)
hardwareSensorStatus_e getHwBarometerStatus(void)
{
#if defined(USE_BARO)
#ifdef USE_SIMULATOR
if (ARMING_FLAG(SIMULATOR_MODE_HITL) || ARMING_FLAG(SIMULATOR_MODE_SITL)) {
if (requestedSensors[SENSOR_INDEX_BARO] == BARO_NONE) {
return HW_SENSOR_NONE;
} else if (baroIsHealthy()) {
return HW_SENSOR_OK;
} else {
return HW_SENSOR_UNHEALTHY;
}
}
#endif
if (detectedSensors[SENSOR_INDEX_BARO] != BARO_NONE) {
if (baroIsHealthy()) {
return HW_SENSOR_OK;
Expand Down

0 comments on commit b5f0883

Please sign in to comment.