annotate Small_CPU/Inc/uart.h @ 779:0b5f45448eb6

Added UART multiplexer support for DiveO2: The existing autodetect function now includes a UART multiplexer. The datastructures and protocol handling has been adapted to support several DiveO2 sensors connected to the UART.
author Ideenmodellierer
date Tue, 23 May 2023 21:45:34 +0200
parents e23fe82cbf8c
children bb37d4f3e50e
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 uart.h
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
4 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
5 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
6 * @date 27-March-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
7 * @brief button control
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
8 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
9 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
10 * @attention
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
11 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
12 * <h2><center>&copy; COPYRIGHT(c) 2015 heinrichs weikamp</center></h2>
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
13 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
14 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
15 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
16
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
17 /* Define to prevent recursive inclusion -------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
18 #ifndef UART_H
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
19 #define UART_H
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
20
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
21 #ifdef __cplusplus
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
22 extern "C" {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
23 #endif
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
24
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
25 #include "stm32f4xx_hal.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
26
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
27
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
28 typedef enum
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
29 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
30 RX_Ready= 0, /* Initial state */
690
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
31 RX_DetectStart, /* validate start byte */
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
32 RX_SelectData, /* Data contained in this frame */
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
33 RX_Data0, /* Process incoming data */
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
34 RX_Data1,
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
35 RX_Data2,
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
36 RX_Data3,
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
37 RX_Data4,
690
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
38 RX_Data5,
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
39 RX_Data6,
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
40 RX_Data7,
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
41 RX_Data8,
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
42 RX_Data9,
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
43 RX_Data10,
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
44 RX_Data11,
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
45 RX_Data12,
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
46 RX_DataComplete
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
47 } receiveState_t;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
48
704
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
49 typedef enum
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
50 {
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
51 UART_O2_INIT = 0,
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
52 UART_O2_CHECK, /* send blink command and check if sensor answers */
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
53 UART_O2_REQ_INFO, /* request information about available internal sensors of sensor */
714
045ff7800501 Added customizable data area for specific sensor data:
Ideenmodellierer
parents: 704
diff changeset
54 UART_O2_REQ_ID, /* request ID of sensor */
704
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
55 UART_O2_IDLE, /* sensor detected and no communication pending */
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
56 UART_O2_REQ_O2, /* O2 value has been requested and is in receiption progress */
721
fceae45b3a69 DigO2 added raw data request:
Ideenmodellierer
parents: 714
diff changeset
57 UART_O2_REQ_RAW, /* Request O2 and extended raw data */
704
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
58 UART_O2_ERROR /* Error state which could not be resolved => only exit via de-/activation cycle */
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
59 } uartO2Status_t;
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
60
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
61
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
62 typedef enum
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
63 {
729
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 721
diff changeset
64 O2RX_IDLE = 0, /* no reception pending */
704
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
65 O2RX_CONFIRM, /* check the command echo */
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
66 O2RX_GETNR, /* extract the sensor number */
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
67 O2RX_GETO2, /* extract the ppo2 */
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
68 O2RX_GETTEMP, /* extract the temperature */
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
69 O2RX_GETSTATUS, /* extract the sensor status */
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
70 O2RX_GETTYPE, /* extract the sensor type (should be 8) */
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
71 O2RX_GETCHANNEL, /* extract the number of sensor channels (should be 1) */
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
72 O2RX_GETVERSION, /* extract the sensor version */
721
fceae45b3a69 DigO2 added raw data request:
Ideenmodellierer
parents: 714
diff changeset
73 O2RX_GETSUBSENSORS, /* extract the available measures (O2, temperature, humidity etc) */
fceae45b3a69 DigO2 added raw data request:
Ideenmodellierer
parents: 714
diff changeset
74 O2RX_GETDPHI, /* extract phase shift */
fceae45b3a69 DigO2 added raw data request:
Ideenmodellierer
parents: 714
diff changeset
75 O2RX_INTENSITY, /* extract intensity of signal */
fceae45b3a69 DigO2 added raw data request:
Ideenmodellierer
parents: 714
diff changeset
76 O2RX_AMBIENTLIGHT, /* extract the intensity of the ambient light */
fceae45b3a69 DigO2 added raw data request:
Ideenmodellierer
parents: 714
diff changeset
77 O2RX_PRESSURE, /* extract pressor within the sensor housing */
fceae45b3a69 DigO2 added raw data request:
Ideenmodellierer
parents: 714
diff changeset
78 O2RX_HUMIDITY /* extract humidity within the sensor housing */
704
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
79 } uartO2RxState_t;
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
80
729
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 721
diff changeset
81
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 721
diff changeset
82
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
83 void MX_USART1_UART_Init(void);
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
84 void MX_USART1_UART_DeInit(void);
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 38
diff changeset
85 void MX_USART1_DMA_Init(void);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
86 uint8_t UART_ButtonAdjust(uint8_t *array);
742
e23fe82cbf8c Update Sentinel protocol:
Ideenmodellierer
parents: 729
diff changeset
87 void UART_StartDMA_Receiption(void);
690
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
88 #ifdef ENABLE_CO2_SUPPORT
729
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 721
diff changeset
89 void UART_HandleCO2Data(void);
690
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
90 #endif
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
91 #ifdef ENABLE_SENTINEL_MODE
729
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 721
diff changeset
92 void UART_HandleSentinelData(void);
690
fca2bd25e6e2 Added Sentinel protocoll support:
Ideenmodellierer
parents: 662
diff changeset
93 #endif
729
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 721
diff changeset
94 void UART_HandleDigitalO2(void);
779
0b5f45448eb6 Added UART multiplexer support for DiveO2:
Ideenmodellierer
parents: 742
diff changeset
95 void UART_MapDigO2_Channel(uint8_t channel, uint8_t muxAddress);
0b5f45448eb6 Added UART multiplexer support for DiveO2:
Ideenmodellierer
parents: 742
diff changeset
96 void UART_SetDigO2_Channel(uint8_t channel);
729
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 721
diff changeset
97 uint8_t UART_isDigO2Connected();
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 721
diff changeset
98 uint8_t UART_isCO2Connected();
742
e23fe82cbf8c Update Sentinel protocol:
Ideenmodellierer
parents: 729
diff changeset
99 uint8_t UART_isSentinelConnected();
729
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 721
diff changeset
100 void UART_setTargetChannel(uint8_t channel);
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 721
diff changeset
101
d646a0f724a7 Added auto detection functionality for sensors connected to the external interface:
Ideenmodellierer
parents: 721
diff changeset
102
704
f1b40364b0af Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents: 690
diff changeset
103
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
104 #ifdef __cplusplus
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
105 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
106 #endif
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
107
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
108 #endif /* UART_H */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
109
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
110 /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/