-
Notifications
You must be signed in to change notification settings - Fork 95
Expand file tree
/
Copy pathsettings.h
More file actions
316 lines (272 loc) · 7.83 KB
/
settings.h
File metadata and controls
316 lines (272 loc) · 7.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#include <stdbool.h>
#include <stdint.h>
typedef struct {
uint8_t top_speed;
bool auto_mode;
uint8_t left_speed;
uint8_t right_speed;
} setting_fan_t;
typedef struct {
int channel;
} setting_scan_t;
typedef enum {
SETTING_AUTOSCAN_STATUS_ON = 0,
SETTING_AUTOSCAN_STATUS_LAST = 1,
SETTING_AUTOSCAN_STATUS_OFF = 2
} setting_autoscan_status_t;
typedef enum {
SETTING_AUTOSCAN_SOURCE_LAST = 0,
SETTING_AUTOSCAN_SOURCE_HDZERO = 1,
SETTING_AUTOSCAN_SOURCE_EXPANSION = 2,
SETTING_AUTOSCAN_SOURCE_AV_IN = 3,
SETTING_AUTOSCAN_SOURCE_HDMI_IN = 4
} setting_autoscan_source_t;
typedef struct {
setting_autoscan_status_t status;
setting_autoscan_source_t last_source;
setting_autoscan_source_t source;
} setting_autoscan_t;
typedef enum {
SETTING_POWER_CELL_COUNT_MODE_AUTO = 0,
SETTING_POWER_CELL_COUNT_MODE_MANUAL = 1
} setting_power_cell_count_mode_t;
typedef enum {
SETTING_POWER_OSD_DISPLAY_MODE_TOTAL = 0,
SETTING_POWER_OSD_DISPLAY_MODE_CELL = 1
} setting_power_osd_display_mode_t;
typedef enum {
SETTING_POWER_WARNING_TYPE_BEEP = 0,
SETTING_POWER_WARNING_TYPE_VISUAL = 1,
SETTING_POWER_WARNING_TYPE_BOTH = 2
} setting_power_warning_type_t;
typedef enum {
SETTING_HT_ALARM_STATE_OFF = 0,
SETTING_HT_ALARM_STATE_VIDEO = 1,
SETTING_HT_ALARM_STATE_ARM = 2,
} setting_ht_alarm_state_t;
typedef enum {
SETTING_HT_ALARM_PATTERN_1SHORT = 0,
SETTING_HT_ALARM_PATTERN_2SHORT = 1,
SETTING_HT_ALARM_PATTERN_1LONG = 2
} setting_ht_alarm_pattern_t;
typedef struct {
int voltage;
bool display_voltage;
setting_power_warning_type_t warning_type;
setting_power_cell_count_mode_t cell_count_mode;
int cell_count;
setting_power_osd_display_mode_t osd_display_mode;
bool power_ana;
int calibration_offset;
} setting_power_t;
typedef enum {
SETTING_RECORD_AUDIO_SOURCE_MIC = 0,
SETTING_RECORD_AUDIO_SOURCE_LINE_IN = 1,
SETTING_RECORD_AUDIO_SOURCE_AV_IN = 2
} setting_record_audio_source_t;
typedef enum {
SETTING_RECORD_BITRATE_SCALE_NORMAL = 0,
SETTING_RECORD_BITRATE_SCALE_HALF = 1,
SETTING_RECORD_BITRATE_SCALE_QUARTER = 2,
} setting_record_bitrate_scale_t;
typedef enum {
SETTING_NAMING_CONTIGUOUS,
SETTING_NAMING_DATE
} setting_record_naming_t;
typedef struct {
bool mode_manual;
bool format_ts;
setting_record_bitrate_scale_t bitrate_scale;
bool osd;
bool audio;
setting_record_audio_source_t audio_source;
setting_record_naming_t naming;
} setting_record_t;
typedef struct {
uint8_t oled;
uint8_t brightness;
uint8_t saturation;
uint8_t contrast;
uint8_t auto_off; // 0=1min,1=3min,2=4min,3=5min,4=never,
} setting_image_t;
typedef struct {
bool enable;
int max_angle;
int32_t acc_x;
int32_t acc_y;
int32_t acc_z;
int32_t gyr_x;
int32_t gyr_y;
int32_t gyr_z;
setting_ht_alarm_state_t alarm_state;
int alarm_angle;
uint16_t alarm_delay;
setting_ht_alarm_pattern_t alarm_pattern;
bool alarm_on_arm;
bool alarm_on_video;
} setting_head_tracker_t;
typedef struct {
bool enable;
} setting_elrs_t;
typedef enum {
EMBEDDED_4x3,
EMBEDDED_16x9
} setting_osd_embedded_mode_t;
typedef enum {
SETTING_OSD_SHOW_AT_STARTUP_SHOW,
SETTING_OSD_SHOW_AT_STARTUP_HIDE,
SETTING_OSD_SHOW_AT_STARTUP_LAST
} setting_osd_show_at_startup_t;
typedef struct {
int x;
int y;
} setting_osd_goggle_element_position_t;
typedef struct {
setting_osd_goggle_element_position_t mode_4_3;
setting_osd_goggle_element_position_t mode_16_9;
} setting_osd_goggle_element_positions_t;
typedef struct {
bool show;
setting_osd_goggle_element_positions_t position;
} setting_osd_goggle_element_t;
typedef enum {
OSD_GOGGLE_TOPFAN_SPEED = 0,
OSD_GOGGLE_LATENCY_LOCK,
OSD_GOGGLE_VTX_TEMP,
OSD_GOGGLE_VRX_TEMP,
OSD_GOGGLE_BATTERY_LOW,
OSD_GOGGLE_BATTERY_VOLTAGE,
OSD_GOGGLE_CLOCK_DATE,
OSD_GOGGLE_CLOCK_TIME,
OSD_GOGGLE_CHANNEL,
OSD_GOGGLE_SD_REC,
OSD_GOGGLE_VLQ,
OSD_GOGGLE_ANT0,
OSD_GOGGLE_ANT1,
OSD_GOGGLE_ANT2,
OSD_GOGGLE_ANT3,
OSD_GOGGLE_TEMP_TOP,
OSD_GOGGLE_TEMP_LEFT,
OSD_GOGGLE_TEMP_RIGHT,
OSD_GOGGLE_NUM,
} osd_goggle_element_e;
typedef struct {
int orbit;
setting_osd_embedded_mode_t embedded_mode;
setting_osd_show_at_startup_t startup_visibility;
bool is_visible;
setting_osd_goggle_element_t element[OSD_GOGGLE_NUM];
} setting_osd_t;
typedef struct {
int year;
int month;
int day;
int hour;
int min;
int sec;
int format;
int utc_offset;
int auto_sync; // 0: Disabled, 1: Enabled
} setting_clock_t;
#define WIFI_RF_CHANNELS 14 // World Channels
#define WIFI_NETWORK_MAX 16 // Includes NULL-Terminator
#define WIFI_SSID_MAX 33 // Includes NULL-Terminator
#define WIFI_PASSWD_MAX 64 // Includes NULL-Terminator
#define WIFI_PASSWD_MIN 8 // Minimum characters allowed
#define WIFI_CLIENTID_MAX 15 // Includes NULL-Terminator
enum {
WIFI_MODE_AP = 0,
WIFI_MODE_STA,
WIFI_MODE_COUNT
};
typedef struct {
bool enable;
uint8_t mode; // 0 == WIFI_MODE_AP, 1 == WIFI_MODE_STA
char clientid[WIFI_CLIENTID_MAX];
char ssid[WIFI_MODE_COUNT][WIFI_SSID_MAX];
char passwd[WIFI_MODE_COUNT][WIFI_PASSWD_MAX];
bool dhcp;
char ip_addr[WIFI_NETWORK_MAX];
char netmask[WIFI_NETWORK_MAX];
char gateway[WIFI_NETWORK_MAX];
char dns[WIFI_NETWORK_MAX];
uint8_t rf_channel;
char root_pw[WIFI_SSID_MAX];
bool ssh;
} wifi_t;
typedef struct {
uint8_t no_dial; // 1=disable turning channels under video mode
} ease_use_t;
typedef enum {
SETTING_SOURCES_ANALOG_FORMAT_NTSC = 0,
SETTING_SOURCES_ANALOG_FORMAT_PAL = 1
} setting_sources_analog_format_t;
typedef enum {
SETTING_SOURCES_ANALOG_RATIO_4_3 = 0,
SETTING_SOURCES_ANALOG_RATIO_16_9 = 1
} setting_sources_analog_ratio_t;
typedef enum {
SETTING_SOURCES_HDZERO_BAND_RACEBAND = 0,
SETTING_SOURCES_HDZERO_BAND_LOWBAND = 1
} setting_sources_hdzero_band_t;
typedef enum {
SETTING_SOURCES_HDZERO_BW_WIDE = 0,
SETTING_SOURCES_HDZERO_BW_NARROW = 1
} setting_sources_hdzero_bw_t;
typedef struct {
setting_sources_analog_format_t analog_format; // 0=NTSC, 1= PAL
setting_sources_analog_ratio_t analog_ratio; // 0=4:3, 1=16:9
setting_sources_hdzero_band_t hdzero_band;
setting_sources_hdzero_bw_t hdzero_bw;
} setting_sources_t;
typedef struct {
uint16_t roller;
uint16_t left_click;
uint16_t left_press;
uint16_t right_click;
uint16_t right_press;
uint16_t right_double_click;
} setting_inputs_t;
typedef struct {
bool logging;
bool selftest;
} setting_storage_t;
typedef struct {
uint16_t lang;
} language_t;
typedef struct {
setting_scan_t scan;
setting_fan_t fans;
setting_autoscan_t autoscan;
setting_power_t power;
setting_sources_t source;
setting_record_t record;
setting_image_t image;
setting_head_tracker_t ht;
setting_elrs_t elrs;
wifi_t wifi;
setting_osd_t osd;
setting_clock_t clock;
setting_inputs_t inputs;
ease_use_t ease;
setting_storage_t storage;
language_t language;
} setting_t;
extern setting_t g_setting;
extern const setting_t g_setting_defaults;
void settings_reset(void);
void settings_init(void);
void settings_load(void);
bool settings_get_bool(char *section, char *key, bool default_val);
int settings_put_bool(char *section, char *key, bool value);
int settings_put_osd_element(const setting_osd_goggle_element_t *element, char *config_name);
int settings_put_osd_element_pos_y(const setting_osd_goggle_element_positions_t *pos, char *config_name);
int settings_put_osd_element_pos_x(const setting_osd_goggle_element_positions_t *pos, char *config_name);
int settings_put_osd_element_shown(bool show, char *config_name);
#ifdef __cplusplus
}
#endif