mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-24 00:35:34 +03:00
Merge branch 'master' of https://github.com/RomanLut/inav into submit-gps-fix-estimation
This commit is contained in:
commit
0fb2c1edc8
391 changed files with 150969 additions and 1669 deletions
|
@ -46,6 +46,7 @@
|
|||
#include "drivers/compass/compass_msp.h"
|
||||
#include "drivers/barometer/barometer_msp.h"
|
||||
#include "drivers/pitotmeter/pitotmeter_msp.h"
|
||||
#include "sensors/battery_sensor_fake.h"
|
||||
#include "drivers/bus_i2c.h"
|
||||
#include "drivers/display.h"
|
||||
#include "drivers/flash.h"
|
||||
|
@ -1123,6 +1124,25 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
|
|||
serializeSDCardSummaryReply(dst);
|
||||
break;
|
||||
|
||||
#if defined (USE_DJI_HD_OSD) || defined (USE_MSP_DISPLAYPORT)
|
||||
case MSP_BATTERY_STATE:
|
||||
// Battery characteristics
|
||||
sbufWriteU8(dst, constrain(getBatteryCellCount(), 0, 255));
|
||||
sbufWriteU16(dst, currentBatteryProfile->capacity.value);
|
||||
|
||||
// Battery state
|
||||
sbufWriteU8(dst, constrain(getBatteryVoltage() / 10, 0, 255)); // in 0.1V steps
|
||||
sbufWriteU16(dst, constrain(getMAhDrawn(), 0, 0xFFFF));
|
||||
sbufWriteU16(dst, constrain(getAmperage(), -0x8000, 0x7FFF));
|
||||
|
||||
// Battery alerts - used values match Betaflight's/DJI's
|
||||
sbufWriteU8(dst, getBatteryState());
|
||||
|
||||
// Additional battery voltage field (in 0.01V steps)
|
||||
sbufWriteU16(dst, getBatteryVoltage());
|
||||
break;
|
||||
#endif
|
||||
|
||||
case MSP_OSD_CONFIG:
|
||||
#ifdef USE_OSD
|
||||
sbufWriteU8(dst, OSD_DRIVER_MAX7456); // OSD supported
|
||||
|
@ -1389,6 +1409,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
|
|||
break;
|
||||
|
||||
case MSP_VTX_CONFIG:
|
||||
#ifdef USE_VTX_CONTROL
|
||||
{
|
||||
vtxDevice_t *vtxDevice = vtxCommonDevice();
|
||||
if (vtxDevice) {
|
||||
|
@ -1415,6 +1436,9 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
|
|||
sbufWriteU8(dst, VTXDEV_UNKNOWN); // no VTX configured
|
||||
}
|
||||
}
|
||||
#else
|
||||
sbufWriteU8(dst, VTXDEV_UNKNOWN); // no VTX configured
|
||||
#endif
|
||||
break;
|
||||
|
||||
case MSP_NAME:
|
||||
|
@ -2443,6 +2467,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
|
|||
break;
|
||||
#endif // USE_OSD
|
||||
|
||||
#ifdef USE_VTX_CONTROL
|
||||
case MSP_SET_VTX_CONFIG:
|
||||
if (dataSize >= 2) {
|
||||
vtxDevice_t *vtxDevice = vtxCommonDevice();
|
||||
|
@ -2476,6 +2501,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
|
|||
return MSP_RESULT_ERROR;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef USE_FLASHFS
|
||||
case MSP_DATAFLASH_ERASE:
|
||||
|
@ -3222,8 +3248,12 @@ static bool mspParameterGroupsCommand(sbuf_t *dst, sbuf_t *src)
|
|||
#ifdef USE_SIMULATOR
|
||||
bool isOSDTypeSupportedBySimulator(void)
|
||||
{
|
||||
#ifdef USE_OSD
|
||||
displayPort_t *osdDisplayPort = osdGetDisplayPort();
|
||||
return (osdDisplayPort && osdDisplayPort->cols == 30 && (osdDisplayPort->rows == 13 || osdDisplayPort->rows == 16));
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
void mspWriteSimulatorOSD(sbuf_t *dst)
|
||||
|
@ -3445,8 +3475,8 @@ bool mspFCProcessInOutCommand(uint16_t cmdMSP, sbuf_t *dst, sbuf_t *src, mspResu
|
|||
|
||||
if (!SIMULATOR_HAS_OPTION(HITL_ENABLE)) {
|
||||
|
||||
if (ARMING_FLAG(SIMULATOR_MODE)) { // Just once
|
||||
DISABLE_ARMING_FLAG(SIMULATOR_MODE);
|
||||
if (ARMING_FLAG(SIMULATOR_MODE_HITL)) { // Just once
|
||||
DISABLE_ARMING_FLAG(SIMULATOR_MODE_HITL);
|
||||
|
||||
#ifdef USE_BARO
|
||||
baroStartCalibration();
|
||||
|
@ -3459,9 +3489,9 @@ bool mspFCProcessInOutCommand(uint16_t cmdMSP, sbuf_t *dst, sbuf_t *src, mspResu
|
|||
// Review: Many states were affected. Reboot?
|
||||
|
||||
disarm(DISARM_SWITCH); // Disarm to prevent motor output!!!
|
||||
}
|
||||
}
|
||||
} else if (!areSensorsCalibrating()) {
|
||||
if (!ARMING_FLAG(SIMULATOR_MODE)) { // Just once
|
||||
if (!ARMING_FLAG(SIMULATOR_MODE_HITL)) { // Just once
|
||||
#ifdef USE_BARO
|
||||
baroStartCalibration();
|
||||
#endif
|
||||
|
@ -3476,7 +3506,7 @@ bool mspFCProcessInOutCommand(uint16_t cmdMSP, sbuf_t *dst, sbuf_t *src, mspResu
|
|||
mag.magADC[Z] = 0;
|
||||
}
|
||||
#endif
|
||||
ENABLE_ARMING_FLAG(SIMULATOR_MODE);
|
||||
ENABLE_ARMING_FLAG(SIMULATOR_MODE_HITL);
|
||||
LOG_DEBUG(SYSTEM, "Simulator enabled");
|
||||
}
|
||||
|
||||
|
@ -3553,11 +3583,15 @@ bool mspFCProcessInOutCommand(uint16_t cmdMSP, sbuf_t *dst, sbuf_t *src, mspResu
|
|||
sbufAdvance(src, sizeof(uint16_t) * XYZ_AXIS_COUNT);
|
||||
}
|
||||
|
||||
#if defined(USE_FAKE_BATT_SENSOR)
|
||||
if (SIMULATOR_HAS_OPTION(HITL_EXT_BATTERY_VOLTAGE)) {
|
||||
simulatorData.vbat = sbufReadU8(src);
|
||||
fakeBattSensorSetVbat(sbufReadU8(src) * 10);
|
||||
} else {
|
||||
simulatorData.vbat = (uint8_t)(SIMULATOR_FULL_BATTERY * 10.0f);
|
||||
#endif
|
||||
fakeBattSensorSetVbat((uint16_t)(SIMULATOR_FULL_BATTERY * 10.0f));
|
||||
#if defined(USE_FAKE_BATT_SENSOR)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (SIMULATOR_HAS_OPTION(HITL_AIRSPEED)) {
|
||||
simulatorData.airSpeed = sbufReadU16(src);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue