annotate Small_CPU/Src/scheduler.c @ 265:a91d99265884 IPC_Sync_Improvment_2

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