Mercurial > public > ostc4
diff Small_CPU/Src/externalInterface.c @ 1081:1b38d7b8da35 Icon_Integration
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.
| author | Ideenmodellierer |
|---|---|
| date | Sun, 15 Mar 2026 21:28:53 +0100 |
| parents | b02311fbb1e1 |
| children |
line wrap: on
line diff
--- 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; - } } }
