annotate Discovery/Src/data_exchange_main.c @ 569:3508e6dc4f22

Added new section "lower.font": To avoid section overlap caused by the memory needs of the new characters, a new section has been introduced to store the font data behind the code and data sections. The handling is a little bit overengineered but was used to have the same look as the upper section, where a defined structure had to be rebuild to match the output of another compiler. moving the lower section behind the upper would save firmware space but result in the need of a new fontlib version.
author Ideenmodellierer
date Mon, 30 Nov 2020 20:52:49 +0100
parents 84a4e1200726
children 9bb9a52d6ae5
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 data_exchange_main.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 13-Oct-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
6 * @version V0.0.3
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
7 * @since 17-Feb-2016
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
8
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
9 * @brief Communication with the second CPU == RTE system
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
10 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
11 @verbatim
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
12 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
13 ##### Version Changes #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
14 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
15 160217 V0.0.3 pStateUsed->decolistXXXXX.tickstamp = HAL_GetTick(); added
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
16 150627 V0.0.2
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
17
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
18 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
19 ##### How to use #####
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 ##### Button, Set Time, Clear Deco etc Request #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
24 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
25 was updated (151207) for buttons and clear deco at the moment only
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
26 using requestNecessary and checking in DataEX_copy_to_LifeData()
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
27 Hence if there is no confirm from the smallCPU on the data after the request
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
28 the request will be send again.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
29
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
30 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
31 ##### Device Data #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
32 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
33
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
34 main CPU always sends the device data info that it has at the moment
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
35
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
36 on start it is INT32_MIN, INT32_MAX and 0
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
37 as initialized in data_central.c variable declaration
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
39 second small CPU gets request to send its device data
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
40
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
41 on reception the data is merged with the data in externLogbookFlash,
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
42 stored on the externLogbookFlash and from now on send to small CPU
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
43
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
44 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
45 ##### Magnet Reset #####
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
46 ==============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
47
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
48 @endverbatim
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
49 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
50 * @attention
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
51 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
52 * <h2><center>&copy; COPYRIGHT(c) 2014 heinrichs weikamp</center></h2>
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
53 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
54 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
55 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
56
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
57 /* Includes ------------------------------------------------------------------*/
133
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
58 #include <stdlib.h>
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
59 #include <string.h> // for memcpy
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
60 #include "stm32f4xx_hal.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
61 #include "stdio.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
62 #include "ostc.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
63 #include "settings.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
64 #include "data_central.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
65 #include "data_exchange_main.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
66 #include "base.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
67 #include "decom.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
68 #include "calc_crush.h" /* for vpm_init */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
69 #include "simulation.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
70 #include "tCCR.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
71 #include "timer.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
72 #include "buehlmann.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
73 #include "externLogbookFlash.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
74
556
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
75 //#define TESTBENCH
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
76
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
77 /* Exported variables --------------------------------------------------------*/
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
78 static uint8_t wasPowerOn = 0;
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
79 static confirmbit8_Type requestNecessary = { .uw = 0 };
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
80 static uint8_t wasUpdateNotPowerOn = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
81
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
82 /* Private variables with external access ------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
83
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
84 /* Private variables ---------------------------------------------------------*/
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
85 static uint8_t told_reset_logik_alles_ok = 0;
559
84a4e1200726 Check if HW evaluation was performed:
Ideenmodellierer
parents: 556
diff changeset
86 static hw_Info_t hw_Info;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
87
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
88 static SDataReceiveFromMaster dataOut;
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
89 static SDataExchangeSlaveToMaster dataIn;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
90
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
91 static uint8_t data_old__lost_connection_to_slave_counter_temp = 0;
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
92 static uint8_t data_old__lost_connection_to_slave_counter_retry = 0;
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
93 static uint32_t data_old__lost_connection_to_slave_counter_total = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
94
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
95 static uint8_t DeviceDataUpdated = 0;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
96
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
97 /* Private types -------------------------------------------------------------*/
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
98 #define UNKNOWN_TIME_HOURS 1
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
99 #define UNKNOWN_TIME_MINUTES 0
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
100 #define UNKNOWN_TIME_SECOND 0
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
101 #define UNKNOWN_DATE_DAY 1
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
102 #define UNKNOWN_DATE_MONTH 1
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
103 #define UNKNOWN_DATE_YEAR 16
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
104
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
105 /* Private function prototypes -----------------------------------------------*/
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
106 static uint8_t DataEX_check_header_and_footer_ok(void);
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
107 static uint8_t DataEX_check_header_and_footer_shifted(void);
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
108 static uint8_t DataEX_check_header_and_footer_devicedata(void);
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
109 static void DataEX_check_DeviceData(void);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
110
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
111 /* Exported functions --------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
112 uint8_t DataEX_was_power_on(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
113 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
114 return wasPowerOn;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
115 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
116
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
117 static uint8_t count_DataEX_Error_Handler = 0;
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
118 static uint8_t last_error_DataEX_Error_Handler = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
119
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
120 static void DataEX_Error_Handler(uint8_t answer)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
121 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
122 count_DataEX_Error_Handler++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
123 last_error_DataEX_Error_Handler = answer;
133
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
124
156
1fbdb45db701 Removed special indicator for DMA transfer error
Ideenmodellierer
parents: 154
diff changeset
125 /* A wrong footer indicates a communication interrupt. State machine is waiting for new data which is not received because no new transmission is triggered */
133
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
126 /* ==> Abort data exchange to enable a new RX / TX cycle */
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
127 if(answer == HAL_BUSY)
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
128 {
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
129 HAL_SPI_Abort_IT(&cpu2DmaSpi);
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
130 }
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
131
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
132 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
133 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
134
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
135
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
136 uint32_t DataEX_lost_connection_count(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
137 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
138 return data_old__lost_connection_to_slave_counter_total;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
139 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
140
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
141
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
142 SDataReceiveFromMaster *dataOutGetPointer(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
143 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
144 return &dataOut;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
145 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
146
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
147 void DataEX_init(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
148 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
149 SDiveState * pStateReal = stateRealGetPointerWrite();
99
6a2308b9a3d4 Config for debug data
Dmitry Romanov <kitt@bk.ru>
parents: 90
diff changeset
150 pStateReal->data_old__lost_connection_to_slave = 0; //initial value
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
151 data_old__lost_connection_to_slave_counter_temp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
152 data_old__lost_connection_to_slave_counter_total = 0;
407
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
153 DeviceDataUpdated = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
154
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
155 memset((void *)&dataOut, 0, sizeof(SDataReceiveFromMaster));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
156
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
157 dataOut.header.checkCode[0] = 0xBB;
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
158 dataOut.header.checkCode[1] = SPI_RX_STATE_OK;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
159 dataOut.header.checkCode[2] = SPI_RX_STATE_OK;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
160 dataOut.header.checkCode[3] = 0xBB;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
161
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
162 dataOut.footer.checkCode[0] = 0xF4;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
163 dataOut.footer.checkCode[1] = 0xF3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
164 dataOut.footer.checkCode[2] = 0xF2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
165 dataOut.footer.checkCode[3] = 0xF1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
166 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
167
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
168
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
169 static void DataEx_call_helper_requests(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
170 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
171 static uint8_t setDateWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
172 static uint8_t setTimeWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
173 static uint8_t calibrateCompassWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
174 static uint8_t setButtonSensitivityWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
175 static uint8_t clearDecoWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
176 static uint8_t getDeviceDataWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
177 static uint8_t setAccidentFlagWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
178 static uint8_t setEndDiveWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
179
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
180 if(getDeviceDataWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
181 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
182 dataOut.getDeviceDataNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
183 requestNecessary.ub.devicedata = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
184 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
185 getDeviceDataWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
186 if(dataOut.getDeviceDataNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
187 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
188 getDeviceDataWasSend = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
189 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
190
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
191 if(setEndDiveWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
192 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
193 dataOut.setEndDive = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
194 //requestNecessary.ub.XXX = 1; not implemented and no space here
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
195 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
196 setEndDiveWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
197 if(dataOut.setEndDive)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
198 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
199 setEndDiveWasSend = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
200 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
201
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
202 if(setAccidentFlagWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
203 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
204 dataOut.setAccidentFlag = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
205 requestNecessary.ub.accident = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
206 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
207 setAccidentFlagWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
208 if(dataOut.setAccidentFlag)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
209 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
210 setAccidentFlagWasSend = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
211 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
212
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
213 if(setDateWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
214 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
215 dataOut.setDateNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
216 requestNecessary.ub.date = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
217 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
218 setDateWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
219 if(dataOut.setDateNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
220 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
221 setDateWasSend = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
222 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
223
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
224 if(setTimeWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
225 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
226 dataOut.setTimeNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
227 requestNecessary.ub.time = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
228 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
229 setTimeWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
230 if(dataOut.setTimeNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
231 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
232 setTimeWasSend = 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(calibrateCompassWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
236 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
237 dataOut.calibrateCompassNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
238 requestNecessary.ub.compass = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
239 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
240 calibrateCompassWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
241 if(dataOut.calibrateCompassNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
242 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
243 calibrateCompassWasSend = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
244 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
245
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
246 if(clearDecoWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
247 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
248 dataOut.clearDecoNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
249 requestNecessary.ub.clearDeco = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
250 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
251 if(dataOut.clearDecoNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
252 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
253 clearDecoWasSend = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
254 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
255
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
256 if(setButtonSensitivityWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
257 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
258 dataOut.setButtonSensitivityNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
259 requestNecessary.ub.button = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
260 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
261 setButtonSensitivityWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
262 if(dataOut.setButtonSensitivityNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
263 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
264 setButtonSensitivityWasSend = 1;
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
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
268
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
269 uint8_t DataEX_call(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
270 {
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
271 static uint32_t RTEOfflineCnt = 0;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
272 static uint8_t SusppressCom = 0;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
273
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
274 uint8_t SPI_DMA_answer = 0;
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
275
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
276 if(SusppressCom)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
277 {
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
278 SusppressCom--;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
279 }
149
e1d66bc78f9a Eliminate warnings
Ideenmodellierer
parents: 141
diff changeset
280 else
e1d66bc78f9a Eliminate warnings
Ideenmodellierer
parents: 141
diff changeset
281 {
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
282 if(data_old__lost_connection_to_slave_counter_temp >= 2) /* error reaction is triggered whenever communication could not be reestablishen within two cycles */
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
283 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
284 data_old__lost_connection_to_slave_counter_temp = 0;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
285 if(DataEX_check_header_and_footer_shifted())
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
286 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
287 if(RTEOfflineCnt > 1) /* RTE restarted communication after a longer silent time => restart error handling to recover */
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
288 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
289 data_old__lost_connection_to_slave_counter_retry = 0;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
290 RTEOfflineCnt = 0;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
291 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
292
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
293 /* We received shifted data. Step one. Reset DMA to see if the problem is located at main */
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
294 if (data_old__lost_connection_to_slave_counter_retry == 0)
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
295 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
296 HAL_SPI_Abort_IT(&cpu2DmaSpi);
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
297 }
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
298 /* reset of own DMA does not work ==> request reset of slave dma by indicating shifted receiption */
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
299 if (data_old__lost_connection_to_slave_counter_retry == 1)
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
300 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
301 dataOut.header.checkCode[SPI_HEADER_INDEX_RX_STATE] = SPI_RX_STATE_SHIFTED;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
302 }
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
303
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
304 /* stop communication with RTE to trigger RTE timeout reaction */
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
305 if (data_old__lost_connection_to_slave_counter_retry == 2)
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
306 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
307 SusppressCom = 3;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
308 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
309
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
310 data_old__lost_connection_to_slave_counter_retry++;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
311 }
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
312 else
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
313 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
314 RTEOfflineCnt++; /* based on footer status the RTE does not seem to provide data in time */
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
315 dataOut.header.checkCode[SPI_HEADER_INDEX_RX_STATE] = SPI_RX_STATE_OFFLINE;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
316 }
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
317 }
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
318 #if USE_OLD_SYNC_METHOD
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
319 /* one cycle with NotChipSelect true to clear slave spi buffer */
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
320 else
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
321 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
322 HAL_GPIO_WritePin(SMALLCPU_CSB_GPIO_PORT,SMALLCPU_CSB_PIN,GPIO_PIN_RESET);
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
323 }
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
324 #endif
133
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
325
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
326 DataEx_call_helper_requests();
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
327
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
328 //HAL_GPIO_WritePin(OSCILLOSCOPE2_GPIO_PORT,OSCILLOSCOPE2_PIN,GPIO_PIN_RESET); /* only for testing with Oscilloscope */
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
329
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
330 if(SusppressCom == 0)
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
331 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
332 HAL_GPIO_WritePin(SMALLCPU_CSB_GPIO_PORT,SMALLCPU_CSB_PIN,GPIO_PIN_RESET);
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
333
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
334 SPI_DMA_answer = HAL_SPI_TransmitReceive_DMA(&cpu2DmaSpi, (uint8_t *)&dataOut, (uint8_t *)&dataIn, EXCHANGE_BUFFERSIZE);
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
335 if(SPI_DMA_answer != HAL_OK)
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
336 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
337 DataEX_Error_Handler(SPI_DMA_answer);
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
338 }
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
339 }
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
340 }
104
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 99
diff changeset
341 // HAL_GPIO_WritePin(SMALLCPU_CSB_GPIO_PORT,SMALLCPU_CSB_PIN,GPIO_PIN_SET);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
342 //HAL_Delay(3);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
343 //HAL_GPIO_WritePin(OSCILLOSCOPE2_GPIO_PORT,OSCILLOSCOPE2_PIN,GPIO_PIN_SET); /* only for testing with Oscilloscope */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
344
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
345 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
346 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
347
82
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
348
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
349 static uint32_t SPI_CALLBACKS;
82
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
350 uint32_t get_num_SPI_CALLBACKS(void){
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
351 return SPI_CALLBACKS;
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
352 }
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
353
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
354 SDataExchangeSlaveToMaster* get_dataInPointer(void){
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
355 return &dataIn;
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
356 }
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
357
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
358 void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
359 {
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
360 if(hspi == &cpu2DmaSpi)
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
361 {
154
1ac5033f7c7a Keep NSS low during SPI transfer only
Ideenmodellierer
parents: 149
diff changeset
362 HAL_GPIO_WritePin(SMALLCPU_CSB_GPIO_PORT,SMALLCPU_CSB_PIN,GPIO_PIN_SET);
82
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
363 SPI_CALLBACKS+=1;
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
364 }
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
365 }
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
366
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
367
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
368 void DateEx_copy_to_dataOut(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
369 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
370 const SDiveState * pStateReal = stateRealGetPointer();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
371 SSettings *settings = settingsGetPointer();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
372
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
373 if(get_globalState() == StStop)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
374 dataOut.mode = MODE_SHUTDOWN;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
375 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
376 dataOut.mode = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
377
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
378 dataOut.diveModeInfo = pStateReal->diveSettings.diveMode; // hw 170215
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
379
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
380 memcpy(&dataOut.data.DeviceData, stateDeviceGetPointer(), sizeof(SDevice));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
381
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
382 dataOut.data.VPMconservatism = pStateReal->diveSettings.vpm_conservatism;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
383 dataOut.data.actualGas = pStateReal->lifeData.actualGas;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
384 dataOut.data.ambient_pressure_mbar_ceiling = (pStateReal->decolistBuehlmann.output_ceiling_meter * 100) + (pStateReal->lifeData.pressure_surface_bar * 1000);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
385 dataOut.data.divetimeToCreateLogbook = settings->divetimeToCreateLogbook;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
386 dataOut.data.timeoutDiveReachedZeroDepth = settings->timeoutDiveReachedZeroDepth;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
387
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
388 dataOut.data.offsetPressureSensor_mbar = settings->offsetPressure_mbar;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
389 dataOut.data.offsetTemperatureSensor_centiDegree = settings->offsetTemperature_centigrad;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
390
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
391 if((hardwareDataGetPointer()->primarySerial <= 32) || (((hardwareDataGetPointer()->primarySerial == 72) && (hardwareDataGetPointer()->secondarySerial == 15))))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
392 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
393 dataOut.revisionHardware = 0x00;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
394 dataOut.revisionCRCx0x7A = 0x7A;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
395 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
396 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
397 if(hardwareDataGetPointer()->primarySerial < 0xFFFF)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
398 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
399 dataOut.revisionHardware = hardwareDataGetPointer()->revision8bit;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
400 dataOut.revisionCRCx0x7A = hardwareDataGetPointer()->revision8bit ^ 0x7A;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
401 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
402 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
403 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
404 dataOut.revisionHardware = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
405 dataOut.revisionCRCx0x7A = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
406 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
407
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
408 if(DataEX_check_header_and_footer_ok() && !told_reset_logik_alles_ok)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
409 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
410 MX_tell_reset_logik_alles_ok();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
411 told_reset_logik_alles_ok = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
412 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
413
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
414 if(DataEX_check_header_and_footer_ok() && (dataIn.power_on_reset == 1))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
415 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
416 if(!wasUpdateNotPowerOn)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
417 wasPowerOn = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
418
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
419 settingsHelperButtonSens_keepPercentageValues(settingsGetPointerStandard()->ButtonResponsiveness[3], settings->ButtonResponsiveness);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
420 setButtonResponsiveness(settings->ButtonResponsiveness);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
421 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
422 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
423
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
424
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
425 void DataEX_copy_to_deco(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
426 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
427 if(decoLock == DECO_CALC_running)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
428 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
429
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
430 if(decoLock == DECO_CALC_init_as_is_start_of_dive)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
431 {
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
432 vpm_init(&stateUsedWrite->vpm, stateUsedWrite->diveSettings.vpm_conservatism, 0, 0);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
433 buehlmann_init();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
434 timer_init();
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
435 resetEvents(stateUsedWrite);
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
436 stateUsedWrite->diveSettings.internal__pressure_first_stop_ambient_bar_as_upper_limit_for_gf_low_otherwise_zero = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
437 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
438
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
439 if(decoLock == DECO_CALC_FINSHED_Buehlmann)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
440 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
441
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
442 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
443 switch(decoLock)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
444 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
445
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
446 //Deco_calculation finished
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
447 case DECO_CALC_FINSHED_vpm:
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
448 memcpy(&stateUsedWrite->decolistVPM,&stateDeco.decolistVPM,sizeof(SDecoinfo));
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
449 stateUsedWrite->decolistVPM.tickstamp = HAL_GetTick();
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
450 stateUsedWrite->vpm.deco_zone_reached = stateDeco.vpm.deco_zone_reached;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
451 for(int i = 0; i< 16; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
452 {
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
453 stateUsedWrite->vpm.adjusted_critical_radius_he[i] = stateDeco.vpm.adjusted_critical_radius_he[i];
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
454 stateUsedWrite->vpm.adjusted_critical_radius_n2[i] = stateDeco.vpm.adjusted_critical_radius_n2[i];
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
455 stateUsedWrite->vpm.adjusted_crushing_pressure_he[i] = stateDeco.vpm.adjusted_crushing_pressure_he[i];
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
456 stateUsedWrite->vpm.adjusted_crushing_pressure_n2[i] = stateDeco.vpm.adjusted_crushing_pressure_n2[i];
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
457 stateUsedWrite->vpm.initial_allowable_gradient_he[i] = stateDeco.vpm.initial_allowable_gradient_he[i];
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
458 stateUsedWrite->vpm.initial_allowable_gradient_n2[i] = stateDeco.vpm.initial_allowable_gradient_n2[i];
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
459 stateUsedWrite->vpm.max_actual_gradient[i] = stateDeco.vpm.max_actual_gradient[i];
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
460 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
461 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
462 case DECO_CALC_FINSHED_Buehlmann:
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
463 memcpy(&stateUsedWrite->decolistBuehlmann,&stateDeco.decolistBuehlmann,sizeof(SDecoinfo));
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
464 stateUsedWrite->decolistBuehlmann.tickstamp = HAL_GetTick();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
465 //Copy Data to be stored if regular Buehlmann, not FutureBuehlmann
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
466 stateUsedWrite->diveSettings.internal__pressure_first_stop_ambient_bar_as_upper_limit_for_gf_low_otherwise_zero = stateDeco.diveSettings.internal__pressure_first_stop_ambient_bar_as_upper_limit_for_gf_low_otherwise_zero;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
467 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
468 case DECO_CALC_FINSHED_FutureBuehlmann:
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
469 memcpy(&stateUsedWrite->decolistFutureBuehlmann,&stateDeco.decolistFutureBuehlmann,sizeof(SDecoinfo));
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
470 stateUsedWrite->decolistFutureBuehlmann.tickstamp = HAL_GetTick();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
471 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
472 case DECO_CALC_FINSHED_Futurevpm:
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
473 memcpy(&stateUsedWrite->decolistFutureVPM,&stateDeco.decolistFutureVPM,sizeof(SDecoinfo));
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
474 stateUsedWrite->decolistFutureVPM.tickstamp = HAL_GetTick();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
475 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
476 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
477
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
478 //Copy Inputdata from stateReal to stateDeco
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
479 memcpy(&stateDeco.lifeData,&stateUsedWrite->lifeData,sizeof(SLifeData));
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
480 memcpy(&stateDeco.diveSettings,&stateUsedWrite->diveSettings,sizeof(SDiveSettings));
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
481
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
482 stateDeco.vpm.deco_zone_reached = stateUsedWrite->vpm.deco_zone_reached;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
483 // memcpy(&stateDeco.vpm,&pStateUsed->vpm,sizeof(SVpm));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
484 for(int i = 0; i< 16; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
485 {
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
486 stateDeco.vpm.max_crushing_pressure_he[i] = stateUsedWrite->vpm.max_crushing_pressure_he[i];
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
487 stateDeco.vpm.max_crushing_pressure_n2[i] = stateUsedWrite->vpm.max_crushing_pressure_n2[i];
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
488 stateDeco.vpm.adjusted_critical_radius_he[i] = stateUsedWrite->vpm.adjusted_critical_radius_he[i];
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
489 stateDeco.vpm.adjusted_critical_radius_n2[i] = stateUsedWrite->vpm.adjusted_critical_radius_n2[i];
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
490 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
491 decoLock = DECO_CALC_ready;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
492 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
493
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
494
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
495 static void DataEX_helper_copy_deviceData(SDeviceLine *lineWrite, const SDeviceLine *lineRead)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
496 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
497 lineWrite->date_rtc_dr = lineRead->date_rtc_dr;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
498 lineWrite->time_rtc_tr = lineRead->time_rtc_tr;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
499 lineWrite->value_int32 = lineRead->value_int32;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
500 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
501
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
502 static void DataEX_helper_SetTime(RTC_TimeTypeDef inStimestructure, uint32_t *outTimetmpreg)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
503 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
504 inStimestructure.TimeFormat = RTC_HOURFORMAT_24;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
505
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
506 *outTimetmpreg = (uint32_t)(((uint32_t)RTC_ByteToBcd2(inStimestructure.Hours) << 16U) | \
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
507 ((uint32_t)RTC_ByteToBcd2(inStimestructure.Minutes) << 8U) | \
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
508 ((uint32_t)RTC_ByteToBcd2(inStimestructure.Seconds)) | \
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
509 (((uint32_t)inStimestructure.TimeFormat) << 16U));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
510 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
511
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
512
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
513 static void DataEX_helper_SetDate(RTC_DateTypeDef inSdatestructure, uint32_t *outDatetmpreg)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
514 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
515 *outDatetmpreg = (((uint32_t)RTC_ByteToBcd2(inSdatestructure.Year) << 16U) | \
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
516 ((uint32_t)RTC_ByteToBcd2(inSdatestructure.Month) << 8U) | \
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
517 ((uint32_t)RTC_ByteToBcd2(inSdatestructure.Date)) | \
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
518 ((uint32_t)inSdatestructure.WeekDay << 13U));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
519 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
520
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
521
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
522 static void DataEX_helper_set_Unknown_Date_deviceData(SDeviceLine *lineWrite)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
523 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
524 RTC_DateTypeDef sdatestructure;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
525 RTC_TimeTypeDef stimestructure;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
526
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
527 stimestructure.Hours = UNKNOWN_TIME_HOURS;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
528 stimestructure.Minutes = UNKNOWN_TIME_MINUTES;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
529 stimestructure.Seconds = UNKNOWN_TIME_SECOND;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
530
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
531 sdatestructure.Date = UNKNOWN_DATE_DAY;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
532 sdatestructure.Month = UNKNOWN_DATE_MONTH;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
533 sdatestructure.Year = UNKNOWN_DATE_YEAR;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
534 setWeekday(&sdatestructure);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
535
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
536 DataEX_helper_SetTime(stimestructure, &lineWrite->time_rtc_tr);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
537 DataEX_helper_SetDate(sdatestructure, &lineWrite->date_rtc_dr);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
538 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
539
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
540
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
541 static uint8_t DataEX_helper_Check_And_Correct_Date_deviceData(SDeviceLine *lineWrite)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
542 {
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
543 uint8_t retval = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
544 RTC_DateTypeDef sdatestructure;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
545 RTC_TimeTypeDef stimestructure;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
546
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
547 // from lineWrite to structure
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
548 translateDate(lineWrite->date_rtc_dr, &sdatestructure);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
549 translateTime(lineWrite->time_rtc_tr, &stimestructure);
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
550
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
551 /* Check if date is out of range */
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
552 if(!( (sdatestructure.Year >= 15)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
553 && (sdatestructure.Year <= 30)
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
554 && (sdatestructure.Month <= 12)))
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
555 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
556 DataEX_helper_set_Unknown_Date_deviceData(lineWrite);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
557 retval = 1;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
558 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
559 return retval;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
560 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
561
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
562
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
563 static uint8_t DataEX_helper_Check_And_Correct_Value_deviceData(SDeviceLine *lineWrite, int32_t from, int32_t to, uint8_t defaulttofrom)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
564 {
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
565 uint8_t retval = 0;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
566 RTC_DateTypeDef sdatestructure;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
567
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
568 /* Is value out of valid range? */
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
569 if(!(lineWrite->value_int32 >= from && lineWrite->value_int32 <= to))
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
570 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
571 if(defaulttofrom)
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
572 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
573 lineWrite->value_int32 = from;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
574 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
575 else
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
576 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
577 lineWrite->value_int32 = to;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
578 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
579 DataEX_helper_set_Unknown_Date_deviceData(lineWrite);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
580 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
581
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
582 /* This is just a repair function to restore metric if a corruption occurred in an older fw version */
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
583 if(((lineWrite->value_int32 == to) && defaulttofrom )
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
584 || ((lineWrite->value_int32 == from) && !defaulttofrom ))
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
585 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
586 translateDate(lineWrite->date_rtc_dr, &sdatestructure);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
587 if(sdatestructure.Year == UNKNOWN_DATE_YEAR)
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
588 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
589 if(defaulttofrom)
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
590 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
591 lineWrite->value_int32 = from;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
592 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
593 else
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
594 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
595 lineWrite->value_int32 = to;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
596 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
597 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
598 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
599 return retval;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
600 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
601
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
602
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
603 static void DataEX_check_DeviceData(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
604 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
605 SDevice *DeviceData = stateDeviceGetPointerWrite();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
606
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
607 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->batteryChargeCompleteCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
608 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->batteryChargeCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
609 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->depthMaximum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
610 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->diveCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
611 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->hoursOfOperation);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
612 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->temperatureMaximum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
613 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->temperatureMinimum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
614 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->voltageMinimum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
615
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
616 DataEX_helper_Check_And_Correct_Value_deviceData(&DeviceData->batteryChargeCompleteCycles, 0, 10000,1);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
617 DataEX_helper_Check_And_Correct_Value_deviceData(&DeviceData->batteryChargeCycles, 0, 20000,1);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
618 DataEX_helper_Check_And_Correct_Value_deviceData(&DeviceData->depthMaximum, 0, (500*100)+1000,1);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
619 DataEX_helper_Check_And_Correct_Value_deviceData(&DeviceData->diveCycles, 0, 20000,1);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
620 DataEX_helper_Check_And_Correct_Value_deviceData(&DeviceData->hoursOfOperation, 0, 1000000,1);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
621 DataEX_helper_Check_And_Correct_Value_deviceData(&DeviceData->temperatureMaximum, -30*100, 150*100,1);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
622 DataEX_helper_Check_And_Correct_Value_deviceData(&DeviceData->temperatureMinimum, -30*100, 150*100,0);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
623 DataEX_helper_Check_And_Correct_Value_deviceData(&DeviceData->voltageMinimum, 2*1000, 6*1000,0);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
624 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
625
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
626
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
627 static void DataEX_merge_DeviceData_and_store(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
628 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
629 uint16_t dataLengthRead;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
630 SDevice DeviceDataFlash;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
631 SDevice *DeviceData = stateDeviceGetPointerWrite();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
632
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
633 dataLengthRead = ext_flash_read_devicedata((uint8_t *)&DeviceDataFlash,sizeof(SDevice));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
634
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
635 if(dataLengthRead == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
636 {
421
3f7d80f37bfc Enable sequentionel writing of device data:
ideenmodellierer
parents: 407
diff changeset
637 ext_flash_write_devicedata(false);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
638 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
639 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
640
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
641 /* max values */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
642 if(DeviceData->batteryChargeCompleteCycles.value_int32 < DeviceDataFlash.batteryChargeCompleteCycles.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
643 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
644 DataEX_helper_copy_deviceData(&DeviceData->batteryChargeCompleteCycles, &DeviceDataFlash.batteryChargeCompleteCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
645 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
646 if(DeviceData->batteryChargeCycles.value_int32 < DeviceDataFlash.batteryChargeCycles.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
647 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
648 DataEX_helper_copy_deviceData(&DeviceData->batteryChargeCycles, &DeviceDataFlash.batteryChargeCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
649 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
650 if(DeviceData->temperatureMaximum.value_int32 < DeviceDataFlash.temperatureMaximum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
651 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
652 DataEX_helper_copy_deviceData(&DeviceData->temperatureMaximum, &DeviceDataFlash.temperatureMaximum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
653 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
654 if(DeviceData->depthMaximum.value_int32 < DeviceDataFlash.depthMaximum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
655 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
656 DataEX_helper_copy_deviceData(&DeviceData->depthMaximum, &DeviceDataFlash.depthMaximum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
657 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
658 if(DeviceData->diveCycles.value_int32 < DeviceDataFlash.diveCycles.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
659 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
660 DataEX_helper_copy_deviceData(&DeviceData->diveCycles, &DeviceDataFlash.diveCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
661 }
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
662 if(DeviceData->hoursOfOperation.value_int32 < DeviceDataFlash.hoursOfOperation.value_int32)
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
663 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
664 DataEX_helper_copy_deviceData(&DeviceData->hoursOfOperation, &DeviceDataFlash.hoursOfOperation);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
665 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
666
407
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
667
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
668 /* min values */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
669 if(DeviceData->temperatureMinimum.value_int32 > DeviceDataFlash.temperatureMinimum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
670 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
671 DataEX_helper_copy_deviceData(&DeviceData->temperatureMinimum, &DeviceDataFlash.temperatureMinimum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
672 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
673 if(DeviceData->voltageMinimum.value_int32 > DeviceDataFlash.voltageMinimum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
674 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
675 DataEX_helper_copy_deviceData(&DeviceData->voltageMinimum, &DeviceDataFlash.voltageMinimum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
676 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
677
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
678 DataEX_check_DeviceData ();
421
3f7d80f37bfc Enable sequentionel writing of device data:
ideenmodellierer
parents: 407
diff changeset
679 ext_flash_write_devicedata(false);
38
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
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
683 static void DataEX_copy_to_DeviceData(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
684 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
685 SDataExchangeSlaveToMasterDeviceData * dataInDevice = (SDataExchangeSlaveToMasterDeviceData *)&dataIn;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
686 SDevice * pDeviceState = stateDeviceGetPointerWrite();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
687
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
688 memcpy(pDeviceState, &dataInDevice->DeviceData[dataInDevice->boolDeviceData], sizeof(SDevice));
559
84a4e1200726 Check if HW evaluation was performed:
Ideenmodellierer
parents: 556
diff changeset
689 memcpy(&hw_Info, &dataInDevice->hw_Info, sizeof(dataInDevice->hw_Info));
84a4e1200726 Check if HW evaluation was performed:
Ideenmodellierer
parents: 556
diff changeset
690
407
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
691 DeviceDataUpdated = 1; /* indicate new data to be written to flash by background task (at last op hour count will be updated) */
38
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
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
695 static void DataEX_copy_to_VpmRepetitiveData(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
696 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
697 SDataExchangeSlaveToMasterDeviceData * dataInDevice = (SDataExchangeSlaveToMasterDeviceData *)&dataIn;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
698 SVpmRepetitiveData * pVpmState = stateVpmRepetitiveDataGetPointerWrite();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
699
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
700 if(dataInDevice->boolVpmRepetitiveDataValid)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
701 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
702 memcpy(pVpmState, &dataInDevice->VpmRepetitiveData, sizeof(SVpmRepetitiveData));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
703 pVpmState->is_data_from_RTE_CPU = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
704 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
705 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
706
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
707
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
708 void DataEX_control_connection_while_asking_for_sleep(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
709 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
710 if(!DataEX_check_header_and_footer_ok())
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
711 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
712 if(DataEX_check_header_and_footer_devicedata())
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
713 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
714 data_old__lost_connection_to_slave_counter_retry = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
715 data_old__lost_connection_to_slave_counter_temp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
716 stateRealGetPointerWrite()->data_old__lost_connection_to_slave = 0;
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
717 dataOut.header.checkCode[SPI_HEADER_INDEX_RX_STATE] = SPI_RX_STATE_OK;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
718 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
719 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
720 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
721 stateRealGetPointerWrite()->data_old__lost_connection_to_slave = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
722 data_old__lost_connection_to_slave_counter_temp += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
723 data_old__lost_connection_to_slave_counter_total += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
724 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
725 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
726 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
727
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
728 static float getSampleDepth(SDataExchangeSlaveToMaster *d, SDiveState *ds)
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
729 {
342
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
730 float ambient = 0;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
731 float surface = 0;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
732 float depth = 0;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
733 float density = 0;
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
734
342
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
735 ambient = d->data[d->boolPressureData].pressure_mbar / 1000.0f;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
736 surface = d->data[d->boolPressureData].surface_mbar / 1000.0f;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
737 density = ((float)( 100 + settingsGetPointer()->salinity)) / 100.0f;
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
738
497
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
739 #ifdef TESTBENCH
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
740 /* do plausibility check (typically only needed at debug hardware) */
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
741 if(ambient < 0)
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
742 {
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
743 ambient = 1.0;
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
744 }
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
745 if(surface < 0)
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
746 {
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
747 surface = 1.0;
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
748 }
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
749 #endif
342
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
750 ds->lifeData.pressure_ambient_bar = ambient;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
751 ds->lifeData.pressure_surface_bar = surface;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
752 depth = (ambient - surface) / (0.09807f * density);
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
753 ds->lifeData.bool_temp1 = d->data[d->boolPressureData].SPARE1;
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
754
342
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
755 return depth;
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
756 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
757
189
8b8074080d7b Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents: 173
diff changeset
758 static float getTemperature(SDataExchangeSlaveToMaster *d)
8b8074080d7b Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents: 173
diff changeset
759 {
342
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
760 float temp = 0;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
761 temp = d->data[d->boolPressureData].temperature;
189
8b8074080d7b Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents: 173
diff changeset
762
497
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
763 #ifdef TESTBENCH
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
764 /* do plausibility check (typically only needed at debug hardware */
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
765 if(temp < -40.0)
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
766 {
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
767 temp = 20.0;
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
768 }
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
769 #endif
342
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
770 return temp;
189
8b8074080d7b Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents: 173
diff changeset
771 }
8b8074080d7b Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents: 173
diff changeset
772
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
773 void DataEX_copy_to_LifeData(_Bool *modeChangeFlag)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
774 {
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
775 SDiveState *pStateReal = stateRealGetPointerWrite();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
776 static uint16_t getDeviceDataAfterStartOfMainCPU = 20;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
777
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
778
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
779 // wireless - �ltere daten aufr�umen
446
f1257a32f2d4 Introduced configuration header for variant managment:
ideenmodellierer
parents: 436
diff changeset
780 #if 0
51
8f8ea3a32e82 Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents: 38
diff changeset
781 for(int i=0;i<(2*NUM_GASES+1);i++)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
782 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
783 if(pStateReal->lifeData.bottle_bar[i])
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
784 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
785 if((pStateReal->lifeData.bottle_bar_age_MilliSeconds[i] == 0) || (pStateReal->lifeData.bottle_bar_age_MilliSeconds[i] > 60000))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
786 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
787 pStateReal->lifeData.bottle_bar_age_MilliSeconds[i] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
788 pStateReal->lifeData.bottle_bar[i] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
789 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
790 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
791 pStateReal->lifeData.bottle_bar_age_MilliSeconds[i] += 100;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
792 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
793 }
446
f1257a32f2d4 Introduced configuration header for variant managment:
ideenmodellierer
parents: 436
diff changeset
794 #else
451
c2e02b87774f Allocate received bar value to active gas (was static allocated to gas[1])
ideenmodellierer
parents: 446
diff changeset
795 if(stateRealGetPointer()->lifeData.bottle_bar_age_MilliSeconds[stateRealGetPointer()->lifeData.actualGas.GasIdInSettings] < 6000) /* max age after ten minutes */
446
f1257a32f2d4 Introduced configuration header for variant managment:
ideenmodellierer
parents: 436
diff changeset
796 {
451
c2e02b87774f Allocate received bar value to active gas (was static allocated to gas[1])
ideenmodellierer
parents: 446
diff changeset
797 stateRealGetPointerWrite()->lifeData.bottle_bar_age_MilliSeconds[stateRealGetPointer()->lifeData.actualGas.GasIdInSettings]++;
446
f1257a32f2d4 Introduced configuration header for variant managment:
ideenmodellierer
parents: 436
diff changeset
798 }
f1257a32f2d4 Introduced configuration header for variant managment:
ideenmodellierer
parents: 436
diff changeset
799 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
800 if(!DataEX_check_header_and_footer_ok())
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
801 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
802 if(DataEX_check_header_and_footer_devicedata())
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
803 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
804 DataEX_copy_to_DeviceData();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
805 DataEX_copy_to_VpmRepetitiveData();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
806 data_old__lost_connection_to_slave_counter_temp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
807 data_old__lost_connection_to_slave_counter_retry = 0;
275
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
808 /* Do not yet reset state. Wait till common data has been received in next cycle. Otherwise invalid data may be forwarded for processing */
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
809 /* pStateReal->data_old__lost_connection_to_slave = 0; */
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
810 dataOut.header.checkCode[SPI_HEADER_INDEX_RX_STATE] = SPI_RX_STATE_OK;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
811 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
812 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
813 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
814 pStateReal->data_old__lost_connection_to_slave = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
815 data_old__lost_connection_to_slave_counter_temp += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
816 data_old__lost_connection_to_slave_counter_total += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
817 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
818 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
819 }
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
820 else /* RX data OK */
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
821 {
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
822 data_old__lost_connection_to_slave_counter_temp = 0;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
823 data_old__lost_connection_to_slave_counter_retry = 0;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
824 pStateReal->data_old__lost_connection_to_slave = 0;
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
825 dataOut.header.checkCode[SPI_HEADER_INDEX_RX_STATE] = SPI_RX_STATE_OK;
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
826 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
827
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
828 if(getDeviceDataAfterStartOfMainCPU)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
829 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
830 getDeviceDataAfterStartOfMainCPU--;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
831 if(getDeviceDataAfterStartOfMainCPU == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
832 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
833 dataOut.getDeviceDataNow = 1;
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
834 getDeviceDataAfterStartOfMainCPU = 10*60*10; /* * 100ms = 60 second => update device data every 10 minutes */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
835 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
836 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
837
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
838 /* new 151207 hw */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
839 if(requestNecessary.uw != 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
840 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
841 if(((dataIn.confirmRequest.uw) & CRBUTTON) != 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
842 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
843 requestNecessary.ub.button = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
844 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
845
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
846 if(requestNecessary.ub.button == 1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
847 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
848 setButtonResponsiveness(settingsGetPointer()->ButtonResponsiveness);
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 requestNecessary.uw = 0; // clear all
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
852
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
853 float meter = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
854 SSettings *pSettings;
149
e1d66bc78f9a Eliminate warnings
Ideenmodellierer
parents: 141
diff changeset
855
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
856 /* uint8_t IAmStolenPleaseKillMe;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
857 */
51
8f8ea3a32e82 Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents: 38
diff changeset
858 pSettings = settingsGetPointer();
8f8ea3a32e82 Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents: 38
diff changeset
859
8f8ea3a32e82 Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents: 38
diff changeset
860 if(pSettings->IAmStolenPleaseKillMe > 3)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
861 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
862 pSettings->salinity = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
863 dataIn.data[dataIn.boolPressureData].surface_mbar = 999;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
864 dataIn.data[dataIn.boolPressureData].pressure_mbar = 98971;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
865 dataIn.mode = MODE_DIVE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
866 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
867
556
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
868
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
869 /* internal sensor: HUD data */
559
84a4e1200726 Check if HW evaluation was performed:
Ideenmodellierer
parents: 556
diff changeset
870 if(pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_OPTIC)
556
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
871 {
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
872 for(int i=0;i<3;i++)
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
873 {
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
874 pStateReal->lifeData.ppO2Sensor_bar[i] = get_ppO2Sensor_bar(i);
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
875 pStateReal->lifeData.sensorVoltage_mV[i] = get_sensorVoltage_mV(i);
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
876 }
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
877 pStateReal->lifeData.HUD_battery_voltage_V = get_HUD_battery_voltage_V();
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
878 }
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
879 else /* use data from external ADC */
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
880 {
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
881 if(pStateReal->data_old__lost_connection_to_slave == 0)
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
882 {
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
883 pStateReal->lifeData.sensorVoltage_mV[0] = dataIn.data[0].extADC_voltage[0];
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
884 pStateReal->lifeData.sensorVoltage_mV[1] = dataIn.data[0].extADC_voltage[1];
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
885 pStateReal->lifeData.sensorVoltage_mV[2] = dataIn.data[0].extADC_voltage[2];
559
84a4e1200726 Check if HW evaluation was performed:
Ideenmodellierer
parents: 556
diff changeset
886 pStateReal->lifeData.ppO2Sensor_bar[0] = pStateReal->lifeData.sensorVoltage_mV[0] * pSettings->ppo2sensors_calibCoeff[0];
84a4e1200726 Check if HW evaluation was performed:
Ideenmodellierer
parents: 556
diff changeset
887 pStateReal->lifeData.ppO2Sensor_bar[1] = pStateReal->lifeData.sensorVoltage_mV[1] * pSettings->ppo2sensors_calibCoeff[1];
84a4e1200726 Check if HW evaluation was performed:
Ideenmodellierer
parents: 556
diff changeset
888 pStateReal->lifeData.ppO2Sensor_bar[2] = pStateReal->lifeData.sensorVoltage_mV[2] * pSettings->ppo2sensors_calibCoeff[2];
556
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
889 }
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
890 }
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
891
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
892 if(pStateReal->data_old__lost_connection_to_slave == 0)
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
893 {
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
894 meter = getSampleDepth(&dataIn, pStateReal);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
895
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
896 pStateReal->pressure_uTick_old = pStateReal->pressure_uTick_new;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
897 pStateReal->pressure_uTick_new = dataIn.data[dataIn.boolPressureData].pressure_uTick;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
898 pStateReal->pressure_uTick_local_new = HAL_GetTick();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
899
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
900 pStateReal->lifeData.dateBinaryFormat = dataIn.data[dataIn.boolTimeData].localtime_rtc_dr;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
901 pStateReal->lifeData.timeBinaryFormat = dataIn.data[dataIn.boolTimeData].localtime_rtc_tr;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
902 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
903 dataOut.setAccidentFlag = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
904
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
905 if(pStateReal->data_old__lost_connection_to_slave == 0)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
906 {
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
907 //Start of diveMode?
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
908 if(pStateReal->mode != MODE_DIVE && dataIn.mode == MODE_DIVE)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
909 {
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
910 if(modeChangeFlag)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
911 {
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
912 *modeChangeFlag = 1;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
913 }
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
914 if(stateUsed == stateSimGetPointer())
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
915 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
916 simulation_exit();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
917 }
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
918 // new 170508
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
919 settingsGetPointer()->bluetoothActive = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
920 MX_Bluetooth_PowerOff();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
921 //Init dive Mode
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
922 decoLock = DECO_CALC_init_as_is_start_of_dive;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
923 pStateReal->lifeData.boolResetAverageDepth = 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
924 }
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
925
197
c853f5d23bb7 cleanup: fix (harmless) use before assign
Jan Mulder <jlmulder@xs4all.nl>
parents: 189
diff changeset
926 pStateReal->lifeData.cns = dataIn.data[dataIn.boolToxicData].cns;
c853f5d23bb7 cleanup: fix (harmless) use before assign
Jan Mulder <jlmulder@xs4all.nl>
parents: 189
diff changeset
927 pStateReal->lifeData.otu = dataIn.data[dataIn.boolToxicData].otu;
c853f5d23bb7 cleanup: fix (harmless) use before assign
Jan Mulder <jlmulder@xs4all.nl>
parents: 189
diff changeset
928 pStateReal->lifeData.no_fly_time_minutes = dataIn.data[dataIn.boolToxicData].no_fly_time_minutes;
c853f5d23bb7 cleanup: fix (harmless) use before assign
Jan Mulder <jlmulder@xs4all.nl>
parents: 189
diff changeset
929 pStateReal->lifeData.desaturation_time_minutes = dataIn.data[dataIn.boolToxicData].desaturation_time_minutes;
c853f5d23bb7 cleanup: fix (harmless) use before assign
Jan Mulder <jlmulder@xs4all.nl>
parents: 189
diff changeset
930
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
931 //End of diveMode?
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
932 if(pStateReal->mode == MODE_DIVE && dataIn.mode != MODE_DIVE)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
933 {
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
934 if(modeChangeFlag)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
935 {
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
936 *modeChangeFlag = 1;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
937 }
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
938 createDiveSettings();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
939
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
940 if(pStateReal->warnings.cnsHigh)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
941 {
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
942 if(pStateReal->lifeData.cns >= 130)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
943 dataOut.setAccidentFlag += ACCIDENT_CNSLVL2;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
944 else if(pStateReal->lifeData.cns >= 100)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
945 dataOut.setAccidentFlag += ACCIDENT_CNS;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
946 }
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
947 if(pStateReal->warnings.decoMissed)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
948 dataOut.setAccidentFlag += ACCIDENT_DECOSTOP;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
949 }
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
950 pStateReal->mode = dataIn.mode;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
951 pStateReal->chargeStatus = dataIn.chargeStatus;
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
952
306
2f43419102c8 bugfix, cleanup: do not clip depth to 0
Jan Mulder <jlmulder@xs4all.nl>
parents: 288
diff changeset
953 pStateReal->lifeData.depth_meter = meter;
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
954
189
8b8074080d7b Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents: 173
diff changeset
955 pStateReal->lifeData.temperature_celsius = getTemperature(&dataIn);
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
956 pStateReal->lifeData.ascent_rate_meter_per_min = dataIn.data[dataIn.boolPressureData].ascent_rate_meter_per_min;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
957 if(pStateReal->mode != MODE_DIVE)
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
958 pStateReal->lifeData.max_depth_meter = 0;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
959 else
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
960 {
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
961 if(meter > pStateReal->lifeData.max_depth_meter)
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
962 pStateReal->lifeData.max_depth_meter = meter;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
963 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
964
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
965 if(dataIn.accidentFlags & ACCIDENT_DECOSTOP)
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
966 pStateReal->decoMissed_at_the_end_of_dive = 1;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
967 if(dataIn.accidentFlags & ACCIDENT_CNS)
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
968 pStateReal->cnsHigh_at_the_end_of_dive = 1;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
969
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
970 pStateReal->lifeData.dive_time_seconds = (int32_t)dataIn.data[dataIn.boolTimeData].divetime_seconds;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
971 pStateReal->lifeData.dive_time_seconds_without_surface_time = (int32_t)dataIn.data[dataIn.boolTimeData].dive_time_seconds_without_surface_time;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
972 pStateReal->lifeData.counterSecondsShallowDepth = dataIn.data[dataIn.boolTimeData].counterSecondsShallowDepth;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
973 pStateReal->lifeData.surface_time_seconds = (int32_t)dataIn.data[dataIn.boolTimeData].surfacetime_seconds;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
974
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
975 pStateReal->lifeData.compass_heading = dataIn.data[dataIn.boolCompassData].compass_heading;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
976 if(settingsGetPointer()->FlipDisplay) /* consider that diver is targeting into the opposite direction */
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
977 {
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
978 pStateReal->lifeData.compass_heading -= 180.0;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
979 if (pStateReal->lifeData.compass_heading < 0) pStateReal->lifeData.compass_heading +=360.0;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
980 }
109
65a6e352ce08 Consider computer heading in case of a flipped display
Ideenmodellierer
parents: 51
diff changeset
981
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
982 pStateReal->lifeData.compass_roll = dataIn.data[dataIn.boolCompassData].compass_roll;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
983 pStateReal->lifeData.compass_pitch = dataIn.data[dataIn.boolCompassData].compass_pitch;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
984
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
985 pStateReal->lifeData.compass_DX_f = dataIn.data[dataIn.boolCompassData].compass_DX_f;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
986 pStateReal->lifeData.compass_DY_f = dataIn.data[dataIn.boolCompassData].compass_DY_f;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
987 pStateReal->lifeData.compass_DZ_f = dataIn.data[dataIn.boolCompassData].compass_DZ_f;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
988
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
989 pStateReal->compass_uTick_old = pStateReal->compass_uTick_new;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
990 pStateReal->compass_uTick_new = dataIn.data[dataIn.boolCompassData].compass_uTick;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
991 pStateReal->compass_uTick_local_new = HAL_GetTick();
539
d784f281833a Added inertia simulation for compass heading:
Ideenmodellierer
parents: 497
diff changeset
992 compass_Inertia(pStateReal->lifeData.compass_heading);
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
993
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
994 memcpy(pStateReal->lifeData.tissue_nitrogen_bar, dataIn.data[dataIn.boolTisssueData].tissue_nitrogen_bar,sizeof(pStateReal->lifeData.tissue_nitrogen_bar));
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
995 memcpy(pStateReal->lifeData.tissue_helium_bar, dataIn.data[dataIn.boolTisssueData].tissue_helium_bar,sizeof(pStateReal->lifeData.tissue_helium_bar));
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
996
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
997 if(pStateReal->mode == MODE_DIVE)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
998 {
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
999 for(int i= 0; i <16; i++)
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1000 {
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1001 pStateReal->vpm.max_crushing_pressure_he[i] = dataIn.data[dataIn.boolCrushingData].max_crushing_pressure_he[i];
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1002 pStateReal->vpm.max_crushing_pressure_n2[i] = dataIn.data[dataIn.boolCrushingData].max_crushing_pressure_n2[i];
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1003 pStateReal->vpm.adjusted_critical_radius_he[i] = dataIn.data[dataIn.boolCrushingData].adjusted_critical_radius_he[i];
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1004 pStateReal->vpm.adjusted_critical_radius_n2[i] = dataIn.data[dataIn.boolCrushingData].adjusted_critical_radius_n2[i];
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1005 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1006 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1007
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1008 /* battery and ambient light sensors
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1009 */
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1010 pStateReal->lifeData.ambient_light_level = dataIn.data[dataIn.boolAmbientLightData].ambient_light_level;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1011 pStateReal->lifeData.battery_charge = dataIn.data[dataIn.boolBatteryData].battery_charge;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1012 pStateReal->lifeData.battery_voltage = dataIn.data[dataIn.boolBatteryData].battery_voltage;
275
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1013
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1014 /* PIC data
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1015 */
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1016 for(int i=0;i<4;i++)
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1017 {
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1018 pStateReal->lifeData.buttonPICdata[i] = dataIn.data[dataIn.boolPICdata].button_setting[i];
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1019 }
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1020
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1021 /* sensorErrors
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1022 */
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1023 pStateReal->sensorErrorsRTE = dataIn.sensorErrors;
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1024 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1025
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1026 /* apnea specials
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1027 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1028 if(pStateReal->diveSettings.diveMode == DIVEMODE_Apnea)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1029 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1030 if(pStateReal->mode != MODE_DIVE)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1031 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1032 pStateReal->lifeData.apnea_total_max_depth_meter = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1033 pStateReal->lifeData.apnea_last_dive_time_seconds = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1034 pStateReal->lifeData.apnea_last_max_depth_meter = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1035 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1036 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1037 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1038 if(pStateReal->lifeData.max_depth_meter > pStateReal->lifeData.apnea_total_max_depth_meter)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1039 pStateReal->lifeData.apnea_total_max_depth_meter = pStateReal->lifeData.max_depth_meter;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1040 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1041
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1042 if(pStateReal->lifeData.dive_time_seconds > 15)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1043 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1044 pStateReal->lifeData.apnea_last_dive_time_seconds = pStateReal->lifeData.dive_time_seconds;
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 if(pStateReal->lifeData.counterSecondsShallowDepth)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1048 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1049 if(pStateReal->lifeData.max_depth_meter > 1.5f)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1050 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1051 pStateReal->lifeData.apnea_last_max_depth_meter = pStateReal->lifeData.max_depth_meter;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1052 }
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
1053 // reset max_depth_meter, average_depth_meter and internal values
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1054 pStateReal->lifeData.max_depth_meter = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1055 pStateReal->lifeData.boolResetAverageDepth = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1056 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1057 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1058
308
1203255481e4 cleanup: introduce function setAvgDepth
Jan Mulder <jlmulder@xs4all.nl>
parents: 307
diff changeset
1059 setAvgDepth(pStateReal);
1203255481e4 cleanup: introduce function setAvgDepth
Jan Mulder <jlmulder@xs4all.nl>
parents: 307
diff changeset
1060 }
1203255481e4 cleanup: introduce function setAvgDepth
Jan Mulder <jlmulder@xs4all.nl>
parents: 307
diff changeset
1061
1203255481e4 cleanup: introduce function setAvgDepth
Jan Mulder <jlmulder@xs4all.nl>
parents: 307
diff changeset
1062 void setAvgDepth(SDiveState *pStateReal) {
1203255481e4 cleanup: introduce function setAvgDepth
Jan Mulder <jlmulder@xs4all.nl>
parents: 307
diff changeset
1063
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1064 float *AvgDepthValue = &pStateReal->lifeData.average_depth_meter;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1065 float DepthNow = pStateReal->lifeData.depth_meter;
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1066 static uint32_t AvgDepthCount = 0;
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1067 static uint32_t AvgDepthTimer = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1068 uint32_t AvgSecondsSinceLast;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1069 uint32_t DiveTime = pStateReal->lifeData.dive_time_seconds_without_surface_time;
308
1203255481e4 cleanup: introduce function setAvgDepth
Jan Mulder <jlmulder@xs4all.nl>
parents: 307
diff changeset
1070
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1071 if(pStateReal->lifeData.boolResetAverageDepth)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1072 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1073 *AvgDepthValue = DepthNow;
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1074 AvgDepthCount = 0;
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1075 AvgDepthTimer = DiveTime;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1076 pStateReal->lifeData.boolResetAverageDepth = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1077 }
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1078 else if (DiveTime > AvgDepthTimer)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1079 {
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1080 AvgSecondsSinceLast = DiveTime - AvgDepthTimer;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1081 for(int i=0;i<AvgSecondsSinceLast;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1082 {
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1083 *AvgDepthValue = (*AvgDepthValue * AvgDepthCount + DepthNow) / (AvgDepthCount + 1);
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1084 AvgDepthCount += 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1085 }
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1086 AvgDepthTimer = DiveTime;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1087 }
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1088 if(AvgDepthCount == 0)
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1089 *AvgDepthValue = DepthNow;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1090 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1091
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1092
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1093 uint8_t DataEX_check_RTE_version__needs_update(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1094 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1095 if(data_old__lost_connection_to_slave_counter_retry > 10)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1096 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1097 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1098 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1099 if(stateRealGetPointer()->data_old__lost_connection_to_slave == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1100 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1101 setActualRTEversion(dataIn.RTE_VERSION_high, dataIn.RTE_VERSION_low);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1102
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1103 if(RTEminimum_required_high() < dataIn.RTE_VERSION_high)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1104 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1105 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1106 if((RTEminimum_required_high() == dataIn.RTE_VERSION_high) && (RTEminimum_required_low() <= dataIn.RTE_VERSION_low))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1107 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1108 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1109 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1110 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1111 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1112 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1113 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1114 }
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 /* Private functions ---------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1118
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
1119 /* Check if there is an empty frame provided by RTE (all 0) or even no data provided by RTE (all 0xFF)
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1120 * If that is not the case the DMA is somehow not in sync
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1121 */
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
1122 static uint8_t DataEX_check_header_and_footer_shifted()
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1123 {
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1124 uint8_t ret = 1;
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1125 if((dataIn.footer.checkCode[0] == 0x00)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1126 && (dataIn.footer.checkCode[1] == 0x00)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1127 && (dataIn.footer.checkCode[2] == 0x00)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1128 && (dataIn.footer.checkCode[3] == 0x00)) { ret = 0; }
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1129
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1130 if((dataIn.footer.checkCode[0] == 0xff)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1131 && (dataIn.footer.checkCode[1] == 0xff)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1132 && (dataIn.footer.checkCode[2] == 0xff)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1133 && (dataIn.footer.checkCode[3] == 0xff)) { ret = 0; }
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1134
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1135 return ret;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1136 }
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1137
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
1138 static uint8_t DataEX_check_header_and_footer_ok(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1139 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1140 if(dataIn.header.checkCode[0] != 0xA1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1141 return 0;
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1142 #if USE_OLD_HEADER_FORMAT
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1143 if(dataIn.header.checkCode[1] != 0xA2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1144 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1145 if(dataIn.header.checkCode[2] != 0xA3)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1146 return 0;
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1147 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1148 if(dataIn.header.checkCode[3] != 0xA4)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1149 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1150 if(dataIn.footer.checkCode[0] != 0xE1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1151 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1152 if(dataIn.footer.checkCode[1] != 0xE2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1153 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1154 if(dataIn.footer.checkCode[2] != 0xE3)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1155 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1156 if(dataIn.footer.checkCode[3] != 0xE4)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1157 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1158
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1159 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1160 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1161
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
1162 static uint8_t DataEX_check_header_and_footer_devicedata(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1163 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1164 if(dataIn.header.checkCode[0] != 0xDF)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1165 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1166 if(dataIn.header.checkCode[1] != 0xDE)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1167 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1168 if(dataIn.header.checkCode[2] != 0xDD)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1169 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1170 if(dataIn.header.checkCode[3] != 0xDC)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1171 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1172 if(dataIn.footer.checkCode[0] != 0xE1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1173 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1174 if(dataIn.footer.checkCode[1] != 0xE2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1175 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1176 if(dataIn.footer.checkCode[2] != 0xE3)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1177 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1178 if(dataIn.footer.checkCode[3] != 0xE4)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1179 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1180
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1181 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1182 }
407
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1183
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1184 void DataEX_merge_devicedata(void)
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1185 {
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1186 if(DeviceDataUpdated)
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1187 {
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1188 DeviceDataUpdated = 0;
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1189 DataEX_merge_DeviceData_and_store();
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1190 }
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1191 }
556
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
1192 uint8_t DataEX_external_ADC_Present(void)
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
1193 {
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
1194 uint8_t retval;
559
84a4e1200726 Check if HW evaluation was performed:
Ideenmodellierer
parents: 556
diff changeset
1195 retval = hw_Info.extADC;
556
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
1196
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
1197 return retval;
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
1198 }