diff Small_CPU/Src/externalInterface.c @ 969:81049905d829 Evo_2_23

Zusammenf?hren
author heinrichsweikamp
date Sun, 19 Jan 2025 12:02:59 +0100 (2 months ago)
parents 3420e3ba698d
children 142f3d0363b3
line wrap: on
line diff
--- a/Small_CPU/Src/externalInterface.c	Sun Jan 19 12:00:50 2025 +0100
+++ b/Small_CPU/Src/externalInterface.c	Sun Jan 19 12:02:59 2025 +0100
@@ -1018,15 +1018,6 @@
 											SensorMap[index] = SENSOR_SEARCH;
 										}
 			break;
-		case EXT_INTERFACE_CO2_CALIB:	for(index = 0; index < EXT_INTERFACE_SENSOR_CNT; index++)
-										{
-											if(SensorMap[index] == SENSOR_CO2)
-											{
-												externalInterface_SensorState[index] = UART_CO2_CALIBRATE;
-												break;
-											}
-										}
-			break;
 		case EXT_INTERFACE_COPY_SENSORMAP:	if(externalAutoDetect == DETECTION_OFF)
 											{
 												memcpy(SensorMap, MasterSensorMap, sizeof(MasterSensorMap));
@@ -1049,6 +1040,27 @@
 												}
 											}
 			break;
+		case EXT_INTERFACE_CO2_CALIB:	index = (Cmd >> 8) & 0x000F;
+										if(SensorMap[index] == SENSOR_CO2M)
+										{
+											index = Mux2ADCMap[index];
+										}
+										if(SensorMap[index] == SENSOR_CO2)
+										{
+											externalInterface_SensorState[index] = UART_CO2_CALIBRATE;
+										}
+			break;
+		case EXT_INTERFACE_O2_INDICATE:	index = (Cmd >> 8) & 0x000F;
+										if(SensorMap[index] == SENSOR_DIGO2M)
+										{
+											index = Mux2ADCMap[index];
+										}
+										if(SensorMap[index] == SENSOR_DIGO2)
+										{
+											externalInterface_SensorState[index] = UART_O2_CHECK;
+										}
+			break;
+
 		default:
 			break;
 	}
@@ -1192,6 +1204,12 @@
 						break;
 				}
 			}
+			if((externalInterface_SensorState[activeSensorId] == UART_CO2_SETUP)	/* timeout while setting up sensors */
+					|| (externalInterface_SensorState[activeSensorId] == UART_O2_CHECK))
+			{
+				forceMuxChannel = 1;
+			}
+
 
 			if(pmap[EXT_INTERFACE_SENSOR_CNT-1] == SENSOR_MUX) /* select next sensor if mux is connected */
 			{
@@ -1203,14 +1221,17 @@
 						forceMuxChannel = 0;
 						timeToTrigger = 100;
 						activeUartChannel = index;
-						if((pmap[index + EXT_INTERFACE_MUX_OFFSET] == SENSOR_DIGO2)
-								|| (pmap[index + EXT_INTERFACE_MUX_OFFSET] == SENSOR_CO2)
-								|| (pmap[index + EXT_INTERFACE_MUX_OFFSET] == SENSOR_GNSS))
+						switch(pmap[index + EXT_INTERFACE_MUX_OFFSET])
 						{
-							uartO2_SetChannel(activeUartChannel);
-							externalInterface_CheckBaudrate(SENSOR_MUX);
-							UART_MUX_SelectAddress(activeUartChannel);
-							externalInterface_CheckBaudrate(pmap[activeUartChannel + EXT_INTERFACE_MUX_OFFSET]);
+							case SENSOR_DIGO2: uartO2_SetChannel(activeUartChannel);
+							/* no break */
+							case SENSOR_CO2:
+							case SENSOR_GNSS: 	externalInterface_CheckBaudrate(SENSOR_MUX);
+												UART_MUX_SelectAddress(activeUartChannel);
+												externalInterface_CheckBaudrate(pmap[activeUartChannel + EXT_INTERFACE_MUX_OFFSET]);
+								break;
+							default:
+								break;
 						}
 					}
 				}