Mercurial > public > ostc4
annotate Common/Inc/settings.h @ 137:9eda5a75c5fd FlipDisplay
Only copy data if data connection to RTE is valid
Only abort DMA if resync is not already in progress
author | Ideenmodellierer |
---|---|
date | Tue, 19 Feb 2019 21:48:32 +0100 |
parents | 3834b6272ee5 |
children | cc9c18075e00 |
rev | line source |
---|---|
38 | 1 /////////////////////////////////////////////////////////////////////////////// |
2 /// -*- coding: UTF-8 -*- | |
3 /// | |
4 /// \file Common/Inc/settings.h | |
5 /// \brief | |
6 /// \author Heinrichs Weikamp | |
7 /// \date 2018 | |
8 /// | |
9 /// $Id$ | |
10 /////////////////////////////////////////////////////////////////////////////// | |
11 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh | |
12 /// | |
13 /// This program is free software: you can redistribute it and/or modify | |
14 /// it under the terms of the GNU General Public License as published by | |
15 /// the Free Software Foundation, either version 3 of the License, or | |
16 /// (at your option) any later version. | |
17 /// | |
18 /// This program is distributed in the hope that it will be useful, | |
19 /// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 /// GNU General Public License for more details. | |
22 /// | |
23 /// You should have received a copy of the GNU General Public License | |
24 /// along with this program. If not, see <http://www.gnu.org/licenses/>. | |
25 ////////////////////////////////////////////////////////////////////////////// | |
26 | |
27 #ifndef SETTINGS_H | |
28 #define SETTINGS_H | |
29 | |
30 // From Common/Inc: | |
31 #include "FirmwareData.h" | |
32 | |
33 //#include "data_central.h" | |
34 | |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
35 #include "global_constants.h" |
38 | 36 // From Common/Drivers/ |
37 #include "stm32f4xx_hal.h" | |
38 | |
39 #include <stdint.h> | |
40 | |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
41 |
38 | 42 #define NUM_GASES 5 |
43 #define NUM_OFFSET_DILUENT 5 | |
44 #define SPECIAL_GAS_ID 0 | |
45 | |
46 #define ERROR_ 0xFF | |
47 | |
48 #define CCRMODE_FixedSetpoint 0 | |
49 #define CCRMODE_Sensors 1 | |
50 | |
51 #define DIVEMODE_OC 0 | |
52 #define DIVEMODE_CCR 1 | |
53 #define DIVEMODE_Gauge 2 | |
54 #define DIVEMODE_Apnea 3 | |
55 | |
56 #define GF_MODE 1 | |
57 #define VPM_MODE 2 | |
58 | |
59 #define VPM_FROM_FORTRAN 0 | |
60 #define VPM_BACHELORWORK 1 | |
61 | |
62 #define BUEHLMANN_OSTC4 0 | |
63 #define BUEHLMANN_hwOS 1 | |
64 | |
65 #define MMDDYY 0 | |
66 #define DDMMYY 1 | |
67 #define YYMMDD 2 | |
68 | |
69 #define LICENCEBONEX 0xFE | |
70 | |
71 | |
72 /* 2015 Jan 30, hw, deco and travel added for MenuEditGas | |
73 * can be used for buehlmann, vpm, etc. later but be carefull | |
74 * with current implemenation */ | |
75 typedef struct{ | |
76 uint8_t active:1; | |
77 uint8_t first:1; | |
78 uint8_t deco:1; | |
79 uint8_t travel:1; | |
80 uint8_t senderCode:4; | |
81 } gasubit8_t; | |
82 | |
83 typedef union{ | |
84 gasubit8_t ub; | |
85 uint8_t uw; | |
86 } gasbit8_Type; | |
87 | |
88 typedef struct{ | |
89 uint8_t standard:4; | |
90 uint8_t alternative:4; | |
91 } ubit2x4_t; | |
92 | |
93 typedef union{ | |
94 ubit2x4_t ub; | |
95 uint8_t uw; | |
96 } split2x4_Type; | |
97 | |
98 typedef union{ | |
99 uint8_t u8[4]; | |
100 uint32_t u32; | |
101 } general32to8_Type; | |
102 | |
103 typedef struct | |
104 { | |
105 uint8_t oxygen_percentage; | |
106 uint8_t helium_percentage; | |
107 gasbit8_Type note; | |
108 uint8_t depth_meter; | |
109 uint8_t depth_meter_travel; | |
110 uint8_t bottle_size_liter; | |
111 // uint8_t bottle_wireless_status; | |
112 uint16_t bottle_wireless_id; | |
113 } SGasLine; | |
114 | |
115 typedef struct | |
116 { | |
117 uint8_t setpoint_cbar; | |
118 uint8_t depth_meter; | |
119 gasbit8_Type note; | |
120 } SSetpointLine; | |
121 | |
122 /* SSettings | |
123 * gas[0] and setpoint[0] are the special ones configurable during the dive | |
124 */ | |
125 typedef struct | |
126 { | |
127 uint32_t header; | |
128 uint8_t warning_blink_dsec; | |
129 uint8_t lastDiveLogId; | |
130 uint32_t logFlashNextSampleStartAddress; | |
131 SGasLine gas[1 + (2*NUM_GASES)]; | |
132 SSetpointLine setpoint[1 + NUM_GASES]; | |
133 uint8_t CCR_Mode; | |
134 uint8_t dive_mode; | |
135 split2x4_Type deco_type; | |
136 uint8_t ppO2_max_deco; | |
137 uint8_t ppO2_max_std; | |
138 uint8_t ppO2_min; | |
139 uint8_t CNS_max; | |
140 uint8_t ascent_MeterPerMinute_max; | |
141 uint8_t ascent_MeterPerMinute_showGraph; | |
142 uint8_t future_TTS; | |
143 uint8_t GF_high; | |
144 uint8_t GF_low; | |
145 uint8_t aGF_high; | |
146 uint8_t aGF_low; | |
147 split2x4_Type VPM_conservatism; | |
148 uint8_t safetystopDuration; | |
149 uint8_t AtemMinutenVolumenLiter; | |
150 uint8_t ReserveFractionDenominator; | |
151 uint8_t salinity; | |
152 uint8_t last_stop_depth_meter; | |
153 uint8_t stop_increment_depth_meter; | |
154 uint8_t brightness; | |
155 uint8_t date_format; | |
156 uint8_t selected_language; | |
157 char customtext[60]; | |
158 uint16_t timeoutSurfacemode; | |
159 uint8_t timeoutMenuSurface; | |
160 uint8_t timeoutMenuDive; | |
161 uint8_t timeoutMenuEdit; | |
162 uint8_t timeoutInfo; | |
163 uint8_t timeoutInfoCompass; | |
164 uint8_t design; | |
165 uint16_t timeoutDiveReachedZeroDepth; | |
166 uint16_t divetimeToCreateLogbook; | |
167 uint8_t serialHigh; | |
168 uint8_t serialLow; | |
169 // SUFirmware firmwareVersion16to32bit; | |
170 uint32_t backup_localtime_rtc_tr; | |
171 uint32_t backup_localtime_rtc_dr; | |
172 uint16_t totalDiveCounter; | |
173 uint16_t personalDiveCount; | |
174 uint8_t showDebugInfo; | |
175 uint8_t ButtonResponsiveness[4];// changed content in 0xFFFF0016 | |
176 uint8_t nonMetricalSystem; | |
177 uint8_t fallbackToFixedSetpoint; | |
178 uint8_t bluetoothActive; /* will be set to zero on each startup at the moment */ | |
179 uint8_t safetystopDepth; | |
180 uint32_t updateSettingsAllowedFromHeader; | |
181 uint8_t scooterControl; | |
182 uint8_t scooterDrag; | |
183 uint8_t scooterLoad; | |
184 uint8_t scooterNumberOfBatteries; | |
185 uint16_t scooterBattSize; | |
186 uint8_t scooterSPARE1[7]; | |
187 uint8_t scooterSPARE2[19]; | |
188 // new in 0xFFFF0006 | |
189 uint8_t ppo2sensors_deactivated; | |
190 uint8_t tX_colorscheme; | |
191 uint8_t tX_userselectedLeftLowerCornerPrimary; | |
192 uint8_t tX_userselectedLeftLowerCornerTimeout; | |
193 uint8_t tX_customViewPrimary; | |
194 uint8_t tX_customViewTimeout; | |
195 uint8_t timeoutEnterButtonSelectDive; | |
196 uint16_t logbookOffset; | |
197 uint8_t alwaysShowPPO2; | |
198 uint8_t extraDisplay; | |
199 uint16_t display_toogle_desc; | |
200 int8_t offsetPressure_mbar; | |
201 int8_t offsetTemperature_centigrad; | |
202 uint8_t gasConsumption_travel_l_min; | |
203 uint8_t gasConsumption_bottom_l_min; | |
204 uint8_t gasConsumption_deco_l_min; | |
205 uint8_t debugModeOnStart; | |
206 uint8_t IAmStolenPleaseKillMe; | |
207 int16_t compassBearing; | |
208 uint8_t lastKnownBatteryPercentage; | |
209 uint8_t buttonBalance[3]; // 0 = right, 1 = center, 2 = left | |
210 uint8_t firmwareVersion[4]; | |
211 uint16_t timeoutSurfacemodeWithSensors; | |
212 // new in 0xFFFF0016 | |
213 uint8_t VPM_model; | |
214 uint8_t GF_model; | |
215 // new in 0xFFFF0017 | |
216 uint8_t FactoryButtonBase; | |
217 uint8_t FactoryButtonBalance[3]; | |
218 | |
112
fdf0272e9213
Added new nvm parameter"FlipDisplay" indicating the screen orientation
Ideenmodellierer
parents:
38
diff
changeset
|
219 /* new in 0xFFFF0018 */ |
fdf0272e9213
Added new nvm parameter"FlipDisplay" indicating the screen orientation
Ideenmodellierer
parents:
38
diff
changeset
|
220 uint8_t FlipDisplay; |
fdf0272e9213
Added new nvm parameter"FlipDisplay" indicating the screen orientation
Ideenmodellierer
parents:
38
diff
changeset
|
221 |
38 | 222 //to be continued |
223 } SSettings; | |
224 | |
225 typedef struct | |
226 { | |
227 // 8 bytes | |
228 uint16_t primarySerial; | |
229 uint8_t primaryLicence; | |
230 uint8_t revision8bit; | |
231 uint8_t production_year; | |
232 uint8_t production_month; | |
233 uint8_t production_day; | |
234 uint8_t production_bluetooth_name_set; | |
235 | |
236 // 44 bytes | |
237 char production_info[44]; | |
238 | |
239 // 8 bytes | |
240 uint16_t secondarySerial; | |
241 uint8_t secondaryLicence; | |
242 uint8_t secondaryReason8bit; | |
243 uint8_t secondary_year; | |
244 uint8_t secondary_month; | |
245 uint8_t secondary_day; | |
246 uint8_t secondary_bluetooth_name_set; | |
247 | |
248 // 4 bytes | |
249 char secondary_info[4]; | |
250 } SHardwareData; | |
251 | |
252 uint8_t writeData(uint8_t *); | |
253 uint8_t readData(uint8_t what,uint8_t *); | |
254 uint8_t readDataLimits__8and16BitValues_4and7BytesOutput(uint8_t what, uint8_t * data); | |
255 | |
256 uint8_t getPPO2Max(void); | |
257 uint8_t getPPO2Min(void); | |
258 uint8_t getDiveMode(void); | |
259 uint8_t getCCRMode(void); | |
260 uint8_t getDecoType(void); | |
261 uint8_t getFutureTTS(void); | |
262 | |
263 SSettings* settingsGetPointer(void); | |
264 const SSettings* settingsGetPointerStandard(void); | |
265 void set_settings_to_Standard(void); | |
266 void mod_settings_for_first_start_with_empty_ext_flash(void); | |
267 const SFirmwareData* firmwareDataGetPointer(void); | |
268 const SHardwareData* hardwareDataGetPointer(void); | |
269 uint8_t firmwareVersion_16bit_high(void); | |
270 uint8_t firmwareVersion_16bit_low(void); | |
271 void hardwareBatchCode(uint8_t *high, uint8_t *low); | |
272 | |
273 uint8_t RTEminimum_required_high(void); | |
274 uint8_t RTEminimum_required_low(void); | |
275 uint8_t FONTminimum_required_high(void); | |
276 uint8_t FONTminimum_required_low(void); | |
277 | |
278 void setActualRTEversion(uint8_t high, uint8_t low); | |
279 void getActualRTEandFONTversion(uint8_t *RTEhigh, uint8_t *RTElow, uint8_t *FONThigh, uint8_t *FONTlow); | |
280 | |
281 void set_new_settings_missing_in_ext_flash(void); | |
282 uint8_t check_and_correct_settings(void); | |
283 uint8_t newFirmwareVersionCheckViaSettings(void); | |
284 void set_settings_button_to_standard_with_individual_buttonBalance(void); | |
285 uint8_t getLicence(void); | |
286 void firmwareGetDate(RTC_DateTypeDef *SdateOutput); | |
287 | |
288 void settingsHelperButtonSens_original_translate_to_hwOS_values(const uint32_t inputValueRaw, uint8_t *outArray4Values); | |
289 | |
290 uint8_t buttonBalanceTranslatorHexToArray(uint8_t hexValue, uint8_t* outputArray); | |
291 uint8_t buttonBalanceTranslateArrayOutHex(const uint8_t* inputArray); | |
292 void getButtonFactorDefaults(uint8_t* basePercentage, uint8_t* buttonBalanceArray); | |
293 void settingsWriteFactoryDefaults(uint8_t inputValueRaw, uint8_t *inputBalanceArray); | |
294 | |
295 void settingsHelperButtonSens_keepPercentageValues(uint32_t inputValueRaw, uint8_t *outArray4Values); | |
296 uint8_t settingsHelperButtonSens_translate_percentage_to_hwOS_values(uint8_t inputValuePercentage); | |
297 uint8_t settingsHelperButtonSens_translate_hwOS_values_to_percentage(uint8_t inputValuePIC); | |
298 | |
299 #endif // SETTINGS_H |