1use packed_struct::derive::PrimitiveEnum;
2use packed_struct::PrimitiveEnum;
3
4#[derive(PrimitiveEnum, Debug, Copy, Clone, PartialEq)]
5#[allow(non_camel_case_types)]
6pub enum MspCommandCode {
8 MSP_API_VERSION = 1,
9 MSP_FC_VARIANT = 2,
10 MSP_FC_VERSION = 3,
11 MSP_BOARD_INFO = 4,
12 MSP_BUILD_INFO = 5,
13
14 MSP_BATTERY_CONFIG = 32,
16 MSP_SET_BATTERY_CONFIG = 33,
17 MSP_MODE_RANGES = 34,
18 MSP_SET_MODE_RANGE = 35,
19 MSP_FEATURE = 36,
20 MSP_SET_FEATURE = 37,
21 MSP_BOARD_ALIGNMENT = 38,
22 MSP_SET_BOARD_ALIGNMENT = 39,
23 MSP_AMPERAGE_METER_CONFIG = 40,
24 MSP_SET_AMPERAGE_METER_CONFIG = 41,
25 MSP_MIXER = 42,
26 MSP_SET_MIXER = 43,
27 MSP_RX_CONFIG = 44,
28 MSP_SET_RX_CONFIG = 45,
29 MSP_LED_COLORS = 46,
30 MSP_SET_LED_COLORS = 47,
31 MSP_LED_STRIP_CONFIG = 48,
32 MSP_SET_LED_STRIP_CONFIG = 49,
33 MSP_RSSI_CONFIG = 50,
34 MSP_SET_RSSI_CONFIG = 51,
35 MSP_ADJUSTMENT_RANGES = 52,
36 MSP_SET_ADJUSTMENT_RANGE = 53,
37 MSP_CF_SERIAL_CONFIG = 54,
38 MSP_SET_CF_SERIAL_CONFIG = 55,
39 MSP_VOLTAGE_METER_CONFIG = 56,
40 MSP_SET_VOLTAGE_METER_CONFIG = 57,
41 MSP_SONAR = 58,
42 MSP_PID_CONTROLLER = 59,
43 MSP_SET_PID_CONTROLLER = 60,
44 MSP_ARMING_CONFIG = 61,
45 MSP_SET_ARMING_CONFIG = 62,
46 MSP_DATAFLASH_SUMMARY = 70,
47 MSP_DATAFLASH_READ = 71,
48 MSP_DATAFLASH_ERASE = 72,
49 MSP_LOOP_TIME = 73,
50 MSP_SET_LOOP_TIME = 74,
51 MSP_FAILSAFE_CONFIG = 75,
52 MSP_SET_FAILSAFE_CONFIG = 76,
53 MSP_RXFAIL_CONFIG = 77,
54 MSP_SET_RXFAIL_CONFIG = 78,
55 MSP_SDCARD_SUMMARY = 79,
56 MSP_BLACKBOX_CONFIG = 80,
57 MSP_SET_BLACKBOX_CONFIG = 81,
58 MSP_TRANSPONDER_CONFIG = 82,
59 MSP_SET_TRANSPONDER_CONFIG = 83,
60
61 MSP_OSD_CONFIG = 84, MSP_SET_OSD_CONFIG = 85, MSP_OSD_CHAR_READ = 86, MSP_OSD_CHAR_WRITE = 87, MSP_LED_STRIP_MODECOLOR = 127,
68 MSP_SET_LED_STRIP_MODECOLOR = 221,
69
70 MSP_VOLTAGE_METERS = 128,
71 MSP_AMPERAGE_METERS = 129,
72 MSP_BATTERY_STATE = 130,
73
74 MSP_MOTOR_CONFIG = 131,
75
76 MSP_OSD_VIDEO_CONFIG = 180,
78 MSP_SET_OSD_VIDEO_CONFIG = 181,
79 MSP_OSD_VIDEO_STATUS = 182,
80 MSP_OSD_ELEMENT_SUMMARY = 183,
81 MSP_OSD_LAYOUT_CONFIG = 184,
82 MSP_SET_OSD_LAYOUT_CONFIG = 185,
83
84 MSP_IDENT = 100,
86 MSP_STATUS = 101,
87 MSP_RAW_IMU = 102,
88 MSP_SERVO = 103,
89 MSP_MOTOR = 104,
90 MSP_RC = 105,
91 MSP_RAW_GPS = 106,
92 MSP_COMP_GPS = 107,
93 MSP_ATTITUDE = 108,
94 MSP_ALTITUDE = 109,
95 MSP_ANALOG = 110,
96 MSP_RC_TUNING = 111,
97 MSP_PID = 112,
98 MSP_BOX = 113,
99 MSP_MISC = 114,
100 MSP_MOTOR_PINS = 115,
101 MSP_BOXNAMES = 116,
102 MSP_PIDNAMES = 117,
103 MSP_WP = 118,
104 MSP_BOXIDS = 119,
105 MSP_SERVO_CONFIGURATIONS = 120,
106 MSP_MOTOR_3D_CONFIG = 124,
107 MSP_RC_DEADBAND = 125,
108 MSP_SENSOR_ALIGNMENT = 126,
109
110 MSP_SET_RAW_RC = 200,
111 MSP_SET_RAW_GPS = 201,
112 MSP_SET_PID = 202,
113 MSP_SET_BOX = 203,
114 MSP_SET_RC_TUNING = 204,
115 MSP_ACC_CALIBRATION = 205,
116 MSP_MAG_CALIBRATION = 206,
117 MSP_SET_MISC = 207,
118 MSP_RESET_CONF = 208,
119 MSP_SET_WP = 209,
120 MSP_SELECT_SETTING = 210,
121 MSP_SET_HEAD = 211,
122 MSP_SET_SERVO_CONFIGURATION = 212,
123 MSP_SET_MOTOR = 214,
124 MSP_SET_3D = 217,
125 MSP_SET_RC_DEADBAND = 218,
126 MSP_SET_RESET_CURR_PID = 219,
127 MSP_SET_SENSOR_ALIGNMENT = 220,
128
129 MSP_SERVO_MIX_RULES = 241,
131 MSP_SET_SERVO_MIX_RULE = 242,
132
133 MSP_EEPROM_WRITE = 250,
134
135 MSP_DEBUGMSG = 253,
136 MSP_DEBUG = 254,
137
138 MSP_BF_CONFIG = 66,
139
140 MSP_UID = 160, MSP_STATUS_EX = 150, MSP_ACC_TRIM = 240, MSP_SET_ACC_TRIM = 239, MSP_GPS_SV_INFO = 164, MSP_RX_MAP = 64, MSP_SET_RX_MAP = 65, MSP_SET_REBOOT = 68, MSP_BF_BUILD_INFO = 69, MSP_ADVANCED_CONFIG = 90,
156 MSP_SET_ADVANCED_CONFIG = 91,
157
158 MSP_FILTER_CONFIG = 92,
159 MSP_SET_FILTER_CONFIG = 93,
160
161 MSP_PID_ADVANCED = 94,
162 MSP_SET_PID_ADVANCED = 95,
163
164 MSP_SENSOR_CONFIG = 96,
165 MSP_SET_SENSOR_CONFIG = 97,
166
167 MSP2_COMMON_SETTING = 0x1003, MSP2_COMMON_SET_SETTING = 0x1004, MSP2_MOTOR_MIXER = 0x1005,
172 MSP2_SET_MOTOR_MIXER = 0x1006,
173
174 MSP2_COMMON_SETTING_INFO = 0x1007,
175 MSP2_COMMON_PG_LIST = 0x1008,
176
177 MSP2_SERIAL_CONFIG = 0x1009,
178 MSP2_SET_SERIAL_CONFIG = 0x100A,
179
180 MSP2_INAV_OSD_LAYOUTS = 0x2012,
181 MSP2_INAV_OSD_SET_LAYOUT_ITEM = 0x2013,
182 MSP2_INAV_OSD_ALARMS = 0x2014,
183 MSP2_INAV_OSD_SET_ALARMS = 0x2015,
184 MSP2_INAV_OSD_PREFERENCES = 0x2016,
185 MSP2_INAV_OSD_SET_PREFERENCES = 0x2017,
186
187 MSP2_INAV_SERVO_MIXER = 0x2020,
188 MSP2_INAV_SET_SERVO_MIXER = 0x2021,
189}
190
191impl From<u16> for MspCommandCode {
192 fn from(value: u16) -> Self {
193 Self::from_primitive(value).unwrap_or_else(|| panic!("Invalid MSP command code: {value}"))
194 }
195}