comparison 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
comparison
equal deleted inserted replaced
968:b9a1710522b1 969:81049905d829
1014 { 1014 {
1015 case EXT_INTERFACE_AUTODETECT: externalAutoDetect = DETECTION_INIT; 1015 case EXT_INTERFACE_AUTODETECT: externalAutoDetect = DETECTION_INIT;
1016 for(index = 0; index < 3; index++) 1016 for(index = 0; index < 3; index++)
1017 { 1017 {
1018 SensorMap[index] = SENSOR_SEARCH; 1018 SensorMap[index] = SENSOR_SEARCH;
1019 }
1020 break;
1021 case EXT_INTERFACE_CO2_CALIB: for(index = 0; index < EXT_INTERFACE_SENSOR_CNT; index++)
1022 {
1023 if(SensorMap[index] == SENSOR_CO2)
1024 {
1025 externalInterface_SensorState[index] = UART_CO2_CALIBRATE;
1026 break;
1027 }
1028 } 1019 }
1029 break; 1020 break;
1030 case EXT_INTERFACE_COPY_SENSORMAP: if(externalAutoDetect == DETECTION_OFF) 1021 case EXT_INTERFACE_COPY_SENSORMAP: if(externalAutoDetect == DETECTION_OFF)
1031 { 1022 {
1032 memcpy(SensorMap, MasterSensorMap, sizeof(MasterSensorMap)); 1023 memcpy(SensorMap, MasterSensorMap, sizeof(MasterSensorMap));
1047 { 1038 {
1048 externalInterfaceMuxReqIntervall = 0xFFFF; 1039 externalInterfaceMuxReqIntervall = 0xFFFF;
1049 } 1040 }
1050 } 1041 }
1051 break; 1042 break;
1043 case EXT_INTERFACE_CO2_CALIB: index = (Cmd >> 8) & 0x000F;
1044 if(SensorMap[index] == SENSOR_CO2M)
1045 {
1046 index = Mux2ADCMap[index];
1047 }
1048 if(SensorMap[index] == SENSOR_CO2)
1049 {
1050 externalInterface_SensorState[index] = UART_CO2_CALIBRATE;
1051 }
1052 break;
1053 case EXT_INTERFACE_O2_INDICATE: index = (Cmd >> 8) & 0x000F;
1054 if(SensorMap[index] == SENSOR_DIGO2M)
1055 {
1056 index = Mux2ADCMap[index];
1057 }
1058 if(SensorMap[index] == SENSOR_DIGO2)
1059 {
1060 externalInterface_SensorState[index] = UART_O2_CHECK;
1061 }
1062 break;
1063
1052 default: 1064 default:
1053 break; 1065 break;
1054 } 1066 }
1055 if(cmdLength != 0) 1067 if(cmdLength != 0)
1056 { 1068 {
1190 break; 1202 break;
1191 default: 1203 default:
1192 break; 1204 break;
1193 } 1205 }
1194 } 1206 }
1207 if((externalInterface_SensorState[activeSensorId] == UART_CO2_SETUP) /* timeout while setting up sensors */
1208 || (externalInterface_SensorState[activeSensorId] == UART_O2_CHECK))
1209 {
1210 forceMuxChannel = 1;
1211 }
1212
1195 1213
1196 if(pmap[EXT_INTERFACE_SENSOR_CNT-1] == SENSOR_MUX) /* select next sensor if mux is connected */ 1214 if(pmap[EXT_INTERFACE_SENSOR_CNT-1] == SENSOR_MUX) /* select next sensor if mux is connected */
1197 { 1215 {
1198 if(activeUartChannel < MAX_MUX_CHANNEL) 1216 if(activeUartChannel < MAX_MUX_CHANNEL)
1199 { 1217 {
1201 if((index != activeUartChannel) || (forceMuxChannel)) 1219 if((index != activeUartChannel) || (forceMuxChannel))
1202 { 1220 {
1203 forceMuxChannel = 0; 1221 forceMuxChannel = 0;
1204 timeToTrigger = 100; 1222 timeToTrigger = 100;
1205 activeUartChannel = index; 1223 activeUartChannel = index;
1206 if((pmap[index + EXT_INTERFACE_MUX_OFFSET] == SENSOR_DIGO2) 1224 switch(pmap[index + EXT_INTERFACE_MUX_OFFSET])
1207 || (pmap[index + EXT_INTERFACE_MUX_OFFSET] == SENSOR_CO2)
1208 || (pmap[index + EXT_INTERFACE_MUX_OFFSET] == SENSOR_GNSS))
1209 { 1225 {
1210 uartO2_SetChannel(activeUartChannel); 1226 case SENSOR_DIGO2: uartO2_SetChannel(activeUartChannel);
1211 externalInterface_CheckBaudrate(SENSOR_MUX); 1227 /* no break */
1212 UART_MUX_SelectAddress(activeUartChannel); 1228 case SENSOR_CO2:
1213 externalInterface_CheckBaudrate(pmap[activeUartChannel + EXT_INTERFACE_MUX_OFFSET]); 1229 case SENSOR_GNSS: externalInterface_CheckBaudrate(SENSOR_MUX);
1230 UART_MUX_SelectAddress(activeUartChannel);
1231 externalInterface_CheckBaudrate(pmap[activeUartChannel + EXT_INTERFACE_MUX_OFFSET]);
1232 break;
1233 default:
1234 break;
1214 } 1235 }
1215 } 1236 }
1216 } 1237 }
1217 } 1238 }
1218 else 1239 else