diff --git a/docs/development/msp/inav_enums.json b/docs/development/msp/inav_enums.json
index 63f3eb2941b..6c5ce2b96fe 100644
--- a/docs/development/msp/inav_enums.json
+++ b/docs/development/msp/inav_enums.json
@@ -849,13 +849,14 @@
"DEVHW_TOF10120_I2C": "48",
"DEVHW_TERARANGER_EVO_I2C": "49",
"DEVHW_MS4525": "50",
- "DEVHW_DLVR": "51",
- "DEVHW_M25P16": "52",
- "DEVHW_W25N": "53",
- "DEVHW_UG2864": "54",
- "DEVHW_SDCARD": "55",
- "DEVHW_IRLOCK": "56",
- "DEVHW_PCF8574": "57"
+ "DEVHW_MS5525": "51",
+ "DEVHW_DLVR": "52",
+ "DEVHW_M25P16": "53",
+ "DEVHW_W25N": "54",
+ "DEVHW_UG2864": "55",
+ "DEVHW_SDCARD": "56",
+ "DEVHW_IRLOCK": "57",
+ "DEVHW_PCF8574": "58"
},
"deviceFlags_e": {
"_source": "inav/src/main/drivers/bus.h",
@@ -1764,6 +1765,12 @@
"IBUS_MEAS_VALUE_GPS_LON2": "145",
"IBUS_MEAS_VALUE_GPS": "253"
},
+ "icm42605Variant_e": {
+ "_source": "inav/src/main/drivers/accgyro/accgyro_icm42605.c",
+ "ICM42605_VARIANT_42605": "0",
+ "ICM42605_VARIANT_42686P": "1",
+ "ICM42605_VARIANT_42688P": "2"
+ },
"inputSource_e": {
"_source": "inav/src/main/flight/servos.h",
"INPUT_STABILIZED_ROLL": "0",
@@ -2123,6 +2130,7 @@
"LSM6DXX_VAL_CTRL1_XL_LPF2": "1",
"LSM6DXX_VAL_CTRL2_G_ODR6664": "10",
"LSM6DXX_VAL_CTRL2_G_2000DPS": "3",
+ "LSM6DXX_VAL_CTRL3_C_BDU": "BIT(6)",
"LSM6DXX_VAL_CTRL3_C_H_LACTIVE": "0",
"LSM6DXX_VAL_CTRL3_C_PP_OD": "0",
"LSM6DXX_VAL_CTRL3_C_SIM": "0",
@@ -2140,7 +2148,21 @@
"LSM6DXX_VAL_CTRL7_G_HPM_G_65": "1",
"LSM6DXX_VAL_CTRL7_G_HPM_G_260": "2",
"LSM6DXX_VAL_CTRL7_G_HPM_G_1040": "3",
- "LSM6DXX_VAL_CTRL9_XL_I3C_DISABLE": "BIT(1)"
+ "LSM6DXX_VAL_CTRL9_XL_I3C_DISABLE": "BIT(1)",
+ "LSM6DXX_VAL_CTRL1_XL_V_OPMODE_HIGH_ACCURACY": "1",
+ "LSM6DXX_VAL_CTRL1_XL_V_ODR_1000HZ_HAODR1": "9",
+ "LSM6DXX_VAL_CTRL2_G_V_OPMODE_HIGH_ACCURACY": "1",
+ "LSM6DXX_VAL_CTRL2_G_V_ODR_8000HZ_HAODR1": "12",
+ "LSM6DXX_VAL_HAODR_CFG_MODE1": "1",
+ "LSM6DXX_VAL_CTRL6_C_V_FS_G_2000DPS": "4",
+ "LSM6DXX_VAL_CTRL6_C_V_DSK320X_RESERVED_BIT3": "BIT(3)",
+ "LSM6DXX_VAL_CTRL6_C_V_LPF1_BW_288HZ": "0",
+ "LSM6DXX_VAL_CTRL6_C_V_LPF1_BW_215HZ": "1",
+ "LSM6DXX_VAL_CTRL6_C_V_LPF1_BW_157HZ": "2",
+ "LSM6DXX_VAL_CTRL6_C_V_LPF1_BW_455HZ": "3",
+ "LSM6DXX_VAL_CTRL7_G_V_LPF1_EN": "BIT(0)",
+ "LSM6DXX_VAL_CTRL8_XL_V_FS_16G": "3",
+ "LSM6DXX_VAL_CTRL4_C_V_DRDY_PULSED": "BIT(1)"
},
"lsm6dxxRegister_e": {
"_source": "inav/src/main/drivers/accgyro/accgyro_lsm6dxx.h",
@@ -2172,7 +2194,8 @@
"LSM6DXX_REG_OUTY_L_A": "42",
"LSM6DXX_REG_OUTY_H_A": "43",
"LSM6DXX_REG_OUTZ_L_A": "44",
- "LSM6DXX_REG_OUTZ_H_A": "45"
+ "LSM6DXX_REG_OUTZ_H_A": "45",
+ "LSM6DXX_REG_HAODR_CFG": "98"
},
"ltm_frame_e": {
"_source": "inav/src/main/telemetry/ltm.h",
@@ -2335,7 +2358,8 @@
"MULTI_FUNC_3": "3",
"MULTI_FUNC_4": "4",
"MULTI_FUNC_5": "5",
- "MULTI_FUNC_END": "6"
+ "MULTI_FUNC_6": "6",
+ "MULTI_FUNC_END": "7"
},
"multiFunctionFlags_e": {
"_source": "inav/src/main/fc/multifunction.h",
@@ -3062,7 +3086,8 @@
"PITOT_VIRTUAL": "4",
"PITOT_FAKE": "5",
"PITOT_MSP": "6",
- "PITOT_DLVR": "7"
+ "PITOT_DLVR": "7",
+ "PITOT_MS5525": "8"
},
"pollType_e": {
"_source": "inav/src/main/io/smartport_master.c",
@@ -3301,8 +3326,9 @@
"_source": "inav/src/main/io/displayport_msp_osd.c",
"SD_3016": "0",
"HD_5018": "1",
- "HD_6022": "2",
- "HD_5320": "3"
+ "HD_3016": "2",
+ "HD_6022": "3",
+ "HD_5320": "4"
},
"resourceOwner_e": {
"_source": "inav/src/main/drivers/resource.h",
@@ -3469,7 +3495,7 @@
"SDCARD_OPERATION_FAILURE": "3"
},
"sdcardReceiveBlockStatus_e": {
- "_source": "inav/src/main/drivers/sdcard/sdcard_spi.c",
+ "_source": "inav/src/main/drivers/sdcard/sdcard_sdio.c",
"SDCARD_RECEIVE_SUCCESS": "0",
"SDCARD_RECEIVE_BLOCK_IN_PROGRESS": "1",
"SDCARD_RECEIVE_ERROR": "2"
@@ -3691,7 +3717,12 @@
"HITL_AIRSPEED": "(1 << 6)",
"HITL_EXTENDED_FLAGS": "(1 << 7)",
"HITL_GPS_TIMEOUT": "(1 << 8)",
- "HITL_PITOT_FAILURE": "(1 << 9)"
+ "HITL_PITOT_FAILURE": "(1 << 9)",
+ "HITL_CURRENT_SENSOR": "(1 << 10)",
+ "HITL_SIM_RC_INPUT": "(1 << 11)",
+ "HITL_RANGEFINDER": "(1 << 12)",
+ "HITL_FAILSAFE_TRIGGERED": "(1 << 13)",
+ "HITL_SITL_MODE": "(1 << 14)"
},
"smartAudioVersion_e": {
"_source": "inav/src/main/io/vtx_smartaudio.h",
@@ -3838,7 +3869,7 @@
"THR_HI": "(2 << (2 * THROTTLE))"
},
"systemState_e": {
- "_source": "inav/src/main/fc/fc_init.h",
+ "_source": "inav/src/main/fc/fc_init.c",
"SYSTEM_STATE_INITIALISING": "0",
"SYSTEM_STATE_CONFIG_LOADED": "(1 << 0)",
"SYSTEM_STATE_SENSORS_READY": "(1 << 1)",
@@ -3850,7 +3881,8 @@
"_source": "inav/src/main/drivers/timer.h",
"TCH_DMA_IDLE": "0",
"TCH_DMA_READY": "1",
- "TCH_DMA_ACTIVE": "2"
+ "TCH_DMA_ACTIVE": "2",
+ "TCH_DMA_CIRCULAR": "3"
},
"tempSensorType_e": {
"_source": "inav/src/main/sensors/temperature.h",
diff --git a/docs/development/msp/inav_enums_ref.md b/docs/development/msp/inav_enums_ref.md
index 802e813ab43..8ed0540edc9 100644
--- a/docs/development/msp/inav_enums_ref.md
+++ b/docs/development/msp/inav_enums_ref.md
@@ -150,6 +150,7 @@
- [ibusSensorType1_e](#enum-ibussensortype1_e)
- [ibusSensorType_e](#enum-ibussensortype_e)
- [ibusSensorValue_e](#enum-ibussensorvalue_e)
+- [icm42605Variant_e](#enum-icm42605variant_e)
- [inputSource_e](#enum-inputsource_e)
- [itermRelax_e](#enum-itermrelax_e)
- [led_pin_pwm_mode_e](#enum-led_pin_pwm_mode_e)
@@ -1455,13 +1456,14 @@
| `DEVHW_TOF10120_I2C` | 48 | |
| `DEVHW_TERARANGER_EVO_I2C` | 49 | |
| `DEVHW_MS4525` | 50 | |
-| `DEVHW_DLVR` | 51 | |
-| `DEVHW_M25P16` | 52 | |
-| `DEVHW_W25N` | 53 | |
-| `DEVHW_UG2864` | 54 | |
-| `DEVHW_SDCARD` | 55 | |
-| `DEVHW_IRLOCK` | 56 | |
-| `DEVHW_PCF8574` | 57 | |
+| `DEVHW_MS5525` | 51 | |
+| `DEVHW_DLVR` | 52 | |
+| `DEVHW_M25P16` | 53 | |
+| `DEVHW_W25N` | 54 | |
+| `DEVHW_UG2864` | 55 | |
+| `DEVHW_SDCARD` | 56 | |
+| `DEVHW_IRLOCK` | 57 | |
+| `DEVHW_PCF8574` | 58 | |
---
## `deviceFlags_e`
@@ -2797,6 +2799,17 @@
| `IBUS_MEAS_VALUE_GPS_LON2` | 145 | |
| `IBUS_MEAS_VALUE_GPS` | 253 | |
+---
+## `icm42605Variant_e`
+
+> Source: ../../../src/main/drivers/accgyro/accgyro_icm42605.c
+
+| Enumerator | Value | Condition |
+|---|---:|---|
+| `ICM42605_VARIANT_42605` | 0 | |
+| `ICM42605_VARIANT_42686P` | 1 | |
+| `ICM42605_VARIANT_42688P` | 2 | |
+
---
## `inputSource_e`
@@ -3243,6 +3256,7 @@
| `LSM6DXX_VAL_CTRL1_XL_LPF2` | 1 | |
| `LSM6DXX_VAL_CTRL2_G_ODR6664` | 10 | |
| `LSM6DXX_VAL_CTRL2_G_2000DPS` | 3 | |
+| `LSM6DXX_VAL_CTRL3_C_BDU` | BIT(6) | |
| `LSM6DXX_VAL_CTRL3_C_H_LACTIVE` | 0 | |
| `LSM6DXX_VAL_CTRL3_C_PP_OD` | 0 | |
| `LSM6DXX_VAL_CTRL3_C_SIM` | 0 | |
@@ -3261,6 +3275,20 @@
| `LSM6DXX_VAL_CTRL7_G_HPM_G_260` | 2 | |
| `LSM6DXX_VAL_CTRL7_G_HPM_G_1040` | 3 | |
| `LSM6DXX_VAL_CTRL9_XL_I3C_DISABLE` | BIT(1) | |
+| `LSM6DXX_VAL_CTRL1_XL_V_OPMODE_HIGH_ACCURACY` | 1 | |
+| `LSM6DXX_VAL_CTRL1_XL_V_ODR_1000HZ_HAODR1` | 9 | |
+| `LSM6DXX_VAL_CTRL2_G_V_OPMODE_HIGH_ACCURACY` | 1 | |
+| `LSM6DXX_VAL_CTRL2_G_V_ODR_8000HZ_HAODR1` | 12 | |
+| `LSM6DXX_VAL_HAODR_CFG_MODE1` | 1 | |
+| `LSM6DXX_VAL_CTRL6_C_V_FS_G_2000DPS` | 4 | |
+| `LSM6DXX_VAL_CTRL6_C_V_DSK320X_RESERVED_BIT3` | BIT(3) | |
+| `LSM6DXX_VAL_CTRL6_C_V_LPF1_BW_288HZ` | 0 | |
+| `LSM6DXX_VAL_CTRL6_C_V_LPF1_BW_215HZ` | 1 | |
+| `LSM6DXX_VAL_CTRL6_C_V_LPF1_BW_157HZ` | 2 | |
+| `LSM6DXX_VAL_CTRL6_C_V_LPF1_BW_455HZ` | 3 | |
+| `LSM6DXX_VAL_CTRL7_G_V_LPF1_EN` | BIT(0) | |
+| `LSM6DXX_VAL_CTRL8_XL_V_FS_16G` | 3 | |
+| `LSM6DXX_VAL_CTRL4_C_V_DRDY_PULSED` | BIT(1) | |
---
## `lsm6dxxRegister_e`
@@ -3298,6 +3326,7 @@
| `LSM6DXX_REG_OUTY_H_A` | 43 | |
| `LSM6DXX_REG_OUTZ_L_A` | 44 | |
| `LSM6DXX_REG_OUTZ_H_A` | 45 | |
+| `LSM6DXX_REG_HAODR_CFG` | 98 | |
---
## `ltm_frame_e`
@@ -3541,7 +3570,8 @@
| `MULTI_FUNC_3` | 3 | |
| `MULTI_FUNC_4` | 4 | |
| `MULTI_FUNC_5` | 5 | |
-| `MULTI_FUNC_END` | 6 | |
+| `MULTI_FUNC_6` | 6 | |
+| `MULTI_FUNC_END` | 7 | |
---
## `multiFunctionFlags_e`
@@ -4544,6 +4574,7 @@
| `PITOT_FAKE` | 5 | |
| `PITOT_MSP` | 6 | |
| `PITOT_DLVR` | 7 | |
+| `PITOT_MS5525` | 8 | |
---
## `pollType_e`
@@ -4829,8 +4860,9 @@
|---|---:|---|
| `SD_3016` | 0 | |
| `HD_5018` | 1 | |
-| `HD_6022` | 2 | |
-| `HD_5320` | 3 | |
+| `HD_3016` | 2 | |
+| `HD_6022` | 3 | |
+| `HD_5320` | 4 | |
---
## `resourceOwner_e`
@@ -5079,7 +5111,7 @@
---
## `sdcardReceiveBlockStatus_e`
-> Source: ../../../src/main/drivers/sdcard/sdcard_sdio.c
+> Source: ../../../src/main/drivers/sdcard/sdcard_spi.c
| Enumerator | Value | Condition |
|---|---:|---|
@@ -5090,7 +5122,7 @@
---
## `sdcardReceiveBlockStatus_e`
-> Source: ../../../src/main/drivers/sdcard/sdcard_spi.c
+> Source: ../../../src/main/drivers/sdcard/sdcard_sdio.c
| Enumerator | Value | Condition |
|---|---:|---|
@@ -5421,6 +5453,11 @@
| `HITL_EXTENDED_FLAGS` | (1 << 7) | |
| `HITL_GPS_TIMEOUT` | (1 << 8) | |
| `HITL_PITOT_FAILURE` | (1 << 9) | |
+| `HITL_CURRENT_SENSOR` | (1 << 10) | |
+| `HITL_SIM_RC_INPUT` | (1 << 11) | |
+| `HITL_RANGEFINDER` | (1 << 12) | |
+| `HITL_FAILSAFE_TRIGGERED` | (1 << 13) | |
+| `HITL_SITL_MODE` | (1 << 14) | |
---
## `smartAudioVersion_e`
@@ -5636,7 +5673,7 @@
---
## `systemState_e`
-> Source: ../../../src/main/fc/fc_init.c
+> Source: ../../../src/main/fc/fc_init.h
| Enumerator | Value | Condition |
|---|---:|---|
@@ -5650,7 +5687,7 @@
---
## `systemState_e`
-> Source: ../../../src/main/fc/fc_init.h
+> Source: ../../../src/main/fc/fc_init.c
| Enumerator | Value | Condition |
|---|---:|---|
@@ -5671,6 +5708,7 @@
| `TCH_DMA_IDLE` | 0 | |
| `TCH_DMA_READY` | 1 | |
| `TCH_DMA_ACTIVE` | 2 | |
+| `TCH_DMA_CIRCULAR` | 3 | |
---
## `tempSensorType_e`
diff --git a/src/main/io/displayport_msp_osd.c b/src/main/io/displayport_msp_osd.c
index 6b674a300ec..50e8cf3f5a6 100644
--- a/src/main/io/displayport_msp_osd.c
+++ b/src/main/io/displayport_msp_osd.c
@@ -61,11 +61,15 @@
#define FONT_VERSION 3
+// Values are wire-protocol constants sent as a raw byte over MSP DisplayPort
+// (MSP_DP_OPTIONS) and must stay fixed — third-party OSD firmware (e.g.
+// WTFOS) hardcodes these ordinals, so don't let enum edits renumber them.
typedef enum { // defines are from hdzero code
- SD_3016,
- HD_5018,
- HD_6022, // added to support DJI wtfos 60x22 grid
- HD_5320 // added to support Avatar and BetaflightHD
+ SD_3016 = 0,
+ HD_5018 = 1,
+ HD_3016 = 2, // unused by INAV; reserved to hold hdzero's canonical ordinal 2
+ HD_6022 = 3, // DJI wtfos 60x22 grid
+ HD_5320 = 4 // Avatar and BetaflightHD
} resolutionType_e;
#define DRAW_FREQ_DENOM 4 // 60Hz