Mercurial > public > ostc4
annotate Small_CPU/Src/uartProtocol_Co2.c @ 1074:ad61a2c9095a Icon_Integration
Forward profile sensor settings to RTE:
The profile settings include the sensor map => forward the sensor map matching to the profile to the RTE.
| author | ideenmodellierer |
|---|---|
| date | Sun, 22 Feb 2026 19:56:43 +0100 |
| parents | 8b97003dbb60 |
| children |
| rev | line source |
|---|---|
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
1 /** |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
2 ****************************************************************************** |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
3 * @file uartProtocol_Co2.c |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
4 * @author heinrichs weikamp gmbh |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
5 * @version V0.0.1 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
6 * @date 31-Jul-2023 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
7 * @brief Interface functionality to external, UART based CO2 sensors |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
8 * |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
9 @verbatim |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
10 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
11 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
12 @endverbatim |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
13 ****************************************************************************** |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
14 * @attention |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
15 * |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
16 * <h2><center>© COPYRIGHT(c) 2023 heinrichs weikamp</center></h2> |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
17 * |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
18 ****************************************************************************** |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
19 */ |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
20 /* Includes ------------------------------------------------------------------*/ |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
21 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
22 #include <string.h> |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
23 #include <uartProtocol_Co2.h> |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
24 #include "uart.h" |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
25 #include "externalInterface.h" |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
26 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
27 #ifdef ENABLE_CO2_SUPPORT |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
28 static uint8_t CO2Connected = 0; /* Binary indicator if a sensor is connected or not */ |
|
842
c3dd461ca3f9
Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents:
809
diff
changeset
|
29 static receiveStateCO2_t rxState = CO2RX_Ready; |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
30 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
31 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
32 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
33 float LED_Level = 0.0; /* Normalized LED value which may be used as indication for the health status of the sensor */ |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
34 float LED_ZeroOffset = 0.0; |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
35 float pCO2 = 0.0; |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
36 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
37 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
38 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
39 void uartCo2_SendCmd(uint8_t CO2Cmd, uint8_t *cmdString, uint8_t *cmdLength) |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
40 { |
| 809 | 41 *cmdLength = 0; |
| 42 | |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
43 switch (CO2Cmd) |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
44 { |
| 1072 | 45 case CO2CMD_MODE_POLL: *cmdLength = snprintf((char*)cmdString, 20, "K 2\r\n"); |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
46 break; |
| 1072 | 47 case CO2CMD_MODE_STREAM: *cmdLength = snprintf((char*)cmdString, 20, "K 1\r\n"); |
| 48 break; | |
| 49 case CO2CMD_CALIBRATE_H: *cmdLength = snprintf((char*)cmdString, 20, "P 10 1\r\n"); /* set 400ppm as reference => 1 (256) and 144 */ | |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
50 break; |
| 1072 | 51 case CO2CMD_CALIBRATE_L: *cmdLength = snprintf((char*)cmdString, 20, "P 11 144\r\n"); |
| 52 break; | |
| 53 case CO2CMD_CALIBRATE: *cmdLength = snprintf((char*)cmdString, 20, "G\r\n"); | |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
54 break; |
| 1072 | 55 case CO2CMD_GETDATA: *cmdLength = snprintf((char*)cmdString, 20, "Q\r\n"); |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
56 break; |
| 1072 | 57 case CO2CMD_GETSCALE: *cmdLength = snprintf((char*)cmdString, 20, ".\r\n"); |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
58 break; |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
59 default: *cmdLength = 0; |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
60 break; |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
61 } |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
62 if(cmdLength != 0) |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
63 { |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
64 UART_SendCmdString(cmdString); |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
65 } |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
66 } |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
67 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
68 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
69 void uartCo2_Control(void) |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
70 { |
| 1072 | 71 static uint8_t cmdString[20]; |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
72 static uint8_t cmdLength = 0; |
| 1065 | 73 static uint8_t lastComState = UART_CO2_INIT; |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
74 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
75 uint8_t activeSensor = externalInterface_GetActiveUartSensor(); |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
76 uartCO2Status_t localComState = externalInterface_GetSensorState(activeSensor + EXT_INTERFACE_MUX_OFFSET); |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
77 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
78 if(localComState == UART_CO2_ERROR) |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
79 { |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
80 localComState = lastComState; |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
81 } |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
82 |
| 1065 | 83 switch(localComState) |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
84 { |
| 1065 | 85 case UART_CO2_INIT: CO2Connected = 0; |
| 86 externalInterface_SetCO2Scale(0.0); | |
| 87 UART_ReadData(SENSOR_CO2, 1); /* flush buffer */ | |
| 88 UART_StartDMA_Receiption(&Uart1Ctrl); | |
| 89 localComState = UART_CO2_SETUP; | |
| 90 uartCo2_SendCmd(CO2CMD_GETSCALE, cmdString, &cmdLength); | |
| 91 break; | |
| 92 case UART_CO2_SETUP: if(externalInterface_GetCO2Scale() == 0.0) | |
| 93 { | |
| 94 uartCo2_SendCmd(CO2CMD_GETSCALE, cmdString, &cmdLength); | |
| 95 } | |
| 96 else | |
| 97 { | |
| 98 uartCo2_SendCmd(CO2CMD_MODE_POLL, cmdString, &cmdLength); | |
| 99 localComState = UART_CO2_MODE; | |
| 100 } | |
| 101 break; | |
| 102 case UART_CO2_MODE: uartCo2_SendCmd(CO2CMD_MODE_POLL, cmdString, &cmdLength); | |
| 103 break; | |
| 1072 | 104 case UART_CO2_CALIBRATE_H: uartCo2_SendCmd(CO2CMD_CALIBRATE_H, cmdString, &cmdLength); |
| 105 break; | |
| 106 case UART_CO2_CALIBRATE_L: uartCo2_SendCmd(CO2CMD_CALIBRATE_L, cmdString, &cmdLength); | |
| 107 break; | |
| 1065 | 108 case UART_CO2_CALIBRATE: uartCo2_SendCmd(CO2CMD_CALIBRATE, cmdString, &cmdLength); |
| 109 localComState = UART_CO2_IDLE; | |
| 110 break; | |
| 111 case UART_CO2_IDLE: if(externalInterface_GetCO2Scale() == 0.0) /* artifact from streaming mode => not needed for polling */ | |
| 112 { | |
| 113 uartCo2_SendCmd(CO2CMD_GETSCALE, cmdString, &cmdLength); | |
| 114 localComState = UART_CO2_SETUP; | |
| 115 } | |
| 116 else | |
| 117 { | |
| 118 uartCo2_SendCmd(CO2CMD_GETDATA, cmdString, &cmdLength); | |
| 119 localComState = UART_CO2_OPERATING; | |
| 120 } | |
| 121 break; | |
| 122 default: if(cmdLength != 0) | |
| 123 { | |
| 124 UART_SendCmdString(cmdString); /* resend last command */ | |
| 125 cmdLength = 0; | |
| 126 } | |
| 127 break; | |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
128 } |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
129 lastComState = localComState; |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
130 externalInterface_SetSensorState(activeSensor + EXT_INTERFACE_MUX_OFFSET,localComState); |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
131 } |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
132 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
133 void uartCo2_ProcessData(uint8_t data) |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
134 { |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
135 static uint8_t dataType = 0; |
| 1072 | 136 static uint32_t dataValue[3]; |
| 137 static uint8_t dataIndex = 0; | |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
138 uint8_t activeSensor = externalInterface_GetActiveUartSensor(); |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
139 uartCO2Status_t localComState = externalInterface_GetSensorState(activeSensor + EXT_INTERFACE_MUX_OFFSET); |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
140 |
|
842
c3dd461ca3f9
Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents:
809
diff
changeset
|
141 if(rxState == CO2RX_Ready) /* identify data content */ |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
142 { |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
143 switch(data) |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
144 { |
| 1072 | 145 case 'P': |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
146 case 'G': |
|
1063
a3f42192da0f
Always use polling mode for CO2 operation:
Ideenmodellierer
parents:
976
diff
changeset
|
147 case 'K': |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
148 case 'l': |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
149 case 'D': |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
150 case 'Z': |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
151 case '.': dataType = data; |
|
842
c3dd461ca3f9
Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents:
809
diff
changeset
|
152 rxState = CO2RX_Data0; |
| 1072 | 153 dataValue[0] = 0; |
| 154 dataIndex = 0; | |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
155 break; |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
156 case '?': localComState = UART_CO2_ERROR; |
| 1065 | 157 rxState = CO2RX_Ready; |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
158 break; |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
159 default: /* unknown or corrupted => ignore */ |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
160 break; |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
161 } |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
162 } |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
163 else if((data >= '0') && (data <= '9')) |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
164 { |
| 1072 | 165 if((rxState >= CO2RX_Data0) && (rxState <= CO2RX_Data9)) |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
166 { |
| 1072 | 167 dataValue[dataIndex] = dataValue[dataIndex] * 10 + (data - '0'); |
| 1065 | 168 |
| 1072 | 169 switch (dataType) |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
170 { |
| 1072 | 171 case 'G': |
| 172 case 'K': | |
| 173 case 'l': | |
| 174 case 'D': | |
| 175 case 'Z': | |
| 176 case '.': | |
| 177 default: if((rxState == CO2RX_Data4)) | |
| 178 { | |
| 179 rxState = CO2RX_DataComplete; /* just one value to be received */ | |
| 180 } | |
| 181 else | |
| 182 { | |
| 183 rxState++; | |
| 184 } | |
| 185 break; | |
| 186 case 'P': if(rxState == CO2RX_Data9) /* get second parameter */ | |
| 187 { | |
| 188 rxState = CO2RX_DataComplete; | |
| 189 } | |
| 190 else | |
| 191 { | |
| 192 rxState++; | |
| 193 } | |
| 194 break; | |
| 1065 | 195 } |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
196 } |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
197 else /* protocol error data has max 5 digits */ |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
198 { |
|
842
c3dd461ca3f9
Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents:
809
diff
changeset
|
199 if(rxState != CO2RX_DataComplete) /* commands will not answer with number values */ |
| 809 | 200 { |
|
842
c3dd461ca3f9
Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents:
809
diff
changeset
|
201 rxState = CO2RX_Ready; |
| 809 | 202 } |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
203 } |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
204 } |
|
916
4832981f9af8
External sensor UART: Switch to DMA TX transfers:
Ideenmodellierer
parents:
842
diff
changeset
|
205 else if((data == ' ') || (data == '\n')) /* Abort data detection */ |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
206 { |
|
842
c3dd461ca3f9
Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents:
809
diff
changeset
|
207 if(rxState == CO2RX_DataComplete) |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
208 { |
| 809 | 209 CO2Connected = 1; |
|
1063
a3f42192da0f
Always use polling mode for CO2 operation:
Ideenmodellierer
parents:
976
diff
changeset
|
210 switch(localComState) |
| 809 | 211 { |
|
1063
a3f42192da0f
Always use polling mode for CO2 operation:
Ideenmodellierer
parents:
976
diff
changeset
|
212 case UART_CO2_SETUP: if(dataType == '.') |
|
a3f42192da0f
Always use polling mode for CO2 operation:
Ideenmodellierer
parents:
976
diff
changeset
|
213 { |
| 1065 | 214 localComState = UART_CO2_MODE; |
|
1063
a3f42192da0f
Always use polling mode for CO2 operation:
Ideenmodellierer
parents:
976
diff
changeset
|
215 } |
|
a3f42192da0f
Always use polling mode for CO2 operation:
Ideenmodellierer
parents:
976
diff
changeset
|
216 break; |
| 1072 | 217 case UART_CO2_MODE: if((dataType == 'K') && (dataValue[dataIndex] == 2)) |
|
1063
a3f42192da0f
Always use polling mode for CO2 operation:
Ideenmodellierer
parents:
976
diff
changeset
|
218 { |
|
a3f42192da0f
Always use polling mode for CO2 operation:
Ideenmodellierer
parents:
976
diff
changeset
|
219 localComState = UART_CO2_IDLE; |
|
a3f42192da0f
Always use polling mode for CO2 operation:
Ideenmodellierer
parents:
976
diff
changeset
|
220 } |
|
a3f42192da0f
Always use polling mode for CO2 operation:
Ideenmodellierer
parents:
976
diff
changeset
|
221 break; |
| 1072 | 222 case UART_CO2_CALIBRATE_H: if((dataType == 'P') && (dataValue[0] == 10) && (dataValue[1] == 1)) |
| 223 { | |
| 224 localComState = UART_CO2_CALIBRATE_L; | |
| 225 } | |
| 226 else | |
| 227 { | |
| 228 localComState = UART_CO2_IDLE; | |
| 229 } | |
| 230 break; | |
| 231 case UART_CO2_CALIBRATE_L: if((dataType == 'P') && (dataValue[0] == 11) && (dataValue[1] == 144)) | |
| 232 { | |
| 233 localComState = UART_CO2_CALIBRATE; | |
| 234 } | |
| 235 else | |
| 236 { | |
| 237 localComState = UART_CO2_IDLE; | |
| 238 } | |
| 239 break; | |
|
1063
a3f42192da0f
Always use polling mode for CO2 operation:
Ideenmodellierer
parents:
976
diff
changeset
|
240 default: localComState = UART_CO2_IDLE; |
|
a3f42192da0f
Always use polling mode for CO2 operation:
Ideenmodellierer
parents:
976
diff
changeset
|
241 break; |
| 809 | 242 } |
|
1063
a3f42192da0f
Always use polling mode for CO2 operation:
Ideenmodellierer
parents:
976
diff
changeset
|
243 |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
244 switch(dataType) |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
245 { |
| 1072 | 246 case 'D': externalInterface_SetCO2SignalStrength(dataValue[dataIndex]); |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
247 break; |
| 1072 | 248 case 'l': LED_ZeroOffset = dataValue[dataIndex]; |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
249 break; |
| 1072 | 250 case 'Z': externalInterface_SetCO2Value(dataValue[dataIndex]); |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
251 break; |
| 1072 | 252 case '.': externalInterface_SetCO2Scale(dataValue[dataIndex]); |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
253 break; |
|
842
c3dd461ca3f9
Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents:
809
diff
changeset
|
254 default: rxState = CO2RX_Ready; |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
255 break; |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
256 } |
| 976 | 257 rxState = CO2RX_Ready; |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
258 } |
| 1072 | 259 else /* multi parameter */ |
| 260 { | |
| 261 if(rxState == CO2RX_Data5) | |
| 262 { | |
| 263 switch(dataType) | |
| 264 { | |
| 265 case 'P': dataIndex++; | |
| 266 dataValue[dataIndex] = 0; | |
| 267 break; | |
| 268 default: | |
| 269 break; | |
| 270 } | |
| 271 } | |
| 272 } | |
| 273 if((rxState != CO2RX_Data0) && (rxState != CO2RX_Data5)) /* reset state machine because message in wrong format */ | |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
274 { |
|
842
c3dd461ca3f9
Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents:
809
diff
changeset
|
275 rxState = CO2RX_Ready; |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
276 } |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
277 } |
|
916
4832981f9af8
External sensor UART: Switch to DMA TX transfers:
Ideenmodellierer
parents:
842
diff
changeset
|
278 else |
|
4832981f9af8
External sensor UART: Switch to DMA TX transfers:
Ideenmodellierer
parents:
842
diff
changeset
|
279 { |
|
4832981f9af8
External sensor UART: Switch to DMA TX transfers:
Ideenmodellierer
parents:
842
diff
changeset
|
280 if((rxState >= CO2RX_Data0) && (rxState <= CO2RX_Data4)) |
|
4832981f9af8
External sensor UART: Switch to DMA TX transfers:
Ideenmodellierer
parents:
842
diff
changeset
|
281 { |
|
4832981f9af8
External sensor UART: Switch to DMA TX transfers:
Ideenmodellierer
parents:
842
diff
changeset
|
282 rxState = CO2RX_Ready; /* numerical data expected => abort */ |
|
4832981f9af8
External sensor UART: Switch to DMA TX transfers:
Ideenmodellierer
parents:
842
diff
changeset
|
283 } |
|
4832981f9af8
External sensor UART: Switch to DMA TX transfers:
Ideenmodellierer
parents:
842
diff
changeset
|
284 } |
|
798
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
285 externalInterface_SetSensorState(activeSensor + EXT_INTERFACE_MUX_OFFSET,localComState); |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
286 } |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
287 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
288 uint8_t uartCo2_isSensorConnected() |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
289 { |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
290 return CO2Connected; |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
291 } |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
292 |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
293 #endif |
|
e9eba334b942
Migrated CO2 protocol implementation to new format:
Ideenmodellierer
parents:
diff
changeset
|
294 |
