mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-24 00:35:34 +03:00
Merge pull request #9212 from RomanLut/simulate-battery-any-sensor
HITL: simulate battery voltage with any sensor
This commit is contained in:
commit
2ac549bfba
4 changed files with 15 additions and 10 deletions
|
@ -3738,15 +3738,11 @@ bool mspFCProcessInOutCommand(uint16_t cmdMSP, sbuf_t *dst, sbuf_t *src, mspResu
|
||||||
sbufAdvance(src, sizeof(uint16_t) * XYZ_AXIS_COUNT);
|
sbufAdvance(src, sizeof(uint16_t) * XYZ_AXIS_COUNT);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(USE_FAKE_BATT_SENSOR)
|
|
||||||
if (SIMULATOR_HAS_OPTION(HITL_EXT_BATTERY_VOLTAGE)) {
|
if (SIMULATOR_HAS_OPTION(HITL_EXT_BATTERY_VOLTAGE)) {
|
||||||
fakeBattSensorSetVbat(sbufReadU8(src) * 10);
|
simulatorData.vbat = sbufReadU8(src);
|
||||||
} else {
|
} else {
|
||||||
#endif
|
simulatorData.vbat = SIMULATOR_FULL_BATTERY;
|
||||||
fakeBattSensorSetVbat((uint16_t)(SIMULATOR_FULL_BATTERY * 10.0f));
|
|
||||||
#if defined(USE_FAKE_BATT_SENSOR)
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (SIMULATOR_HAS_OPTION(HITL_AIRSPEED)) {
|
if (SIMULATOR_HAS_OPTION(HITL_AIRSPEED)) {
|
||||||
simulatorData.airSpeed = sbufReadU16(src);
|
simulatorData.airSpeed = sbufReadU16(src);
|
||||||
|
|
|
@ -179,7 +179,8 @@ flightModeForTelemetry_e getFlightModeForTelemetry(void)
|
||||||
|
|
||||||
#ifdef USE_SIMULATOR
|
#ifdef USE_SIMULATOR
|
||||||
simulatorData_t simulatorData = {
|
simulatorData_t simulatorData = {
|
||||||
.flags = 0,
|
.flags = 0,
|
||||||
.debugIndex = 0
|
.debugIndex = 0,
|
||||||
|
.vbat = 0
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -171,7 +171,7 @@ flightModeForTelemetry_e getFlightModeForTelemetry(void);
|
||||||
|
|
||||||
#define SIMULATOR_MSP_VERSION 2 // Simulator MSP version
|
#define SIMULATOR_MSP_VERSION 2 // Simulator MSP version
|
||||||
#define SIMULATOR_BARO_TEMP 25 // °C
|
#define SIMULATOR_BARO_TEMP 25 // °C
|
||||||
#define SIMULATOR_FULL_BATTERY 12.6f // Volts
|
#define SIMULATOR_FULL_BATTERY 126 // Volts*10
|
||||||
#define SIMULATOR_HAS_OPTION(flag) ((simulatorData.flags & flag) != 0)
|
#define SIMULATOR_HAS_OPTION(flag) ((simulatorData.flags & flag) != 0)
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|
|
@ -84,7 +84,7 @@ static bool batteryUseCapacityThresholds = false;
|
||||||
static bool batteryFullWhenPluggedIn = false;
|
static bool batteryFullWhenPluggedIn = false;
|
||||||
static bool profileAutoswitchDisable = false;
|
static bool profileAutoswitchDisable = false;
|
||||||
|
|
||||||
static uint16_t vbat = 0; // battery voltage in 0.1V steps (filtered)
|
static uint16_t vbat = 0; // battery voltage in 0.01V steps (filtered)
|
||||||
static uint16_t powerSupplyImpedance = 0; // calculated impedance in milliohm
|
static uint16_t powerSupplyImpedance = 0; // calculated impedance in milliohm
|
||||||
static uint16_t sagCompensatedVBat = 0; // calculated no load vbat
|
static uint16_t sagCompensatedVBat = 0; // calculated no load vbat
|
||||||
static bool powerSupplyImpedanceIsValid = false;
|
static bool powerSupplyImpedanceIsValid = false;
|
||||||
|
@ -297,6 +297,14 @@ static void updateBatteryVoltage(timeUs_t timeDelta, bool justConnected)
|
||||||
vbat = 0;
|
vbat = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_SIMULATOR
|
||||||
|
if (ARMING_FLAG(SIMULATOR_MODE_HITL) && SIMULATOR_HAS_OPTION(HITL_SIMULATE_BATTERY)) {
|
||||||
|
vbat = ((uint16_t)simulatorData.vbat)*10;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (justConnected) {
|
if (justConnected) {
|
||||||
pt1FilterReset(&vbatFilterState, vbat);
|
pt1FilterReset(&vbatFilterState, vbat);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue