Mercurial > public > ostc4
annotate Common/Inc/settings.h @ 580:08af5d707c5a
Bugfix bad resolution of compass LSM303AGR:
The values of the variant LSM303AGR were more instabled compared to other variants. Root cause was that low power and high resolution are set in different registers and both options were enabled what is an invalid configuration => most likely the request for high resolution was ignored. To fix this the low power mode is only set in sleep and the high resolution is used in normal operation => compass performance same as in other variants.
author | Ideenmodellierer |
---|---|
date | Sat, 12 Dec 2020 19:16:37 +0100 |
parents | 1c95f811967c |
children | 3e1a0e267f38 |
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 | |
337
38367bb982b8
Set Max value for pressure offset to 50mBar (20mBar before)
ideenmodellierer
parents:
210
diff
changeset
|
69 #define PRESSURE_OFFSET_LIMIT_MBAR 50 |
38367bb982b8
Set Max value for pressure offset to 50mBar (20mBar before)
ideenmodellierer
parents:
210
diff
changeset
|
70 |
560
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
71 #define MAX_COMPASS_COMP (2u) |
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
72 #define MAX_VIEWPORT_MODE (0x1F) |
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
73 |
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
74 typedef enum |
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
75 { |
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
76 O2_SENSOR_SOURCE_OPTIC = 0, |
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
77 O2_SENSOR_SOURCE_ANALOG, |
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
78 O2_SENSOR_SOURCE_MAX |
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
79 } SensorSource; |
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
80 #define MAX_O2_SENSOR_SOURCE (2u) |
546 | 81 |
38 | 82 /* 2015 Jan 30, hw, deco and travel added for MenuEditGas |
83 * can be used for buehlmann, vpm, etc. later but be carefull | |
84 * with current implemenation */ | |
85 typedef struct{ | |
86 uint8_t active:1; | |
87 uint8_t first:1; | |
88 uint8_t deco:1; | |
89 uint8_t travel:1; | |
526
88c626d01ee5
Added new option to gas configuration: "Off":
Ideenmodellierer
parents:
505
diff
changeset
|
90 uint8_t off:1; |
88c626d01ee5
Added new option to gas configuration: "Off":
Ideenmodellierer
parents:
505
diff
changeset
|
91 uint8_t spare:3; |
38 | 92 } gasubit8_t; |
93 | |
94 typedef union{ | |
95 gasubit8_t ub; | |
96 uint8_t uw; | |
97 } gasbit8_Type; | |
98 | |
99 typedef struct{ | |
100 uint8_t standard:4; | |
101 uint8_t alternative:4; | |
102 } ubit2x4_t; | |
103 | |
104 typedef union{ | |
105 ubit2x4_t ub; | |
106 uint8_t uw; | |
107 } split2x4_Type; | |
108 | |
109 typedef union{ | |
110 uint8_t u8[4]; | |
111 uint32_t u32; | |
112 } general32to8_Type; | |
113 | |
114 typedef struct | |
115 { | |
116 uint8_t oxygen_percentage; | |
117 uint8_t helium_percentage; | |
118 gasbit8_Type note; | |
119 uint8_t depth_meter; | |
120 uint8_t depth_meter_travel; | |
121 uint8_t bottle_size_liter; | |
122 // uint8_t bottle_wireless_status; | |
123 uint16_t bottle_wireless_id; | |
124 } SGasLine; | |
125 | |
126 typedef struct | |
127 { | |
128 uint8_t setpoint_cbar; | |
129 uint8_t depth_meter; | |
130 gasbit8_Type note; | |
131 } SSetpointLine; | |
132 | |
133 /* SSettings | |
134 * gas[0] and setpoint[0] are the special ones configurable during the dive | |
135 */ | |
136 typedef struct | |
137 { | |
138 uint32_t header; | |
139 uint8_t warning_blink_dsec; | |
140 uint8_t lastDiveLogId; | |
141 uint32_t logFlashNextSampleStartAddress; | |
142 SGasLine gas[1 + (2*NUM_GASES)]; | |
143 SSetpointLine setpoint[1 + NUM_GASES]; | |
144 uint8_t CCR_Mode; | |
145 uint8_t dive_mode; | |
146 split2x4_Type deco_type; | |
147 uint8_t ppO2_max_deco; | |
148 uint8_t ppO2_max_std; | |
149 uint8_t ppO2_min; | |
150 uint8_t CNS_max; | |
151 uint8_t ascent_MeterPerMinute_max; | |
152 uint8_t ascent_MeterPerMinute_showGraph; | |
153 uint8_t future_TTS; | |
154 uint8_t GF_high; | |
155 uint8_t GF_low; | |
156 uint8_t aGF_high; | |
157 uint8_t aGF_low; | |
158 split2x4_Type VPM_conservatism; | |
159 uint8_t safetystopDuration; | |
160 uint8_t AtemMinutenVolumenLiter; | |
161 uint8_t ReserveFractionDenominator; | |
162 uint8_t salinity; | |
163 uint8_t last_stop_depth_meter; | |
164 uint8_t stop_increment_depth_meter; | |
165 uint8_t brightness; | |
166 uint8_t date_format; | |
167 uint8_t selected_language; | |
168 char customtext[60]; | |
169 uint16_t timeoutSurfacemode; | |
170 uint8_t timeoutMenuSurface; | |
171 uint8_t timeoutMenuDive; | |
172 uint8_t timeoutMenuEdit; | |
173 uint8_t timeoutInfo; | |
174 uint8_t timeoutInfoCompass; | |
175 uint8_t design; | |
176 uint16_t timeoutDiveReachedZeroDepth; | |
177 uint16_t divetimeToCreateLogbook; | |
178 uint8_t serialHigh; | |
179 uint8_t serialLow; | |
180 // SUFirmware firmwareVersion16to32bit; | |
181 uint32_t backup_localtime_rtc_tr; | |
182 uint32_t backup_localtime_rtc_dr; | |
183 uint16_t totalDiveCounter; | |
560
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
184 uint16_t personalDiveCount; |
38 | 185 uint8_t showDebugInfo; |
186 uint8_t ButtonResponsiveness[4];// changed content in 0xFFFF0016 | |
187 uint8_t nonMetricalSystem; | |
188 uint8_t fallbackToFixedSetpoint; | |
189 uint8_t bluetoothActive; /* will be set to zero on each startup at the moment */ | |
190 uint8_t safetystopDepth; | |
191 uint32_t updateSettingsAllowedFromHeader; | |
192 uint8_t scooterControl; | |
193 uint8_t scooterDrag; | |
194 uint8_t scooterLoad; | |
195 uint8_t scooterNumberOfBatteries; | |
196 uint16_t scooterBattSize; | |
197 uint8_t scooterSPARE1[7]; | |
198 uint8_t scooterSPARE2[19]; | |
199 // new in 0xFFFF0006 | |
200 uint8_t ppo2sensors_deactivated; | |
201 uint8_t tX_colorscheme; | |
202 uint8_t tX_userselectedLeftLowerCornerPrimary; | |
203 uint8_t tX_userselectedLeftLowerCornerTimeout; | |
204 uint8_t tX_customViewPrimary; | |
205 uint8_t tX_customViewTimeout; | |
206 uint8_t timeoutEnterButtonSelectDive; | |
207 uint16_t logbookOffset; | |
208 uint8_t alwaysShowPPO2; | |
209 uint8_t extraDisplay; | |
210 uint16_t display_toogle_desc; | |
211 int8_t offsetPressure_mbar; | |
212 int8_t offsetTemperature_centigrad; | |
213 uint8_t gasConsumption_travel_l_min; | |
214 uint8_t gasConsumption_bottom_l_min; | |
215 uint8_t gasConsumption_deco_l_min; | |
216 uint8_t debugModeOnStart; | |
217 uint8_t IAmStolenPleaseKillMe; | |
218 int16_t compassBearing; | |
219 uint8_t lastKnownBatteryPercentage; | |
220 uint8_t buttonBalance[3]; // 0 = right, 1 = center, 2 = left | |
221 uint8_t firmwareVersion[4]; | |
222 uint16_t timeoutSurfacemodeWithSensors; | |
223 // new in 0xFFFF0016 | |
224 uint8_t VPM_model; | |
225 uint8_t GF_model; | |
226 // new in 0xFFFF0017 | |
227 uint8_t FactoryButtonBase; | |
228 uint8_t FactoryButtonBalance[3]; | |
112
fdf0272e9213
Added new nvm parameter"FlipDisplay" indicating the screen orientation
Ideenmodellierer
parents:
38
diff
changeset
|
229 /* new in 0xFFFF0018 */ |
fdf0272e9213
Added new nvm parameter"FlipDisplay" indicating the screen orientation
Ideenmodellierer
parents:
38
diff
changeset
|
230 uint8_t FlipDisplay; |
210
b2a9e9b02df0
New feature: make selected customviews persistent
Jan Mulder <jlmulder@xs4all.nl>
parents:
138
diff
changeset
|
231 /* new in 0xFFFF0019 */ |
b2a9e9b02df0
New feature: make selected customviews persistent
Jan Mulder <jlmulder@xs4all.nl>
parents:
138
diff
changeset
|
232 uint32_t cv_configuration; |
368
50ea68c7a153
Added menu item for motion detection. There are several possibility to use motion detection for user action input. To select of the a new menu entry has been added to the Sys2 =>Custom View Menu (Variables in german)
ideenmodellierer
parents:
210
diff
changeset
|
233 /* new in 0xFFFF001A */ |
50ea68c7a153
Added menu item for motion detection. There are several possibility to use motion detection for user action input. To select of the a new menu entry has been added to the Sys2 =>Custom View Menu (Variables in german)
ideenmodellierer
parents:
210
diff
changeset
|
234 uint8_t MotionDetection; |
498
4811f3dfaa52
Added dew parameter to enable selection of customer BigFont screens to be displayed
Ideenmodellierer
parents:
372
diff
changeset
|
235 /* new in 0xFFFF001B */ |
4811f3dfaa52
Added dew parameter to enable selection of customer BigFont screens to be displayed
Ideenmodellierer
parents:
372
diff
changeset
|
236 uint32_t cv_config_BigScreen; |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
526
diff
changeset
|
237 /* new in 0xFFFF001C */ |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
526
diff
changeset
|
238 uint8_t compassInertia; |
542
6960df7ddb09
Added new t3 view showing first deco stop and tts in parallel:
Ideenmodellierer
parents:
539
diff
changeset
|
239 uint8_t tX_customViewPrimaryBF; |
546 | 240 /* new in 0xFFFF001D */ |
241 uint8_t viewPortMode; | |
242 uint16_t viewRoll; | |
243 uint16_t viewPitch; | |
244 uint16_t viewYaw; | |
560
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
245 /* new in 0xFFFF001E */ |
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
246 uint8_t ppo2sensors_source; |
5d80bb8d22cb
Added O2 sensor source and calibration parameters to setting structure
Ideenmodellierer
parents:
550
diff
changeset
|
247 float ppo2sensors_calibCoeff[3]; |
567 | 248 /* new in something */ |
249 uint8_t amPMTime; | |
38 | 250 } SSettings; |
251 | |
252 typedef struct | |
253 { | |
254 // 8 bytes | |
255 uint16_t primarySerial; | |
256 uint8_t primaryLicence; | |
257 uint8_t revision8bit; | |
258 uint8_t production_year; | |
259 uint8_t production_month; | |
260 uint8_t production_day; | |
261 uint8_t production_bluetooth_name_set; | |
262 | |
263 // 44 bytes | |
264 char production_info[44]; | |
265 | |
266 // 8 bytes | |
267 uint16_t secondarySerial; | |
268 uint8_t secondaryLicence; | |
269 uint8_t secondaryReason8bit; | |
270 uint8_t secondary_year; | |
271 uint8_t secondary_month; | |
272 uint8_t secondary_day; | |
273 uint8_t secondary_bluetooth_name_set; | |
274 | |
275 // 4 bytes | |
276 char secondary_info[4]; | |
277 } SHardwareData; | |
278 | |
279 uint8_t writeData(uint8_t *); | |
280 uint8_t readData(uint8_t what,uint8_t *); | |
281 uint8_t readDataLimits__8and16BitValues_4and7BytesOutput(uint8_t what, uint8_t * data); | |
282 | |
283 uint8_t getPPO2Max(void); | |
284 uint8_t getPPO2Min(void); | |
285 uint8_t getDiveMode(void); | |
286 uint8_t getCCRMode(void); | |
287 uint8_t getDecoType(void); | |
288 uint8_t getFutureTTS(void); | |
289 | |
290 SSettings* settingsGetPointer(void); | |
291 const SSettings* settingsGetPointerStandard(void); | |
292 void set_settings_to_Standard(void); | |
293 void mod_settings_for_first_start_with_empty_ext_flash(void); | |
294 const SFirmwareData* firmwareDataGetPointer(void); | |
295 const SHardwareData* hardwareDataGetPointer(void); | |
296 uint8_t firmwareVersion_16bit_high(void); | |
297 uint8_t firmwareVersion_16bit_low(void); | |
298 void hardwareBatchCode(uint8_t *high, uint8_t *low); | |
299 | |
300 uint8_t RTEminimum_required_high(void); | |
301 uint8_t RTEminimum_required_low(void); | |
302 uint8_t FONTminimum_required_high(void); | |
303 uint8_t FONTminimum_required_low(void); | |
304 | |
305 void setActualRTEversion(uint8_t high, uint8_t low); | |
306 void getActualRTEandFONTversion(uint8_t *RTEhigh, uint8_t *RTElow, uint8_t *FONThigh, uint8_t *FONTlow); | |
307 | |
308 void set_new_settings_missing_in_ext_flash(void); | |
309 uint8_t check_and_correct_settings(void); | |
310 uint8_t newFirmwareVersionCheckViaSettings(void); | |
311 void set_settings_button_to_standard_with_individual_buttonBalance(void); | |
312 uint8_t getLicence(void); | |
313 void firmwareGetDate(RTC_DateTypeDef *SdateOutput); | |
314 | |
315 void settingsHelperButtonSens_original_translate_to_hwOS_values(const uint32_t inputValueRaw, uint8_t *outArray4Values); | |
316 | |
317 uint8_t buttonBalanceTranslatorHexToArray(uint8_t hexValue, uint8_t* outputArray); | |
318 uint8_t buttonBalanceTranslateArrayOutHex(const uint8_t* inputArray); | |
319 void getButtonFactorDefaults(uint8_t* basePercentage, uint8_t* buttonBalanceArray); | |
320 void settingsWriteFactoryDefaults(uint8_t inputValueRaw, uint8_t *inputBalanceArray); | |
321 | |
322 void settingsHelperButtonSens_keepPercentageValues(uint32_t inputValueRaw, uint8_t *outArray4Values); | |
323 uint8_t settingsHelperButtonSens_translate_percentage_to_hwOS_values(uint8_t inputValuePercentage); | |
324 uint8_t settingsHelperButtonSens_translate_hwOS_values_to_percentage(uint8_t inputValuePIC); | |
325 | |
326 #endif // SETTINGS_H |