# HG changeset patch # User Ideenmodellierer # Date 1773606533 -3600 # Node ID 1b38d7b8da35f4bbab1e737b461082e60274eede # Parent b02311fbb1e1f3f947daf78f042e3d89d109b1b8 Send sensor data cyclic: In the previous version the sensor data which had been updated at last was send to the main CPU. With the introduction of the hud a second device is sending sensor data information => in case of fast sensor data updated it could happen that a sensor data record was never transmitted. To avoid this the sensor data of all sensor slots is now transmitted on a cyclic basis. diff -r b02311fbb1e1 -r 1b38d7b8da35 Small_CPU/Inc/externalInterface.h --- a/Small_CPU/Inc/externalInterface.h Sun Mar 08 21:08:33 2026 +0100 +++ b/Small_CPU/Inc/externalInterface.h Sun Mar 15 21:28:53 2026 +0100 @@ -101,6 +101,7 @@ void externalInterface_SetHUDSequence(uint8_t* pSequence, uint8_t brightness); uint8_t externalInterface_GetSensorData(uint8_t sensorId, uint8_t* pDataStruct); void externalInterface_SetSensorData(uint8_t sensorId, uint8_t* pDataStruct); +void externalInterface_ResetSensorData(uint8_t sensorId); void externalInface_SetSensorMap(uint8_t* pMap); uint8_t* externalInterface_GetSensorMapPointer(uint8_t finalMap); void externalInterface_AutodetectSensor(void); diff -r b02311fbb1e1 -r 1b38d7b8da35 Small_CPU/Src/externalInterface.c --- a/Small_CPU/Src/externalInterface.c Sun Mar 08 21:08:33 2026 +0100 +++ b/Small_CPU/Src/externalInterface.c Sun Mar 15 21:28:53 2026 +0100 @@ -547,11 +547,25 @@ uint8_t externalInterface_GetSensorData(uint8_t sensorId, uint8_t* pDataStruct) { + static uint8_t cyclingSensorId = 0; uint8_t index = 0; uint8_t localId = sensorId; if(localId == 0xFF) { - localId = lastSensorDataId; + if(lastSensorDataId != 0xFF) + { + localId = lastSensorDataId; + lastSensorDataId = 0xFF; + } + else + { + localId = cyclingSensorId; + cyclingSensorId++; + if(cyclingSensorId == EXT_INTERFACE_SENSOR_CNT) + { + cyclingSensorId = 0; + } + } } if((pDataStruct != NULL) && (localId <= EXT_INTERFACE_SENSOR_CNT)) @@ -576,34 +590,33 @@ return localId; } +void externalInterface_ResetSensorData(uint8_t sensorId) +{ + if(sensorId < EXT_INTERFACE_SENSOR_CNT) + { + memset(&sensorData[sensorId],0,EXTIF_SENSOR_INFO_SIZE); + } +} void externalInterface_SetSensorData(uint8_t sensorId, uint8_t* pDataStruct) { uint8_t index = 0; - if(pDataStruct != NULL) + if((pDataStruct != NULL) && (sensorId < EXT_INTERFACE_SENSOR_CNT)) { - if((sensorId != 0xFF) && (sensorId < EXT_INTERFACE_SENSOR_CNT)) + externalInterface_CopySensorData(sensorId, &sensorData[sensorId][0], pDataStruct); + lastSensorDataId = sensorId; + if(sensorId >= MAX_ADC_CHANNEL) { - externalInterface_CopySensorData(sensorId, &sensorData[sensorId][0], pDataStruct); - lastSensorDataId = sensorId; - if(sensorId >= MAX_ADC_CHANNEL) + for(index = 0; index < MAX_ADC_CHANNEL; index++) { - for(index = 0; index < MAX_ADC_CHANNEL; index++) + if(Mux2ADCMap[index] == sensorId) { - if(Mux2ADCMap[index] == sensorId) - { - externalInterface_CopySensorData(index, &sensorData[index][0], pDataStruct); - lastSensorDataId = index; - break; - } + externalInterface_CopySensorData(index, &sensorData[index][0], pDataStruct); + lastSensorDataId = index; + break; } } } - else - { - memset(&sensorData,0,EXTIF_SENSOR_INFO_SIZE * EXT_INTERFACE_SENSOR_CNT); - lastSensorDataId = 0xFF; - } } } diff -r b02311fbb1e1 -r 1b38d7b8da35 Small_CPU/Src/uartProtocol_O2.c --- a/Small_CPU/Src/uartProtocol_O2.c Sun Mar 08 21:08:33 2026 +0100 +++ b/Small_CPU/Src/uartProtocol_O2.c Sun Mar 15 21:28:53 2026 +0100 @@ -103,7 +103,7 @@ if(localComState == UART_O2_INIT) { memset((char*) &tmpSensorDataDiveO2, 0, sizeof(tmpSensorDataDiveO2)); - externalInterface_SetSensorData(0xFF,(uint8_t*)&tmpSensorDataDiveO2); + externalInterface_ResetSensorData(activeSensor + EXT_INTERFACE_MUX_OFFSET); localComState = UART_O2_CHECK; lastComState = UART_O2_CHECK;