Mercurial > public > ostc4
diff Small_CPU/Src/externalInterface.c @ 1062:785772303f9c Icon_Integration
Added pressure sensors in Sentnel mode:
The Red Head/Provide pressure and tempstick information on a uart channel together with the O2 data. The support for receiving pressure data has been added to the Sentinel protocol function.
| author | Ideenmodellierer |
|---|---|
| date | Tue, 10 Feb 2026 19:36:05 +0100 |
| parents | d9290c76b840 |
| children | a3f42192da0f |
line wrap: on
line diff
--- a/Small_CPU/Src/externalInterface.c Sat Feb 07 21:39:40 2026 +0100 +++ b/Small_CPU/Src/externalInterface.c Tue Feb 10 19:36:05 2026 +0100 @@ -83,6 +83,8 @@ static uint16_t externalCO2Status = 0; static float externalCO2Scale = 0.0; +static uint8_t externalBottleBar[PRESSURE_BOTTLE_CNT] = {0,0}; + static uint8_t lastSensorDataId = 0; static SSensorDataDiveO2 sensorDataDiveO2[EXT_INTERFACE_SENSOR_CNT]; static externalInterfaceAutoDetect_t externalAutoDetect = DETECTION_OFF; @@ -139,6 +141,8 @@ externalCO2SignalStrength = 0; externalCO2Status = 0; externalCO2Scale = 0.0; + externalBottleBar[0] = 0; + externalBottleBar[1] = 0; externalAutoDetect = DETECTION_OFF; for(index = 0; index < MAX_ADC_CHANNEL; index++) @@ -509,6 +513,25 @@ return externalCO2Status; } +void externalInterface_SetBottlePressure(uint8_t bottle, uint8_t bar) +{ + if(bottle < PRESSURE_BOTTLE_CNT) + { + externalBottleBar[bottle] = bar; + } +} + +uint8_t externalInterface_GetBottlePressure(uint8_t bottle) +{ + uint8_t ret = 0; + + if(bottle < PRESSURE_BOTTLE_CNT) + { + ret = externalBottleBar[bottle]; + } + return ret; +} + uint8_t externalInterface_GetSensorData(uint8_t sensorId, uint8_t* pDataStruct) { @@ -991,6 +1014,10 @@ if(cntUARTSensor != 0) { externalInterfaceMuxReqIntervall = REQUEST_INT_SENSOR_MS / cntUARTSensor; + if(foundSensorMap[0] == SENSOR_SENTINELM) /* special case: Sentinel sends combined data */ + { + externalInterfaceMuxReqIntervall = 4000; + } } } memcpy(SensorMap, foundSensorMap, sizeof(foundSensorMap)); @@ -1023,7 +1050,7 @@ memcpy(SensorMap, MasterSensorMap, sizeof(MasterSensorMap)); for(index = 0; index < EXT_INTERFACE_SENSOR_CNT; index++) { - if((SensorMap[index] == SENSOR_DIGO2) || (SensorMap[index] == SENSOR_CO2) || (SensorMap[index] == SENSOR_GNSS)) + if((SensorMap[index] == SENSOR_DIGO2) || (SensorMap[index] == SENSOR_CO2) || (SensorMap[index] == SENSOR_GNSS) || (SensorMap[index] == SENSOR_SENTINEL)) { cntUARTSensor++; } @@ -1033,6 +1060,11 @@ { externalInterfaceMuxReqIntervall = REQUEST_INT_SENSOR_MS / cntUARTSensor; activeUartChannel = 0xFF; + + if(SensorMap[0] == SENSOR_SENTINELM) /* special case: Sentinel sends compined data */ + { + externalInterfaceMuxReqIntervall = 4000; + } } else { @@ -1166,7 +1198,7 @@ timeToTrigger = 1; retryRequest = 0; } - else if(((retryRequest == 0) /* timeout or error */ + else if(((retryRequest == 0) && (pmap[activeUartChannel + EXT_INTERFACE_MUX_OFFSET] != SENSOR_SENTINEL) /* timeout or error */ && (((time_elapsed_ms(lastRequestTick,tick) > (TIMEOUT_SENSOR_ANSWER)) && (externalInterface_SensorState[activeSensorId] != UART_O2_IDLE)) /* retry if no answer after half request interval */ || (externalInterface_SensorState[activeSensorId] == UART_O2_ERROR)))) { @@ -1189,7 +1221,8 @@ || (externalInterface_SensorState[activeSensorId] == UART_O2_REQ_RAW) || (externalInterface_SensorState[activeSensorId] == UART_CO2_OPERATING) || (externalInterface_SensorState[activeSensorId] == UART_GNSS_GET_PVT) - || (externalInterface_SensorState[activeSensorId] == UART_GNSS_GET_SAT)) + || (externalInterface_SensorState[activeSensorId] == UART_GNSS_GET_SAT) + || (externalInterface_SensorState[activeSensorId] == UART_SENTINEL_OPERATING)) { forceMuxChannel = 1; externalInterface_SensorState[activeSensorId] = UART_O2_IDLE; @@ -1200,6 +1233,12 @@ case SENSOR_CO2: externalInterface_SetCO2Value(0.0); externalInterface_SetCO2State(0); break; + case SENSOR_SENTINEL: setExternalInterfaceChannel(0,0.0); + setExternalInterfaceChannel(1,0.0); + setExternalInterfaceChannel(2,0.0); + externalInterface_SetBottlePressure(0,0); + externalInterface_SetBottlePressure(1,0); + break; default: break; } @@ -1264,13 +1303,4 @@ } } } - -#if 0 -#ifdef ENABLE_SENTINEL_MODE - if(externalInterface_GetUARTProtocol() & (EXT_INTERFACE_UART_SENTINEL)) - { - UART_HandleSentinelData(); - } -#endif -#endif }
