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/>.
37 TABLE_GPS_RESCUE_SANITY_CHECK
,
38 TABLE_GPS_RESCUE_ALT_MODE
,
41 TABLE_BLACKBOX_DEVICE
,
55 TABLE_GYRO_HARDWARE_LPF
,
64 TABLE_MOTOR_PWM_PROTOCOL
,
65 TABLE_RC_INTERPOLATION
,
66 TABLE_RC_INTERPOLATION_CHANNELS
,
68 TABLE_DTERM_LOWPASS_TYPE
,
69 TABLE_ANTI_GRAVITY_MODE
,
71 TABLE_FAILSAFE_SWITCH_MODE
,
73 #ifdef USE_CAMERA_CONTROL
74 TABLE_CAMERA_CONTROL_MODE
,
80 #ifdef USE_RX_FRSKY_SPI
81 TABLE_RX_FRSKY_SPI_A1_SOURCE
,
83 #ifdef USE_RANGEFINDER
84 TABLE_RANGEFINDER_HARDWARE
,
86 #ifdef USE_GYRO_OVERFLOW_CHECK
87 TABLE_GYRO_OVERFLOW_CHECK
,
99 TABLE_THROTTLE_LIMIT_TYPE
,
102 #endif // USE_MAX7456
103 #if defined(USE_ITERM_RELAX)
105 TABLE_ITERM_RELAX_TYPE
,
107 #ifdef USE_ACRO_TRAINER
108 TABLE_ACRO_TRAINER_DEBUG
,
109 #endif // USE_ACRO_TRAINER
110 #ifdef USE_RC_SMOOTHING_FILTER
111 TABLE_RC_SMOOTHING_TYPE
,
112 TABLE_RC_SMOOTHING_DEBUG
,
113 TABLE_RC_SMOOTHING_INPUT_TYPE
,
114 TABLE_RC_SMOOTHING_DERIVATIVE_TYPE
,
115 #endif // USE_RC_SMOOTHING_FILTER
116 #ifdef USE_GYRO_DATA_ANALYSE
117 TABLE_DYNAMIC_FILTER_RANGE
,
118 #endif // USE_GYRO_DATA_ANALYSE
119 #ifdef USE_VTX_COMMON
120 TABLE_VTX_LOW_POWER_DISARM
,
126 #ifdef USE_LAUNCH_CONTROL
127 TABLE_LAUNCH_CONTROL_MODE
,
134 TABLE_LEDSTRIP_COLOR
,
136 TABLE_GYRO_FILTER_DEBUG
,
137 TABLE_POSITION_ALT_SOURCE
,
139 TABLE_INTERPOLATED_SP
,
140 TABLE_DSHOT_BITBANGED_TIMER
,
141 TABLE_OSD_DISPLAYPORT_DEVICE
,
144 } lookupTableIndex_e
;
146 typedef struct lookupTableEntry_s
{
147 const char * const *values
;
148 const uint8_t valueCount
;
149 } lookupTableEntry_t
;
152 #define VALUE_TYPE_OFFSET 0
153 #define VALUE_SECTION_OFFSET 3
154 #define VALUE_MODE_OFFSET 5
157 // value type, bits 0-2
158 VAR_UINT8
= (0 << VALUE_TYPE_OFFSET
),
159 VAR_INT8
= (1 << VALUE_TYPE_OFFSET
),
160 VAR_UINT16
= (2 << VALUE_TYPE_OFFSET
),
161 VAR_INT16
= (3 << VALUE_TYPE_OFFSET
),
162 VAR_UINT32
= (4 << VALUE_TYPE_OFFSET
),
164 // value section, bits 3-4
165 MASTER_VALUE
= (0 << VALUE_SECTION_OFFSET
),
166 PROFILE_VALUE
= (1 << VALUE_SECTION_OFFSET
),
167 PROFILE_RATE_VALUE
= (2 << VALUE_SECTION_OFFSET
),
168 HARDWARE_VALUE
= (3 << VALUE_SECTION_OFFSET
), // Part of the master section, but used for the hardware definition
170 // value mode, bits 5-7
171 MODE_DIRECT
= (0 << VALUE_MODE_OFFSET
),
172 MODE_LOOKUP
= (1 << VALUE_MODE_OFFSET
),
173 MODE_ARRAY
= (2 << VALUE_MODE_OFFSET
),
174 MODE_BITSET
= (3 << VALUE_MODE_OFFSET
),
175 MODE_STRING
= (4 << VALUE_MODE_OFFSET
),
179 #define VALUE_TYPE_MASK (0x07)
180 #define VALUE_SECTION_MASK (0x18)
181 #define VALUE_MODE_MASK (0xE0)
183 typedef struct cliMinMaxConfig_s
{
188 typedef struct cliMinMaxUnsignedConfig_s
{
191 } cliMinMaxUnsignedConfig_t
;
193 typedef struct cliLookupTableConfig_s
{
194 const lookupTableIndex_e tableIndex
;
195 } cliLookupTableConfig_t
;
197 typedef struct cliArrayLengthConfig_s
{
198 const uint8_t length
;
199 } cliArrayLengthConfig_t
;
201 typedef struct cliStringLengthConfig_s
{
202 const uint8_t minlength
;
203 const uint8_t maxlength
;
205 } cliStringLengthConfig_t
;
207 #define STRING_FLAGS_NONE (0)
208 #define STRING_FLAGS_WRITEONCE (1 << 0)
211 cliLookupTableConfig_t lookup
; // used for MODE_LOOKUP excl. VAR_UINT32
212 cliMinMaxConfig_t minmax
; // used for MODE_DIRECT with signed parameters
213 cliMinMaxUnsignedConfig_t minmaxUnsigned
; // used for MODE_DIRECT with unsigned parameters
214 cliArrayLengthConfig_t array
; // used for MODE_ARRAY
215 cliStringLengthConfig_t string
; // used for MODE_STRING
216 uint8_t bitpos
; // used for MODE_BITSET
217 uint32_t u32Max
; // used for MODE_DIRECT with VAR_UINT32
220 typedef struct clivalue_s
{
222 const uint8_t type
; // see cliValueFlag_e
223 const cliValueConfig_t config
;
227 } __attribute__((packed
)) clivalue_t
;
230 extern const lookupTableEntry_t lookupTables
[];
231 extern const uint16_t valueTableEntryCount
;
233 extern const clivalue_t valueTable
[];
234 //extern const uint8_t lookupTablesEntryCount;
236 extern const char * const lookupTableGyroHardware
[];
238 extern const char * const lookupTableAccHardware
[];
239 //extern const uint8_t lookupTableAccHardwareEntryCount;
241 extern const char * const lookupTableBaroHardware
[];
242 //extern const uint8_t lookupTableBaroHardwareEntryCount;
244 extern const char * const lookupTableMagHardware
[];
245 //extern const uint8_t lookupTableMagHardwareEntryCount;
247 extern const char * const lookupTableRangefinderHardware
[];
249 extern const char * const lookupTableLedstripColors
[];
251 extern const char * const lookupTableRescueAltitudeMode
[];
253 extern const char * const lookupTableItermRelax
[];
255 extern const char * const lookupTableItermRelaxType
[];