annotate Small_CPU/Src/scheduler.c @ 350:607099140a41

Merged in Ideenmodellierer/ostc4/FlightMode_Improvment (pull request #32) FlightMode Improvment
author heinrichsweikamp <bitbucket@heinrichsweikamp.com>
date Sun, 06 Oct 2019 11:58:36 +0000
parents 9d82411d0afa
children cb3870f79e9d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3 * @file scheduler.c
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
4 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
5 * @date 27-March-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
6 * @version V0.0.6
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
7 * @since 18-June-2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
8 * @brief the main part except for base.c
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
9 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
10 @verbatim
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
11 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
12 ##### How to use #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
13 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
14 @endverbatim
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
15 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
16 * @attention
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
17 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
18 * <h2><center>&copy; COPYRIGHT(c) 2015 heinrichs weikamp</center></h2>
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
19 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
20 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
21 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
22
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
23
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
24 //#define DEBUGMODE
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
25
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
26 /* Includes ------------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
27 #include <string.h>
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
28 #include "baseCPU2.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
29 #include "stm32f4xx_hal.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
30 #include "i2c.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
31 #include "scheduler.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
32 #include "pressure.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
33 #include "compass.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
34 #include "batteryGasGauge.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
35 #include "batteryCharger.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
36 #include "spi.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
37 #include "rtc.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
38 #include "dma.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
39 #include "adc.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
40 #include "calc_crush.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
41 #include "stm32f4xx_hal_rtc_ex.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
42 #include "decom.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
43 #include "tm_stm32f4_otp.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
44
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
45
338
b6a59e93cc91 Added function to avoid divemode activation during Landing:
ideenmodellierer
parents: 331
diff changeset
46 #define INVALID_PREASURE_VALUE (100.0f)
b6a59e93cc91 Added function to avoid divemode activation during Landing:
ideenmodellierer
parents: 331
diff changeset
47 #define START_DIVE_MOUNTAIN_MODE_BAR (0.88f)
b6a59e93cc91 Added function to avoid divemode activation during Landing:
ideenmodellierer
parents: 331
diff changeset
48 #define START_DIVE_IMMEDIATLY_BAR (1.16f)
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
49
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
50 /* Private types -------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
51 const SGas Air = {79,0,0,0,0};
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
52
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
53 /* Exported variables --------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
54 SGlobal global;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
55 SDevice DeviceDataFlash;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
56 uint8_t deviceDataFlashValid = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
57 uint8_t deviceDataSubSeconds = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
58
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
59 /* Private variables ---------------------------------------------------------*/
346
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
60 static uint16_t ManualExitDiveCounter = 0; /* The computer will exit dive mode in shallow area immediately. Increase depth to restart dive while counter is active */
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
61
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
62 /* can be lost while in sleep */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
63 uint8_t clearDecoNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
64 uint8_t setButtonsNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
65
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
66 /* has to be in SRAM2 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
67 uint8_t secondsCount = 0;
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
68
207
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
69 static uint8_t dospisync = SPI_SYNC_METHOD_NONE;
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
70
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
71 SScheduleCtrl Scheduler;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
72
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
73 /* Private function prototypes -----------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
74
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
75 _Bool vpm_crush2(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
76 void scheduleUpdateDeviceData(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
77 long get_nofly_time_minutes(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
78 void copyActualGas(SGas gas);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
79 void copyPressureData(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
80 void copyCnsAndOtuData(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
81 void copyTimeData(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
82 void copyCompassData(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
83 void copyCompassDataDuringCalibration(int16_t dx, int16_t dy, int16_t dz);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
84 void copyAmbientLightData(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
85 void copyTissueData(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
86 void copyVpmCrushingData(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
87 void copyDeviceData(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
88 void copyPICdata(void);
230
3973208c4a20 cleanup: make return void when never used
Jan Mulder <jlmulder@xs4all.nl>
parents: 220
diff changeset
89 static void schedule_update_timer_helper(int8_t thisSeconds);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
90 uint32_t time_elapsed_ms(uint32_t ticksstart,uint32_t ticksnow);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
91
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
92 void scheduleSetDate(SDeviceLine *line);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
93
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
94 /* Exported functions --------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
95
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
96 void initGlobals(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
97 {
231
f6961efb3794 cleanup: do not re-implement a standard function
Jan Mulder <jlmulder@xs4all.nl>
parents: 230
diff changeset
98 bzero(&global, sizeof(SGlobal));
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
99
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
100 global.dataSendToSlavePending = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
101 global.dataSendToSlaveIsValid = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
102 global.dataSendToSlaveIsNotValidCount = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
103
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
104 global.mode = MODE_POWERUP;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
105 global.repetitive_dive = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
106 global.conservatism = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
107 global.whichGas = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
108 global.aktualGas[0] = Air;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
109 global.lifeData.actualGas = global.aktualGas[0];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
110
172
c659fda83e44 Minor: Button defaults, release date adjusted, use SPI_SHOW_SYNC_STATS
heinrichsweikamp
parents: 155
diff changeset
111 const uint8_t button_standard_sensitivity = 85;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
112 global.ButtonResponsiveness[0] = button_standard_sensitivity;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
113 global.ButtonResponsiveness[1] = button_standard_sensitivity;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
114 global.ButtonResponsiveness[2] = button_standard_sensitivity;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
115 global.ButtonResponsiveness[3] = button_standard_sensitivity;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
116
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
117 global.ButtonPICdata[0] = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
118 global.ButtonPICdata[1] = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
119 global.ButtonPICdata[2] = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
120 global.ButtonPICdata[3] = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
121
240
625d20070261 Improvement SPI stability/recoverability
Jan Mulder <jlmulder@xs4all.nl>
parents: 231
diff changeset
122 global.I2C_SystemStatus = HAL_ERROR; // 0x00 would be everything working
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
123
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
124 global.lifeData.pressure_ambient_bar = INVALID_PREASURE_VALUE;
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
125 global.lifeData.pressure_surface_bar = INVALID_PREASURE_VALUE;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
126 decom_reset_with_1000mbar(&global.lifeData);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
127
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
128 global.demo_mode = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
129
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
130 for(int i = 0; i < MAX_SENSORS; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
131 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
132 global.sensorError[i] = HAL_OK; // HAL_OK = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
133 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
134
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
135 global.dataSendToMaster.RTE_VERSION_high = firmwareVersionHigh();//RTE_VERSION_HIGH;;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
136 global.dataSendToMaster.RTE_VERSION_low = firmwareVersionLow();//RTE_VERSION_LOW;;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
137 global.dataSendToMaster.chargeStatus = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
138
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
139 global.dataSendToMaster.power_on_reset = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
140 global.dataSendToMaster.header.checkCode[0] = 0xA1;
264
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
141 global.dataSendToMaster.header.checkCode[1] = SPI_RX_STATE_OFFLINE;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
142 global.dataSendToMaster.header.checkCode[2] = 0xA3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
143 global.dataSendToMaster.header.checkCode[3] = 0xA4;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
144 global.dataSendToMaster.footer.checkCode[3] = 0xE4;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
145 global.dataSendToMaster.footer.checkCode[2] = 0xE3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
146 global.dataSendToMaster.footer.checkCode[1] = 0xE2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
147 global.dataSendToMaster.footer.checkCode[0] = 0xE1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
148 global.dataSendToMaster.sensorErrors = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
149
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
150 global.sync_error_count = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
151 global.check_sync_not_running = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
152
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
153 global.deviceDataSendToMaster.RTE_VERSION_high = firmwareVersionHigh();//RTE_VERSION_HIGH;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
154 global.deviceDataSendToMaster.RTE_VERSION_low = firmwareVersionLow();//RTE_VERSION_LOW;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
155 global.deviceDataSendToMaster.chargeStatus = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
156
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
157 global.deviceDataSendToMaster.power_on_reset = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
158 global.deviceDataSendToMaster.header.checkCode[0] = 0xDF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
159 global.deviceDataSendToMaster.header.checkCode[1] = 0xDE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
160 global.deviceDataSendToMaster.header.checkCode[2] = 0xDD;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
161 global.deviceDataSendToMaster.header.checkCode[3] = 0xDC;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
162 global.deviceDataSendToMaster.footer.checkCode[3] = 0xE4;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
163 global.deviceDataSendToMaster.footer.checkCode[2] = 0xE3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
164 global.deviceDataSendToMaster.footer.checkCode[1] = 0xE2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
165 global.deviceDataSendToMaster.footer.checkCode[0] = 0xE1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
166
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
167 global.dataSendToSlave.getDeviceDataNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
168
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
169 global.deviceData.batteryChargeCompleteCycles.value_int32 = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
170 global.deviceData.batteryChargeCycles.value_int32 = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
171 global.deviceData.depthMaximum.value_int32 = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
172 global.deviceData.diveCycles.value_int32 = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
173 global.deviceData.hoursOfOperation.value_int32 = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
174 global.deviceData.temperatureMaximum.value_int32 = INT32_MIN;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
175 global.deviceData.temperatureMinimum.value_int32 = INT32_MAX;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
176 global.deviceData.voltageMinimum.value_int32 = INT32_MAX;
148
ee744c7160ce Use SPI TX callback to synchronize to main CPU
Ideenmodellierer
parents: 142
diff changeset
177
265
a91d99265884 Increase SPI com timeout for cold start and wake up
ideenmodellierer
parents: 264
diff changeset
178 Scheduler.communicationTimeout = SPI_COM_TIMEOUT_START;
207
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
179 Scheduler_Request_sync_with_SPI(SPI_SYNC_METHOD_HARD);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
180 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
181
264
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
182 void reinitGlobals(void)
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
183 {
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
184 global.dataSendToSlavePending = 0;
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
185 global.dataSendToSlaveIsValid = 0;
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
186 global.dataSendToSlaveIsNotValidCount = 0;
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
187 global.sync_error_count = 0;
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
188 global.check_sync_not_running = 0;
265
a91d99265884 Increase SPI com timeout for cold start and wake up
ideenmodellierer
parents: 264
diff changeset
189 Scheduler.communicationTimeout = SPI_COM_TIMEOUT_START;
264
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
190 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
191
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
192 void scheduleSpecial_Evaluate_DataSendToSlave(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
193 {
104
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
194 //TEMPORARY fix for compass calibration.
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
195 //TODO: Fix I2C timeout for complete solving problem.
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
196 if(global.mode==MODE_CALIB){
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
197 return;
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
198 }
90
83857eb3b12b +- stable
Dmitry Romanov <kitt@bk.ru>
parents: 89
diff changeset
199
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
200 global.dataSendToSlavePending = 0;
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
201 if(!global.dataSendToSlaveIsValid) return;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
202
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
203 global.dataSendToMaster.confirmRequest.uw = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
204
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
205 if(TM_OTP_Read(0,0) == 0xFF)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
206 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
207 if(global.dataSendToSlave.revisionHardware == (global.dataSendToSlave.revisionCRCx0x7A ^ 0x7A))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
208 TM_OTP_Write(0,0,global.dataSendToSlave.revisionHardware);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
209 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
210
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
211 if(global.dataSendToSlave.setAccidentFlag)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
212 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
213 global.dataSendToMaster.confirmRequest.ub.accident = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
214 global.deviceData.diveAccident.value_int32 = global.dataSendToSlave.setAccidentFlag;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
215 scheduleSetDate(&global.deviceData.diveAccident);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
216 global.accidentFlag |= global.dataSendToSlave.setAccidentFlag;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
217 if(global.accidentFlag == ACCIDENT_CNS) // LVL1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
218 global.accidentRemainingSeconds = 2*60*60;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
219 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
220 global.accidentRemainingSeconds = 24*60*60;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
221 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
222
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
223 if(global.dataSendToSlave.setTimeNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
224 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
225 global.dataSendToMaster.confirmRequest.ub.time = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
226 RTC_SetTime(global.dataSendToSlave.data.newTime);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
227 schedule_update_timer_helper(0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
228 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
229
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
230 if(global.dataSendToSlave.setDateNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
231 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
232 global.dataSendToMaster.confirmRequest.ub.date = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
233 RTC_SetDate(global.dataSendToSlave.data.newDate);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
234 schedule_update_timer_helper(0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
235 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
236
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
237 if(global.dataSendToSlave.calibrateCompassNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
238 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
239 global.dataSendToMaster.confirmRequest.ub.compass = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
240 global.mode = MODE_CALIB;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
241 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
242
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
243 if(global.dataSendToSlave.clearDecoNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
244 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
245 global.dataSendToMaster.confirmRequest.ub.clearDeco = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
246 clearDecoNow = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
247 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
248
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
249 if(global.dataSendToSlave.setButtonSensitivityNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
250 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
251 global.dataSendToMaster.confirmRequest.ub.button = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
252 global.ButtonResponsiveness[0] = global.dataSendToSlave.data.buttonResponsiveness[0];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
253 global.ButtonResponsiveness[1] = global.dataSendToSlave.data.buttonResponsiveness[1];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
254 global.ButtonResponsiveness[2] = global.dataSendToSlave.data.buttonResponsiveness[2];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
255 global.ButtonResponsiveness[3] = global.dataSendToSlave.data.buttonResponsiveness[3];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
256 setButtonsNow = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
257 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
258
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
259 if(global.dataSendToSlave.setBatteryGaugeNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
260 {
104
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
261 if(global.mode!=MODE_CALIB){
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
262 global.dataSendToMaster.confirmRequest.ub.batterygauge = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
263 battery_gas_gauge_set(global.dataSendToSlave.data.newBatteryGaugePercentageFloat);
104
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
264 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
265 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
266
346
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
267 if(global.dataSendToSlave.setEndDive)
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
268 {
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
269 ManualExitDiveCounter = 30 * 60; /* This will cause the computer to leave dive mode if in shallow area and increase the depth to enter dive mode for the next 30 minutes */
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
270 }
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
271
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
272 if((global.mode == MODE_SURFACE) && (global.dataSendToSlave.mode == MODE_SHUTDOWN))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
273 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
274 global.mode = MODE_SHUTDOWN;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
275 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
276
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
277 if(global.mode == MODE_DIVE)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
278 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
279 copyActualGas(global.dataSendToSlave.data.actualGas);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
280 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
281 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
282 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
283 copyActualGas(Air);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
284 global.settings.divetimeToCreateLogbook = global.dataSendToSlave.data.divetimeToCreateLogbook;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
285 global.settings.timeoutDiveReachedZeroDepth = global.dataSendToSlave.data.timeoutDiveReachedZeroDepth;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
286 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
287
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
288 /* for simulation / testing */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
289 global.ceiling_from_main_CPU_mbar = global.dataSendToSlave.data.ambient_pressure_mbar_ceiling;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
290
338
b6a59e93cc91 Added function to avoid divemode activation during Landing:
ideenmodellierer
parents: 331
diff changeset
291 /* Set pressure and temperature offsets */
b6a59e93cc91 Added function to avoid divemode activation during Landing:
ideenmodellierer
parents: 331
diff changeset
292 pressure_set_offset (global.dataSendToSlave.data.offsetPressureSensor_mbar, global.dataSendToSlave.data.offsetTemperatureSensor_centiDegree);
b6a59e93cc91 Added function to avoid divemode activation during Landing:
ideenmodellierer
parents: 331
diff changeset
293
b6a59e93cc91 Added function to avoid divemode activation during Landing:
ideenmodellierer
parents: 331
diff changeset
294
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
295 /* for device data updates */
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
296 deviceDataFlashValid = 0;
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
297 memcpy(&DeviceDataFlash, &global.dataSendToSlave.data.DeviceData, sizeof(SDevice));
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
298 deviceDataFlashValid = 1;
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
299
264
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
300 #if 0
104
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
301 //TODO: Temporary placed here. Duration ~210 ms.
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
302 if (global.I2C_SystemStatus != HAL_OK) {
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
303 MX_I2C1_TestAndClear();
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
304 MX_I2C1_Init();
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
305 // init_pressure();
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
306 // compass_init(0, 7);
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
307 // accelerator_init();
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 100
diff changeset
308 }
264
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
309 #endif /* already called once a second */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
310 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
311
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
312
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
313 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
314 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
315 * @brief schedule_time_compare_helper.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
316 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
317 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
318 * @date 20-Oct-2016
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
319 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
320 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
321
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
322 uint8_t RtcBugFixChsw(uint8_t inStupidTime)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
323 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
324 uint8_t multiplesOf16 = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
325
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
326 multiplesOf16 = inStupidTime / 16;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
327
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
328 inStupidTime -= multiplesOf16 * 16;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
329
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
330 return (10 * multiplesOf16) + inStupidTime;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
331 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
332
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
333 uint32_t schedule_time_compare_helper(RTC_TimeTypeDef timeNow, RTC_DateTypeDef dateNow, RTC_TimeTypeDef timeLast, RTC_DateTypeDef dateLast)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
334 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
335 uint32_t nowInSeconds;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
336 uint32_t lastInSeconds;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
337 uint32_t resultDiff;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
338
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
339 nowInSeconds = (uint32_t)RtcBugFixChsw(timeNow.Hours) * 3600;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
340 nowInSeconds += (uint32_t)RtcBugFixChsw(timeNow.Minutes) * 60;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
341 nowInSeconds += (uint32_t)RtcBugFixChsw(timeNow.Seconds);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
342
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
343 lastInSeconds = (uint32_t)RtcBugFixChsw(timeLast.Hours) * 3600;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
344 lastInSeconds += (uint32_t)RtcBugFixChsw(timeLast.Minutes) * 60;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
345 lastInSeconds += (uint32_t)RtcBugFixChsw(timeLast.Seconds);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
346
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
347 if(dateNow.Date != dateLast.Date)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
348 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
349 resultDiff = 86400 + nowInSeconds - lastInSeconds;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
350 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
351 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
352 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
353 resultDiff = nowInSeconds - lastInSeconds;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
354 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
355 return resultDiff;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
356 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
357
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
358
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
359
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
360 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
361 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
362 * @brief schedule_update_timer_helper.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
363 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
364 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
365 * @date 20-Oct-2016
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
366 * @brief use 0 for init
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
367 use -1 for RTC controlled
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
368 use >= 1 for manual control
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
369 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
370 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
371 extern RTC_HandleTypeDef RTCHandle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
372
230
3973208c4a20 cleanup: make return void when never used
Jan Mulder <jlmulder@xs4all.nl>
parents: 220
diff changeset
373 static void schedule_update_timer_helper(int8_t thisSeconds)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
374 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
375 static RTC_TimeTypeDef sTimeLast;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
376 static RTC_DateTypeDef sDateLast;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
377 RTC_TimeTypeDef sTimeNow;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
378 RTC_DateTypeDef sDateNow;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
379 uint32_t secondsPast;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
380
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
381 HAL_RTC_GetTime(&RTCHandle, &sTimeNow, RTC_FORMAT_BCD);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
382 HAL_RTC_GetDate(&RTCHandle, &sDateNow, RTC_FORMAT_BCD);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
383
230
3973208c4a20 cleanup: make return void when never used
Jan Mulder <jlmulder@xs4all.nl>
parents: 220
diff changeset
384 if(thisSeconds != 0) // otherwise just store sTimeLast, sDateLast
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
385 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
386 if(thisSeconds > 0) // use this value instead, good for pre-loading sTimeLast and sDateLast
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
387 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
388 secondsPast = thisSeconds;
230
3973208c4a20 cleanup: make return void when never used
Jan Mulder <jlmulder@xs4all.nl>
parents: 220
diff changeset
389 } else {
3973208c4a20 cleanup: make return void when never used
Jan Mulder <jlmulder@xs4all.nl>
parents: 220
diff changeset
390 // thisSeconds < 0 and not <= !
3973208c4a20 cleanup: make return void when never used
Jan Mulder <jlmulder@xs4all.nl>
parents: 220
diff changeset
391 secondsPast = schedule_time_compare_helper(sTimeNow, sDateNow, sTimeLast, sDateLast);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
392 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
393
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
394 if(global.seconds_since_last_dive)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
395 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
396 if(secondsPast >= 777900)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
397 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
398 global.seconds_since_last_dive = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
399 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
400 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
401 {
230
3973208c4a20 cleanup: make return void when never used
Jan Mulder <jlmulder@xs4all.nl>
parents: 220
diff changeset
402 uint32_t tempNewValue = ((uint32_t)global.seconds_since_last_dive) + secondsPast;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
403 if(tempNewValue > 777900) // a bit more than nine days [seconds]
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
404 global.seconds_since_last_dive = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
405 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
406 global.seconds_since_last_dive = (long)tempNewValue;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
407 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
408 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
409 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
410
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
411 sTimeLast = sTimeNow;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
412 sDateLast = sDateNow;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
413 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
414
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
415 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
416 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
417 * @brief schedule_check_resync.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
418 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
419 * @version V0.0.2
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
420 * @date 18-June-2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
421 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
422 */
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
423
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
424 void schedule_check_resync(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
425 {
155
4fd8bbc7d841 Do hard sync after communication timeout > 1 second
Ideenmodellierer
parents: 148
diff changeset
426 /* counter is incremented in cyclic 100ms loop and reset to 0 if the transmission complete callback is called */
265
a91d99265884 Increase SPI com timeout for cold start and wake up
ideenmodellierer
parents: 264
diff changeset
427 if((global.check_sync_not_running >= Scheduler.communicationTimeout))
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
428 {
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
429 // global.dataSendToSlaveIsNotValidCount = 0;
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
430 global.check_sync_not_running = 0;
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
431 global.sync_error_count++;
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
432
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
433 /* Try to start communication again. If exchange is stuck during execution for some reason the TX will be aborted by the
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
434 * function error handler
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
435 */
277
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
436 HAL_SPI_TransmitReceive_DMA(&hspi1,(uint8_t*) &(global.dataSendToMaster),(uint8_t*) &(global.dataSendToSlave), EXCHANGE_BUFFERSIZE);
265
a91d99265884 Increase SPI com timeout for cold start and wake up
ideenmodellierer
parents: 264
diff changeset
437 Scheduler.communicationTimeout = SPI_COM_TIMEOUT_COMMON; /* Reduce error detection time */
264
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
438 Scheduler_Request_sync_with_SPI(SPI_SYNC_METHOD_HARD);
155
4fd8bbc7d841 Do hard sync after communication timeout > 1 second
Ideenmodellierer
parents: 148
diff changeset
439 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
440 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
441
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
442
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
443 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
444 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
445 * @brief scheduleDiveMode. / Dive Mode: Main Loop
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
446 * @author Peter Ryser
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
447 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
448 * @date 22-April-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
449 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
450 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
451 void scheduleDiveMode(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
452 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
453 uint32_t ticksdiff = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
454 uint32_t lasttick = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
455 uint8_t counterAscentRate = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
456 float lastPressure_bar = 0.0f;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
457 global.dataSendToMaster.mode = MODE_DIVE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
458 global.deviceDataSendToMaster.mode = MODE_DIVE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
459 uint8_t counter_exit = 0;
264
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
460
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
461 Scheduler.counterSPIdata100msec = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
462 Scheduler.counterCompass100msec = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
463 Scheduler.counterPressure100msec = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
464 Scheduler.counterAmbientLight100msec = 0;
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
465 Scheduler.tick_execute1second = SCHEDULER_TICK_EXE1SEC;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
466
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
467 global.deviceData.diveCycles.value_int32++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
468 scheduleSetDate(&global.deviceData.diveCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
469 global.lifeData.counterSecondsShallowDepth = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
470
346
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
471 /* Get the last stable value in case of an unstable surface history condition */
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
472 if(!is_surface_pressure_stable())
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
473 {
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
474 set_last_surface_pressure_stable();
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
475 }
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
476 global.lifeData.pressure_surface_bar = get_surface_mbar() / 1000.0f;
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
477 ManualExitDiveCounter = 0; /* reset early exit request */
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
478
240
625d20070261 Improvement SPI stability/recoverability
Jan Mulder <jlmulder@xs4all.nl>
parents: 231
diff changeset
479 Scheduler.tickstart = HAL_GetTick();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
480 while(global.mode == MODE_DIVE)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
481 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
482 lasttick = HAL_GetTick();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
483 ticksdiff = time_elapsed_ms(Scheduler.tickstart,lasttick);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
484
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
485 if(ticksdiff >= Scheduler.counterSPIdata100msec * 100 + 10)
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
486 {
277
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
487 if(SPI_Evaluate_RX_Data()!=0) /* did we receive something ? */
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
488 {
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
489 Scheduler.counterSPIdata100msec++;
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
490 }
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
491 schedule_check_resync();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
492 }
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
493
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
494 //Evaluate pressure at 20 ms, 120 ms, 220 ms,....
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
495 if(ticksdiff >= Scheduler.counterPressure100msec * 100 + 20)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
496 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
497 global.check_sync_not_running++;
277
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
498 pressure_update_alternating();
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
499 scheduleUpdateDeviceData();
186
f11f0bf6ef2d cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents: 181
diff changeset
500 #ifdef DEMOMODE
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
501 if(global.demo_mode)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
502 {
186
f11f0bf6ef2d cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents: 181
diff changeset
503 int turbo_seconds = demo_modify_temperature_and_pressure(global.lifeData.dive_time_seconds, Scheduler.counterPressure100msec, global.ceiling_from_main_CPU_mbar);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
504 if(turbo_seconds)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
505 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
506 global.lifeData.dive_time_seconds += turbo_seconds;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
507 decom_tissues_exposure((int)(turbo_seconds), &global.lifeData);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
508 copyTissueData();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
509 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
510 if((global.lifeData.counterSecondsShallowDepth > 1) && (global.lifeData.counterSecondsShallowDepth < (global.settings.timeoutDiveReachedZeroDepth - 10)))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
511 global.lifeData.counterSecondsShallowDepth = (global.settings.timeoutDiveReachedZeroDepth - 10);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
512 }
186
f11f0bf6ef2d cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents: 181
diff changeset
513 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
514
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
515 //Calc ascentrate every two second (20 * 100 ms)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
516 counterAscentRate++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
517 if(counterAscentRate == 20)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
518 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
519 global.lifeData.pressure_ambient_bar = get_pressure_mbar() / 1000.0f;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
520 if(lastPressure_bar >= 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
521 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
522 //2 seconds * 30 == 1 minute, bar * 10 = meter
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
523 global.lifeData.ascent_rate_meter_per_min = (lastPressure_bar - global.lifeData.pressure_ambient_bar) * 30 * 10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
524 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
525 lastPressure_bar = global.lifeData.pressure_ambient_bar;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
526 counterAscentRate = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
527 }
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
528 copyPressureData();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
529 Scheduler.counterPressure100msec++;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
530 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
531 //evaluate compass data at 50 ms, 150 ms, 250 ms,....
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
532 if(ticksdiff >= Scheduler.counterCompass100msec * 100 + 50)
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
533 {
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
534 compass_read();
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
535 acceleration_read();
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
536 compass_calc();
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
537 copyCompassData();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
538 Scheduler.counterCompass100msec++;
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
539 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
540
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
541 if(ticksdiff >= Scheduler.counterAmbientLight100msec * 100 + 70)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
542 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
543 adc_ambient_light_sensor_get_data();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
544 copyAmbientLightData();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
545 Scheduler.counterAmbientLight100msec++;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
546 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
547
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
548 //Evaluate tissues, toxic data, vpm, etc. once a second
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
549 if(ticksdiff >= Scheduler.tick_execute1second)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
550 {
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
551 Scheduler.tick_execute1second = 0xFFFFFFFF; /* execute once only in the second cycle */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
552 if(global.dataSendToSlave.diveModeInfo != DIVEMODE_Apnea)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
553 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
554 scheduleUpdateLifeData(0); // includes tissues
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
555 global.lifeData.dive_time_seconds++; // there is dive_time_seconds_without_surface_time too
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
556 global.lifeData.ppO2 = decom_calc_ppO2(global.lifeData.pressure_ambient_bar, &global.lifeData.actualGas);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
557 decom_oxygen_calculate_cns(&global.lifeData.cns,global.lifeData.ppO2);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
558 decom_oxygen_calculate_otu(&global.lifeData.otu,global.lifeData.ppO2);
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
559 battery_gas_gauge_get_data();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
560
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
561
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
562 /** counter_exit allows safe exit via button for testing
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
563 * and demo_mode is exited too if aplicable.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
564 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
565 if(global.dataSendToMaster.mode == MODE_ENDDIVE)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
566 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
567 counter_exit++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
568 if(counter_exit >= 2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
569 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
570 global.mode = MODE_SURFACE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
571 global.demo_mode = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
572 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
573 }
346
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
574
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
575 if(is_ambient_pressure_close_to_surface(&global.lifeData))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
576 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
577 global.lifeData.counterSecondsShallowDepth++;
346
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
578 if((global.lifeData.counterSecondsShallowDepth >= global.settings.timeoutDiveReachedZeroDepth) || ((global.lifeData.dive_time_seconds < 60) && (global.demo_mode == 0))
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
579 || (ManualExitDiveCounter))
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
580 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
581 global.seconds_since_last_dive = 1; // start counter
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
582 schedule_update_timer_helper(0); // zum starten :-)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
583 global.dataSendToMaster.mode = MODE_ENDDIVE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
584 global.deviceDataSendToMaster.mode = MODE_ENDDIVE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
585 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
586 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
587 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
588 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
589 global.lifeData.counterSecondsShallowDepth = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
590 global.lifeData.dive_time_seconds_without_surface_time++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
591 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
592 vpm_crush2();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
593 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
594 else // DIVEMODE_Apnea
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
595 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
596 global.lifeData.dive_time_seconds++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
597
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
598 // exit dive mode
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
599 if(global.dataSendToMaster.mode == MODE_ENDDIVE)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
600 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
601 counter_exit++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
602 if(counter_exit >= 2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
603 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
604 scheduleUpdateLifeData(-1); // 'restart' tissue calculations without calculating time during apnea mode
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
605 global.lifeData.dive_time_seconds = 0; // use backup noflytime and desaturation time
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
606 global.mode = MODE_SURFACE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
607 global.demo_mode = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
608 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
609 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
610
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
611 // surface break
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
612 if(is_ambient_pressure_close_to_surface(&global.lifeData))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
613 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
614 global.lifeData.counterSecondsShallowDepth++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
615 if(global.lifeData.counterSecondsShallowDepth > 3) // time for main cpu to copy to apnea_last_dive_time_seconds
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
616 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
617 global.lifeData.dive_time_seconds = 0; // this apnea dive ends here
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
618 }
346
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
619 if((global.lifeData.counterSecondsShallowDepth >= global.settings.timeoutDiveReachedZeroDepth) || (ManualExitDiveCounter))
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
620 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
621 global.dataSendToMaster.mode = MODE_ENDDIVE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
622 global.deviceDataSendToMaster.mode = MODE_ENDDIVE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
623 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
624 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
625 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
626 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
627 global.lifeData.counterSecondsShallowDepth = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
628 global.lifeData.dive_time_seconds_without_surface_time++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
629 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
630 } // standard dive or DIVEMODE_Apnea
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
631
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
632 copyVpmCrushingData();
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
633 copyTimeData();
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
634 copyCnsAndOtuData();
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
635 copyBatteryData();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
636
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
637 // new hw 170523
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
638 if(global.I2C_SystemStatus != HAL_OK)
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
639 {
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
640 MX_I2C1_TestAndClear();
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
641 MX_I2C1_Init();
331
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
642 init_pressure();
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
643 }
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
644 }
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
645 if(ticksdiff >= 1000)
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
646 {
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
647 /* reset counter */
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
648 Scheduler.tickstart = HAL_GetTick();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
649 Scheduler.counterSPIdata100msec = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
650 Scheduler.counterCompass100msec = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
651 Scheduler.counterPressure100msec = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
652 Scheduler.counterAmbientLight100msec = 0;
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
653 Scheduler.tick_execute1second = SCHEDULER_TICK_EXE1SEC;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
654 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
655 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
656 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
657
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
658
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
659 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
660 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
661 * @brief scheduleSurfaceMode / surface mode: Main Loop
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
662 * @author Peter Ryser
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
663 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
664 * @date 22-April-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
665 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
666 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
667
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
668
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
669 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
670 // scheduleTestMode
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
671 /// @brief included for sealed hardware with permanent RTE update message
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
672 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
673 void scheduleTestMode(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
674 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
675 uint32_t ticksdiff = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
676 uint32_t lasttick = 0;
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
677 Scheduler.tickstart = HAL_GetTick();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
678
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
679 Scheduler.counterPressure100msec = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
680
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
681 float temperature_carousel = 0.0f;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
682 float temperature_changer = 0.1f;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
683
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
684 while(global.mode == MODE_TEST)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
685 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
686 lasttick = HAL_GetTick();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
687 ticksdiff = time_elapsed_ms(Scheduler.tickstart,lasttick);
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
688
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
689 //Evaluate received data at 10 ms, 110 ms, 210 ms,...
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
690 if(ticksdiff >= Scheduler.counterSPIdata100msec * 100 + 10)
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
691 {
277
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
692 if(SPI_Evaluate_RX_Data()!=0) /* did we receive something ? */
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
693 {
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
694 Scheduler.counterSPIdata100msec++;
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
695 }
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
696 schedule_check_resync();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
697 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
698
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
699 //Evaluate pressure at 20 ms, 120 ms, 220 ms,...
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
700 if(ticksdiff >= Scheduler.counterPressure100msec * 100 + 20)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
701 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
702 global.check_sync_not_running++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
703
277
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
704 pressure_update_alternating();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
705 scheduleUpdateDeviceData();
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
706 global.lifeData.ascent_rate_meter_per_min = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
707 copyPressureData();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
708
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
709 if(temperature_carousel > 20.0f)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
710 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
711 temperature_carousel = 20.0f;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
712 temperature_changer = -0.1f;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
713 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
714 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
715 if(temperature_carousel < 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
716 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
717 temperature_carousel = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
718 temperature_changer = +0.1f;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
719 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
720
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
721 temperature_carousel += temperature_changer;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
722
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
723 uint8_t boolPressureData = !global.dataSendToMaster.boolPressureData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
724
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
725 global.dataSendToMaster.data[boolPressureData].pressure_mbar = get_pressure_mbar();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
726
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
727 global.dataSendToMaster.data[boolPressureData].temperature = temperature_carousel;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
728 global.dataSendToMaster.data[boolPressureData].pressure_uTick = HAL_GetTick();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
729 global.dataSendToMaster.boolPressureData = boolPressureData;
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
730 Scheduler.counterPressure100msec++;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
731 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
732
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
733 if(ticksdiff >= 1000)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
734 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
735 //Set back tick counter
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
736 Scheduler.tickstart = HAL_GetTick();
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
737 Scheduler.counterPressure100msec = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
738 Scheduler.counterSPIdata100msec = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
739 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
740 };
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
741 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
742
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
743
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
744
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
745 void scheduleSurfaceMode(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
746 {
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
747
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
748 uint32_t ticksdiff = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
749 uint32_t lasttick = 0;
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
750 Scheduler.tickstart = HAL_GetTick();
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
751 Scheduler.counterSPIdata100msec = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
752 Scheduler.counterCompass100msec = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
753 Scheduler.counterPressure100msec = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
754 Scheduler.counterAmbientLight100msec = 0;
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
755 Scheduler.tick_execute1second = SCHEDULER_TICK_EXE1SEC;
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
756
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
757 global.dataSendToMaster.mode = MODE_SURFACE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
758 global.deviceDataSendToMaster.mode = MODE_SURFACE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
759
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
760 while(global.mode == MODE_SURFACE)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
761 {
277
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
762
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
763 lasttick = HAL_GetTick();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
764 ticksdiff = time_elapsed_ms(Scheduler.tickstart,lasttick);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
765
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
766 if(setButtonsNow == 1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
767 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
768 if(scheduleSetButtonResponsiveness())
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
769 setButtonsNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
770 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
771
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
772 /* Evaluate received data at 10 ms, 110 ms, 210 ms,... duration ~<1ms */
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
773 if(ticksdiff >= Scheduler.counterSPIdata100msec * 100 + 10)
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
774 {
264
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
775 if(SPI_Evaluate_RX_Data()!=0) /* did we receive something ? */
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
776 {
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
777 Scheduler.counterSPIdata100msec++;
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
778 }
277
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
779 schedule_check_resync();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
780 }
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
781
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
782 /* Evaluate pressure at 20 ms, 120 ms, 220 ms,... duration ~22ms] */
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
783 if(ticksdiff >= Scheduler.counterPressure100msec * 100 + 20)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
784 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
785 global.check_sync_not_running++;
277
580822b5d3d1 Rework SPI error handling.
ideenmodellierer
parents: 265
diff changeset
786 pressure_update_alternating();
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
787 scheduleUpdateDeviceData();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
788 global.lifeData.ascent_rate_meter_per_min = 0;
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
789 copyPressureData();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
790 Scheduler.counterPressure100msec++;
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
791
301
a09b1855d656 cleanup, RTE: factor out scheduleCheck_pressure_reached_dive_mode_level
Jan Mulder <jlmulder@xs4all.nl>
parents: 277
diff changeset
792 if (!is_ambient_pressure_close_to_surface(&global.lifeData))
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
793 global.mode = MODE_DIVE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
794 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
795
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
796 /* Evaluate compass data at 50 ms, 150 ms, 250 ms,... duration ~5ms */
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
797 if(ticksdiff >= Scheduler.counterCompass100msec * 100 + 50)
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
798 {
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
799 compass_read();
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
800 acceleration_read();
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
801 compass_calc();
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
802 copyCompassData();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
803 Scheduler.counterCompass100msec++;
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
804 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
805
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
806 /* evaluate compass data at 70 ms, 170 ms, 270 ms,... duration <1ms */
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
807 if(ticksdiff >= Scheduler.counterAmbientLight100msec * 100 + 70)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
808 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
809 adc_ambient_light_sensor_get_data();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
810 copyAmbientLightData();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
811 Scheduler.counterAmbientLight100msec++;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
812 }
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
813
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
814
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
815
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
816 /* Evaluate tissues, toxic data, etc. once a second... duration ~1ms */
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
817 if(ticksdiff >= Scheduler.tick_execute1second)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
818 {
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
819 Scheduler.tick_execute1second = 0xFFFFFFFF;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
820 if(clearDecoNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
821 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
822 decom_reset_with_1000mbar(&global.lifeData); ///< this should almost reset desaturation time
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
823 // new 160215 hw
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
824 global.repetitive_dive = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
825 global.seconds_since_last_dive = 0; ///< this will reset OTU and CNS as well
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
826 global.no_fly_time_minutes = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
827 global.accidentFlag = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
828 global.accidentRemainingSeconds = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
829 vpm_init(&global.vpm, global.conservatism, global.repetitive_dive, global.seconds_since_last_dive);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
830 clearDecoNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
831 }
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
832
349
9d82411d0afa Decrease ManualExitDiveCounter in surface mode
ideenmodellierer
parents: 346
diff changeset
833 if(ManualExitDiveCounter)
9d82411d0afa Decrease ManualExitDiveCounter in surface mode
ideenmodellierer
parents: 346
diff changeset
834 {
9d82411d0afa Decrease ManualExitDiveCounter in surface mode
ideenmodellierer
parents: 346
diff changeset
835 ManualExitDiveCounter--;
9d82411d0afa Decrease ManualExitDiveCounter in surface mode
ideenmodellierer
parents: 346
diff changeset
836 }
9d82411d0afa Decrease ManualExitDiveCounter in surface mode
ideenmodellierer
parents: 346
diff changeset
837
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
838 if(global.seconds_since_last_dive)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
839 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
840 schedule_update_timer_helper(-1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
841 }
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
842
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
843 if(global.accidentRemainingSeconds)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
844 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
845 global.accidentRemainingSeconds--;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
846 if(!global.accidentRemainingSeconds)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
847 global.accidentFlag = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
848 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
849 global.dataSendToMaster.accidentFlags = global.accidentFlag;
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
850
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
851 update_surface_pressure(1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
852 scheduleUpdateLifeData(0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
853 decom_oxygen_calculate_otu_degrade(&global.lifeData.otu, global.seconds_since_last_dive);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
854 decom_oxygen_calculate_cns_degrade(&global.lifeData.cns, global.seconds_since_last_dive);
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
855
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
856 /* start desaturation calculation after first valid measurement has been done */
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
857 if(global.lifeData.pressure_surface_bar != INVALID_PREASURE_VALUE)
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
858 {
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
859 global.lifeData.desaturation_time_minutes = decom_calc_desaturation_time(global.lifeData.tissue_nitrogen_bar,global.lifeData.tissue_helium_bar,global.lifeData.pressure_surface_bar);
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
860 }
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
861 else
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
862 {
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
863 global.lifeData.desaturation_time_minutes = 0;
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
864 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
865 battery_charger_get_status_and_contral_battery_gas_gauge(0);
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
866 battery_gas_gauge_get_data();
89
ff7775cc34c4 temp! full cyclic SPI
Dmitry Romanov <kitt@bk.ru>
parents: 88
diff changeset
867
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
868 copyCnsAndOtuData();
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
869 copyTimeData();
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
870 copyBatteryData();
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
871 copyDeviceData();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
872
331
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
873 /* check if I2C is not up an running and try to reactivate if necessary. Also do initialization if problem occured during startup */
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
874 if(global.I2C_SystemStatus != HAL_OK)
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
875 {
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
876 MX_I2C1_TestAndClear();
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
877 MX_I2C1_Init();
331
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
878 if(global.I2C_SystemStatus == HAL_OK)
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
879 {
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
880 init_pressure();
331
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
881 if(is_init_pressure_done()) /* Init surface data with initial measurement */
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
882 {
338
b6a59e93cc91 Added function to avoid divemode activation during Landing:
ideenmodellierer
parents: 331
diff changeset
883 init_surface_ring(0);
331
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
884 }
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
885
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
886 if(!battery_gas_gauge_CheckConfigOK())
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
887 {
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
888 init_battery_gas_gauge();
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
889 }
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
890 }
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
891 }
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
892 }
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
893
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
894 if(ticksdiff >= 1000)
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
895 {
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
896 //Set back tick counter
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
897 Scheduler.tickstart = HAL_GetTick();
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
898 Scheduler.counterSPIdata100msec = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
899 Scheduler.counterCompass100msec = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
900 Scheduler.counterPressure100msec = 0;
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
901 Scheduler.counterAmbientLight100msec = 0;
220
e524a824d8f2 Added schedule point for functions executed once in a second
ideenmodellierer
parents: 207
diff changeset
902 Scheduler.tick_execute1second = SCHEDULER_TICK_EXE1SEC;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
903 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
904 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
905 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
906
207
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
907 inline void Scheduler_Request_sync_with_SPI(uint8_t SyncMethod)
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
908 {
207
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
909 if( SyncMethod < SPI_SYNC_METHOD_INVALID)
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
910 {
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
911 dospisync = SyncMethod;
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
912 }
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
913 }
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
914
264
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
915 void Scheduler_SyncToSPI(uint8_t TXtick)
207
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
916 {
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
917 uint32_t deltatick = 0;
264
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
918 int8_t TXcompensation;
207
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
919
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
920 switch(dospisync)
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
921 {
207
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
922 case SPI_SYNC_METHOD_HARD:
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
923 //Set back tick counter
264
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
924 Scheduler.tickstart = HAL_GetTick() - 4; /* consider 4ms offset for transfer */
207
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
925 Scheduler.counterSPIdata100msec = 0;
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
926 Scheduler.counterCompass100msec = 0;
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
927 Scheduler.counterPressure100msec = 0;
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
928 Scheduler.counterAmbientLight100msec = 0;
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
929 dospisync = SPI_SYNC_METHOD_NONE;
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
930 break;
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
931 case SPI_SYNC_METHOD_SOFT:
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
932 deltatick = time_elapsed_ms(Scheduler.tickstart,HAL_GetTick());
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
933 deltatick %= 100; /* clip to 100ms window */
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
934 if(Scheduler.tickstart - deltatick >= 0) /* adjust start time to the next 100ms window */
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
935 {
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
936 Scheduler.tickstart -= deltatick;
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
937 }
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
938 else
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
939 {
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
940 Scheduler.tickstart = 0xFFFFFFFF- (deltatick - Scheduler.tickstart);
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
941 }
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
942 dospisync = SPI_SYNC_METHOD_NONE;
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
943 break;
264
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
944 default: /* continous sync activity */
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
945 if(TXtick < 100) /* do not handle unexpected jump length > 100ms */
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
946 {
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
947 TXtick += 4; /* add 4ms TX time to offset of 100ms time stamp */
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
948 deltatick = time_elapsed_ms(Scheduler.tickstart,HAL_GetTick());
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
949 deltatick %= 100;
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
950 if(deltatick > 50)
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
951 {
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
952 TXcompensation = deltatick - 100; /* neg drift */
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
953 }
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
954 else
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
955 {
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
956 TXcompensation = deltatick; /* pos drift */
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
957 }
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
958 TXcompensation = TXtick - TXcompensation;
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
959 Scheduler.tickstart -= TXcompensation;
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
960 }
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
961 else
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
962 {
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
963 Scheduler_Request_sync_with_SPI(SPI_SYNC_METHOD_SOFT); /* A large shift in 100ms cycle occured => clip to 100ms in next sync call */
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
964 }
207
b95741467355 Introduce scheduler function
ideenmodellierer
parents: 186
diff changeset
965 break;
142
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
966 }
69f4b8067daa Use one global structure for all schedule counters
Ideenmodellierer
parents: 135
diff changeset
967 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
968
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
969 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
970 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
971 * @brief scheduleCompassCalibrationMode
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
972 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
973 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
974 * @since 31-March-2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
975 * @date 31-March-2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
976 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
977 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
978 void scheduleCompassCalibrationMode(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
979 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
980 compass_init(1,7); // fast mode, max gain
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
981 compass_calib(); // duration : 1 minute!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
982 compass_init(0,7); // back to normal mode
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
983
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
984 if(global.seconds_since_last_dive)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
985 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
986 schedule_update_timer_helper(-1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
987 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
988
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
989 scheduleUpdateLifeData(0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
990 global.mode = MODE_SURFACE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
991 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
992
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
993
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
994 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
995 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
996 * @brief scheduleSleepMode / sleep mode: Main Loop
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
997 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
998 * @version V0.0.2
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
999 * @since 31-March-2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1000 * @date 22-April-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1001 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1002 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1003
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1004 void scheduleSleepMode(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1005 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1006 global.dataSendToMaster.mode = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1007 global.deviceDataSendToMaster.mode = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1008
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1009 /* prevent button wake up problem while in sleep_prepare
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1010 * sleep prepare does I2C_DeInit()
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1011 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1012 if(global.mode != MODE_SLEEP)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1013 MX_I2C1_Init();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1014 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1015 do
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1016 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1017 I2C_DeInit();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1018
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1019 #ifdef DEBUGMODE
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1020 HAL_Delay(2000);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1021 #else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1022 RTC_StopMode_2seconds();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1023 #endif
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1024
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1025
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1026
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1027 if(global.mode == MODE_SLEEP)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1028 secondsCount += 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1029
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1030 MX_I2C1_Init();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1031 pressure_sensor_get_pressure_raw();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1032
331
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
1033 /* check if I2C is not up an running and try to reactivate if necessary. Also do initialization if problem occured during startup */
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
1034 if(global.I2C_SystemStatus != HAL_OK)
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
1035 {
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
1036 MX_I2C1_TestAndClear();
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
1037 MX_I2C1_Init();
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
1038 if(global.I2C_SystemStatus == HAL_OK)
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
1039 {
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
1040 init_pressure();
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
1041 }
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
1042 }
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
1043
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1044 if(secondsCount >= 30)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1045 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1046 pressure_sensor_get_temperature_raw();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1047 battery_gas_gauge_get_data();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1048 // ReInit_battery_charger_status_pins();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1049 battery_charger_get_status_and_contral_battery_gas_gauge(1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1050 // DeInit_battery_charger_status_pins();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1051 secondsCount = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1052 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1053
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1054 pressure_calculation();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1055
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1056 scheduleUpdateDeviceData();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1057 update_surface_pressure(2);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1058
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1059 if(global.seconds_since_last_dive)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1060 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1061 schedule_update_timer_helper(-1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1062 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1063
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1064 if(global.accidentRemainingSeconds)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1065 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1066 if(global.accidentRemainingSeconds > 2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1067 global.accidentRemainingSeconds -= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1068 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1069 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1070 global.accidentRemainingSeconds = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1071 global.accidentFlag = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1072 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1073 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1074
338
b6a59e93cc91 Added function to avoid divemode activation during Landing:
ideenmodellierer
parents: 331
diff changeset
1075 if (((!is_ambient_pressure_close_to_surface(&global.lifeData)) && (global.lifeData.pressure_surface_bar > START_DIVE_MOUNTAIN_MODE_BAR ))
b6a59e93cc91 Added function to avoid divemode activation during Landing:
ideenmodellierer
parents: 331
diff changeset
1076 || (global.lifeData.pressure_ambient_bar > START_DIVE_IMMEDIATLY_BAR))
b6a59e93cc91 Added function to avoid divemode activation during Landing:
ideenmodellierer
parents: 331
diff changeset
1077 {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1078 global.mode = MODE_BOOT;
338
b6a59e93cc91 Added function to avoid divemode activation during Landing:
ideenmodellierer
parents: 331
diff changeset
1079 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1080 scheduleUpdateLifeData(2000);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1081 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1082 while(global.mode == MODE_SLEEP);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1083 /* new section for system after Standby */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1084 scheduleUpdateLifeData(-1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1085 clearDecoNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1086 setButtonsNow = 0;
264
b3685fbada3b Sync to Main 100ms time stamp & added Reinitialization of globals after startup
ideenmodellierer
parents: 240
diff changeset
1087 reinitGlobals();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1088 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1089
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1090
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1091
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1092 /* Private functions ---------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1093
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1094 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1095 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1096 * @brief scheduleUpdateLifeData / calculates tissues
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1097 * @author Peter Ryser
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1098 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1099 * @date 22-April-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1100 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1101 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1102
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1103
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1104 void scheduleUpdateLifeData(int32_t asynchron_milliseconds_since_last)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1105 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1106 static _Bool first = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1107 static uint32_t tickstart = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1108 static uint32_t ticksrest = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1109
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1110 uint32_t ticksdiff = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1111 uint32_t ticksnow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1112 uint32_t time_seconds = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1113 uint8_t whichGasTmp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1114
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
1115 uint8_t updateTissueData = 0;
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
1116
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
1117
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
1118 if(global.lifeData.pressure_surface_bar == INVALID_PREASURE_VALUE)
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
1119 {
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
1120 updateTissueData = 1;
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
1121 }
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
1122
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1123 if(asynchron_milliseconds_since_last < 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1124 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1125 first = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1126 tickstart = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1127 ticksrest = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1128 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1129 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1130
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1131 if(!asynchron_milliseconds_since_last && first)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1132 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1133 tickstart = HAL_GetTick();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1134 first = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1135 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1136 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1137
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1138 whichGasTmp = global.whichGas;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1139 global.lifeData.actualGas = global.aktualGas[whichGasTmp];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1140 global.lifeData.pressure_ambient_bar = get_pressure_mbar() / 1000.0f;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1141 global.lifeData.pressure_surface_bar = get_surface_mbar() / 1000.0f;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1142
135
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
1143 if(updateTissueData)
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
1144 {
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
1145 decom_reset_with_ambientmbar(global.lifeData.pressure_surface_bar,&global.lifeData);
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
1146 }
5df4f1a315cb Restore old data copy locations
Ideenmodellierer
parents: 120
diff changeset
1147
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1148 if(!asynchron_milliseconds_since_last)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1149 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1150 ticksnow = HAL_GetTick();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1151 ticksdiff = time_elapsed_ms(tickstart,ticksnow);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1152 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1153 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1154 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1155 first = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1156 ticksdiff = asynchron_milliseconds_since_last;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1157 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1158
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1159 if(ticksrest > 1000) // whatever happens after standby with STM32L476
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1160 ticksrest = 0; // maybe move static to SRAM2
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1161
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1162 ticksdiff += ticksrest;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1163 time_seconds = ticksdiff/ 1000;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1164 ticksrest = ticksdiff - time_seconds * 1000;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1165 tickstart = ticksnow;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1166
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1167 decom_tissues_exposure((int)time_seconds, &global.lifeData);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1168 if(global.demo_mode)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1169 decom_tissues_exposure((int)(3*time_seconds), &global.lifeData);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1170 copyTissueData();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1171 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1172
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1173
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1174 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1175 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1176 * @brief scheduleUpdateDeviceData
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1177 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1178 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1179 * @date 16-March-2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1180 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1181 * two step process
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1182 * first compare with data from main CPU == externalLogbookFlash
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1183 * second update with new sensor data
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1184 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1185 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1186 void scheduleSetDate(SDeviceLine *line)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1187 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1188 extern RTC_HandleTypeDef RTCHandle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1189
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1190 line->date_rtc_dr = (uint32_t)(RTCHandle.Instance->DR & RTC_DR_RESERVED_MASK);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1191 line->time_rtc_tr = (uint32_t)(RTCHandle.Instance->TR & RTC_TR_RESERVED_MASK);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1192 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1193
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1194
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1195 void scheduleCopyDeviceData(SDeviceLine *lineWrite, const SDeviceLine *lineRead)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1196 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1197 lineWrite->date_rtc_dr = lineRead->date_rtc_dr;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1198 lineWrite->time_rtc_tr = lineRead->time_rtc_tr;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1199 lineWrite->value_int32 = lineRead->value_int32;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1200 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1201
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1202
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1203 void scheduleUpdateDeviceData(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1204 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1205 /* first step, main CPU */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1206
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1207 if(deviceDataFlashValid)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1208 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1209 /* max values */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1210 if(global.deviceData.batteryChargeCompleteCycles.value_int32 < DeviceDataFlash.batteryChargeCompleteCycles.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1211 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1212 scheduleCopyDeviceData(&global.deviceData.batteryChargeCompleteCycles, &DeviceDataFlash.batteryChargeCompleteCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1213 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1214 if(global.deviceData.batteryChargeCycles.value_int32 < DeviceDataFlash.batteryChargeCycles.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1215 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1216 scheduleCopyDeviceData(&global.deviceData.batteryChargeCycles, &DeviceDataFlash.batteryChargeCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1217 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1218 if(global.deviceData.temperatureMaximum.value_int32 < DeviceDataFlash.temperatureMaximum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1219 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1220 scheduleCopyDeviceData(&global.deviceData.temperatureMaximum, &DeviceDataFlash.temperatureMaximum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1221 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1222 if(global.deviceData.depthMaximum.value_int32 < DeviceDataFlash.depthMaximum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1223 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1224 scheduleCopyDeviceData(&global.deviceData.depthMaximum, &DeviceDataFlash.depthMaximum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1225 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1226 if(global.deviceData.diveCycles.value_int32 < DeviceDataFlash.diveCycles.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1227 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1228 scheduleCopyDeviceData(&global.deviceData.diveCycles, &DeviceDataFlash.diveCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1229 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1230 if(global.deviceData.hoursOfOperation.value_int32 < DeviceDataFlash.hoursOfOperation.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1231 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1232 scheduleCopyDeviceData(&global.deviceData.hoursOfOperation, &DeviceDataFlash.hoursOfOperation);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1233 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1234
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1235 /* min values */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1236 if(global.deviceData.temperatureMinimum.value_int32 > DeviceDataFlash.temperatureMinimum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1237 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1238 scheduleCopyDeviceData(&global.deviceData.temperatureMinimum, &DeviceDataFlash.temperatureMinimum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1239 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1240 if(global.deviceData.voltageMinimum.value_int32 > DeviceDataFlash.voltageMinimum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1241 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1242 scheduleCopyDeviceData(&global.deviceData.voltageMinimum, &DeviceDataFlash.voltageMinimum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1243 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1244 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1245
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1246 /* second step, sensor data */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1247 int32_t temperature_centigrad_int32;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1248 int32_t pressure_mbar_int32;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1249 int32_t voltage_mvolt_int32;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1250
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1251 temperature_centigrad_int32 = (int32_t)(get_temperature() * 100);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1252 if(temperature_centigrad_int32 < global.deviceData.temperatureMinimum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1253 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1254 global.deviceData.temperatureMinimum.value_int32 = temperature_centigrad_int32;
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
1255 scheduleSetDate(&global.deviceData.temperatureMinimum);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1256 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1257
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1258 if(temperature_centigrad_int32 > global.deviceData.temperatureMaximum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1259 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1260 global.deviceData.temperatureMaximum.value_int32 = temperature_centigrad_int32;
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
1261 scheduleSetDate(&global.deviceData.temperatureMaximum);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1262 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1263
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1264 pressure_mbar_int32 = (int32_t)get_pressure_mbar();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1265 if(pressure_mbar_int32 > global.deviceData.depthMaximum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1266 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1267 global.deviceData.depthMaximum.value_int32 = pressure_mbar_int32;
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
1268 scheduleSetDate(&global.deviceData.depthMaximum);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1269 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1270
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1271 voltage_mvolt_int32 = (int32_t)(get_voltage() * 1000);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1272 if(voltage_mvolt_int32 < global.deviceData.voltageMinimum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1273 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1274 global.deviceData.voltageMinimum.value_int32 = voltage_mvolt_int32;
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
1275 scheduleSetDate(&global.deviceData.voltageMinimum);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1276 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1277
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1278 /* third step, counter */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1279 switch (global.mode)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1280 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1281 case MODE_SURFACE:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1282 case MODE_DIVE:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1283 default:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1284 deviceDataSubSeconds++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1285 if(deviceDataSubSeconds > 10)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1286 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1287 deviceDataSubSeconds = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1288 global.deviceData.hoursOfOperation.value_int32++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1289 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1290 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1291
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1292 case MODE_SLEEP:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1293 case MODE_SHUTDOWN:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1294 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1295 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1296 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1297
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1298
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1299 void scheduleUpdateDeviceDataChargerFull(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1300 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1301 global.deviceData.batteryChargeCompleteCycles.value_int32++;
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
1302 scheduleSetDate(&global.deviceData.batteryChargeCompleteCycles);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1303 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1304
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1305
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1306 void scheduleUpdateDeviceDataChargerCharging(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1307 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1308 global.deviceData.batteryChargeCycles.value_int32++;
88
Dmitry Romanov <kitt@bk.ru>
parents: 87
diff changeset
1309 scheduleSetDate(&global.deviceData.batteryChargeCycles);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1310 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1311
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1312
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1313 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1314 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1315 * @brief vpm_crush / calls vpm calc_crushing_pressure every four seconds during descend
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1316 * @author Peter Ryser
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1317 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1318 * @date 22-April-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1319 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1320 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1321 _Bool vpm_crush2(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1322 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1323 int i = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1324 static float starting_ambient_pressure = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1325 static float ending_ambient_pressure = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1326 static float time_calc_begin = -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1327 static float initial_helium_pressure[16];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1328 static float initial_nitrogen_pressure[16];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1329 ending_ambient_pressure = global.lifeData.pressure_ambient_bar * 10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1330
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1331 if((global.lifeData.dive_time_seconds <= 4) || (starting_ambient_pressure >= ending_ambient_pressure))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1332 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1333 time_calc_begin = global.lifeData.dive_time_seconds;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1334 starting_ambient_pressure = global.lifeData.pressure_ambient_bar * 10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1335 for( i = 0; i < 16; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1336 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1337 initial_helium_pressure[i] = global.lifeData.tissue_helium_bar[i] * 10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1338 initial_nitrogen_pressure[i] = global.lifeData.tissue_nitrogen_bar[i] * 10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1339 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1340 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1341 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1342 if(global.lifeData.dive_time_seconds - time_calc_begin >= 4)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1343 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1344 if(ending_ambient_pressure > starting_ambient_pressure + 0.5f)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1345 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1346 float rate = (ending_ambient_pressure - starting_ambient_pressure) * 60 / 4;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1347 calc_crushing_pressure(&global.lifeData, &global.vpm, initial_helium_pressure, initial_nitrogen_pressure, starting_ambient_pressure, rate);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1348
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1349 time_calc_begin = global.lifeData.dive_time_seconds;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1350 starting_ambient_pressure = global.lifeData.pressure_ambient_bar * 10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1351 for( i = 0; i < 16; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1352 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1353 initial_helium_pressure[i] = global.lifeData.tissue_helium_bar[i] * 10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1354 initial_nitrogen_pressure[i] = global.lifeData.tissue_nitrogen_bar[i] * 10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1355 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1356
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1357 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1358 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1359
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1360 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1361 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1362 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1363
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1364
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1365 long get_nofly_time_minutes(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1366 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1367
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1368 if(global.no_fly_time_minutes <= 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1369 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1370
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1371 long minutes_since_last_dive = global.seconds_since_last_dive/60;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1372
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1373 if((global.seconds_since_last_dive > 0) && (global.no_fly_time_minutes > minutes_since_last_dive))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1374 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1375 return (global.no_fly_time_minutes - minutes_since_last_dive);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1376 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1377 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1378 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1379 global.no_fly_time_minutes = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1380 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1381 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1382 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1383
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1384
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1385 //Supports threadsave copying!!!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1386 void copyActualGas(SGas gas)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1387 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1388 uint8_t whichGas = !global.whichGas;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1389 global.aktualGas[whichGas] = gas;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1390 global.whichGas = whichGas;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1391 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1392
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1393
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1394 //Supports threadsave copying!!!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1395 void copyPressureData(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1396 {
240
625d20070261 Improvement SPI stability/recoverability
Jan Mulder <jlmulder@xs4all.nl>
parents: 231
diff changeset
1397 global.dataSendToMaster.sensorErrors = global.I2C_SystemStatus;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1398 uint8_t boolPressureData = !global.dataSendToMaster.boolPressureData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1399 global.dataSendToMaster.data[boolPressureData].temperature = get_temperature();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1400 global.dataSendToMaster.data[boolPressureData].pressure_mbar = get_pressure_mbar();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1401 global.dataSendToMaster.data[boolPressureData].surface_mbar = get_surface_mbar();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1402 global.dataSendToMaster.data[boolPressureData].ascent_rate_meter_per_min = global.lifeData.ascent_rate_meter_per_min;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1403 global.dataSendToMaster.data[boolPressureData].pressure_uTick = HAL_GetTick();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1404 global.dataSendToMaster.boolPressureData = boolPressureData;
346
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1405 global.dataSendToMaster.data[boolPressureData].SPARE1 = is_surface_pressure_stable();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1406 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1407
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1408
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1409 //Supports threadsave copying!!!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1410 void copyCnsAndOtuData(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1411 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1412 //uint8_t dataSendToMaster.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1413 uint8_t boolToxicData = !global.dataSendToMaster.boolToxicData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1414 global.dataSendToMaster.data[boolToxicData].cns = global.lifeData.cns;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1415 global.dataSendToMaster.data[boolToxicData].otu = global.lifeData.otu;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1416 global.dataSendToMaster.data[boolToxicData].desaturation_time_minutes = global.lifeData.desaturation_time_minutes;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1417 global.dataSendToMaster.data[boolToxicData].no_fly_time_minutes = get_nofly_time_minutes();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1418 global.dataSendToMaster.boolToxicData = boolToxicData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1419 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1420
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1421
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1422 //Supports threadsave copying!!!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1423 void copyTimeData(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1424 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1425 extern RTC_HandleTypeDef RTCHandle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1426
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1427 uint8_t boolTimeData = !global.dataSendToMaster.boolTimeData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1428 global.dataSendToMaster.data[boolTimeData].localtime_rtc_tr = (uint32_t)(RTCHandle.Instance->TR & RTC_TR_RESERVED_MASK);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1429 global.dataSendToMaster.data[boolTimeData].localtime_rtc_dr = (uint32_t)(RTCHandle.Instance->DR & RTC_DR_RESERVED_MASK);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1430 global.dataSendToMaster.data[boolTimeData].divetime_seconds = (uint32_t)global.lifeData.dive_time_seconds;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1431 global.dataSendToMaster.data[boolTimeData].dive_time_seconds_without_surface_time = (uint32_t)global.lifeData.dive_time_seconds_without_surface_time;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1432 global.dataSendToMaster.data[boolTimeData].surfacetime_seconds = (uint32_t)global.seconds_since_last_dive;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1433 global.dataSendToMaster.data[boolTimeData].counterSecondsShallowDepth = (uint32_t)global.lifeData.counterSecondsShallowDepth;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1434 global.dataSendToMaster.boolTimeData = boolTimeData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1435 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1436
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1437
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1438 //Supports threadsave copying!!!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1439 void copyCompassData(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1440 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1441 extern float compass_heading;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1442 extern float compass_roll;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1443 extern float compass_pitch;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1444 //uint8_t dataSendToMaster.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1445 uint8_t boolCompassData = !global.dataSendToMaster.boolCompassData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1446 global.dataSendToMaster.data[boolCompassData].compass_heading = compass_heading;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1447 global.dataSendToMaster.data[boolCompassData].compass_roll = compass_roll;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1448 global.dataSendToMaster.data[boolCompassData].compass_pitch = compass_pitch;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1449 global.dataSendToMaster.data[boolCompassData].compass_DX_f = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1450 global.dataSendToMaster.data[boolCompassData].compass_DY_f = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1451 global.dataSendToMaster.data[boolCompassData].compass_DZ_f = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1452 global.dataSendToMaster.data[boolCompassData].compass_uTick = HAL_GetTick();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1453 global.dataSendToMaster.boolCompassData = boolCompassData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1454 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1455
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1456
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1457 void copyCompassDataDuringCalibration(int16_t dx, int16_t dy, int16_t dz)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1458 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1459 extern float compass_heading;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1460 extern float compass_roll;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1461 extern float compass_pitch;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1462 //uint8_t dataSendToMaster.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1463 uint8_t boolCompassData = !global.dataSendToMaster.boolCompassData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1464 global.dataSendToMaster.data[boolCompassData].compass_heading = compass_heading;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1465 global.dataSendToMaster.data[boolCompassData].compass_roll = compass_roll;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1466 global.dataSendToMaster.data[boolCompassData].compass_pitch = compass_pitch;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1467 global.dataSendToMaster.data[boolCompassData].compass_DX_f = dx;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1468 global.dataSendToMaster.data[boolCompassData].compass_DY_f = dy;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1469 global.dataSendToMaster.data[boolCompassData].compass_DZ_f = dz;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1470 global.dataSendToMaster.boolCompassData = boolCompassData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1471 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1472
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1473
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1474 //Supports threadsave copying!!!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1475 void copyBatteryData(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1476 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1477 uint8_t boolBatteryData = !global.dataSendToMaster.boolBatteryData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1478 global.dataSendToMaster.data[boolBatteryData].battery_voltage = get_voltage();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1479 global.dataSendToMaster.data[boolBatteryData].battery_charge= get_charge();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1480 global.dataSendToMaster.boolBatteryData = boolBatteryData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1481 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1482
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1483
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1484 //Supports threadsave copying!!!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1485 void copyAmbientLightData(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1486 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1487 uint8_t boolAmbientLightData = !global.dataSendToMaster.boolAmbientLightData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1488 global.dataSendToMaster.data[boolAmbientLightData].ambient_light_level = get_ambient_light_level();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1489 global.dataSendToMaster.boolAmbientLightData = boolAmbientLightData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1490 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1491
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1492
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1493 //Supports threadsave copying!!!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1494 void copyTissueData(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1495 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1496 //uint8_t dataSendToMaster.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1497 uint8_t boolTisssueData = !global.dataSendToMaster.boolTisssueData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1498 for(int i = 0; i < 16; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1499 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1500 global.dataSendToMaster.data[boolTisssueData].tissue_nitrogen_bar[i] = global.lifeData.tissue_nitrogen_bar[i];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1501 global.dataSendToMaster.data[boolTisssueData].tissue_helium_bar[i] = global.lifeData.tissue_helium_bar[i];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1502 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1503 global.dataSendToMaster.boolTisssueData = boolTisssueData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1504 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1505
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1506
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1507 //Supports threadsave copying!!!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1508 void copyVpmCrushingData(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1509 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1510 //uint8_t dataSendToMaster.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1511 uint8_t boolCrushingData = !global.dataSendToMaster.boolCrushingData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1512 for(int i = 0; i < 16; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1513 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1514 global.dataSendToMaster.data[boolCrushingData].max_crushing_pressure_n2[i] = global.vpm.max_crushing_pressure_n2[i];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1515 global.dataSendToMaster.data[boolCrushingData].max_crushing_pressure_he[i] = global.vpm.max_crushing_pressure_he[i];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1516 global.dataSendToMaster.data[boolCrushingData].adjusted_critical_radius_he[i] = global.vpm.adjusted_critical_radius_he[i];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1517 global.dataSendToMaster.data[boolCrushingData].adjusted_critical_radius_n2[i] = global.vpm.adjusted_critical_radius_n2[i];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1518 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1519 global.dataSendToMaster.boolCrushingData = boolCrushingData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1520 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1521
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1522
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1523 void copyDeviceData(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1524 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1525 uint8_t boolDeviceData = !global.deviceDataSendToMaster.boolDeviceData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1526 memcpy(&global.deviceDataSendToMaster.DeviceData[boolDeviceData], &global.deviceData,sizeof(SDevice));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1527 global.deviceDataSendToMaster.boolDeviceData = boolDeviceData;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1528
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1529 global.deviceDataSendToMaster.boolVpmRepetitiveDataValid = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1530 memcpy(&global.deviceDataSendToMaster.VpmRepetitiveData.adjusted_critical_radius_he, &global.vpm.adjusted_critical_radius_he, sizeof(16*4));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1531 memcpy(&global.deviceDataSendToMaster.VpmRepetitiveData.adjusted_critical_radius_n2, &global.vpm.adjusted_critical_radius_n2, sizeof(16*4));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1532 memcpy(&global.deviceDataSendToMaster.VpmRepetitiveData.adjusted_crushing_pressure_he, &global.vpm.adjusted_crushing_pressure_he, sizeof(16*4));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1533 memcpy(&global.deviceDataSendToMaster.VpmRepetitiveData.adjusted_crushing_pressure_n2, &global.vpm.adjusted_crushing_pressure_n2, sizeof(16*4));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1534 memcpy(&global.deviceDataSendToMaster.VpmRepetitiveData.initial_allowable_gradient_he, &global.vpm.initial_allowable_gradient_he, sizeof(16*4));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1535 memcpy(&global.deviceDataSendToMaster.VpmRepetitiveData.initial_allowable_gradient_n2, &global.vpm.initial_allowable_gradient_n2, sizeof(16*4));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1536 memcpy(&global.deviceDataSendToMaster.VpmRepetitiveData.max_actual_gradient, &global.vpm.max_actual_gradient, sizeof(16*4));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1537 global.deviceDataSendToMaster.VpmRepetitiveData.repetitive_variables_not_valid = global.vpm.repetitive_variables_not_valid;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1538 global.deviceDataSendToMaster.boolVpmRepetitiveDataValid = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1539 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1540
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1541 /* copyPICdata(); is used in spi.c */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1542 void copyPICdata(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1543 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1544 uint8_t boolPICdata = !global.dataSendToMaster.boolPICdata;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1545 for(int i = 0; i < 3; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1546 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1547 global.dataSendToMaster.data[boolPICdata].button_setting[i] = global.ButtonPICdata[i];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1548 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1549 global.dataSendToMaster.boolPICdata = boolPICdata;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1550 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1551
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1552
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1553 typedef enum
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1554 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1555 SPI3_OK = 0x00,
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1556 SPI3_DEINIT = 0x01,
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1557 } SPI3_StatusTypeDef;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1558 /* if spi3 is running and the SPI3_ButtonAdjust call returns OK, all is fine
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1559 if the SPI3_ButtonAdjust call returns error, the spi3 is DeInit
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1560 and will be init the next call of scheduleSetButtonResponsiveness()
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1561 and data will be send again on the third call
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1562 therefore on return 0 of scheduleSetButtonResponsiveness() the caller flag should kept active
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1563 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1564 uint8_t scheduleSetButtonResponsiveness(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1565 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1566 static uint8_t SPI3status = SPI3_OK;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1567
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1568 if((SPI3status == SPI3_OK) && (SPI3_ButtonAdjust(global.ButtonResponsiveness, global.ButtonPICdata)))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1569 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1570 copyPICdata();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1571 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1572 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1573 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1574 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1575 for(int i=0;i<3;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1576 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1577 global.ButtonPICdata[i] = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1578 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1579 copyPICdata();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1580
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1581 if(SPI3status == SPI3_OK)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1582 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1583 MX_SPI3_DeInit();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1584 SPI3status = SPI3_DEINIT;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1585 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1586 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1587 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1588 MX_SPI3_Init();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1589 SPI3status = SPI3_OK;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1590 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1591 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1592 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1593 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1594
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1595
186
f11f0bf6ef2d cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents: 181
diff changeset
1596 //save time difference
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1597 uint32_t time_elapsed_ms(uint32_t ticksstart,uint32_t ticksnow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1598 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1599 if(ticksstart <= ticksnow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1600 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1601 return ticksnow - ticksstart;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1602 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1603 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1604 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1605 return 0xFFFFFFFF - ticksstart + ticksnow;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1606 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1607 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1608
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1609 /* same as in data_central.c */
310
95928ef3986f Make dive mode detection more advanced
Jan Mulder <jlmulder@xs4all.nl>
parents: 301
diff changeset
1610 _Bool is_ambient_pressure_close_to_surface(SLifeData *lifeData)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1611 {
346
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1612 _Bool retval = true;
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1613
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1614 if(lifeData->pressure_ambient_bar != INVALID_PREASURE_VALUE) /* as long as no valid data is available expect we are close to surface */
331
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
1615 {
346
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1616 /* this will e.g. apply in case of a significant pressure change during last 30 minutes => use increased offset for surface detection */
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1617 if (lifeData->pressure_ambient_bar > START_DIVE_IMMEDIATLY_BAR)
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1618 {
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1619 retval = false;
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1620 }
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1621 else if(is_surface_pressure_stable()) /* this is the expected start condition */
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1622 {
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1623 if((lifeData->pressure_ambient_bar >= (lifeData->pressure_surface_bar + 0.1f))
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1624 && (ManualExitDiveCounter == 0)) /* only if diver did not request to exit dive mode */
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1625 {
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1626 retval = false;
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1627 }
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1628 }
331
b4c578caaafb Added plausibility check for pressure values
ideenmodellierer
parents: 310
diff changeset
1629 }
346
73325a78c907 Added function to support manuel exit of dive mode
ideenmodellierer
parents: 338
diff changeset
1630 return retval;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1631 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1632
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1633
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1634 /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1635