annotate Small_CPU/Inc/uartProtocol_HUD.h @ 1080:b02311fbb1e1 Icon_Integration tip

Added MUX operation for HUD: Instead of adding some new detection steps to the autodetection loop (which would be another copy paste implementation) the detection loop has been reworked. Instead of having a several individual steps per sensor type the steps are now related to mux channels. A structure is used to identify the type which shall be handled during the uart channel iteration. This make the code better readable and maintanance easier.
author Ideenmodellierer
date Sun, 08 Mar 2026 21:08:33 +0100
parents bd8ab302ef4a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1077
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
1 /**
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
2 ******************************************************************************
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
3 * @file uartProtocol_HUD.h
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
4 * @author heinrichs weikamp gmbh
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
5 * @version V0.0.1
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
6 * @date 24-Feb-2026
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
7 * @brief Interface functionality to handle external, UART based CO2 sensors
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
8 *
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
9 @verbatim
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
10 ==============================================================================
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
11 ##### How to use #####
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
12 ==============================================================================
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
13 @endverbatim
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
14 ******************************************************************************
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
15 * @attention
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
16 *
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
17 * <h2><center>&copy; COPYRIGHT(c) 2014 heinrichs weikamp</center></h2>
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
18 *
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
19 ******************************************************************************
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
20 */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
21
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
22 /* Define to prevent recursive inclusion -------------------------------------*/
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
23 #ifndef UART_PROTOCOL_HUD_H
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
24 #define UART_PROTOCOL_HUD_H
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
25
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
26 #ifdef __cplusplus
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
27 extern "C" {
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
28 #endif
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
29
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
30 /* Includes ------------------------------------------------------------------*/
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
31 #include "configuration.h"
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
32 #include "stm32f4xx_hal.h"
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
33
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
34
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
35 #define HUD_INFO_DATA_LENGTH (24u) /* expected number of received info data */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
36 #define HUD_MAX_CMD_LENGTH (32u) /* max length for a command sequence */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
37
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
38 #define HUD_CMD_BYTE_START (0xAA) /* Start byte */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
39 #define HUD_CMD_BYTE_INFO (0x10) /* Request HUD info */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
40 #define HUD_CMD_BYTE_UPDATE (0x20) /* Update LED sequence command */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
41 #define HUD_CMD_BYTE_STOP (0x30) /* Stip LED sequence execution */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
42
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
43 typedef enum
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
44 {
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
45 UART_HUD_INIT = 0, /* Default Status for every sensor type */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
46 UART_HUD_IDLE, /* sensor detected and no communication pending */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
47 UART_HUD_ERROR,
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
48 UART_HUD_SETUP = 10, /* collecting data */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
49 UART_HUD_UPDATE, /* update the HUD status LEDs */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
50 UART_HUD_ABORT, /* abort status sequence */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
51 } uartHUDStatus_t;
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
52
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
53 typedef enum
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
54 {
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
55 HUDRX_Ready= 0, /* Initial state */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
56 HUDRX_DetectStart, /* validate start byte */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
57 HUDRX_RXData,
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
58 HUDRX_CheckSum_L,
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
59 HUDRX_CheckSum_H,
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
60 HUDRX_DataComplete
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
61 } receiveStateHUD_t;
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
62
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
63
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
64 typedef enum
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
65 {
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
66 HUDCMD_GETINFO = 0, /* Get HUD info */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
67 HUDCMD_UPDATE, /* Update LED sequence */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
68 HUDCMD_ABORTSEQ /* Abort LED sequence */
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
69 } hudSensorCmd_t;
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
70
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
71
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
72 void uartHUD_Control(void);
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
73 void uartHUD_ProcessData(uint8_t data);
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
74 void uartHUD_SendCmd(uint8_t HUDCmd);
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
75 uint8_t uartHUD_isSensorConnected();
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
76
bd8ab302ef4a Added uart support for HUD:
Ideenmodellierer
parents:
diff changeset
77 #endif /* UART_PROTOCOL_HUD_H */