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.
25 #include "constants.h"
31 class GeneralSettings
;
32 class RadioDataConversionState
;
37 SWITCH_THR
= SWITCH_NONE
+1,
47 SWITCH_SA0
= SWITCH_NONE
+1,
92 FAILSAFE_LAST
= FAILSAFE_RECEIVER
96 HELI_SWASH_TYPE_NONE
=0,
103 enum TelemetrySource
{
104 TELEMETRY_SOURCE_TX_BATT
,
105 TELEMETRY_SOURCE_TX_TIME
,
106 TELEMETRY_SOURCE_TIMER1
,
107 TELEMETRY_SOURCE_TIMER2
,
108 TELEMETRY_SOURCE_TIMER3
,
109 TELEMETRY_SOURCE_RAS
,
110 TELEMETRY_SOURCE_RSSI_TX
,
111 TELEMETRY_SOURCE_RSSI_RX
,
116 TELEMETRY_SOURCE_ALT
,
117 TELEMETRY_SOURCE_RPM
,
118 TELEMETRY_SOURCE_FUEL
,
121 TELEMETRY_SOURCE_SPEED
,
122 TELEMETRY_SOURCE_DIST
,
123 TELEMETRY_SOURCE_GPS_ALT
,
124 TELEMETRY_SOURCE_CELL
,
125 TELEMETRY_SOURCE_CELLS_SUM
,
126 TELEMETRY_SOURCE_VFAS
,
127 TELEMETRY_SOURCE_CURRENT
,
128 TELEMETRY_SOURCE_CONSUMPTION
,
129 TELEMETRY_SOURCE_POWER
,
130 TELEMETRY_SOURCE_ACCX
,
131 TELEMETRY_SOURCE_ACCY
,
132 TELEMETRY_SOURCE_ACCZ
,
133 TELEMETRY_SOURCE_HDG
,
134 TELEMETRY_SOURCE_VERTICAL_SPEED
,
135 TELEMETRY_SOURCE_ASPEED
,
136 TELEMETRY_SOURCE_DTE
,
137 TELEMETRY_SOURCE_A1_MIN
,
138 TELEMETRY_SOURCE_A2_MIN
,
139 TELEMETRY_SOURCE_A3_MIN
,
140 TELEMETRY_SOURCE_A4_MIN
,
141 TELEMETRY_SOURCE_ALT_MIN
,
142 TELEMETRY_SOURCE_ALT_MAX
,
143 TELEMETRY_SOURCE_RPM_MAX
,
144 TELEMETRY_SOURCE_T1_MAX
,
145 TELEMETRY_SOURCE_T2_MAX
,
146 TELEMETRY_SOURCE_SPEED_MAX
,
147 TELEMETRY_SOURCE_DIST_MAX
,
148 TELEMETRY_SOURCE_ASPEED_MAX
,
149 TELEMETRY_SOURCE_CELL_MIN
,
150 TELEMETRY_SOURCE_CELLS_MIN
,
151 TELEMETRY_SOURCE_VFAS_MIN
,
152 TELEMETRY_SOURCE_CURRENT_MAX
,
153 TELEMETRY_SOURCE_POWER_MAX
,
154 TELEMETRY_SOURCE_ACC
,
155 TELEMETRY_SOURCE_GPS_TIME
,
156 TELEMETRY_SOURCES_STATUS_COUNT
= TELEMETRY_SOURCE_GPS_TIME
+1,
157 TELEMETRY_SOURCES_DISPLAY_COUNT
= TELEMETRY_SOURCE_POWER_MAX
+1,
158 TELEMETRY_SOURCES_COUNT
= TELEMETRY_SOURCE_POWER_MAX
+1,
159 TELEMETRY_SOURCE_RESERVE
= -1
162 #define TM_HASTELEMETRY 0x01
163 #define TM_HASOFFSET 0x02
164 #define TM_HASWSHH 0x04
168 SOURCE_TYPE_VIRTUAL_INPUT
,
169 SOURCE_TYPE_LUA_OUTPUT
,
170 SOURCE_TYPE_STICK
, // and POTS
171 SOURCE_TYPE_ROTARY_ENCODER
,
175 SOURCE_TYPE_CUSTOM_SWITCH
,
181 SOURCE_TYPE_TELEMETRY
,
187 Q_DECLARE_TR_FUNCTIONS(RawSourceRange
)
199 float getValue(int value
);
209 #define RANGE_DELTA_FUNCTION 1
210 #define RANGE_ABS_FUNCTION 2
213 Q_DECLARE_TR_FUNCTIONS(RawSource
)
218 SourcesGroup
= 0x002,
220 SwitchesGroup
= 0x008,
224 ScriptsGroup
= 0x080,
226 InputSourceGroups
= NoneGroup
| SourcesGroup
| TrimsGroup
| SwitchesGroup
| InputsGroup
,
227 AllSourceGroups
= InputSourceGroups
| GVarsGroup
| TelemGroup
| ScriptsGroup
231 type(SOURCE_TYPE_NONE
),
236 explicit RawSource(int value
):
237 type(RawSourceType(abs(value
)/65536)),
238 index(value
>= 0 ? abs(value
)%65536 : -(abs(value
)%65536))
242 RawSource(RawSourceType type
, int index
=0):
248 inline const int toValue() const
250 return index
>= 0 ? (type
* 65536 + index
) : -(type
* 65536 - index
);
253 RawSource
convert(RadioDataConversionState
& cstate
);
254 QString
toString(const ModelData
* model
= NULL
, const GeneralSettings
* const generalSettings
= NULL
, Board::Type board
= Board::BOARD_UNKNOWN
) const;
255 RawSourceRange
getRange(const ModelData
* model
, const GeneralSettings
& settings
, unsigned int flags
=0) const;
256 bool isStick(int * potsIndex
= NULL
, Board::Type board
= Board::BOARD_UNKNOWN
) const;
257 bool isPot(int * potsIndex
= NULL
, Board::Type board
= Board::BOARD_UNKNOWN
) const;
258 bool isSlider(int * sliderIndex
= NULL
, Board::Type board
= Board::BOARD_UNKNOWN
) const;
259 bool isTimeBased(Board::Type board
= Board::BOARD_UNKNOWN
) const;
260 bool isAvailable(const ModelData
* const model
= NULL
, const GeneralSettings
* const gs
= NULL
, Board::Type board
= Board::BOARD_UNKNOWN
) const;
262 bool operator == ( const RawSource
& other
) const {
263 return (this->type
== other
.type
) && (this->index
== other
.index
);
266 bool operator != ( const RawSource
& other
) const {
267 return (this->type
!= other
.type
) || (this->index
!= other
.index
);
274 #endif // RAWSOURCE_H