annotate Small_CPU/Src/scheduler.c @ 345:4093ac18b25c FlightMode_Improvment

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