Mercurial > public > ostc4
comparison Small_CPU/Src/uart.c @ 725:621265ec3d23
Update CO2 sensor implementation:
Some updates were needed to get the CO2 sensor code up and running again (menu handling and UART DMA transfer).
author | Ideenmodellierer |
---|---|
date | Sat, 07 Jan 2023 18:11:52 +0100 |
parents | fceae45b3a69 |
children | d646a0f724a7 |
comparison
equal
deleted
inserted
replaced
724:f285424f04d9 | 725:621265ec3d23 |
---|---|
146 uint8_t dataType = 0; | 146 uint8_t dataType = 0; |
147 uint32_t dataValue = 0; | 147 uint32_t dataValue = 0; |
148 static receiveState_t rxState = RX_Ready; | 148 static receiveState_t rxState = RX_Ready; |
149 static uint32_t lastReceiveTick = 0; | 149 static uint32_t lastReceiveTick = 0; |
150 | 150 |
151 while(localRX != rxWriteIndex) | 151 |
152 while((rxBuffer[localRX]!=0)) | |
152 { | 153 { |
153 lastReceiveTick = HAL_GetTick(); | 154 lastReceiveTick = HAL_GetTick(); |
154 if(rxState == RX_Ready) /* identify data content */ | 155 if(rxState == RX_Ready) /* identify data content */ |
155 { | 156 { |
156 switch(rxBuffer[localRX]) | 157 switch(rxBuffer[localRX]) |
165 | 166 |
166 default: /* unknown or corrupted => ignore */ | 167 default: /* unknown or corrupted => ignore */ |
167 break; | 168 break; |
168 } | 169 } |
169 } | 170 } |
170 else if((rxState >= RX_Data0) && (rxState <= RX_Data4)) | 171 else if((rxBuffer[localRX] >= '0') && (rxBuffer[localRX] <= '9')) |
171 { | 172 { |
172 if((rxBuffer[localRX] >= '0') && (rxBuffer[localRX] <= '9')) | 173 if((rxState >= RX_Data0) && (rxState <= RX_Data4)) |
173 { | 174 { |
174 dataValue = dataValue * 10 + (rxBuffer[localRX] - '0'); | 175 dataValue = dataValue * 10 + (rxBuffer[localRX] - '0'); |
175 rxState++; | 176 rxState++; |
177 if(rxState == RX_Data5) | |
178 { | |
179 rxState = RX_DataComplete; | |
180 } | |
181 } | |
182 else /* protocol error data has max 5 digits */ | |
183 { | |
184 rxState = RX_Ready; | |
176 } | 185 } |
177 } | 186 } |
178 if((rxBuffer[localRX] == ' ') || (rxBuffer[localRX] == '\n')) /* Abort data detection */ | 187 if((rxBuffer[localRX] == ' ') || (rxBuffer[localRX] == '\n')) /* Abort data detection */ |
179 { | 188 { |
180 if(rxState == RX_DataComplete) | 189 if(rxState == RX_DataComplete) |