diff --git a/docs/development/msp/README.md b/docs/development/msp/README.md
index 7377eef84bc..be176540f49 100644
--- a/docs/development/msp/README.md
+++ b/docs/development/msp/README.md
@@ -326,8 +326,6 @@ When the MSP JSON specification changes, bump `msp_messages.json` version:
[221 - MSP_SET_LED_STRIP_MODECOLOR](#msp_set_led_strip_modecolor)
[239 - MSP_SET_ACC_TRIM](#msp_set_acc_trim)
[240 - MSP_ACC_TRIM](#msp_acc_trim)
-[241 - MSP_SERVO_MIX_RULES](#msp_servo_mix_rules)
-[242 - MSP_SET_SERVO_MIX_RULE](#msp_set_servo_mix_rule)
[245 - MSP_SET_PASSTHROUGH](#msp_set_passthrough)
[246 - MSP_RTC](#msp_rtc)
[247 - MSP_SET_RTC](#msp_set_rtc)
@@ -2646,42 +2644,6 @@ When the MSP JSON specification changes, bump `msp_messages.json` version:
**Notes:** Not implemented in INAV `fc_msp.c`. Calibration data via `MSP_CALIBRATION_DATA`.
-## `MSP_SERVO_MIX_RULES (241 / 0xf1)`
-**Description:** Retrieves the custom servo mixer rules (legacy format).
-
-**Request Payload:** **None**
-
-**Reply Payload:**
-|Field|C Type|Size (Bytes)|Units|Description|
-|---|---|---|---|---|
-| `targetChannel` | `uint8_t` | 1 | Index | Servo output channel index (0-based) |
-| `inputSource` | `uint8_t` | 1 | [inputSource_e](https://github.com/iNavFlight/inav/wiki/Enums-reference#enum-inputsource_e) | Enum `inputSource_e` Input source for the mix (RC chan, Roll, Pitch...) |
-| `rate` | `int16_t` | 2 | % | Mixing rate/weight (`-1000` to `+1000`, percent with sign) |
-| `speed` | `uint8_t` | 1 | 0-255 | Speed/Slew rate limit (`0`=instant, higher slows response) |
-| `reserved1` | `uint8_t` | 1 | - | Always 0 |
-| `legacyMax` | `uint8_t` | 1 | - | Always 100 (Legacy) |
-| `legacyBox` | `uint8_t` | 1 | - | Always 0 (Legacy) |
-
-**Notes:** Superseded by `MSP2_INAV_SERVO_MIXER`.
-
-## `MSP_SET_SERVO_MIX_RULE (242 / 0xf2)`
-**Description:** Sets a single custom servo mixer rule (legacy format).
-
-**Request Payload:**
-|Field|C Type|Size (Bytes)|Units|Description|
-|---|---|---|---|---|
-| `ruleIndex` | `uint8_t` | 1 | Index | Index of the rule to set (0 to `MAX_SERVO_RULES - 1`) |
-| `targetChannel` | `uint8_t` | 1 | Index | Servo output channel index |
-| `inputSource` | `uint8_t` | 1 | [inputSource_e](https://github.com/iNavFlight/inav/wiki/Enums-reference#enum-inputsource_e) | Enum `inputSource_e` Input source for the mix |
-| `rate` | `int16_t` | 2 | % | Mixing rate/weight (`-1000` to `+1000`, percent with sign) |
-| `speed` | `uint8_t` | 1 | 0-255 | Speed/Slew rate limit (`0`=instant, higher slows response) |
-| `legacyMinMax` | `uint16_t` | 2 | - | Ignored |
-| `legacyBox` | `uint8_t` | 1 | - | Ignored |
-
-**Reply Payload:** **None**
-
-**Notes:** Expects 9 bytes. Returns error if index invalid. Calls `loadCustomServoMixer()`. Superseded by `MSP2_INAV_SET_SERVO_MIXER`.
-
## `MSP_SET_PASSTHROUGH (245 / 0xf5)`
**Description:** Enables serial passthrough mode to peripherals like ESCs (BLHeli 4-way) or other serial devices.
@@ -3813,7 +3775,7 @@ When the MSP JSON specification changes, bump `msp_messages.json` version:
**Notes:** Requires `USE_SIMULATOR`. Complex message handling state changes for enabling/disabling HITL. Sensor data is injected directly. OSD data is sent using a custom RLE scheme. See `simulatorData` struct and associated code for details.
## `MSP2_INAV_SERVO_MIXER (8224 / 0x2020)`
-**Description:** Retrieves the custom servo mixer rules, including programming framework condition IDs, for primary and secondary mixer profiles. Supersedes `MSP_SERVO_MIX_RULES`.
+**Description:** Retrieves the custom servo mixer rules, including programming framework condition IDs, for primary and secondary mixer profiles.
**Request Payload:** **None**
@@ -3834,7 +3796,7 @@ When the MSP JSON specification changes, bump `msp_messages.json` version:
**Notes:** `conditionId` requires `USE_PROGRAMMING_FRAMEWORK`.
## `MSP2_INAV_SET_SERVO_MIXER (8225 / 0x2021)`
-**Description:** Sets a single custom servo mixer rule, including programming framework condition ID. Supersedes `MSP_SET_SERVO_MIX_RULE`.
+**Description:** Sets a single custom servo mixer rule, including programming framework condition ID.
**Request Payload:**
|Field|C Type|Size (Bytes)|Units|Description|
diff --git a/docs/development/msp/msp_messages.json b/docs/development/msp/msp_messages.json
index 176833915ad..06f29779bc4 100644
--- a/docs/development/msp/msp_messages.json
+++ b/docs/development/msp/msp_messages.json
@@ -1,7 +1,7 @@
{
"version": {
- "major": 2,
- "minor": 1,
+ "major": 3,
+ "minor": 0,
"patch": 0
},
"messages": {
@@ -5613,116 +5613,6 @@
"notes": "Not implemented in INAV `fc_msp.c`. Calibration data via `MSP_CALIBRATION_DATA`.",
"description": "Gets the accelerometer trim values."
},
- "MSP_SERVO_MIX_RULES": {
- "code": 241,
- "mspv": 1,
- "replaced_by": ["MSP2_INAV_SERVO_MIXER"],
- "request": null,
- "reply": {
- "payload": [
- {
- "name": "targetChannel",
- "ctype": "uint8_t",
- "desc": "Servo output channel index (0-based)",
- "units": "Index"
- },
- {
- "name": "inputSource",
- "ctype": "uint8_t",
- "desc": "Enum `inputSource_e` Input source for the mix (RC chan, Roll, Pitch...)",
- "units": "Enum",
- "enum": "inputSource_e"
- },
- {
- "name": "rate",
- "ctype": "int16_t",
- "desc": "Mixing rate/weight (`-1000` to `+1000`, percent with sign)",
- "units": "%"
- },
- {
- "name": "speed",
- "ctype": "uint8_t",
- "desc": "Speed/Slew rate limit (`0`=instant, higher slows response)",
- "units": "0-255"
- },
- {
- "name": "reserved1",
- "ctype": "uint8_t",
- "desc": "Always 0",
- "value": 0
- },
- {
- "name": "legacyMax",
- "ctype": "uint8_t",
- "desc": "Always 100 (Legacy)",
- "value": 100
- },
- {
- "name": "legacyBox",
- "ctype": "uint8_t",
- "desc": "Always 0 (Legacy)",
- "value": 0
- }
- ],
- "repeating": "MAX_SERVO_RULES"
- },
- "variable_len": "MAX_SERVO_RULES",
- "notes": "Superseded by `MSP2_INAV_SERVO_MIXER`.",
- "description": "Retrieves the custom servo mixer rules (legacy format)."
- },
- "MSP_SET_SERVO_MIX_RULE": {
- "code": 242,
- "mspv": 1,
- "replaced_by": ["MSP2_INAV_SET_SERVO_MIXER"],
- "request": {
- "payload": [
- {
- "name": "ruleIndex",
- "ctype": "uint8_t",
- "desc": "Index of the rule to set (0 to `MAX_SERVO_RULES - 1`)",
- "units": "Index"
- },
- {
- "name": "targetChannel",
- "ctype": "uint8_t",
- "desc": "Servo output channel index",
- "units": "Index"
- },
- {
- "name": "inputSource",
- "ctype": "uint8_t",
- "desc": "Enum `inputSource_e` Input source for the mix",
- "units": "Enum",
- "enum": "inputSource_e"
- },
- {
- "name": "rate",
- "ctype": "int16_t",
- "desc": "Mixing rate/weight (`-1000` to `+1000`, percent with sign)",
- "units": "%"
- },
- {
- "name": "speed",
- "ctype": "uint8_t",
- "desc": "Speed/Slew rate limit (`0`=instant, higher slows response)",
- "units": "0-255"
- },
- {
- "name": "legacyMinMax",
- "ctype": "uint16_t",
- "desc": "Ignored"
- },
- {
- "name": "legacyBox",
- "ctype": "uint8_t",
- "desc": "Ignored"
- }
- ]
- },
- "reply": null,
- "notes": "Expects 9 bytes. Returns error if index invalid. Calls `loadCustomServoMixer()`. Superseded by `MSP2_INAV_SET_SERVO_MIXER`.",
- "description": "Sets a single custom servo mixer rule (legacy format)."
- },
"MSP_SET_PASSTHROUGH": {
"code": 245,
"mspv": 1,
@@ -9034,7 +8924,7 @@
},
"variable_len": "MAX_SERVO_RULES",
"notes": "`conditionId` requires `USE_PROGRAMMING_FRAMEWORK`.",
- "description": "Retrieves the custom servo mixer rules, including programming framework condition IDs, for primary and secondary mixer profiles. Supersedes `MSP_SERVO_MIX_RULES`."
+ "description": "Retrieves the custom servo mixer rules, including programming framework condition IDs, for primary and secondary mixer profiles."
},
"MSP2_INAV_SET_SERVO_MIXER": {
"code": 8225,
@@ -9082,7 +8972,7 @@
},
"reply": null,
"notes": "Expects 7 bytes. Returns error if index invalid. Calls `loadCustomServoMixer()`.",
- "description": "Sets a single custom servo mixer rule, including programming framework condition ID. Supersedes `MSP_SET_SERVO_MIX_RULE`."
+ "description": "Sets a single custom servo mixer rule, including programming framework condition ID."
},
"MSP2_INAV_LOGIC_CONDITIONS": {
"code": 8226,
diff --git a/src/main/fc/fc_msp.c b/src/main/fc/fc_msp.c
index 1edf45749e2..8a18a69c6a8 100644
--- a/src/main/fc/fc_msp.c
+++ b/src/main/fc/fc_msp.c
@@ -611,17 +611,6 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
mspSerializeServoParams(dst, servoParams(i));
}
break;
- case MSP_SERVO_MIX_RULES:
- for (int i = 0; i < MAX_SERVO_RULES; i++) {
- sbufWriteU8(dst, customServoMixers(i)->targetChannel);
- sbufWriteU8(dst, customServoMixers(i)->inputSource);
- sbufWriteU16(dst, customServoMixers(i)->rate);
- sbufWriteU8(dst, customServoMixers(i)->speed);
- sbufWriteU8(dst, 0);
- sbufWriteU8(dst, 100);
- sbufWriteU8(dst, 0);
- }
- break;
case MSP2_INAV_SERVO_MIXER:
for (int i = 0; i < MAX_SERVO_RULES; i++) {
mspSerializeServoMixer(dst, customServoMixers(i));
@@ -2550,20 +2539,6 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
}
break;
- case MSP_SET_SERVO_MIX_RULE:
- sbufReadU8Safe(&tmp_u8, src);
- if ((dataSize == 9) && (tmp_u8 < MAX_SERVO_RULES)) {
- customServoMixersMutable(tmp_u8)->targetChannel = sbufReadU8(src);
- customServoMixersMutable(tmp_u8)->inputSource = sbufReadU8(src);
- customServoMixersMutable(tmp_u8)->rate = sbufReadU16(src);
- customServoMixersMutable(tmp_u8)->speed = sbufReadU8(src);
- sbufReadU16(src); //Read 2bytes for min/max and ignore it
- sbufReadU8(src); //Read 1 byte for `box` and ignore it
- loadCustomServoMixer();
- } else
- return MSP_RESULT_ERROR;
- break;
-
case MSP2_INAV_SET_SERVO_MIXER:
sbufReadU8Safe(&tmp_u8, src);
if ((dataSize == 7) && (tmp_u8 < MAX_SERVO_RULES)) {
diff --git a/src/main/msp/msp_protocol.h b/src/main/msp/msp_protocol.h
index 6b4705a738c..6effe0dc825 100644
--- a/src/main/msp/msp_protocol.h
+++ b/src/main/msp/msp_protocol.h
@@ -295,8 +295,6 @@
#define MSP_GPSSTATISTICS 166 //out message get GPS debugging data
#define MSP_ACC_TRIM 240 //out message get acc angle trim values
#define MSP_SET_ACC_TRIM 239 //in message set acc angle trim values
-#define MSP_SERVO_MIX_RULES 241 //DEPRECATED in INAV 9.1 - use MSP2_INAV_SERVO_MIXER instead. Will be removed in INAV 10.0
-#define MSP_SET_SERVO_MIX_RULE 242 //DEPRECATED in INAV 9.1 - use MSP2_INAV_SET_SERVO_MIXER instead. Will be removed in INAV 10.0
#define MSP_SET_PASSTHROUGH 245 //in message Sets up passthrough to different peripherals (4way interface, uart, etc...)
#define MSP_RTC 246 //out message Gets the RTC clock (returns: secs(i32) millis(u16) - (0,0) if time is not known)
#define MSP_SET_RTC 247 //in message Sets the RTC clock (args: secs(i32) millis(u16))