annotate Discovery/Src/data_exchange_main.c @ 918:f72613a152dd Evo_2_23

Switch external interface tx communication to DMA: In the previous version the transmitting of data was done in polling mode. With the introduction of new sensors the length of commands send to the sensor may increase and have a impact to the runtim behavior of the SW. To avoid this the DMA transfers for TX has been activated.
author Ideenmodellierer
date Sun, 03 Nov 2024 15:40:55 +0100
parents a2523e19f59a
children c4c9850a2039
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
747
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
60 #include <math.h>
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
61 #include "stm32f4xx_hal.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
62 #include "stdio.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
63 #include "ostc.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
64 #include "settings.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
65 #include "data_central.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
66 #include "data_exchange_main.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
67 #include "base.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
68 #include "decom.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
69 #include "calc_crush.h" /* for vpm_init */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
70 #include "simulation.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
71 #include "tCCR.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
72 #include "timer.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
73 #include "buehlmann.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
74 #include "externLogbookFlash.h"
911
a2523e19f59a VPMTable deco stop visualization:
Ideenmodellierer
parents: 907
diff changeset
75 #include "vpm.h"
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
76
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
77 /* #define TESTBENCH */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
78
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
79 /* Exported variables --------------------------------------------------------*/
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
80 static uint8_t wasPowerOn = 0;
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
81 static confirmbit8_Type requestNecessary = { .uw = 0 };
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
82 static uint8_t wasUpdateNotPowerOn = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
83
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
84 /* Private variables with external access ------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
85
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
86 /* Private variables ---------------------------------------------------------*/
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
87 static uint8_t told_reset_logik_alles_ok = 0;
559
84a4e1200726 Check if HW evaluation was performed:
Ideenmodellierer
parents: 556
diff changeset
88 static hw_Info_t hw_Info;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
89
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
90 static SDataReceiveFromMaster dataOut;
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
91 static SDataExchangeSlaveToMaster dataIn;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
92
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
93 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
94 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
95 static uint32_t data_old__lost_connection_to_slave_counter_total = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
96
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
97 static uint8_t DeviceDataUpdated = 0;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
98
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
99 static uint16_t externalInterface_Cmd = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
100
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
101 /* Private types -------------------------------------------------------------*/
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
102 #define UNKNOWN_TIME_HOURS 1
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
103 #define UNKNOWN_TIME_MINUTES 0
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
104 #define UNKNOWN_TIME_SECOND 0
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
105 #define UNKNOWN_DATE_DAY 1
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
106 #define UNKNOWN_DATE_MONTH 1
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
107 #define UNKNOWN_DATE_YEAR 16
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
108
577
9bb9a52d6ae5 Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents: 559
diff changeset
109
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
110 /* Private function prototypes -----------------------------------------------*/
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
111 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
112 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
113 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
114 static void DataEX_check_DeviceData(void);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
115
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
116 /* Exported functions --------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
117 uint8_t DataEX_was_power_on(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
118 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
119 return wasPowerOn;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
120 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
121
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
122 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
123 static uint8_t last_error_DataEX_Error_Handler = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
124
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
125 static void DataEX_Error_Handler(uint8_t answer)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
126 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
127 count_DataEX_Error_Handler++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
128 last_error_DataEX_Error_Handler = answer;
133
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
129
156
1fbdb45db701 Removed special indicator for DMA transfer error
Ideenmodellierer
parents: 154
diff changeset
130 /* 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
131 /* ==> Abort data exchange to enable a new RX / TX cycle */
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
132 if(answer == HAL_BUSY)
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
133 {
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
134 HAL_SPI_Abort_IT(&cpu2DmaSpi);
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
135 }
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
136
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
137 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
138 }
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 uint32_t DataEX_lost_connection_count(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
142 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
143 return data_old__lost_connection_to_slave_counter_total;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
144 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
145
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
146
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
147 SDataReceiveFromMaster *dataOutGetPointer(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
148 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
149 return &dataOut;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
150 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
151
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
152 void DataEX_init(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
153 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
154 SDiveState * pStateReal = stateRealGetPointerWrite();
99
6a2308b9a3d4 Config for debug data
Dmitry Romanov <kitt@bk.ru>
parents: 90
diff changeset
155 pStateReal->data_old__lost_connection_to_slave = 0; //initial value
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
156 data_old__lost_connection_to_slave_counter_temp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
157 data_old__lost_connection_to_slave_counter_total = 0;
407
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
158 DeviceDataUpdated = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
159
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
160 memset((void *)&dataOut, 0, sizeof(SDataReceiveFromMaster));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
161
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
162 dataOut.header.checkCode[0] = 0xBB;
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
163 dataOut.header.checkCode[1] = SPI_RX_STATE_OK;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
164 dataOut.header.checkCode[2] = SPI_RX_STATE_OK;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
165 dataOut.header.checkCode[3] = 0xBB;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
166
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
167 dataOut.footer.checkCode[0] = 0xF4;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
168 dataOut.footer.checkCode[1] = 0xF3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
169 dataOut.footer.checkCode[2] = 0xF2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
170 dataOut.footer.checkCode[3] = 0xF1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
171 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
172
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
173
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
174 static void DataEx_call_helper_requests(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
175 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
176 static uint8_t setDateWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
177 static uint8_t setTimeWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
178 static uint8_t calibrateCompassWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
179 static uint8_t setButtonSensitivityWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
180 static uint8_t clearDecoWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
181 static uint8_t getDeviceDataWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
182 static uint8_t setAccidentFlagWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
183 static uint8_t setEndDiveWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
184
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
185 if(getDeviceDataWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
186 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
187 dataOut.getDeviceDataNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
188 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
189 getDeviceDataWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
190 if(dataOut.getDeviceDataNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
191 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
192 getDeviceDataWasSend = 1;
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
193 requestNecessary.ub.devicedata = 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
194 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
195
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
196 if(setEndDiveWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
197 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
198 dataOut.setEndDive = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
199 //requestNecessary.ub.XXX = 1; not implemented and no space here
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
200 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
201 setEndDiveWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
202 if(dataOut.setEndDive)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
203 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
204 setEndDiveWasSend = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
205 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
206
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
207 if(setAccidentFlagWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
208 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
209 dataOut.setAccidentFlag = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
210 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
211 setAccidentFlagWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
212 if(dataOut.setAccidentFlag)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
213 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
214 setAccidentFlagWasSend = 1;
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
215 requestNecessary.ub.accident = 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
216 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
217
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
218 if(setDateWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
219 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
220 dataOut.setDateNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
221 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
222 setDateWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
223 if(dataOut.setDateNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
224 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
225 setDateWasSend = 1;
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
226 requestNecessary.ub.date = 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
227 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
228
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
229 if(setTimeWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
230 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
231 dataOut.setTimeNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
232 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
233 setTimeWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
234 if(dataOut.setTimeNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
235 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
236 setTimeWasSend = 1;
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
237 requestNecessary.ub.time = 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
238 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
239
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
240 if(calibrateCompassWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
241 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
242 dataOut.calibrateCompassNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
243 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
244 calibrateCompassWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
245 if(dataOut.calibrateCompassNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
246 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
247 calibrateCompassWasSend = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
248 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
249
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
250 if(clearDecoWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
251 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
252 dataOut.clearDecoNow = 0;
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
253 requestNecessary.ub.compass = 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
254 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
255 if(dataOut.clearDecoNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
256 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
257 clearDecoWasSend = 1;
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
258 requestNecessary.ub.clearDeco = 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
259 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
260
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
261 if(setButtonSensitivityWasSend)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
262 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
263 dataOut.setButtonSensitivityNow = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
264 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
265 setButtonSensitivityWasSend = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
266 if(dataOut.setButtonSensitivityNow)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
267 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
268 setButtonSensitivityWasSend = 1;
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
269 requestNecessary.ub.button = 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
270 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
271 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
272
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
273
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
274 uint8_t DataEX_call(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
275 {
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
276 static uint32_t RTEOfflineCnt = 0;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
277 static uint8_t SusppressCom = 0;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
278
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
279 uint8_t SPI_DMA_answer = 0;
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
280
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
281 if(SusppressCom)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
282 {
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
283 SusppressCom--;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
284 }
149
e1d66bc78f9a Eliminate warnings
Ideenmodellierer
parents: 141
diff changeset
285 else
e1d66bc78f9a Eliminate warnings
Ideenmodellierer
parents: 141
diff changeset
286 {
763
aa6006975e76 increase HAL_Delay to 10ms for cold-start-button reset
heinrichsweikamp
parents: 747
diff changeset
287 if(data_old__lost_connection_to_slave_counter_temp >= 2) /* error reaction is triggered whenever communication could not be reestablished within two cycles */
208
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_temp = 0;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
290 if(DataEX_check_header_and_footer_shifted())
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
291 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
292 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
293 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
294 data_old__lost_connection_to_slave_counter_retry = 0;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
295 RTEOfflineCnt = 0;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
296 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
297
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
298 /* 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
299 if (data_old__lost_connection_to_slave_counter_retry == 0)
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 HAL_SPI_Abort_IT(&cpu2DmaSpi);
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
302 }
763
aa6006975e76 increase HAL_Delay to 10ms for cold-start-button reset
heinrichsweikamp
parents: 747
diff changeset
303 /* reset of own DMA does not work ==> request reset of slave dma by indicating shifted reception */
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
304 if (data_old__lost_connection_to_slave_counter_retry == 1)
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
305 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
306 dataOut.header.checkCode[SPI_HEADER_INDEX_RX_STATE] = SPI_RX_STATE_SHIFTED;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
307 }
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
308
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
309 /* stop communication with RTE to trigger RTE timeout reaction */
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
310 if (data_old__lost_connection_to_slave_counter_retry == 2)
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 SusppressCom = 3;
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
313 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
314
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
315 data_old__lost_connection_to_slave_counter_retry++;
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 else
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
318 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
319 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
320 dataOut.header.checkCode[SPI_HEADER_INDEX_RX_STATE] = SPI_RX_STATE_OFFLINE;
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 }
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
323 #if USE_OLD_SYNC_METHOD
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
324 /* one cycle with NotChipSelect true to clear slave spi buffer */
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
325 else
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
326 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
327 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
328 }
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
329 #endif
133
acc98f5bd8c4 Intoduced transfer abort function for data exchange recovery
Ideenmodellierer
parents: 115
diff changeset
330
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
331 DataEx_call_helper_requests();
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
332
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
333 //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
334
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
335 if(SusppressCom == 0)
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 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
338
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
339 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
340 if(SPI_DMA_answer != HAL_OK)
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
341 {
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
342 DataEX_Error_Handler(SPI_DMA_answer);
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
343 }
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
344 }
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
345 }
104
22a1094545f3 Tested and alive.
Dmitry Romanov <kitt@bk.ru>
parents: 99
diff changeset
346 // HAL_GPIO_WritePin(SMALLCPU_CSB_GPIO_PORT,SMALLCPU_CSB_PIN,GPIO_PIN_SET);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
347 //HAL_Delay(3);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
348 //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
349
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
350 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
351 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
352
82
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
353
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
354 static uint32_t SPI_CALLBACKS;
82
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
355 uint32_t get_num_SPI_CALLBACKS(void){
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
356 return SPI_CALLBACKS;
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
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
359 SDataExchangeSlaveToMaster* get_dataInPointer(void){
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
360 return &dataIn;
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
361 }
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
362
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
363 void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
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 if(hspi == &cpu2DmaSpi)
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
366 {
154
1ac5033f7c7a Keep NSS low during SPI transfer only
Ideenmodellierer
parents: 149
diff changeset
367 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
368 SPI_CALLBACKS+=1;
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
369 }
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
370 }
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
371
a6f0881074a4 +i2c analog noise filtering
Dmitry Romanov <kitt@bk.ru>
parents: 51
diff changeset
372
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
373 void DateEx_copy_to_dataOut(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
374 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
375 const SDiveState * pStateReal = stateRealGetPointer();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
376 SSettings *settings = settingsGetPointer();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
377
728
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
378 uint8_t SensorActive[SENSOR_END];
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
379 uint8_t index = 0;
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
380
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
381
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
382 if(get_globalState() == StStop)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
383 dataOut.mode = MODE_SHUTDOWN;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
384 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
385 dataOut.mode = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
386
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
387 dataOut.diveModeInfo = pStateReal->diveSettings.diveMode; // hw 170215
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
388
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
389 memcpy(&dataOut.data.DeviceData, stateDeviceGetPointer(), sizeof(SDevice));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
390
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
391 dataOut.data.VPMconservatism = pStateReal->diveSettings.vpm_conservatism;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
392 dataOut.data.actualGas = pStateReal->lifeData.actualGas;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
393 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
394 dataOut.data.divetimeToCreateLogbook = settings->divetimeToCreateLogbook;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
395 dataOut.data.timeoutDiveReachedZeroDepth = settings->timeoutDiveReachedZeroDepth;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
396
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
397 dataOut.data.offsetPressureSensor_mbar = settings->offsetPressure_mbar;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
398 dataOut.data.offsetTemperatureSensor_centiDegree = settings->offsetTemperature_centigrad;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
399
691
52d68cf9994c Improvment external interface usage:
Ideenmodellierer
parents: 662
diff changeset
400
796
75ace7af8212 Expanded Sensor map structure:
Ideenmodellierer
parents: 786
diff changeset
401 memcpy(dataOut.data.externalInterface_SensorMap, settings->ext_sensor_map, EXT_INTERFACE_SENSOR_CNT);
691
52d68cf9994c Improvment external interface usage:
Ideenmodellierer
parents: 662
diff changeset
402
728
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
403 memset(SensorActive, 0, sizeof(SensorActive));
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
404 for (index = 0; index < EXT_INTERFACE_SENSOR_CNT; index++)
691
52d68cf9994c Improvment external interface usage:
Ideenmodellierer
parents: 662
diff changeset
405 {
728
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
406 switch(settings->ext_sensor_map[index])
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
407 {
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
408 case SENSOR_ANALOG: SensorActive[SENSOR_ANALOG] = 1;
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
409 break;
796
75ace7af8212 Expanded Sensor map structure:
Ideenmodellierer
parents: 786
diff changeset
410 case SENSOR_DIGO2M: SensorActive[SENSOR_DIGO2] = 1;
728
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
411 break;
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
412 case SENSOR_CO2: SensorActive[SENSOR_CO2] = 1;
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
413 break;
747
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
414 #ifdef ENABLE_SENTINEL_MODE
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
415 case SENSOR_SENTINEL: SensorActive[SENSOR_SENTINEL] = 1;
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
416 break;
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
417 #endif
728
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
418 default:
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
419 break;
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
420 }
691
52d68cf9994c Improvment external interface usage:
Ideenmodellierer
parents: 662
diff changeset
421 }
52d68cf9994c Improvment external interface usage:
Ideenmodellierer
parents: 662
diff changeset
422
728
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
423 if(SensorActive[SENSOR_ANALOG])
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
424 {
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
425 externalInterface_Cmd |= EXT_INTERFACE_ADC_ON | EXT_INTERFACE_33V_ON;
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
426 }
839
061174d88af9 Code cleanup: UART protocol definitions
Ideenmodellierer
parents: 831
diff changeset
427 if((SensorActive[SENSOR_DIGO2]) || (SensorActive[SENSOR_CO2]))
702
6d7c812fc173 Added digital o2 sensor to settings and data exchange:
Ideenmodellierer
parents: 691
diff changeset
428 {
839
061174d88af9 Code cleanup: UART protocol definitions
Ideenmodellierer
parents: 831
diff changeset
429 externalInterface_Cmd |= EXT_INTERFACE_33V_ON;
702
6d7c812fc173 Added digital o2 sensor to settings and data exchange:
Ideenmodellierer
parents: 691
diff changeset
430 }
6d7c812fc173 Added digital o2 sensor to settings and data exchange:
Ideenmodellierer
parents: 691
diff changeset
431
691
52d68cf9994c Improvment external interface usage:
Ideenmodellierer
parents: 662
diff changeset
432 #ifdef ENABLE_SENTINEL_MODE
747
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
433 if(SensorActive[SENSOR_SENTINEL])
691
52d68cf9994c Improvment external interface usage:
Ideenmodellierer
parents: 662
diff changeset
434 {
842
c3dd461ca3f9 Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents: 839
diff changeset
435 externalInterface_Cmd |= EXT_INTERFACE_33V_ON;
691
52d68cf9994c Improvment external interface usage:
Ideenmodellierer
parents: 662
diff changeset
436 externalInterface_Cmd &= (~EXT_INTERFACE_ADC_ON);
52d68cf9994c Improvment external interface usage:
Ideenmodellierer
parents: 662
diff changeset
437 }
52d68cf9994c Improvment external interface usage:
Ideenmodellierer
parents: 662
diff changeset
438 #endif
52d68cf9994c Improvment external interface usage:
Ideenmodellierer
parents: 662
diff changeset
439
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
440 dataOut.data.externalInterface_Cmd = externalInterface_Cmd;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
441 externalInterface_Cmd = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
442
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
443 if((hardwareDataGetPointer()->primarySerial <= 32) || (((hardwareDataGetPointer()->primarySerial == 72) && (hardwareDataGetPointer()->secondarySerial == 15))))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
444 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
445 dataOut.revisionHardware = 0x00;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
446 dataOut.revisionCRCx0x7A = 0x7A;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
447 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
448 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
449 if(hardwareDataGetPointer()->primarySerial < 0xFFFF)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
450 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
451 dataOut.revisionHardware = hardwareDataGetPointer()->revision8bit;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
452 dataOut.revisionCRCx0x7A = hardwareDataGetPointer()->revision8bit ^ 0x7A;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
453 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
454 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
455 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
456 dataOut.revisionHardware = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
457 dataOut.revisionCRCx0x7A = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
458 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
459
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
460 if(DataEX_check_header_and_footer_ok() && !told_reset_logik_alles_ok)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
461 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
462 MX_tell_reset_logik_alles_ok();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
463 told_reset_logik_alles_ok = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
464 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
465
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
466 if(DataEX_check_header_and_footer_ok() && (dataIn.power_on_reset == 1))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
467 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
468 if(!wasUpdateNotPowerOn)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
469 wasPowerOn = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
470
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
471 settingsHelperButtonSens_keepPercentageValues(settingsGetPointerStandard()->ButtonResponsiveness[3], settings->ButtonResponsiveness);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
472 setButtonResponsiveness(settings->ButtonResponsiveness);
728
5143e927219f Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents: 716
diff changeset
473 DataEX_setExtInterface_Cmd(EXT_INTERFACE_COPY_SENSORMAP);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
474 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
475 }
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 void DataEX_copy_to_deco(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
479 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
480 if(decoLock == DECO_CALC_running)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
481 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
482
899
2225c467f1e9 Added data path and visualization for position data:
Ideenmodellierer
parents: 842
diff changeset
483 if(decoLock == DECO_CALC_init_as_is_start_of_dive)
2225c467f1e9 Added data path and visualization for position data:
Ideenmodellierer
parents: 842
diff changeset
484 {
907
46a21ff3f5ab Adaptation custom view deco plan for VPM:
ideenmodellierer
parents: 899
diff changeset
485 vpm_table_init();
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
486 vpm_init(&stateUsedWrite->vpm, stateUsedWrite->diveSettings.vpm_conservatism, 0, 0);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
487 buehlmann_init();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
488 timer_init();
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
489 resetEvents(stateUsedWrite);
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
490 stateUsedWrite->diveSettings.internal__pressure_first_stop_ambient_bar_as_upper_limit_for_gf_low_otherwise_zero = 0;
899
2225c467f1e9 Added data path and visualization for position data:
Ideenmodellierer
parents: 842
diff changeset
491 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
492
899
2225c467f1e9 Added data path and visualization for position data:
Ideenmodellierer
parents: 842
diff changeset
493 if(decoLock == DECO_CALC_FINSHED_Buehlmann)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
494 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
495
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
496 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
497 switch(decoLock)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
498 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
499
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
500 //Deco_calculation finished
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
501 case DECO_CALC_FINSHED_vpm:
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
502 memcpy(&stateUsedWrite->decolistVPM,&stateDeco.decolistVPM,sizeof(SDecoinfo));
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
503 stateUsedWrite->decolistVPM.tickstamp = HAL_GetTick();
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
504 stateUsedWrite->vpm.deco_zone_reached = stateDeco.vpm.deco_zone_reached;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
505 for(int i = 0; i< 16; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
506 {
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
507 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
508 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
509 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
510 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
511 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
512 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
513 stateUsedWrite->vpm.max_actual_gradient[i] = stateDeco.vpm.max_actual_gradient[i];
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
514 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
515 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
516 case DECO_CALC_FINSHED_Buehlmann:
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
517 memcpy(&stateUsedWrite->decolistBuehlmann,&stateDeco.decolistBuehlmann,sizeof(SDecoinfo));
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
518 stateUsedWrite->decolistBuehlmann.tickstamp = HAL_GetTick();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
519 //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
520 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
521 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
522 case DECO_CALC_FINSHED_FutureBuehlmann:
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
523 memcpy(&stateUsedWrite->decolistFutureBuehlmann,&stateDeco.decolistFutureBuehlmann,sizeof(SDecoinfo));
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
524 stateUsedWrite->decolistFutureBuehlmann.tickstamp = HAL_GetTick();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
525 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
526 case DECO_CALC_FINSHED_Futurevpm:
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
527 memcpy(&stateUsedWrite->decolistFutureVPM,&stateDeco.decolistFutureVPM,sizeof(SDecoinfo));
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
528 stateUsedWrite->decolistFutureVPM.tickstamp = HAL_GetTick();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
529 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
530 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
531
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
532 //Copy Inputdata from stateReal to stateDeco
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
533 memcpy(&stateDeco.lifeData,&stateUsedWrite->lifeData,sizeof(SLifeData));
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
534 memcpy(&stateDeco.diveSettings,&stateUsedWrite->diveSettings,sizeof(SDiveSettings));
899
2225c467f1e9 Added data path and visualization for position data:
Ideenmodellierer
parents: 842
diff changeset
535 memcpy(&stateDeco.decolistVPM,&stateUsedWrite->decolistVPM,sizeof(SDecoinfo));
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
536
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
537 stateDeco.vpm.deco_zone_reached = stateUsedWrite->vpm.deco_zone_reached;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
538 // memcpy(&stateDeco.vpm,&pStateUsed->vpm,sizeof(SVpm));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
539 for(int i = 0; i< 16; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
540 {
288
ba229a012ac7 cleanup: no useless checks for simulator state
Jan Mulder <jlmulder@xs4all.nl>
parents: 278
diff changeset
541 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
542 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
543 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
544 stateDeco.vpm.adjusted_critical_radius_n2[i] = stateUsedWrite->vpm.adjusted_critical_radius_n2[i];
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
545 }
899
2225c467f1e9 Added data path and visualization for position data:
Ideenmodellierer
parents: 842
diff changeset
546 decoLock = DECO_CALC_ready;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
547 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
548
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
549
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
550 static void DataEX_helper_copy_deviceData(SDeviceLine *lineWrite, const SDeviceLine *lineRead)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
551 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
552 lineWrite->date_rtc_dr = lineRead->date_rtc_dr;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
553 lineWrite->time_rtc_tr = lineRead->time_rtc_tr;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
554 lineWrite->value_int32 = lineRead->value_int32;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
555 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
556
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
557 static void DataEX_helper_SetTime(RTC_TimeTypeDef inStimestructure, uint32_t *outTimetmpreg)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
558 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
559 inStimestructure.TimeFormat = RTC_HOURFORMAT_24;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
560
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
561 *outTimetmpreg = (uint32_t)(((uint32_t)RTC_ByteToBcd2(inStimestructure.Hours) << 16U) | \
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
562 ((uint32_t)RTC_ByteToBcd2(inStimestructure.Minutes) << 8U) | \
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
563 ((uint32_t)RTC_ByteToBcd2(inStimestructure.Seconds)) | \
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
564 (((uint32_t)inStimestructure.TimeFormat) << 16U));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
565 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
566
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
567
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
568 static void DataEX_helper_SetDate(RTC_DateTypeDef inSdatestructure, uint32_t *outDatetmpreg)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
569 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
570 *outDatetmpreg = (((uint32_t)RTC_ByteToBcd2(inSdatestructure.Year) << 16U) | \
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
571 ((uint32_t)RTC_ByteToBcd2(inSdatestructure.Month) << 8U) | \
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
572 ((uint32_t)RTC_ByteToBcd2(inSdatestructure.Date)) | \
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
573 ((uint32_t)inSdatestructure.WeekDay << 13U));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
574 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
575
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
576
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
577 static void DataEX_helper_set_Unknown_Date_deviceData(SDeviceLine *lineWrite)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
578 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
579 RTC_DateTypeDef sdatestructure;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
580 RTC_TimeTypeDef stimestructure;
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 stimestructure.Hours = UNKNOWN_TIME_HOURS;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
583 stimestructure.Minutes = UNKNOWN_TIME_MINUTES;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
584 stimestructure.Seconds = UNKNOWN_TIME_SECOND;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
585
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
586 sdatestructure.Date = UNKNOWN_DATE_DAY;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
587 sdatestructure.Month = UNKNOWN_DATE_MONTH;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
588 sdatestructure.Year = UNKNOWN_DATE_YEAR;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
589 setWeekday(&sdatestructure);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
590
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
591 DataEX_helper_SetTime(stimestructure, &lineWrite->time_rtc_tr);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
592 DataEX_helper_SetDate(sdatestructure, &lineWrite->date_rtc_dr);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
593 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
594
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
595
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
596 static uint8_t DataEX_helper_Check_And_Correct_Date_deviceData(SDeviceLine *lineWrite)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
597 {
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
598 uint8_t retval = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
599 RTC_DateTypeDef sdatestructure;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
600 RTC_TimeTypeDef stimestructure;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
601
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
602 // from lineWrite to structure
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
603 translateDate(lineWrite->date_rtc_dr, &sdatestructure);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
604 translateTime(lineWrite->time_rtc_tr, &stimestructure);
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
605
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
606 /* Check if date is out of range */
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
607 if(!( (sdatestructure.Year >= 15)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
608 && (sdatestructure.Year <= 30)
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
609 && (sdatestructure.Month <= 12)))
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
610 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
611 DataEX_helper_set_Unknown_Date_deviceData(lineWrite);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
612 retval = 1;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
613 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
614 return retval;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
615 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
616
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
617
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
618 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
619 {
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
620 uint8_t retval = 0;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
621 RTC_DateTypeDef sdatestructure;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
622
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
623 /* Is value out of valid range? */
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
624 if(!(lineWrite->value_int32 >= from && lineWrite->value_int32 <= to))
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
625 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
626 if(defaulttofrom)
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
627 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
628 lineWrite->value_int32 = from;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
629 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
630 else
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
631 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
632 lineWrite->value_int32 = to;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
633 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
634 DataEX_helper_set_Unknown_Date_deviceData(lineWrite);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
635 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
636
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
637 /* 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
638 if(((lineWrite->value_int32 == to) && defaulttofrom )
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
639 || ((lineWrite->value_int32 == from) && !defaulttofrom ))
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
640 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
641 translateDate(lineWrite->date_rtc_dr, &sdatestructure);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
642 if(sdatestructure.Year == UNKNOWN_DATE_YEAR)
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
643 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
644 if(defaulttofrom)
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
645 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
646 lineWrite->value_int32 = from;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
647 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
648 else
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
649 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
650 lineWrite->value_int32 = to;
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
651 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
652 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
653 }
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
654 return retval;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
655 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
656
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
657
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
658 static void DataEX_check_DeviceData(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
659 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
660 SDevice *DeviceData = stateDeviceGetPointerWrite();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
661
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
662 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->batteryChargeCompleteCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
663 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->batteryChargeCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
664 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->depthMaximum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
665 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->diveCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
666 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->hoursOfOperation);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
667 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->temperatureMaximum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
668 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->temperatureMinimum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
669 DataEX_helper_Check_And_Correct_Date_deviceData(&DeviceData->voltageMinimum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
670
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
671 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
672 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
673 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
674 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
675 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
676 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
677 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
678 DataEX_helper_Check_And_Correct_Value_deviceData(&DeviceData->voltageMinimum, 2*1000, 6*1000,0);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
679 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
680
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
681
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
682 static void DataEX_merge_DeviceData_and_store(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
683 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
684 uint16_t dataLengthRead;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
685 SDevice DeviceDataFlash;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
686 SDevice *DeviceData = stateDeviceGetPointerWrite();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
687
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
688 dataLengthRead = ext_flash_read_devicedata((uint8_t *)&DeviceDataFlash,sizeof(SDevice));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
689
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
690 if(dataLengthRead == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
691 {
421
3f7d80f37bfc Enable sequentionel writing of device data:
ideenmodellierer
parents: 407
diff changeset
692 ext_flash_write_devicedata(false);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
693 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
694 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
695
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
696 /* max values */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
697 if(DeviceData->batteryChargeCompleteCycles.value_int32 < DeviceDataFlash.batteryChargeCompleteCycles.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
698 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
699 DataEX_helper_copy_deviceData(&DeviceData->batteryChargeCompleteCycles, &DeviceDataFlash.batteryChargeCompleteCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
700 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
701 if(DeviceData->batteryChargeCycles.value_int32 < DeviceDataFlash.batteryChargeCycles.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
702 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
703 DataEX_helper_copy_deviceData(&DeviceData->batteryChargeCycles, &DeviceDataFlash.batteryChargeCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
704 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
705 if(DeviceData->temperatureMaximum.value_int32 < DeviceDataFlash.temperatureMaximum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
706 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
707 DataEX_helper_copy_deviceData(&DeviceData->temperatureMaximum, &DeviceDataFlash.temperatureMaximum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
708 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
709 if(DeviceData->depthMaximum.value_int32 < DeviceDataFlash.depthMaximum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
710 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
711 DataEX_helper_copy_deviceData(&DeviceData->depthMaximum, &DeviceDataFlash.depthMaximum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
712 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
713 if(DeviceData->diveCycles.value_int32 < DeviceDataFlash.diveCycles.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
714 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
715 DataEX_helper_copy_deviceData(&DeviceData->diveCycles, &DeviceDataFlash.diveCycles);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
716 }
406
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
717 if(DeviceData->hoursOfOperation.value_int32 < DeviceDataFlash.hoursOfOperation.value_int32)
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
718 {
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
719 DataEX_helper_copy_deviceData(&DeviceData->hoursOfOperation, &DeviceDataFlash.hoursOfOperation);
439874690f85 Bugfix Min max values for device data checks:
ideenmodellierer
parents: 342
diff changeset
720 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
721
407
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
722
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
723 /* min values */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
724 if(DeviceData->temperatureMinimum.value_int32 > DeviceDataFlash.temperatureMinimum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
725 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
726 DataEX_helper_copy_deviceData(&DeviceData->temperatureMinimum, &DeviceDataFlash.temperatureMinimum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
727 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
728 if(DeviceData->voltageMinimum.value_int32 > DeviceDataFlash.voltageMinimum.value_int32)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
729 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
730 DataEX_helper_copy_deviceData(&DeviceData->voltageMinimum, &DeviceDataFlash.voltageMinimum);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
731 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
732
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
733 DataEX_check_DeviceData ();
421
3f7d80f37bfc Enable sequentionel writing of device data:
ideenmodellierer
parents: 407
diff changeset
734 ext_flash_write_devicedata(false);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
735 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
736
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
737
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
738 static void DataEX_copy_to_DeviceData(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
739 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
740 SDataExchangeSlaveToMasterDeviceData * dataInDevice = (SDataExchangeSlaveToMasterDeviceData *)&dataIn;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
741 SDevice * pDeviceState = stateDeviceGetPointerWrite();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
742
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
743 memcpy(pDeviceState, &dataInDevice->DeviceData[dataInDevice->boolDeviceData], sizeof(SDevice));
559
84a4e1200726 Check if HW evaluation was performed:
Ideenmodellierer
parents: 556
diff changeset
744 memcpy(&hw_Info, &dataInDevice->hw_Info, sizeof(dataInDevice->hw_Info));
84a4e1200726 Check if HW evaluation was performed:
Ideenmodellierer
parents: 556
diff changeset
745
407
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
746 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
747 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
748
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
749
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
750 static void DataEX_copy_to_VpmRepetitiveData(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
751 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
752 SDataExchangeSlaveToMasterDeviceData * dataInDevice = (SDataExchangeSlaveToMasterDeviceData *)&dataIn;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
753 SVpmRepetitiveData * pVpmState = stateVpmRepetitiveDataGetPointerWrite();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
754
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
755 if(dataInDevice->boolVpmRepetitiveDataValid)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
756 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
757 memcpy(pVpmState, &dataInDevice->VpmRepetitiveData, sizeof(SVpmRepetitiveData));
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
758 pVpmState->is_data_from_RTE_CPU = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
759 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
760 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
761
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
762
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
763 void DataEX_control_connection_while_asking_for_sleep(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
764 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
765 if(!DataEX_check_header_and_footer_ok())
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
766 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
767 if(DataEX_check_header_and_footer_devicedata())
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
768 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
769 data_old__lost_connection_to_slave_counter_retry = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
770 data_old__lost_connection_to_slave_counter_temp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
771 stateRealGetPointerWrite()->data_old__lost_connection_to_slave = 0;
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
772 dataOut.header.checkCode[SPI_HEADER_INDEX_RX_STATE] = SPI_RX_STATE_OK;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
773 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
774 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
775 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
776 stateRealGetPointerWrite()->data_old__lost_connection_to_slave = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
777 data_old__lost_connection_to_slave_counter_temp += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
778 data_old__lost_connection_to_slave_counter_total += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
779 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
780 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
781 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
782
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
783 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
784 {
342
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
785 float ambient = 0;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
786 float surface = 0;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
787 float depth = 0;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
788 float density = 0;
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
789
342
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
790 ambient = d->data[d->boolPressureData].pressure_mbar / 1000.0f;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
791 surface = d->data[d->boolPressureData].surface_mbar / 1000.0f;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
792 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
793
497
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
794 #ifdef TESTBENCH
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
795 /* do plausibility check (typically only needed at debug hardware) */
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
796 if(ambient < 0)
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
797 {
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
798 ambient = 1.0;
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
799 }
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
800 if(surface < 0)
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
801 {
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
802 surface = 1.0;
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
803 }
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
804 #endif
342
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
805 ds->lifeData.pressure_ambient_bar = ambient;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
806 ds->lifeData.pressure_surface_bar = surface;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
807 depth = (ambient - surface) / (0.09807f * density);
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
808 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
809
342
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
810 return depth;
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
811 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
812
189
8b8074080d7b Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents: 173
diff changeset
813 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
814 {
342
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
815 float temp = 0;
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
816 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
817
497
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
818 #ifdef TESTBENCH
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
819 /* do plausibility check (typically only needed at debug hardware */
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
820 if(temp < -40.0)
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
821 {
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
822 temp = 20.0;
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
823 }
5757edda56b7 Added worst case plausibility check (disabled by compile switch)
Ideenmodellierer
parents: 451
diff changeset
824 #endif
342
ea3fda8eb93e Removed averaging of pressure and temperatur values
ideenmodellierer
parents: 309
diff changeset
825 return temp;
189
8b8074080d7b Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents: 173
diff changeset
826 }
8b8074080d7b Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents: 173
diff changeset
827
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
828 void DataEX_copy_to_LifeData(_Bool *modeChangeFlag)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
829 {
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
830 static uint16_t getDeviceDataAfterStartOfMainCPU = 20;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
831
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
832 SDiveState *pStateReal = stateRealGetPointerWrite();
577
9bb9a52d6ae5 Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents: 559
diff changeset
833 uint8_t idx;
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
834 float meter = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
835 SSettings *pSettings;
747
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
836
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
837 #ifdef ENABLE_EXTERNAL_PRESSURE
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
838 float CO2Corr = 0.0;
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
839 #endif
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
840
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
841 // wireless - �ltere daten aufr�umen
446
f1257a32f2d4 Introduced configuration header for variant managment:
ideenmodellierer
parents: 436
diff changeset
842 #if 0
51
8f8ea3a32e82 Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents: 38
diff changeset
843 for(int i=0;i<(2*NUM_GASES+1);i++)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
844 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
845 if(pStateReal->lifeData.bottle_bar[i])
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
846 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
847 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
848 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
849 pStateReal->lifeData.bottle_bar_age_MilliSeconds[i] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
850 pStateReal->lifeData.bottle_bar[i] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
851 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
852 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
853 pStateReal->lifeData.bottle_bar_age_MilliSeconds[i] += 100;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
854 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
855 }
446
f1257a32f2d4 Introduced configuration header for variant managment:
ideenmodellierer
parents: 436
diff changeset
856 #else
451
c2e02b87774f Allocate received bar value to active gas (was static allocated to gas[1])
ideenmodellierer
parents: 446
diff changeset
857 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
858 {
451
c2e02b87774f Allocate received bar value to active gas (was static allocated to gas[1])
ideenmodellierer
parents: 446
diff changeset
859 stateRealGetPointerWrite()->lifeData.bottle_bar_age_MilliSeconds[stateRealGetPointer()->lifeData.actualGas.GasIdInSettings]++;
446
f1257a32f2d4 Introduced configuration header for variant managment:
ideenmodellierer
parents: 436
diff changeset
860 }
f1257a32f2d4 Introduced configuration header for variant managment:
ideenmodellierer
parents: 436
diff changeset
861 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
862 if(!DataEX_check_header_and_footer_ok())
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
863 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
864 if(DataEX_check_header_and_footer_devicedata())
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
865 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
866 DataEX_copy_to_DeviceData();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
867 DataEX_copy_to_VpmRepetitiveData();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
868 data_old__lost_connection_to_slave_counter_temp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
869 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
870 /* 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
871 /* pStateReal->data_old__lost_connection_to_slave = 0; */
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
872 dataOut.header.checkCode[SPI_HEADER_INDEX_RX_STATE] = SPI_RX_STATE_OK;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
873 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
874 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
875 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
876 pStateReal->data_old__lost_connection_to_slave = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
877 data_old__lost_connection_to_slave_counter_temp += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
878 data_old__lost_connection_to_slave_counter_total += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
879 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
880 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
881 }
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
882 else /* RX data OK */
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
883 {
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
884 data_old__lost_connection_to_slave_counter_temp = 0;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
885 data_old__lost_connection_to_slave_counter_retry = 0;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
886 pStateReal->data_old__lost_connection_to_slave = 0;
208
9fc06e1e0f66 Update SPI error display and handling
ideenmodellierer
parents: 198
diff changeset
887 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
888 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
889
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
890 if(getDeviceDataAfterStartOfMainCPU)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
891 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
892 getDeviceDataAfterStartOfMainCPU--;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
893 if(getDeviceDataAfterStartOfMainCPU == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
894 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
895 dataOut.getDeviceDataNow = 1;
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
896 getDeviceDataAfterStartOfMainCPU = 10*60*10; /* * 100ms = 60 second => update device data every 10 minutes */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
897 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
898 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
899
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
900 if((requestNecessary.uw != 0) && (dataIn.confirmRequest.uw != 0))
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
901 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
902 if(((dataIn.confirmRequest.uw) & CRBUTTON) != 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
903 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
904 requestNecessary.ub.button = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
905 }
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
906 if(((dataIn.confirmRequest.uw) & CRCLEARDECO) != 0)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
907 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
908 requestNecessary.ub.clearDeco = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
909 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
910 if(((dataIn.confirmRequest.uw) & CRDATE) != 0)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
911 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
912 requestNecessary.ub.date = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
913 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
914 if(((dataIn.confirmRequest.uw) & CRTIME) != 0)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
915 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
916 requestNecessary.ub.time = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
917 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
918 if(((dataIn.confirmRequest.uw) & CRCOMPASS) != 0)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
919 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
920 requestNecessary.ub.compass = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
921 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
922 if(((dataIn.confirmRequest.uw) & CRDEVICEDATA) != 0)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
923 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
924 requestNecessary.ub.devicedata = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
925 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
926 if(((dataIn.confirmRequest.uw) & CRBATTERY) != 0)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
927 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
928 requestNecessary.ub.batterygauge = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
929 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
930 if(((dataIn.confirmRequest.uw) & CRACCIDENT) != 0)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
931 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
932 requestNecessary.ub.accident = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
933 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
934
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
935 if(requestNecessary.ub.button == 1) /* send button values to RTE */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
936 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
937 setButtonResponsiveness(settingsGetPointer()->ButtonResponsiveness);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
938 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
939 }
149
e1d66bc78f9a Eliminate warnings
Ideenmodellierer
parents: 141
diff changeset
940
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
941 /* uint8_t IAmStolenPleaseKillMe;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
942 */
51
8f8ea3a32e82 Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents: 38
diff changeset
943 pSettings = settingsGetPointer();
8f8ea3a32e82 Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents: 38
diff changeset
944
8f8ea3a32e82 Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents: 38
diff changeset
945 if(pSettings->IAmStolenPleaseKillMe > 3)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
946 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
947 pSettings->salinity = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
948 dataIn.data[dataIn.boolPressureData].surface_mbar = 999;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
949 dataIn.data[dataIn.boolPressureData].pressure_mbar = 98971;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
950 dataIn.mode = MODE_DIVE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
951 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
952
556
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
953
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
954 /* internal sensor: HUD data */
559
84a4e1200726 Check if HW evaluation was performed:
Ideenmodellierer
parents: 556
diff changeset
955 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
956 {
716
74cfd91199bd Added customizable data area for specific sensor data:
Ideenmodellierer
parents: 702
diff changeset
957 pStateReal->lifeData.extIf_sensor_Id = 0;
556
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
958 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
959 {
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
960 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
961 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
962 }
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
963 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
964 }
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
965 else /* use data from external ADC */
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
966 {
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
967 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
968 {
577
9bb9a52d6ae5 Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents: 559
diff changeset
969 for(idx = 0; idx < 3; idx++)
9bb9a52d6ae5 Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents: 559
diff changeset
970 {
691
52d68cf9994c Improvment external interface usage:
Ideenmodellierer
parents: 662
diff changeset
971 pStateReal->lifeData.sensorVoltage_mV[idx] = dataIn.data[(dataIn.boolADCO2Data && DATA_BUFFER_ADC)].extADC_voltage[idx];
577
9bb9a52d6ae5 Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents: 559
diff changeset
972 if(pStateReal->lifeData.sensorVoltage_mV[idx] < IGNORE_O2_VOLTAGE_LEVEL_MV)
9bb9a52d6ae5 Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents: 559
diff changeset
973 {
9bb9a52d6ae5 Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents: 559
diff changeset
974 pStateReal->lifeData.sensorVoltage_mV[idx] = 0.0;
9bb9a52d6ae5 Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents: 559
diff changeset
975 pStateReal->lifeData.ppO2Sensor_bar[idx] = 0;
9bb9a52d6ae5 Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents: 559
diff changeset
976 }
9bb9a52d6ae5 Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents: 559
diff changeset
977 else
9bb9a52d6ae5 Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents: 559
diff changeset
978 {
796
75ace7af8212 Expanded Sensor map structure:
Ideenmodellierer
parents: 786
diff changeset
979 if(dataIn.data[(dataIn.boolADCO2Data && DATA_BUFFER_ADC)].sensor_map[idx] == SENSOR_DIGO2M)
702
6d7c812fc173 Added digital o2 sensor to settings and data exchange:
Ideenmodellierer
parents: 691
diff changeset
980 {
6d7c812fc173 Added digital o2 sensor to settings and data exchange:
Ideenmodellierer
parents: 691
diff changeset
981 pStateReal->lifeData.ppO2Sensor_bar[idx] = pStateReal->lifeData.sensorVoltage_mV[idx] / 100.0;
6d7c812fc173 Added digital o2 sensor to settings and data exchange:
Ideenmodellierer
parents: 691
diff changeset
982 }
6d7c812fc173 Added digital o2 sensor to settings and data exchange:
Ideenmodellierer
parents: 691
diff changeset
983 else
6d7c812fc173 Added digital o2 sensor to settings and data exchange:
Ideenmodellierer
parents: 691
diff changeset
984 {
6d7c812fc173 Added digital o2 sensor to settings and data exchange:
Ideenmodellierer
parents: 691
diff changeset
985 pStateReal->lifeData.ppO2Sensor_bar[idx] = pStateReal->lifeData.sensorVoltage_mV[idx] * pSettings->ppo2sensors_calibCoeff[idx];
6d7c812fc173 Added digital o2 sensor to settings and data exchange:
Ideenmodellierer
parents: 691
diff changeset
986 }
577
9bb9a52d6ae5 Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents: 559
diff changeset
987 }
716
74cfd91199bd Added customizable data area for specific sensor data:
Ideenmodellierer
parents: 702
diff changeset
988 }
556
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
989 }
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
990 }
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
991
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
992 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
993 {
734
190e5814b2f5 Removed interface selection from sensor menu:
Ideenmodellierer
parents: 728
diff changeset
994
190e5814b2f5 Removed interface selection from sensor menu:
Ideenmodellierer
parents: 728
diff changeset
995 pStateReal->lifeData.extIf_sensor_Id = dataIn.data[(dataIn.boolADCO2Data && DATA_BUFFER_ADC)].externalInterface_SensorID;
786
19ab6f3ed52a Cleanup sensor data interface:
Ideenmodellierer
parents: 780
diff changeset
996 if(pStateReal->lifeData.extIf_sensor_Id < 3)
734
190e5814b2f5 Removed interface selection from sensor menu:
Ideenmodellierer
parents: 728
diff changeset
997 {
780
e40790a67165 Discovery<=>SmallCPU inferface update:
Ideenmodellierer
parents: 776
diff changeset
998
786
19ab6f3ed52a Cleanup sensor data interface:
Ideenmodellierer
parents: 780
diff changeset
999 memcpy(pStateReal->lifeData.extIf_sensor_data[pStateReal->lifeData.extIf_sensor_Id], dataIn.data[(dataIn.boolADCO2Data && DATA_BUFFER_ADC)].sensor_data, 32);
734
190e5814b2f5 Removed interface selection from sensor menu:
Ideenmodellierer
parents: 728
diff changeset
1000 }
190e5814b2f5 Removed interface selection from sensor menu:
Ideenmodellierer
parents: 728
diff changeset
1001 memcpy(pStateReal->lifeData.extIf_sensor_map, dataIn.data[(dataIn.boolADCO2Data && DATA_BUFFER_ADC)].sensor_map, EXT_INTERFACE_SENSOR_CNT);
190e5814b2f5 Removed interface selection from sensor menu:
Ideenmodellierer
parents: 728
diff changeset
1002
190e5814b2f5 Removed interface selection from sensor menu:
Ideenmodellierer
parents: 728
diff changeset
1003
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
1004 meter = getSampleDepth(&dataIn, pStateReal);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1005
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1006 pStateReal->pressure_uTick_old = pStateReal->pressure_uTick_new;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1007 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
1008 pStateReal->pressure_uTick_local_new = HAL_GetTick();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1009
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1010 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
1011 pStateReal->lifeData.timeBinaryFormat = dataIn.data[dataIn.boolTimeData].localtime_rtc_tr;
899
2225c467f1e9 Added data path and visualization for position data:
Ideenmodellierer
parents: 842
diff changeset
1012
2225c467f1e9 Added data path and visualization for position data:
Ideenmodellierer
parents: 842
diff changeset
1013 pStateReal->lifeData.gnssPosition.Latitude = dataIn.data[0].fLat;
2225c467f1e9 Added data path and visualization for position data:
Ideenmodellierer
parents: 842
diff changeset
1014 pStateReal->lifeData.gnssPosition.Longitude = dataIn.data[0].fLon;
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1015 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1016
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1017 if(pStateReal->data_old__lost_connection_to_slave == 0)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1018 {
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1019 //Start of diveMode?
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1020 if(pStateReal->mode != MODE_DIVE && dataIn.mode == MODE_DIVE)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1021 {
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1022 if(modeChangeFlag)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1023 {
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1024 *modeChangeFlag = 1;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1025 }
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1026 if(stateUsed == stateSimGetPointer())
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1027 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1028 simulation_exit();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1029 }
805
dd7ce655db26 Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents: 796
diff changeset
1030 disableTimer();
dd7ce655db26 Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents: 796
diff changeset
1031
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1032 // new 170508
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1033 settingsGetPointer()->bluetoothActive = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1034 MX_Bluetooth_PowerOff();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1035 //Init dive Mode
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1036 decoLock = DECO_CALC_init_as_is_start_of_dive;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1037 pStateReal->lifeData.boolResetAverageDepth = 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1038 }
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1039
197
c853f5d23bb7 cleanup: fix (harmless) use before assign
Jan Mulder <jlmulder@xs4all.nl>
parents: 189
diff changeset
1040 pStateReal->lifeData.cns = dataIn.data[dataIn.boolToxicData].cns;
c853f5d23bb7 cleanup: fix (harmless) use before assign
Jan Mulder <jlmulder@xs4all.nl>
parents: 189
diff changeset
1041 pStateReal->lifeData.otu = dataIn.data[dataIn.boolToxicData].otu;
c853f5d23bb7 cleanup: fix (harmless) use before assign
Jan Mulder <jlmulder@xs4all.nl>
parents: 189
diff changeset
1042 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
1043 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
1044
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1045 //End of diveMode?
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1046 if(pStateReal->mode == MODE_DIVE && dataIn.mode != MODE_DIVE)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1047 {
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1048 if(modeChangeFlag)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1049 {
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1050 *modeChangeFlag = 1;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1051 }
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1052 createDiveSettings();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1053
805
dd7ce655db26 Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents: 796
diff changeset
1054 disableTimer();
dd7ce655db26 Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents: 796
diff changeset
1055
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1056 if(pStateReal->warnings.cnsHigh)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1057 {
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1058 if(pStateReal->lifeData.cns >= 130)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1059 dataOut.setAccidentFlag += ACCIDENT_CNSLVL2;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1060 else if(pStateReal->lifeData.cns >= 100)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1061 dataOut.setAccidentFlag += ACCIDENT_CNS;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1062 }
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1063 if(pStateReal->warnings.decoMissed)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1064 dataOut.setAccidentFlag += ACCIDENT_DECOSTOP;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1065 }
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1066 pStateReal->mode = dataIn.mode;
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1067 pStateReal->chargeStatus = dataIn.chargeStatus;
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1068
306
2f43419102c8 bugfix, cleanup: do not clip depth to 0
Jan Mulder <jlmulder@xs4all.nl>
parents: 288
diff changeset
1069 pStateReal->lifeData.depth_meter = meter;
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1070
189
8b8074080d7b Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents: 173
diff changeset
1071 pStateReal->lifeData.temperature_celsius = getTemperature(&dataIn);
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1072 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
1073 if(pStateReal->mode != MODE_DIVE)
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1074 pStateReal->lifeData.max_depth_meter = 0;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1075 else
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1076 {
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1077 if(meter > pStateReal->lifeData.max_depth_meter)
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1078 pStateReal->lifeData.max_depth_meter = meter;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1079 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1080
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1081 if(requestNecessary.ub.clearDeco == 0) /* No "reset deco" is send to RTE ? */
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1082 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1083 if(dataIn.accidentFlags & ACCIDENT_DECOSTOP)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1084 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1085 pStateReal->decoMissed_at_the_end_of_dive = 1;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1086 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1087 else
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1088 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1089 pStateReal->decoMissed_at_the_end_of_dive = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1090 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1091 if(dataIn.accidentFlags & ACCIDENT_CNS)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1092 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1093 pStateReal->cnsHigh_at_the_end_of_dive = 1;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1094 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1095 else
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1096 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1097 pStateReal->cnsHigh_at_the_end_of_dive = 0;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1098 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1099 }
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1100 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
1101 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
1102 pStateReal->lifeData.counterSecondsShallowDepth = dataIn.data[dataIn.boolTimeData].counterSecondsShallowDepth;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1103 pStateReal->lifeData.surface_time_seconds = (int32_t)dataIn.data[dataIn.boolTimeData].surfacetime_seconds;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1104
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1105 pStateReal->lifeData.compass_heading = dataIn.data[dataIn.boolCompassData].compass_heading;
776
45b8f3c2acce Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents: 763
diff changeset
1106 if (pStateReal->lifeData.compass_heading != -1) {
45b8f3c2acce Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents: 763
diff changeset
1107 if (pSettings->FlipDisplay) { /* consider that diver is targeting into the opposite direction */
45b8f3c2acce Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents: 763
diff changeset
1108 pStateReal->lifeData.compass_heading -= 180.0;
45b8f3c2acce Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents: 763
diff changeset
1109 }
45b8f3c2acce Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents: 763
diff changeset
1110
45b8f3c2acce Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents: 763
diff changeset
1111 if (pSettings->compassDeclinationDeg != 0) {
45b8f3c2acce Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents: 763
diff changeset
1112 pStateReal->lifeData.compass_heading = pStateReal->lifeData.compass_heading + pSettings->compassDeclinationDeg - 360.0;
45b8f3c2acce Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents: 763
diff changeset
1113 }
45b8f3c2acce Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents: 763
diff changeset
1114
45b8f3c2acce Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents: 763
diff changeset
1115 while (pStateReal->lifeData.compass_heading < 0) {
45b8f3c2acce Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents: 763
diff changeset
1116 pStateReal->lifeData.compass_heading += 360.0;
45b8f3c2acce Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents: 763
diff changeset
1117 }
45b8f3c2acce Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents: 763
diff changeset
1118 }
109
65a6e352ce08 Consider computer heading in case of a flipped display
Ideenmodellierer
parents: 51
diff changeset
1119
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1120 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
1121 pStateReal->lifeData.compass_pitch = dataIn.data[dataIn.boolCompassData].compass_pitch;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1122
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1123 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
1124 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
1125 pStateReal->lifeData.compass_DZ_f = dataIn.data[dataIn.boolCompassData].compass_DZ_f;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1126
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1127 pStateReal->compass_uTick_old = pStateReal->compass_uTick_new;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1128 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
1129 pStateReal->compass_uTick_local_new = HAL_GetTick();
539
d784f281833a Added inertia simulation for compass heading:
Ideenmodellierer
parents: 497
diff changeset
1130 compass_Inertia(pStateReal->lifeData.compass_heading);
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1131
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1132 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
1133 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
1134
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1135 if(pStateReal->mode == MODE_DIVE)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1136 {
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1137 for(int i= 0; i <16; i++)
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1138 {
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1139 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
1140 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
1141 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
1142 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
1143 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1144 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1145
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1146 /* battery and ambient light sensors
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1147 */
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1148 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
1149 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
1150 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
1151
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1152 /* PIC data
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1153 */
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1154 for(int i=0;i<4;i++)
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1155 {
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1156 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
1157 }
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1158
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1159 /* sensorErrors
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1160 */
189387bf23a8 Do not mark data as valid if devicedata is received.
ideenmodellierer
parents: 232
diff changeset
1161 pStateReal->sensorErrorsRTE = dataIn.sensorErrors;
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1162
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1163 /* data from CO2 sensor */
831
da632300e7d4 Activated work gas for (p)scr mode:
Ideenmodellierer
parents: 805
diff changeset
1164 pStateReal->lifeData.CO2_data.CO2_ppm = dataIn.data[(dataIn.boolADCO2Data && DATA_BUFFER_CO2)].CO2_ppm;
691
52d68cf9994c Improvment external interface usage:
Ideenmodellierer
parents: 662
diff changeset
1165 pStateReal->lifeData.CO2_data.signalStrength = dataIn.data[(dataIn.boolADCO2Data && DATA_BUFFER_CO2)].CO2_signalStrength;
747
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
1166
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
1167 #ifdef ENABLE_EXTERNAL_PRESSURE
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
1168 CO2Corr = 2.811*pow(10,-38)*pow(pStateReal->lifeData.CO2_data.CO2_ppm,6)- 9.817*pow(10,-32)*pow(pStateReal->lifeData.CO2_data.CO2_ppm,5)+1.304*pow(10,-25)*pow(pStateReal->lifeData.CO2_data.CO2_ppm,4)
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
1169 -8.216*pow(10,-20)*pow(pStateReal->lifeData.CO2_data.CO2_ppm,3)+2.311*pow(10,-14)*pow(pStateReal->lifeData.CO2_data.CO2_ppm,2) - 2.195*pow(10,-9)*pStateReal->lifeData.CO2_data.CO2_ppm - 1.471*pow(10,-3);
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
1170 pStateReal->lifeData.CO2_data.CO2_ppm = pStateReal->lifeData.CO2_data.CO2_ppm / (1.0 + (CO2Corr * ((stateRealGetPointer()->lifeData.pressure_surface_bar * 1000) - ((stateRealGetPointer()->lifeData.ppO2Sensor_bar[2] *1000)))));
df0d43da1614 Added pressure compensation to CO2 detection:
Ideenmodellierer
parents: 734
diff changeset
1171 #endif
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1172 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1173
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1174 /* apnea specials
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1175 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1176 if(pStateReal->diveSettings.diveMode == DIVEMODE_Apnea)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1177 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1178 if(pStateReal->mode != MODE_DIVE)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1179 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1180 pStateReal->lifeData.apnea_total_max_depth_meter = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1181 pStateReal->lifeData.apnea_last_dive_time_seconds = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1182 pStateReal->lifeData.apnea_last_max_depth_meter = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1183 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1184 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1185 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1186 if(pStateReal->lifeData.max_depth_meter > pStateReal->lifeData.apnea_total_max_depth_meter)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1187 pStateReal->lifeData.apnea_total_max_depth_meter = pStateReal->lifeData.max_depth_meter;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1188 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1189
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1190 if(pStateReal->lifeData.dive_time_seconds > 15)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1191 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1192 pStateReal->lifeData.apnea_last_dive_time_seconds = pStateReal->lifeData.dive_time_seconds;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1193 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1194
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1195 if(pStateReal->lifeData.counterSecondsShallowDepth)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1196 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1197 if(pStateReal->lifeData.max_depth_meter > 1.5f)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1198 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1199 pStateReal->lifeData.apnea_last_max_depth_meter = pStateReal->lifeData.max_depth_meter;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1200 }
173
05c770dc2911 Bugfix: make max depth move with current depth (part 1)
Jan Mulder <jlmulder@xs4all.nl>
parents: 156
diff changeset
1201 // reset max_depth_meter, average_depth_meter and internal values
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1202 pStateReal->lifeData.max_depth_meter = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1203 pStateReal->lifeData.boolResetAverageDepth = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1204 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1205 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1206
308
1203255481e4 cleanup: introduce function setAvgDepth
Jan Mulder <jlmulder@xs4all.nl>
parents: 307
diff changeset
1207 setAvgDepth(pStateReal);
1203255481e4 cleanup: introduce function setAvgDepth
Jan Mulder <jlmulder@xs4all.nl>
parents: 307
diff changeset
1208 }
1203255481e4 cleanup: introduce function setAvgDepth
Jan Mulder <jlmulder@xs4all.nl>
parents: 307
diff changeset
1209
1203255481e4 cleanup: introduce function setAvgDepth
Jan Mulder <jlmulder@xs4all.nl>
parents: 307
diff changeset
1210 void setAvgDepth(SDiveState *pStateReal) {
1203255481e4 cleanup: introduce function setAvgDepth
Jan Mulder <jlmulder@xs4all.nl>
parents: 307
diff changeset
1211
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1212 float *AvgDepthValue = &pStateReal->lifeData.average_depth_meter;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1213 float DepthNow = pStateReal->lifeData.depth_meter;
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1214 static uint32_t AvgDepthCount = 0;
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1215 static uint32_t AvgDepthTimer = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1216 uint32_t AvgSecondsSinceLast;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1217 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
1218
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1219 if(pStateReal->lifeData.boolResetAverageDepth)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1220 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1221 *AvgDepthValue = DepthNow;
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1222 AvgDepthCount = 0;
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1223 AvgDepthTimer = DiveTime;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1224 pStateReal->lifeData.boolResetAverageDepth = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1225 }
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1226 else if (DiveTime > AvgDepthTimer)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1227 {
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1228 AvgSecondsSinceLast = DiveTime - AvgDepthTimer;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1229 for(int i=0;i<AvgSecondsSinceLast;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1230 {
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1231 *AvgDepthValue = (*AvgDepthValue * AvgDepthCount + DepthNow) / (AvgDepthCount + 1);
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1232 AvgDepthCount += 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1233 }
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1234 AvgDepthTimer = DiveTime;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1235 }
309
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1236 if(AvgDepthCount == 0)
b0045281cb2d cleanup: factor out SHelper typedef (and more)
Jan Mulder <jlmulder@xs4all.nl>
parents: 308
diff changeset
1237 *AvgDepthValue = DepthNow;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1238 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1239
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1240
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1241 uint8_t DataEX_check_RTE_version__needs_update(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1242 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1243 if(data_old__lost_connection_to_slave_counter_retry > 10)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1244 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1245 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1246 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1247 if(stateRealGetPointer()->data_old__lost_connection_to_slave == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1248 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1249 setActualRTEversion(dataIn.RTE_VERSION_high, dataIn.RTE_VERSION_low);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1250
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1251 if(RTEminimum_required_high() < dataIn.RTE_VERSION_high)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1252 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1253 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1254 if((RTEminimum_required_high() == dataIn.RTE_VERSION_high) && (RTEminimum_required_low() <= dataIn.RTE_VERSION_low))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1255 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1256 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1257 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1258 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1259 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1260 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1261 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1262 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1263
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1264
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1265 /* Private functions ---------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1266
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
1267 /* 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
1268 * 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
1269 */
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
1270 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
1271 {
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1272 uint8_t ret = 1;
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1273 if((dataIn.footer.checkCode[0] == 0x00)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1274 && (dataIn.footer.checkCode[1] == 0x00)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1275 && (dataIn.footer.checkCode[2] == 0x00)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1276 && (dataIn.footer.checkCode[3] == 0x00)) { ret = 0; }
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1277
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1278 if((dataIn.footer.checkCode[0] == 0xff)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1279 && (dataIn.footer.checkCode[1] == 0xff)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1280 && (dataIn.footer.checkCode[2] == 0xff)
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1281 && (dataIn.footer.checkCode[3] == 0xff)) { ret = 0; }
137
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1282
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1283 return ret;
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1284 }
9eda5a75c5fd Only copy data if data connection to RTE is valid
Ideenmodellierer
parents: 133
diff changeset
1285
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
1286 static uint8_t DataEX_check_header_and_footer_ok(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1287 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1288 if(dataIn.header.checkCode[0] != 0xA1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1289 return 0;
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1290 #if USE_OLD_HEADER_FORMAT
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1291 if(dataIn.header.checkCode[1] != 0xA2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1292 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1293 if(dataIn.header.checkCode[2] != 0xA3)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1294 return 0;
141
30d855ea60d8 Only use data if data frame is valid
Ideenmodellierer
parents: 138
diff changeset
1295 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1296 if(dataIn.header.checkCode[3] != 0xA4)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1297 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1298 if(dataIn.footer.checkCode[0] != 0xE1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1299 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1300 if(dataIn.footer.checkCode[1] != 0xE2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1301 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1302 if(dataIn.footer.checkCode[2] != 0xE3)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1303 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1304 if(dataIn.footer.checkCode[3] != 0xE4)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1305 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1306
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1307 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1308 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1309
198
878dc9e0dbc5 cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents: 197
diff changeset
1310 static uint8_t DataEX_check_header_and_footer_devicedata(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1311 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1312 if(dataIn.header.checkCode[0] != 0xDF)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1313 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1314 if(dataIn.header.checkCode[1] != 0xDE)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1315 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1316 if(dataIn.header.checkCode[2] != 0xDD)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1317 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1318 if(dataIn.header.checkCode[3] != 0xDC)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1319 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1320 if(dataIn.footer.checkCode[0] != 0xE1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1321 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1322 if(dataIn.footer.checkCode[1] != 0xE2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1323 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1324 if(dataIn.footer.checkCode[2] != 0xE3)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1325 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1326 if(dataIn.footer.checkCode[3] != 0xE4)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1327 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1328
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1329 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1330 }
407
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1331
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1332 void DataEX_merge_devicedata(void)
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1333 {
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1334 if(DeviceDataUpdated)
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1335 {
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1336 DeviceDataUpdated = 0;
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1337 DataEX_merge_DeviceData_and_store();
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1338 }
b11e50415982 Bugfix parallel call of external flash functions:
ideenmodellierer
parents: 406
diff changeset
1339 }
556
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
1340 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
1341 {
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
1342 uint8_t retval;
559
84a4e1200726 Check if HW evaluation was performed:
Ideenmodellierer
parents: 556
diff changeset
1343 retval = hw_Info.extADC;
556
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
1344
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
1345 return retval;
eb2060caca7d Switch source of o2 sensor data depending on availability of external ADC:
Ideenmodellierer
parents: 539
diff changeset
1346 }
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1347
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1348 void DataEX_setExtInterface_Cmd(uint16_t Cmd)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1349 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1350 externalInterface_Cmd = Cmd;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1351 return;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1352 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 584
diff changeset
1353