ASTERISK option added
[opentx.git] / radio / src / dataconstants.h
blob46bb4dbaaa5018a13242bcad53674b491d542be8
1 /*
2 * Copyright (C) OpenTX
4 * Based on code named
5 * th9x - http://code.google.com/p/th9x
6 * er9x - http://code.google.com/p/er9x
7 * gruvin9x - http://code.google.com/p/gruvin9x
9 * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
21 #ifndef _DATACONSTANTS_H_
22 #define _DATACONSTANTS_H_
24 #include "board.h"
26 #define NUM_STICKS 4
28 #if defined(EXPORT)
29 #define LUA_EXPORT(...) LEXP(__VA_ARGS__)
30 #define LUA_EXPORT_MULTIPLE(...) LEXP_MULTIPLE(__VA_ARGS__)
31 #define LUA_EXPORT_EXTRA(...) LEXP_EXTRA(__VA_ARGS__)
32 #else
33 #define LUA_EXPORT(...)
34 #define LUA_EXPORT_MULTIPLE(...)
35 #define LUA_EXPORT_EXTRA(...)
36 #endif
38 #if defined(PCBHORUS)
39 #define MAX_MODELS 60
40 #define MAX_OUTPUT_CHANNELS 32 // number of real output channels CH1-CH32
41 #define MAX_FLIGHT_MODES 9
42 #define MAX_MIXERS 64
43 #define MAX_EXPOS 64
44 #define MAX_LOGICAL_SWITCHES 64
45 #define MAX_SPECIAL_FUNCTIONS 64 // number of functions assigned to switches
46 #define MAX_SCRIPTS 9
47 #define MAX_INPUTS 32
48 #define MAX_TRAINER_CHANNELS 16
49 #define MAX_TELEMETRY_SENSORS 60
50 #define MAX_CUSTOM_SCREENS 5
51 #elif defined(PCBX9D) || defined(PCBX9DP) || defined(PCBX9E)
52 #define MAX_MODELS 60
53 #define MAX_OUTPUT_CHANNELS 32 // number of real output channels CH1-CH32
54 #define MAX_FLIGHT_MODES 9
55 #define MAX_MIXERS 64
56 #define MAX_EXPOS 64
57 #define MAX_LOGICAL_SWITCHES 64
58 #define MAX_SPECIAL_FUNCTIONS 64 // number of functions assigned to switches
59 #define MAX_SCRIPTS 7
60 #define MAX_INPUTS 32
61 #define MAX_TRAINER_CHANNELS 16
62 #define MAX_TELEMETRY_SENSORS 60
63 #elif defined(PCBTARANIS)
64 #define MAX_MODELS 60
65 #define MAX_OUTPUT_CHANNELS 32 // number of real output channels CH1-CH32
66 #define MAX_FLIGHT_MODES 9
67 #define MAX_MIXERS 64
68 #define MAX_EXPOS 64
69 #define MAX_LOGICAL_SWITCHES 64
70 #define MAX_SPECIAL_FUNCTIONS 64 // number of functions assigned to switches
71 #define MAX_SCRIPTS 7
72 #define MAX_INPUTS 32
73 #define MAX_TRAINER_CHANNELS 16
74 #define MAX_TELEMETRY_SENSORS 40
75 #elif defined(PCBSKY9X)
76 #define MAX_MODELS 60
77 #define MAX_OUTPUT_CHANNELS 32 // number of real output channels CH1-CH32
78 #define MAX_FLIGHT_MODES 9
79 #define MAX_MIXERS 64
80 #define MAX_EXPOS 32
81 #define MAX_LOGICAL_SWITCHES 64
82 #define MAX_SPECIAL_FUNCTIONS 64 // number of functions assigned to switches
83 #define MAX_INPUTS 32
84 #define MAX_TRAINER_CHANNELS 16
85 #define MAX_TELEMETRY_SENSORS 40
86 #else
87 #warning "Unknown board!"
88 #endif
90 #define MAX_TIMERS 3
91 #define NUM_CAL_PPM 4
93 enum CurveType {
94 CURVE_TYPE_STANDARD,
95 CURVE_TYPE_CUSTOM,
96 CURVE_TYPE_LAST = CURVE_TYPE_CUSTOM
99 #define MIN_POINTS_PER_CURVE 3
100 #define MAX_POINTS_PER_CURVE 17
102 #if defined(PCBHORUS)
103 #define LEN_MODEL_NAME 15
104 #define LEN_TIMER_NAME 8
105 #define LEN_FLIGHT_MODE_NAME 10
106 #define LEN_BITMAP_NAME 14
107 #define LEN_EXPOMIX_NAME 6
108 #define LEN_CHANNEL_NAME 6
109 #define LEN_INPUT_NAME 4
110 #define LEN_CURVE_NAME 3
111 #define LEN_FUNCTION_NAME 6
112 #define MAX_CURVES 32
113 #define MAX_CURVE_POINTS 512
114 #elif LCD_W == 212
115 #define LEN_MODEL_NAME 12
116 #define LEN_TIMER_NAME 8
117 #define LEN_FLIGHT_MODE_NAME 10
118 #define LEN_BITMAP_NAME 10
119 #define LEN_EXPOMIX_NAME 6
120 #define LEN_CHANNEL_NAME 6
121 #define LEN_INPUT_NAME 4
122 #define LEN_CURVE_NAME 3
123 #define LEN_FUNCTION_NAME 8
124 #define MAX_CURVES 32
125 #define MAX_CURVE_POINTS 512
126 #else
127 #define LEN_MODEL_NAME 10
128 #define LEN_TIMER_NAME 3
129 #define LEN_FLIGHT_MODE_NAME 6
130 #define LEN_EXPOMIX_NAME 6
131 #define LEN_CHANNEL_NAME 4
132 #define LEN_INPUT_NAME 3
133 #define LEN_CURVE_NAME 3
134 #define LEN_FUNCTION_NAME 6
135 #define MAX_CURVES 32
136 #define MAX_CURVE_POINTS 512
137 #endif
139 #if defined(PCBTARANIS) || defined(PCBSKY9X) || defined(PCBHORUS)
140 #define NUM_MODULES 2
141 #else
142 #define NUM_MODULES 1
143 #endif
145 #define XPOTS_MULTIPOS_COUNT 6
147 #if defined(COLORLCD)
148 enum MainViews {
149 VIEW_BLANK,
150 VIEW_TIMERS_ALTITUDE,
151 VIEW_CHANNELS,
152 VIEW_TELEM1,
153 VIEW_TELEM2,
154 VIEW_TELEM3,
155 VIEW_TELEM4,
156 VIEW_COUNT
158 #elif LCD_W >= 212
159 enum MainViews {
160 VIEW_TIMERS,
161 VIEW_INPUTS,
162 VIEW_SWITCHES,
163 VIEW_COUNT
165 #else
166 enum MainViews {
167 VIEW_OUTPUTS_VALUES,
168 VIEW_OUTPUTS_BARS,
169 VIEW_INPUTS,
170 VIEW_TIMER2,
171 VIEW_COUNT
173 #endif
175 enum BeeperMode {
176 e_mode_quiet = -2,
177 e_mode_alarms,
178 e_mode_nokeys,
179 e_mode_all
182 #if defined(PCBTARANIS) || defined(PCBHORUS)
183 enum ModuleIndex {
184 INTERNAL_MODULE,
185 EXTERNAL_MODULE,
186 SPORT_MODULE,
188 enum TrainerMode {
189 TRAINER_MODE_MASTER_TRAINER_JACK,
190 TRAINER_MODE_SLAVE,
191 #if defined(PCBTARANIS)
192 TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE,
193 TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE,
194 TRAINER_MODE_MASTER_BATTERY_COMPARTMENT,
195 #endif
196 #if defined(BLUETOOTH)
197 TRAINER_MODE_MASTER_BLUETOOTH,
198 TRAINER_MODE_SLAVE_BLUETOOTH,
199 #endif
200 TRAINER_MODE_MULTI,
202 #elif defined(PCBSKY9X)
203 enum ModuleIndex {
204 EXTERNAL_MODULE,
205 EXTRA_MODULE,
206 SPORT_MODULE
208 #endif
210 #if defined(MULTIMODULE)
211 #define TRAINER_MODE_MAX() TRAINER_MODE_MULTI
212 #elif defined(BLUETOOTH)
213 #define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE_BLUETOOTH
214 #elif defined(RADIO_T16)
215 #define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE
216 #elif defined(PCBX7) || defined(PCBXLITE)
217 #define TRAINER_MODE_MAX() TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE
218 #else
219 #define TRAINER_MODE_MAX() HAS_WIRELESS_TRAINER_HARDWARE() ? TRAINER_MODE_MASTER_BATTERY_COMPARTMENT : TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE
220 #endif
222 #if defined(HARDWARE_INTERNAL_MODULE)
223 #define IS_INTERNAL_MODULE_ENABLED() (g_model.moduleData[INTERNAL_MODULE].type != MODULE_TYPE_NONE)
224 #else
225 #define IS_INTERNAL_MODULE_ENABLED() (false)
226 #endif
228 #define IS_EXTERNAL_MODULE_ENABLED() (g_model.moduleData[EXTERNAL_MODULE].type != MODULE_TYPE_NONE)
230 #if defined(HARDWARE_INTERNAL_MODULE)
231 #define IS_MODULE_ENABLED(moduleIdx) (moduleIdx==INTERNAL_MODULE ? IS_INTERNAL_MODULE_ENABLED() : moduleIdx==EXTERNAL_MODULE ? IS_EXTERNAL_MODULE_ENABLED() : false)
232 #else
233 #define IS_MODULE_ENABLED(moduleIdx) (moduleIdx==EXTERNAL_MODULE ? IS_EXTERNAL_MODULE_ENABLED() : false)
234 #endif
236 enum UartModes {
237 #if defined(CLI) || defined(DEBUG)
238 UART_MODE_DEBUG,
239 #else
240 UART_MODE_NONE,
241 #endif
242 UART_MODE_TELEMETRY_MIRROR,
243 UART_MODE_TELEMETRY,
244 UART_MODE_SBUS_TRAINER,
245 UART_MODE_LUA,
246 UART_MODE_COUNT,
247 UART_MODE_MAX = UART_MODE_COUNT-1
250 #if defined(PCBHORUS)
251 #define LEN_SWITCH_NAME 3
252 #define LEN_ANA_NAME 3
253 #define LEN_MODEL_FILENAME 16
254 #define LEN_BLUETOOTH_NAME 10
255 #else
256 #define LEN_SWITCH_NAME 3
257 #define LEN_ANA_NAME 3
258 #define LEN_BLUETOOTH_NAME 10
259 #endif
261 enum TelemetryProtocol
263 PROTOCOL_TELEMETRY_FIRST,
264 PROTOCOL_TELEMETRY_FRSKY_SPORT = PROTOCOL_TELEMETRY_FIRST,
265 PROTOCOL_TELEMETRY_FRSKY_D,
266 PROTOCOL_TELEMETRY_FRSKY_D_SECONDARY,
267 PROTOCOL_TELEMETRY_CROSSFIRE,
268 PROTOCOL_TELEMETRY_SPEKTRUM,
269 PROTOCOL_TELEMETRY_FLYSKY_IBUS,
270 PROTOCOL_TELEMETRY_HITEC,
271 PROTOCOL_TELEMETRY_HOTT,
272 PROTOCOL_TELEMETRY_MULTIMODULE,
273 PROTOCOL_TELEMETRY_LAST=PROTOCOL_TELEMETRY_MULTIMODULE,
274 PROTOCOL_TELEMETRY_LUA
277 #define TELEM_LABEL_LEN 4
278 enum TelemetryUnit {
279 UNIT_RAW,
280 UNIT_VOLTS,
281 UNIT_AMPS,
282 UNIT_MILLIAMPS,
283 UNIT_KTS,
284 UNIT_METERS_PER_SECOND,
285 UNIT_FEET_PER_SECOND,
286 UNIT_KMH,
287 UNIT_SPEED = UNIT_KMH,
288 UNIT_MPH,
289 UNIT_METERS,
290 UNIT_DIST = UNIT_METERS,
291 UNIT_FEET,
292 UNIT_CELSIUS,
293 UNIT_TEMPERATURE = UNIT_CELSIUS,
294 UNIT_FAHRENHEIT,
295 UNIT_PERCENT,
296 UNIT_MAH,
297 UNIT_WATTS,
298 UNIT_MILLIWATTS,
299 UNIT_DB,
300 UNIT_RPMS,
301 UNIT_G,
302 UNIT_DEGREE,
303 UNIT_RADIANS,
304 UNIT_MILLILITERS,
305 UNIT_FLOZ,
306 UNIT_MILLILITERS_PER_MINUTE,
307 UNIT_MAX = UNIT_MILLILITERS_PER_MINUTE,
308 UNIT_SPARE1,
309 UNIT_SPARE2,
310 UNIT_SPARE3,
311 UNIT_SPARE4,
312 UNIT_SPARE5,
313 UNIT_SPARE6,
314 UNIT_SPARE7,
315 UNIT_SPARE8,
316 UNIT_SPARE9,
317 UNIT_SPARE10,
318 UNIT_HOURS,
319 UNIT_MINUTES,
320 UNIT_SECONDS,
321 // FrSky format used for these fields, could be another format in the future
322 UNIT_FIRST_VIRTUAL,
323 UNIT_CELLS = UNIT_FIRST_VIRTUAL,
324 UNIT_DATETIME,
325 UNIT_GPS,
326 UNIT_BITFIELD,
327 UNIT_TEXT,
328 // Internal units (not stored in sensor unit)
329 UNIT_GPS_LONGITUDE,
330 UNIT_GPS_LATITUDE,
331 UNIT_DATETIME_YEAR,
332 UNIT_DATETIME_DAY_MONTH,
333 UNIT_DATETIME_HOUR_MIN,
334 UNIT_DATETIME_SEC
337 #if LCD_W >= 212
338 #define NUM_LINE_ITEMS 3
339 #else
340 #define NUM_LINE_ITEMS 2
341 #endif
343 #if defined(PCBTARANIS)
344 #define MAX_TELEM_SCRIPT_INPUTS 8
345 #endif
347 enum TelemetryScreenType {
348 TELEMETRY_SCREEN_TYPE_NONE,
349 TELEMETRY_SCREEN_TYPE_VALUES,
350 TELEMETRY_SCREEN_TYPE_BARS,
351 TELEMETRY_SCREEN_TYPE_SCRIPT,
352 #if defined(LUA)
353 TELEMETRY_SCREEN_TYPE_MAX = TELEMETRY_SCREEN_TYPE_SCRIPT
354 #else
355 TELEMETRY_SCREEN_TYPE_MAX = TELEMETRY_SCREEN_TYPE_BARS
356 #endif
358 #define MAX_TELEMETRY_SCREENS 4
359 #define TELEMETRY_SCREEN_TYPE(screenIndex) TelemetryScreenType((g_model.screensType >> (2*(screenIndex))) & 0x03)
360 #define IS_BARS_SCREEN(screenIndex) (TELEMETRY_SCREEN_TYPE(screenIndex) == TELEMETRY_SCREEN_TYPE_BARS)
362 constexpr int16_t FAILSAFE_CHANNEL_HOLD = 2000;
363 constexpr int16_t FAILSAFE_CHANNEL_NOPULSE = 2001;
365 #define LEN_SCRIPT_FILENAME 6
366 #define LEN_SCRIPT_NAME 6
367 #define MAX_SCRIPT_INPUTS 6
368 #define MAX_SCRIPT_OUTPUTS 6
370 enum PotsWarnMode {
371 POTS_WARN_OFF,
372 POTS_WARN_MANUAL,
373 POTS_WARN_AUTO
376 #define LEN_GVAR_NAME 3
377 #define GVAR_MAX 1024
378 #define GVAR_MIN -GVAR_MAX
380 #define RESERVE_RANGE_FOR_GVARS 10
381 // even we do not spend space in EEPROM for 10 GVARS, we reserve the space inside the range of values, like offset, weight, etc.
383 #define MAX_GVARS 9
385 enum SwitchSources {
386 SWSRC_NONE = 0,
388 SWSRC_FIRST_SWITCH,
390 #if defined(STORAGE_SWITCH_A)
391 SWSRC_SA0 = SWSRC_FIRST_SWITCH,
392 SWSRC_SA1,
393 SWSRC_SA2,
394 #endif
396 #if defined(STORAGE_SWITCH_B)
397 SWSRC_SB0,
398 SWSRC_SB1,
399 SWSRC_SB2,
400 #endif
402 #if defined(STORAGE_SWITCH_C)
403 SWSRC_SC0,
404 SWSRC_SC1,
405 SWSRC_SC2,
406 #endif
408 #if defined(STORAGE_SWITCH_D)
409 SWSRC_SD0,
410 SWSRC_SD1,
411 SWSRC_SD2,
412 #endif
414 #if defined(STORAGE_SWITCH_E)
415 SWSRC_SE0,
416 SWSRC_SE1,
417 SWSRC_SE2,
418 #endif
420 #if defined(STORAGE_SWITCH_F)
421 SWSRC_SF0,
422 SWSRC_SF1,
423 SWSRC_SF2,
424 #endif
426 #if defined(STORAGE_SWITCH_G)
427 SWSRC_SG0,
428 SWSRC_SG1,
429 SWSRC_SG2,
430 #endif
432 #if defined(STORAGE_SWITCH_H)
433 SWSRC_SH0,
434 SWSRC_SH1,
435 SWSRC_SH2,
436 #endif
438 #if defined(STORAGE_SWITCH_I)
439 SWSRC_SI0,
440 SWSRC_SI1,
441 SWSRC_SI2,
442 #endif
444 #if defined(STORAGE_SWITCH_J)
445 SWSRC_SJ0,
446 SWSRC_SJ1,
447 SWSRC_SJ2,
448 #endif
450 #if defined(STORAGE_SWITCH_K)
451 SWSRC_SK0,
452 SWSRC_SK1,
453 SWSRC_SK2,
454 #endif
456 #if defined(STORAGE_SWITCH_L)
457 SWSRC_SL0,
458 SWSRC_SL1,
459 SWSRC_SL2,
460 #endif
462 #if defined(STORAGE_SWITCH_M)
463 SWSRC_SM0,
464 SWSRC_SM1,
465 SWSRC_SM2,
466 #endif
468 #if defined(STORAGE_SWITCH_N)
469 SWSRC_SN0,
470 SWSRC_SN1,
471 SWSRC_SN2,
472 #endif
474 #if defined(STORAGE_SWITCH_O)
475 SWSRC_SO0,
476 SWSRC_SO1,
477 SWSRC_SO2,
478 #endif
480 #if defined(STORAGE_SWITCH_P)
481 SWSRC_SP0,
482 SWSRC_SP1,
483 SWSRC_SP2,
484 #endif
486 #if defined(STORAGE_SWITCH_Q)
487 SWSRC_SQ0,
488 SWSRC_SQ1,
489 SWSRC_SQ2,
490 #endif
492 #if defined(STORAGE_SWITCH_R)
493 SWSRC_SR0,
494 SWSRC_SR1,
495 SWSRC_SR2,
496 #endif
498 #if defined(PCBSKY9X)
499 SWSRC_ID0 = SWSRC_FIRST_SWITCH,
500 SWSRC_ID1,
501 SWSRC_ID2,
502 SWSRC_THR,
503 SWSRC_RUD,
504 SWSRC_ELE,
505 SWSRC_AIL,
506 SWSRC_GEA,
507 SWSRC_TRN,
508 SWSRC_TRAINER = SWSRC_TRN,
509 SWSRC_LAST_SWITCH = SWSRC_TRN,
510 #else
511 SWSRC_LAST_SWITCH = SWSRC_FIRST_SWITCH + STORAGE_NUM_SWITCHES_POSITIONS - 1,
512 #endif
514 #if NUM_XPOTS > 0
515 SWSRC_FIRST_MULTIPOS_SWITCH,
516 SWSRC_LAST_MULTIPOS_SWITCH = SWSRC_FIRST_MULTIPOS_SWITCH + (NUM_XPOTS * XPOTS_MULTIPOS_COUNT) - 1,
517 #endif
519 SWSRC_FIRST_TRIM,
520 SWSRC_TrimRudLeft = SWSRC_FIRST_TRIM,
521 SWSRC_TrimRudRight,
522 SWSRC_TrimEleDown,
523 SWSRC_TrimEleUp,
525 #if NUM_TRIMS > 2
526 SWSRC_TrimThrDown,
527 SWSRC_TrimThrUp,
528 SWSRC_TrimAilLeft,
529 SWSRC_TrimAilRight,
530 #endif
532 #if NUM_TRIMS > 4
533 SWSRC_TrimT5Down,
534 SWSRC_TrimT5Up,
535 SWSRC_TrimT6Down,
536 SWSRC_TrimT6Up,
537 #endif
539 #if defined(PCBSKY9X)
540 SWSRC_REa,
541 #endif
543 SWSRC_FIRST_LOGICAL_SWITCH,
544 SWSRC_SW1 = SWSRC_FIRST_LOGICAL_SWITCH,
545 SWSRC_SW2,
546 // ...
547 SWSRC_LAST_LOGICAL_SWITCH = SWSRC_FIRST_LOGICAL_SWITCH+MAX_LOGICAL_SWITCHES-1,
549 SWSRC_ON,
550 SWSRC_ONE,
552 SWSRC_FIRST_FLIGHT_MODE,
553 SWSRC_LAST_FLIGHT_MODE = SWSRC_FIRST_FLIGHT_MODE+MAX_FLIGHT_MODES-1,
555 SWSRC_TELEMETRY_STREAMING,
557 SWSRC_FIRST_SENSOR,
558 SWSRC_LAST_SENSOR = SWSRC_FIRST_SENSOR+MAX_TELEMETRY_SENSORS-1,
560 SWSRC_RADIO_ACTIVITY,
562 #if defined(DEBUG_LATENCY)
563 SWSRC_LATENCY_TOGGLE,
564 #endif
566 SWSRC_COUNT,
568 SWSRC_OFF = -SWSRC_ON,
570 SWSRC_LAST = SWSRC_COUNT-1,
571 SWSRC_FIRST = -SWSRC_LAST,
573 SWSRC_LAST_IN_LOGICAL_SWITCHES = SWSRC_COUNT-1,
574 SWSRC_LAST_IN_MIXES = SWSRC_COUNT-1,
576 SWSRC_FIRST_IN_LOGICAL_SWITCHES = -SWSRC_LAST_IN_LOGICAL_SWITCHES,
577 SWSRC_FIRST_IN_MIXES = -SWSRC_LAST_IN_MIXES,
579 SWSRC_INVERT = SWSRC_COUNT+1,
582 #if NUM_SWITCHES >= 8
583 #define SWSRC_TRAINER SWSRC_SH2
584 #else
585 #define SWSRC_TRAINER SWSRC_LAST_SWITCH,
586 #endif
588 #define SWSRC_LAST_TRIM (SWSRC_FIRST_TRIM + 2*NUM_TRIMS - 1)
590 enum MixSources {
591 MIXSRC_NONE,
593 MIXSRC_FIRST_INPUT, LUA_EXPORT_MULTIPLE("input", "Input [I%d]", MAX_INPUTS)
594 MIXSRC_LAST_INPUT = MIXSRC_FIRST_INPUT+MAX_INPUTS-1,
596 #if defined(LUA_INPUTS)
597 MIXSRC_FIRST_LUA, LUA_EXPORT_MULTIPLE("lua", "Lua mix output %d", MAX_SCRIPTS*MAX_SCRIPT_OUTPUTS)
598 MIXSRC_LAST_LUA = MIXSRC_FIRST_LUA+(MAX_SCRIPTS*MAX_SCRIPT_OUTPUTS)-1,
599 #endif
601 MIXSRC_FIRST_STICK,
602 MIXSRC_Rud = MIXSRC_FIRST_STICK, LUA_EXPORT("rud", "Rudder")
603 MIXSRC_Ele, LUA_EXPORT("ele", "Elevator")
604 MIXSRC_Thr, LUA_EXPORT("thr", "Throttle")
605 MIXSRC_Ail, LUA_EXPORT("ail", "Aileron")
607 MIXSRC_FIRST_POT,
608 #if defined(PCBHORUS)
609 MIXSRC_S1 = MIXSRC_FIRST_POT, LUA_EXPORT("s1", "Potentiometer S1")
610 MIXSRC_6POS, LUA_EXPORT("6pos", "Multipos Switch")
611 MIXSRC_S2, LUA_EXPORT("s2", "Potentiometer S2")
612 #if defined(PCBX10)
613 MIXSRC_EXT1, LUA_EXPORT("ext1", "Ext 1")
614 MIXSRC_EXT2, LUA_EXPORT("ext2", "Ext 2")
615 #endif
616 MIXSRC_FIRST_SLIDER,
617 #if defined(PCBX12S)
618 MIXSRC_S3 = MIXSRC_FIRST_SLIDER, LUA_EXPORT("s3", "Slider S3")
619 MIXSRC_S4, LUA_EXPORT("s4", "Slider S4")
620 MIXSRC_LS, LUA_EXPORT("ls", "Left rear slider")
621 MIXSRC_RS, LUA_EXPORT("rs", "Right rear slider")
622 #else
623 MIXSRC_LS = MIXSRC_FIRST_SLIDER, LUA_EXPORT("ls", "Left slider")
624 MIXSRC_RS, LUA_EXPORT("rs", "Right slider")
625 #endif
626 MIXSRC_LAST_POT = MIXSRC_RS,
627 #elif defined(PCBX9E)
628 MIXSRC_POT1 = MIXSRC_FIRST_POT, LUA_EXPORT("s1", "Potentiometer 1")
629 MIXSRC_POT2, LUA_EXPORT("s2", "Potentiometer 2")
630 MIXSRC_POT3, LUA_EXPORT("s3", "Potentiometer 3")
631 MIXSRC_POT4, LUA_EXPORT("s4", "Potentiometer 4 (X9E only)")
632 MIXSRC_FIRST_SLIDER,
633 MIXSRC_SLIDER1 = MIXSRC_FIRST_SLIDER, LUA_EXPORT("ls", "Left slider")
634 MIXSRC_SLIDER2, LUA_EXPORT("rs", "Right slider")
635 MIXSRC_SLIDER3, LUA_EXPORT("lcs", "Left center slider (X9E only)")
636 MIXSRC_SLIDER4, LUA_EXPORT("rcs", "Right center slider (X9E only)")
637 MIXSRC_LAST_POT = MIXSRC_SLIDER4,
638 #elif defined(PCBX7) || defined(PCBXLITE)
639 MIXSRC_POT1 = MIXSRC_FIRST_POT, LUA_EXPORT("s1", "Potentiometer 1")
640 MIXSRC_POT2, LUA_EXPORT("s2", "Potentiometer 2")
641 MIXSRC_LAST_POT = MIXSRC_POT2,
642 #elif defined(PCBX9LITE)
643 MIXSRC_POT1 = MIXSRC_FIRST_POT, LUA_EXPORT("s1", "Potentiometer 1")
644 MIXSRC_LAST_POT = MIXSRC_POT1,
645 #elif defined(PCBTARANIS)
646 MIXSRC_POT1 = MIXSRC_FIRST_POT, LUA_EXPORT("s1", "Potentiometer 1")
647 MIXSRC_POT2, LUA_EXPORT("s2", "Potentiometer 2")
648 MIXSRC_POT3, LUA_EXPORT("s3", "Potentiometer 3")
649 MIXSRC_FIRST_SLIDER,
650 MIXSRC_SLIDER1 = MIXSRC_FIRST_SLIDER, LUA_EXPORT("ls", "Left slider")
651 MIXSRC_SLIDER2, LUA_EXPORT("rs", "Right slider")
652 MIXSRC_LAST_POT = MIXSRC_SLIDER2,
653 #else
654 MIXSRC_P1 = MIXSRC_FIRST_POT,
655 MIXSRC_P2,
656 MIXSRC_P3,
657 MIXSRC_LAST_POT = MIXSRC_P3,
658 #endif
660 #if defined(PCBHORUS)
661 MIXSRC_MOUSE1, LUA_EXPORT("jsx", "Joystick X")
662 MIXSRC_MOUSE2, LUA_EXPORT("jsy", "Joystick Y")
663 #endif
665 #if defined(GYRO)
666 MIXSRC_GYRO1, LUA_EXPORT("gyrx", "Gyro X")
667 MIXSRC_GYRO2, LUA_EXPORT("gyry", "Gyro Y")
668 #endif
670 MIXSRC_MAX,
672 MIXSRC_FIRST_HELI,
673 MIXSRC_CYC1 = MIXSRC_FIRST_HELI, LUA_EXPORT("cyc1", "Cyclic 1")
674 MIXSRC_CYC2, LUA_EXPORT("cyc2", "Cyclic 2")
675 MIXSRC_CYC3, LUA_EXPORT("cyc3", "Cyclic 3")
677 MIXSRC_FIRST_TRIM,
678 MIXSRC_TrimRud = MIXSRC_FIRST_TRIM, LUA_EXPORT("trim-rud", "Rudder trim")
679 MIXSRC_TrimEle, LUA_EXPORT("trim-ele", "Elevator trim")
680 MIXSRC_TrimThr, LUA_EXPORT("trim-thr", "Throttle trim")
681 MIXSRC_TrimAil, LUA_EXPORT("trim-ail", "Aileron trim")
682 #if defined(PCBHORUS)
683 MIXSRC_TrimT5, LUA_EXPORT("trim-t5", "Aux trim T5")
684 MIXSRC_TrimT6, LUA_EXPORT("trim-t6", "Aux trim T6")
685 MIXSRC_LAST_TRIM = MIXSRC_TrimT6,
686 #else
687 MIXSRC_LAST_TRIM = MIXSRC_TrimAil,
688 #endif
690 MIXSRC_FIRST_SWITCH,
692 #if defined(HARDWARE_SWITCH_A)
693 MIXSRC_SA = MIXSRC_FIRST_SWITCH, LUA_EXPORT("sa", "Switch A")
694 MIXSRC_SB, LUA_EXPORT("sb", "Switch B")
695 MIXSRC_SC, LUA_EXPORT("sc", "Switch C")
696 #endif
697 #if defined(HARDWARE_SWITCH_D)
698 MIXSRC_SD, LUA_EXPORT("sd", "Switch D")
699 #elif defined(STORAGE_SWITCH_D)
700 MIXSRC_SD,
701 #endif
702 #if defined(HARDWARE_SWITCH_E)
703 MIXSRC_SE, LUA_EXPORT("se", "Switch E")
704 #elif defined(STORAGE_SWITCH_E)
705 MIXSRC_SE,
706 #endif
707 #if defined(HARDWARE_SWITCH_F)
708 MIXSRC_SF, LUA_EXPORT("sf", "Switch F")
709 #elif defined(STORAGE_SWITCH_F)
710 MIXSRC_SF,
711 #endif
712 #if defined(HARDWARE_SWITCH_G)
713 MIXSRC_SG, LUA_EXPORT("sg", "Switch G")
714 #elif defined(STORAGE_SWITCH_G)
715 MIXSRC_SG,
716 #endif
717 #if defined(HARDWARE_SWITCH_H)
718 MIXSRC_SH, LUA_EXPORT("sh", "Switch H")
719 #elif defined(STORAGE_SWITCH_H)
720 MIXSRC_SH,
721 #endif
722 #if defined(HARDWARE_SWITCH_I)
723 MIXSRC_SI, LUA_EXPORT("si", "Switch I")
724 #elif defined(STORAGE_SWITCH_I)
725 MIXSRC_SI,
726 #endif
727 #if defined(HARDWARE_SWITCH_J)
728 MIXSRC_SJ, LUA_EXPORT("sj", "Switch J")
729 #elif defined(STORAGE_SWITCH_J)
730 MIXSRC_SJ,
731 #endif
732 #if defined(HARDWARE_SWITCH_K)
733 MIXSRC_SK, LUA_EXPORT("sk", "Switch K")
734 MIXSRC_SL, LUA_EXPORT("sl", "Switch L")
735 MIXSRC_SM, LUA_EXPORT("sm", "Switch M")
736 MIXSRC_SN, LUA_EXPORT("sn", "Switch N")
737 MIXSRC_SO, LUA_EXPORT("so", "Switch O")
738 MIXSRC_SP, LUA_EXPORT("sp", "Switch P")
739 MIXSRC_SQ, LUA_EXPORT("sq", "Switch Q")
740 MIXSRC_SR, LUA_EXPORT("sr", "Switch R")
741 #endif
742 #if defined(PCBSKY9X)
743 MIXSRC_3POS = MIXSRC_FIRST_SWITCH,
744 MIXSRC_THR,
745 MIXSRC_RUD,
746 MIXSRC_ELE,
747 MIXSRC_AIL,
748 MIXSRC_GEA,
749 MIXSRC_TRN,
750 #endif
751 MIXSRC_FIRST_LOGICAL_SWITCH,
752 MIXSRC_SW1 = MIXSRC_FIRST_LOGICAL_SWITCH, LUA_EXPORT_MULTIPLE("ls", "Logical switch L%d", MAX_LOGICAL_SWITCHES)
753 MIXSRC_LAST_LOGICAL_SWITCH = MIXSRC_FIRST_LOGICAL_SWITCH+MAX_LOGICAL_SWITCHES-1,
755 MIXSRC_FIRST_TRAINER, LUA_EXPORT_MULTIPLE("trn", "Trainer input %d", MAX_TRAINER_CHANNELS)
756 MIXSRC_LAST_TRAINER = MIXSRC_FIRST_TRAINER+MAX_TRAINER_CHANNELS-1,
758 MIXSRC_FIRST_CH,
759 MIXSRC_CH1 = MIXSRC_FIRST_CH, LUA_EXPORT_MULTIPLE("ch", "Channel CH%d", MAX_OUTPUT_CHANNELS)
760 MIXSRC_CH2,
761 MIXSRC_CH3,
762 MIXSRC_CH4,
763 MIXSRC_CH5,
764 MIXSRC_CH6,
765 MIXSRC_CH7,
766 MIXSRC_CH8,
767 MIXSRC_CH9,
768 MIXSRC_CH10,
769 MIXSRC_CH11,
770 MIXSRC_CH12,
771 MIXSRC_CH13,
772 MIXSRC_CH14,
773 MIXSRC_CH15,
774 MIXSRC_CH16,
775 MIXSRC_LAST_CH = MIXSRC_CH1+MAX_OUTPUT_CHANNELS-1,
777 MIXSRC_FIRST_GVAR,
778 MIXSRC_GVAR1 = MIXSRC_FIRST_GVAR, LUA_EXPORT_MULTIPLE("gvar", "Global variable %d", MAX_GVARS)
779 MIXSRC_LAST_GVAR = MIXSRC_FIRST_GVAR+MAX_GVARS-1,
781 MIXSRC_TX_VOLTAGE, LUA_EXPORT("tx-voltage", "Transmitter battery voltage [volts]")
782 MIXSRC_TX_TIME, LUA_EXPORT("clock", "RTC clock [minutes from midnight]")
783 #if defined(INTERNAL_GPS)
784 MIXSRC_TX_GPS,
785 MIXSRC_FIRST_RESERVE,
786 #else
787 MIXSRC_FIRST_RESERVE,
788 MIXSRC_RESERVE2,
789 #endif
790 MIXSRC_RESERVE3,
791 MIXSRC_RESERVE4,
792 MIXSRC_LAST_RESERVE,
793 MIXSRC_FIRST_TIMER,
794 MIXSRC_TIMER1 = MIXSRC_FIRST_TIMER, LUA_EXPORT("timer1", "Timer 1 value [seconds]")
795 MIXSRC_TIMER2, LUA_EXPORT("timer2", "Timer 2 value [seconds]")
796 MIXSRC_TIMER3, LUA_EXPORT("timer3", "Timer 3 value [seconds]")
797 MIXSRC_LAST_TIMER = MIXSRC_TIMER3,
799 MIXSRC_FIRST_TELEM, LUA_EXPORT_MULTIPLE("telem", "Telemetry sensor %d", MAX_TELEMETRY_SENSORS)
800 MIXSRC_LAST_TELEM = MIXSRC_FIRST_TELEM+3*MAX_TELEMETRY_SENSORS-1
803 #if defined(__cplusplus)
804 static_assert(MIXSRC_FIRST_LOGICAL_SWITCH == MIXSRC_FIRST_SWITCH + STORAGE_NUM_SWITCHES, "Wrong switches definition in MIXSRC list");
805 #endif
807 #define MIXSRC_FIRST (MIXSRC_NONE + 1)
808 #define MIXSRC_LAST MIXSRC_LAST_CH
809 #define MIXSRC_LAST_SWITCH (MIXSRC_FIRST_SWITCH + STORAGE_NUM_SWITCHES - 1)
810 #define INPUTSRC_FIRST MIXSRC_Rud
811 #define INPUTSRC_LAST MIXSRC_LAST_TELEM
813 enum BacklightMode {
814 e_backlight_mode_off = 0,
815 e_backlight_mode_keys = 1,
816 e_backlight_mode_sticks = 2,
817 e_backlight_mode_all = e_backlight_mode_keys+e_backlight_mode_sticks,
818 e_backlight_mode_on
821 enum Functions {
822 // first the functions which need a checkbox
823 FUNC_OVERRIDE_CHANNEL,
824 FUNC_TRAINER,
825 FUNC_INSTANT_TRIM,
826 FUNC_RESET,
827 FUNC_SET_TIMER,
828 FUNC_ADJUST_GVAR,
829 FUNC_VOLUME,
830 FUNC_SET_FAILSAFE,
831 FUNC_RANGECHECK,
832 FUNC_BIND,
833 // then the other functions
834 FUNC_FIRST_WITHOUT_ENABLE,
835 FUNC_PLAY_SOUND = FUNC_FIRST_WITHOUT_ENABLE,
836 FUNC_PLAY_TRACK,
837 FUNC_PLAY_VALUE,
838 FUNC_RESERVE4,
839 FUNC_PLAY_SCRIPT,
840 FUNC_RESERVE5,
841 FUNC_BACKGND_MUSIC,
842 FUNC_BACKGND_MUSIC_PAUSE,
843 FUNC_VARIO,
844 FUNC_HAPTIC,
845 FUNC_LOGS,
846 FUNC_BACKLIGHT,
847 FUNC_SCREENSHOT,
848 #if defined(DEBUG)
849 FUNC_TEST, // should remain the last before MAX as not added in Companion
850 #endif
851 FUNC_MAX
854 enum TimerModes {
855 TMRMODE_NONE,
856 TMRMODE_ABS,
857 TMRMODE_THR,
858 TMRMODE_THR_REL,
859 TMRMODE_THR_TRG,
860 TMRMODE_COUNT
863 enum CountDownModes {
864 COUNTDOWN_SILENT,
865 COUNTDOWN_BEEPS,
866 COUNTDOWN_VOICE,
867 #if defined(HAPTIC)
868 COUNTDOWN_HAPTIC,
869 #endif
870 COUNTDOWN_COUNT
873 enum ResetFunctionParam {
874 FUNC_RESET_TIMER1,
875 FUNC_RESET_TIMER2,
876 FUNC_RESET_TIMER3,
877 FUNC_RESET_FLIGHT,
878 FUNC_RESET_TELEMETRY,
879 FUNC_RESET_PARAM_FIRST_TELEM,
880 FUNC_RESET_PARAM_LAST_TELEM = FUNC_RESET_PARAM_FIRST_TELEM + MAX_TELEMETRY_SENSORS,
881 FUNC_RESET_PARAMS_COUNT,
882 FUNC_RESET_PARAM_LAST = FUNC_RESET_PARAMS_COUNT-1,
885 enum AdjustGvarFunctionParam {
886 FUNC_ADJUST_GVAR_CONSTANT,
887 FUNC_ADJUST_GVAR_SOURCE,
888 FUNC_ADJUST_GVAR_GVAR,
889 FUNC_ADJUST_GVAR_INCDEC,
892 enum BluetoothModes {
893 BLUETOOTH_OFF,
894 BLUETOOTH_TELEMETRY,
895 BLUETOOTH_TRAINER,
898 // PXX2 constants
899 #define PXX2_LEN_REGISTRATION_ID 8
900 #define PXX2_LEN_RX_NAME 8
901 #define PXX2_MAX_RECEIVERS_PER_MODULE 3
903 #endif // _DATACONSTANTS_H_