annotate Small_CPU/Src/scheduler.c @ 86:cc41b5eaf1a7 kittz

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