annotate Small_CPU/Inc/uartProtocol_O2.h @ 796:75ace7af8212

Expanded Sensor map structure: In the previous version the number of possible sensors were set to 5 based on the assumption that ADC slots are shared with digital O2 sensors. As result three of five slots would have been limited to O2 measurement usecase, leaving just two slots left for other sensors (e.g. CO2). In order to have as much flexibility (and less risk for data structure changes) the number of sensors has been set to 7 (3 ADC + 4 UART MUX)
author Ideenmodellierer
date Mon, 31 Jul 2023 20:00:06 +0200
parents d4083ac09b5d
children e9eba334b942
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
795
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
1 /**
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
2 ******************************************************************************
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
3 * @file uartProtocol_O2.h
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
4 * @author heinrichs weikamp gmbh
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
5 * @version V0.0.1
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
6 * @date 18-Jun-2023
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
7 * @brief Interface functionality to handle external, UART based O2 sensors
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
8 *
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
9 @verbatim
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
10 ==============================================================================
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
11 ##### How to use #####
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
12 ==============================================================================
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
13 @endverbatim
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
14 ******************************************************************************
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
15 * @attention
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
16 *
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
17 * <h2><center>&copy; COPYRIGHT(c) 2014 heinrichs weikamp</center></h2>
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
18 *
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
19 ******************************************************************************
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
20 */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
21
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
22 /* Define to prevent recursive inclusion -------------------------------------*/
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
23 #ifndef UART_PROTOCOL_O2_H
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
24 #define UART_PROTOCOL_O2_H
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
25
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
26 #ifdef __cplusplus
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
27 extern "C" {
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
28 #endif
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
29
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
30 /* Includes ------------------------------------------------------------------*/
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
31 #include "configuration.h"
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
32 #include "stm32f4xx_hal.h"
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
33
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
34
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
35 typedef enum
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
36 {
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
37 UART_O2_INIT = 0,
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
38 UART_O2_CHECK, /* send blink command and check if sensor answers */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
39 UART_O2_REQ_INFO, /* request information about available internal sensors of sensor */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
40 UART_O2_REQ_ID, /* request ID of sensor */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
41 UART_O2_IDLE, /* sensor detected and no communication pending */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
42 UART_O2_REQ_O2, /* O2 value has been requested and is in receiption progress */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
43 UART_O2_REQ_RAW, /* Request O2 and extended raw data */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
44 UART_O2_ERROR /* Error message received from sensor */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
45 } uartO2Status_t;
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
46
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
47
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
48 typedef enum
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
49 {
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
50 O2RX_IDLE = 0, /* no reception pending */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
51 O2RX_CONFIRM, /* check the command echo */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
52 O2RX_GETNR, /* extract the sensor number */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
53 O2RX_GETO2, /* extract the ppo2 */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
54 O2RX_GETTEMP, /* extract the temperature */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
55 O2RX_GETSTATUS, /* extract the sensor status */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
56 O2RX_GETTYPE, /* extract the sensor type (should be 8) */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
57 O2RX_GETCHANNEL, /* extract the number of sensor channels (should be 1) */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
58 O2RX_GETVERSION, /* extract the sensor version */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
59 O2RX_GETSUBSENSORS, /* extract the available measures (O2, temperature, humidity etc) */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
60 O2RX_GETDPHI, /* extract phase shift */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
61 O2RX_INTENSITY, /* extract intensity of signal */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
62 O2RX_AMBIENTLIGHT, /* extract the intensity of the ambient light */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
63 O2RX_PRESSURE, /* extract pressure within the sensor housing */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
64 O2RX_HUMIDITY /* extract humidity within the sensor housing */
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
65 } uartO2RxState_t;
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
66
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
67 void uartO2_Control(void);
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
68 void uartO2_ProcessData(uint8_t data);
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
69 void uartO2_SetChannel(uint8_t channel);
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
70 uint8_t uartO2_isSensorConnected();
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
71
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
72
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
73
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
74
d4083ac09b5d Moved DiveO2 sensor specific funtionality into separated file:
Ideenmodellierer
parents:
diff changeset
75 #endif /* EXTERNAL_INTERFACE_H */