Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -r16341579abe0211c95cb541e40143f0e4670a8cd -r73f039b34276c425ff0f7227f3c5a7733ca0deef --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 16341579abe0211c95cb541e40143f0e4670a8cd) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 73f039b34276c425ff0f7227f3c5a7733ca0deef) @@ -94,12 +94,13 @@ static OVERRIDE_F32_T compensatedConductivityValues[ NUM_OF_CONDUCTIVITY_SENSORS ]; ///< Latest compensated conductivity values. static F32 rawConductivityValues[ NUM_OF_CONDUCTIVITY_SENSORS ]; ///< Latest raw conductivity values. static F32 roRejectionRatio; ///< Latest RO rejection ratio. +static U32 sensorStatus[ NUM_OF_CONDUCTIVITY_SENSORS ]; ///< Latest sensor hardware status. static OVERRIDE_U32_T conductivityDataPublishInterval = { COND_SENSOR_REPORT_PERIOD, COND_SENSOR_REPORT_PERIOD, 0, 0 }; ///< Conductivity sensors publish time interval override. static U32 conductivityDataPublicationTimerCounter; ///< Conductivity sensors data publish timer counter. -static BOOL packageStarted = FALSE; ///< Flag to indicate the start of a package measurement data. +static BOOL packageStarted; ///< Flag to indicate the start of a package measurement data. static U08 packageIndex; ///< Current package measurement data bytes index. static U08 package[ 50 ]; ///< Storage of package bytes until ready to process. static DG_COND_SENSORS_CAL_RECORD_T condSensorsCalRecord; ///< Conductivity sensors' calibration record. @@ -125,21 +126,22 @@ void initConductivitySensors( void ) { U32 i; + roRejectionRatio = 0.0; packageIndex = 0U; + packageStarted = FALSE; conductivityDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; for ( i = 0; i < NUM_OF_CONDUCTIVITY_SENSORS; i++ ) { - readCount[ i ] = 0; - internalErrorCount[ i ] = 0; + readCount[ i ] = 0; + internalErrorCount[ i ] = 0; + rawConductivityValues[ i ] = 0.0; - compensatedConductivityValues[ i ].data = 0.0; - compensatedConductivityValues[ i ].ovData = 0.0; + compensatedConductivityValues[ i ].data = 0.0; + compensatedConductivityValues[ i ].ovData = 0.0; compensatedConductivityValues[ i ].ovInitData = 0.0; - compensatedConductivityValues[ i ].override = OVERRIDE_RESET; - - rawConductivityValues[ i ] = 0.0; + compensatedConductivityValues[ i ].override = OVERRIDE_RESET; } setFPGACPiProbeType( COND_CPI_SENSOR_PROBE_TYPE ); @@ -193,6 +195,11 @@ data.cd1Raw = rawConductivityValues[ CONDUCTIVITYSENSORS_CD1_SENSOR ]; data.cd2Raw = rawConductivityValues[ CONDUCTIVITYSENSORS_CD2_SENSOR ]; + data.cpiSensorStatus = sensorStatus[ CONDUCTIVITYSENSORS_CPI_SENSOR ]; + data.cpoSensorStatus = sensorStatus[ CONDUCTIVITYSENSORS_CPO_SENSOR ]; + data.cd1SensorStatus = sensorStatus[ CONDUCTIVITYSENSORS_CD1_SENSOR ]; + data.cd2SensorStatus = sensorStatus[ CONDUCTIVITYSENSORS_CD2_SENSOR ]; + broadcastData( MSG_ID_DG_CONDUCTIVITY_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&data, sizeof( CONDUCTIVITY_DATA_T ) ); } } @@ -348,9 +355,9 @@ { if ( ( readCount[ sensorId ] != fpgaReadCount ) ) { - F32 const temperature = getTemperatureValue( associateTempSensor[ sensorId ] ); - F32 const conductivity = ( (F32)( fgpaRead ) / COND_SENSOR_DECIMAL_CONVERSION ); - F32 const compensatedCond = calcCompensatedConductivity( conductivity, temperature ); + F32 temperature = getTemperatureValue( associateTempSensor[ sensorId ] ); + F32 conductivity = ( (F32)( fgpaRead ) / COND_SENSOR_DECIMAL_CONVERSION ); + F32 compensatedCond = calcCompensatedConductivity( conductivity, temperature ); readCount[ sensorId ] = fpgaReadCount; internalErrorCount[ sensorId ] = 0; @@ -422,7 +429,8 @@ static void processMeasurementDataPackage( U32 sensorId ) { EMSTAT_VARIABLE_T const * const measurementPtr = (EMSTAT_VARIABLE_T *)&package; - U32 status = hexStrToDec( (U08 *)&measurementPtr->status, sizeof( measurementPtr->status ) ); + U32 status = hexStrToDec( (U08 *)&measurementPtr->status, sizeof( measurementPtr->status ) ); + sensorStatus[ sensorId ] = status; if ( EMSTAT_PICO_GOOD_STATUS == status ) { @@ -441,8 +449,9 @@ } else { - // TODO ucomment this looks like we get bad status several times - //checkPersistentAlarm( ALARM_ID_DG_CONDUCTIVITY_SENSOR_BAD_STATUS, TRUE, status, EMSTAT_PICO_GOOD_STATUS ); +#ifndef DISABLE_COND_STATUS_CHECK + checkPersistentAlarm( ALARM_ID_DG_CONDUCTIVITY_SENSOR_BAD_STATUS, TRUE, status, EMSTAT_PICO_GOOD_STATUS ); +#endif } if ( EMSTAT_PICO_TIMING_NOT_MET_STATUS == status )