2 * This file is part of Cleanflight and Betaflight.
4 * Cleanflight and Betaflight are free software. You can redistribute
5 * this software and/or modify this software under the terms of the
6 * GNU General Public License as published by the Free Software
7 * Foundation, either version 3 of the License, or (at your option)
10 * Cleanflight and Betaflight are distributed in the hope that they
11 * will be useful, but WITHOUT ANY WARRANTY; without even the implied
12 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 * See the GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this software.
18 * If not, see <http://www.gnu.org/licenses/>.
34 TABLE_GPS_UBLOX_MODELS
,
35 TABLE_GPS_UBLOX_UTC_STANDARD
,
38 TABLE_GPS_RESCUE_SANITY_CHECK
,
39 TABLE_GPS_RESCUE_ALT_MODE
,
42 TABLE_BLACKBOX_DEVICE
,
44 TABLE_BLACKBOX_SAMPLE_RATE
,
57 TABLE_GYRO_HARDWARE_LPF
,
66 TABLE_MOTOR_PWM_PROTOCOL
,
70 TABLE_FAILSAFE_SWITCH_MODE
,
72 #ifdef USE_CAMERA_CONTROL
73 TABLE_CAMERA_CONTROL_MODE
,
79 #ifdef USE_RX_FRSKY_SPI
80 TABLE_RX_FRSKY_SPI_A1_SOURCE
,
82 #ifdef USE_RANGEFINDER
83 TABLE_RANGEFINDER_HARDWARE
,
85 #ifdef USE_GYRO_OVERFLOW_CHECK
86 TABLE_GYRO_OVERFLOW_CHECK
,
98 TABLE_THROTTLE_LIMIT_TYPE
,
99 #if defined(USE_VIDEO_SYSTEM)
102 #if defined(USE_ITERM_RELAX)
104 TABLE_ITERM_RELAX_TYPE
,
106 #ifdef USE_ACRO_TRAINER
107 TABLE_ACRO_TRAINER_DEBUG
,
108 #endif // USE_ACRO_TRAINER
109 #ifdef USE_RC_SMOOTHING_FILTER
110 TABLE_RC_SMOOTHING_DEBUG
,
111 #endif // USE_RC_SMOOTHING_FILTER
112 #ifdef USE_VTX_COMMON
113 TABLE_VTX_LOW_POWER_DISARM
,
119 #ifdef USE_LAUNCH_CONTROL
120 TABLE_LAUNCH_CONTROL_MODE
,
126 TABLE_LEDSTRIP_COLOR
,
128 TABLE_GYRO_FILTER_DEBUG
,
129 TABLE_POSITION_ALT_SOURCE
,
131 TABLE_FEEDFORWARD_AVERAGING
,
132 TABLE_DSHOT_BITBANGED_TIMER
,
133 TABLE_OSD_DISPLAYPORT_DEVICE
,
135 TABLE_OSD_LOGO_ON_ARMING
,
138 TABLE_SIMPLIFIED_TUNING_PIDS_MODE
,
140 TABLE_CMS_BACKGROUND
,
142 #ifdef USE_RX_EXPRESSLRS
145 #ifdef USE_ADVANCED_TPA
146 TABLE_TPA_CURVE_TYPE
,
149 TABLE_TPA_SPEED_TYPE
,
153 } lookupTableIndex_e
;
155 typedef struct lookupTableEntry_s
{
156 const char * const *values
;
157 const uint8_t valueCount
;
158 } lookupTableEntry_t
;
160 #define VALUE_TYPE_OFFSET 0
161 #define VALUE_SECTION_OFFSET 3
162 #define VALUE_MODE_OFFSET 5
165 // value type, bits 0-2
166 VAR_UINT8
= (0 << VALUE_TYPE_OFFSET
),
167 VAR_INT8
= (1 << VALUE_TYPE_OFFSET
),
168 VAR_UINT16
= (2 << VALUE_TYPE_OFFSET
),
169 VAR_INT16
= (3 << VALUE_TYPE_OFFSET
),
170 VAR_UINT32
= (4 << VALUE_TYPE_OFFSET
),
171 VAR_INT32
= (5 << VALUE_TYPE_OFFSET
),
173 // value section, bits 3-4
174 MASTER_VALUE
= (0 << VALUE_SECTION_OFFSET
),
175 PROFILE_VALUE
= (1 << VALUE_SECTION_OFFSET
),
176 PROFILE_RATE_VALUE
= (2 << VALUE_SECTION_OFFSET
),
177 HARDWARE_VALUE
= (3 << VALUE_SECTION_OFFSET
), // Part of the master section, but used for the hardware definition
179 // value mode, bits 5-7
180 MODE_DIRECT
= (0 << VALUE_MODE_OFFSET
),
181 MODE_LOOKUP
= (1 << VALUE_MODE_OFFSET
),
182 MODE_ARRAY
= (2 << VALUE_MODE_OFFSET
),
183 MODE_BITSET
= (3 << VALUE_MODE_OFFSET
),
184 MODE_STRING
= (4 << VALUE_MODE_OFFSET
),
187 #define VALUE_TYPE_MASK (0x07)
188 #define VALUE_SECTION_MASK (0x18)
189 #define VALUE_MODE_MASK (0xE0)
191 typedef struct cliMinMaxConfig_s
{
196 typedef struct cliMinMaxUnsignedConfig_s
{
199 } cliMinMaxUnsignedConfig_t
;
201 typedef struct cliLookupTableConfig_s
{
202 const lookupTableIndex_e tableIndex
;
203 } cliLookupTableConfig_t
;
205 typedef struct cliArrayLengthConfig_s
{
206 const uint8_t length
;
207 } cliArrayLengthConfig_t
;
209 typedef struct cliStringLengthConfig_s
{
210 const uint8_t minlength
;
211 const uint8_t maxlength
;
213 } cliStringLengthConfig_t
;
215 #define STRING_FLAGS_NONE (0)
216 #define STRING_FLAGS_WRITEONCE (1 << 0)
219 cliLookupTableConfig_t lookup
; // used for MODE_LOOKUP excl. VAR_UINT32
220 cliMinMaxConfig_t minmax
; // used for MODE_DIRECT with signed parameters
221 cliMinMaxUnsignedConfig_t minmaxUnsigned
; // used for MODE_DIRECT with unsigned parameters
222 cliArrayLengthConfig_t array
; // used for MODE_ARRAY
223 cliStringLengthConfig_t string
; // used for MODE_STRING
224 uint8_t bitpos
; // used for MODE_BITSET
225 uint32_t u32Max
; // used for MODE_DIRECT with VAR_UINT32
226 int32_t d32Max
; // used for MODE_DIRECT with VAR_INT32
232 #define PTR_PACKING __attribute__((packed))
235 typedef struct clivalue_s
{
237 const uint8_t type
; // see cliValueFlag_e
238 const cliValueConfig_t config
;
242 } PTR_PACKING clivalue_t
;
244 extern const lookupTableEntry_t lookupTables
[];
245 extern const uint16_t valueTableEntryCount
;
247 extern const clivalue_t valueTable
[];
248 //extern const uint8_t lookupTablesEntryCount;
250 extern const char * const lookupTableGyroHardware
[];
252 extern const char * const lookupTableAccHardware
[];
253 //extern const uint8_t lookupTableAccHardwareEntryCount;
255 extern const char * const lookupTableBaroHardware
[];
256 //extern const uint8_t lookupTableBaroHardwareEntryCount;
258 extern const char * const lookupTableMagHardware
[];
259 //extern const uint8_t lookupTableMagHardwareEntryCount;
261 extern const char * const lookupTableRangefinderHardware
[];
263 extern const char * const lookupTableLedstripColors
[];
265 extern const char * const lookupTableRescueAltitudeMode
[];
267 extern const char * const lookupTableItermRelax
[];
269 extern const char * const lookupTableItermRelaxType
[];
271 extern const char * const lookupTableOsdDisplayPortDevice
[];
273 extern const char * const lookupTableFeedforwardAveraging
[];
275 extern const char * const lookupTableOffOn
[];
277 extern const char * const lookupTableSimplifiedTuningPidsMode
[];
279 extern const char * const lookupTableMixerType
[];
281 extern const char * const lookupTableCMSMenuBackgroundType
[];
283 extern const char * const lookupTableThrottleLimitType
[];