Mercurial > public > ostc4
annotate Small_CPU/Inc/uart.h @ 704:f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
The code has been modified to support the handling of several protocols (including baud rate changes). The data is requested by polling and passed via DMA into a ringbuffer which is then parsed by a cyclic function call in the main loop. At the moment only the O2 values are forwarded but because the sensor send several types of data within a signle message already more is extracted but yet discarded.
author | Ideenmodellierer |
---|---|
date | Fri, 28 Oct 2022 20:49:21 +0200 |
parents | fca2bd25e6e2 |
children | 045ff7800501 |
rev | line source |
---|---|
38 | 1 /** |
2 ****************************************************************************** | |
3 * @file uart.h | |
4 * @author heinrichs weikamp gmbh | |
5 * @version V0.0.1 | |
6 * @date 27-March-2014 | |
7 * @brief button control | |
8 * | |
9 ****************************************************************************** | |
10 * @attention | |
11 * | |
12 * <h2><center>© COPYRIGHT(c) 2015 heinrichs weikamp</center></h2> | |
13 * | |
14 ****************************************************************************** | |
15 */ | |
16 | |
17 /* Define to prevent recursive inclusion -------------------------------------*/ | |
18 #ifndef UART_H | |
19 #define UART_H | |
20 | |
21 #ifdef __cplusplus | |
22 extern "C" { | |
23 #endif | |
24 | |
25 #include "stm32f4xx_hal.h" | |
26 | |
662 | 27 |
28 typedef enum | |
29 { | |
30 RX_Ready= 0, /* Initial state */ | |
690 | 31 RX_DetectStart, /* validate start byte */ |
32 RX_SelectData, /* Data contained in this frame */ | |
662 | 33 RX_Data0, /* Process incoming data */ |
34 RX_Data1, | |
35 RX_Data2, | |
36 RX_Data3, | |
37 RX_Data4, | |
690 | 38 RX_Data5, |
39 RX_Data6, | |
40 RX_Data7, | |
41 RX_Data8, | |
42 RX_Data9, | |
43 RX_Data10, | |
44 RX_Data11, | |
45 RX_Data12, | |
662 | 46 RX_DataComplete |
47 } receiveState_t; | |
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 */ |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
54 UART_O2_REQ_ID, /* request ID of sensor */ |
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 */ |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
57 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
|
58 } uartO2Status_t; |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
59 |
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 typedef enum |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
62 { |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
63 O2RX_IDLE = 0, /* no receiption pending */ |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
64 O2RX_CONFIRM, /* check the command echo */ |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
65 O2RX_GETNR, /* extract the sensor number */ |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
66 O2RX_GETO2, /* extract the ppo2 */ |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
67 O2RX_GETTEMP, /* extract the temperature */ |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
68 O2RX_GETSTATUS, /* extract the sensor status */ |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
69 O2RX_GETTYPE, /* extract the sensor type (should be 8) */ |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
70 O2RX_GETCHANNEL, /* extract the number of sensor channels (should be 1) */ |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
71 O2RX_GETVERSION, /* extract the sensor version */ |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
72 O2RX_GETSUBSENSORS /* extract the available measures (O2, temperature, humidity etc) */ |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
73 } uartO2RxState_t; |
662 | 74 |
75 void MX_USART1_UART_Init(void); | |
76 void MX_USART1_UART_DeInit(void); | |
77 void MX_USART1_DMA_Init(void); | |
38 | 78 uint8_t UART_ButtonAdjust(uint8_t *array); |
690 | 79 #ifdef ENABLE_CO2_SUPPORT |
80 void HandleUARTCO2Data(void); | |
81 #endif | |
82 #ifdef ENABLE_SENTINEL_MODE | |
83 void HandleUARTSentinelData(void); | |
84 #endif | |
704
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
85 void HandleUARTDigitalO2(void); |
f1b40364b0af
Added protocol functions for UART DiveO2 sensor:
Ideenmodellierer
parents:
690
diff
changeset
|
86 |
38 | 87 #ifdef __cplusplus |
88 } | |
89 #endif | |
90 | |
91 #endif /* UART_H */ | |
92 | |
93 /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/ |