Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -rc4f3105da2ed8a7c40950588b54b79067185a3ad -rfe738f3cd0fb9a3ab1ea52e202543ab7bde56825 --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision c4f3105da2ed8a7c40950588b54b79067185a3ad) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision fe738f3cd0fb9a3ab1ea52e202543ab7bde56825) @@ -835,9 +835,9 @@ { BOOL result = FALSE; - if ( isTestingActivated() ) + if ( TRUE == isTestingActivated() ) { - result = TRUE; + result = TRUE; conductivityDataPublishInterval.ovData = interval_ms / TASK_PRIORITY_INTERVAL; conductivityDataPublishInterval.override = OVERRIDE_KEY; } @@ -857,14 +857,78 @@ { BOOL result = FALSE; - if ( isTestingActivated() ) + if ( TRUE == isTestingActivated() ) { - result = TRUE; + result = TRUE; conductivityDataPublishInterval.ovData = conductivityDataPublishInterval.ovInitData; conductivityDataPublishInterval.override = OVERRIDE_RESET; } return result; } +/*********************************************************************//** + * @brief + * The testSetConductivitySensorCalibrationTable function sets the conductivity + * sensor's calibration table + * @details Inputs: none + * @details Outputs: none + * @param data pointer to the conductivity sensor calibration table data + * structure + * @return TRUE if set was successful otherwise, FALSE + *************************************************************************/ +BOOL testSetConductivitySensorCalibrationTable( CONDUCTIVITY_SENSOR_CAL_TABLE_T* data ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + CAL_DATA_DG_COND_SENSORS_T calTableId = (CAL_DATA_DG_COND_SENSORS_T)data->calTableId; + CONDUCTIVITY_SENSORS_T sensorId = (CONDUCTIVITY_SENSORS_T)data->sensorId; + + switch( sensorId ) + { + case CONDUCTIVITYSENSORS_CPI_SENSOR: + if ( CAL_DATA_CPI_COND_SENSOR == calTableId ) + { + setCondcutivitySensorCalTable( sensorId, calTableId ); + result = TRUE; + } + break; + + case CONDUCTIVITYSENSORS_CPO_SENSOR: + if ( CAL_DATA_CPO_COND_SENSOR == calTableId ) + { + setCondcutivitySensorCalTable( sensorId, calTableId ); + result = TRUE; + } + break; + + case CONDUCTIVITYSENSORS_CD1_SENSOR: + if ( CAL_DATA_CD1_COND_SENSOR == calTableId ) + { + setCondcutivitySensorCalTable( sensorId, calTableId ); + result = TRUE; + } + break; + + case CONDUCTIVITYSENSORS_CD2_SENSOR: + if ( ( CAL_DATA_CD2_COND_SENSOR == calTableId ) || + ( CAL_DATA_CD2_COND_SENSOR_CHEM_DISINFECT == calTableId ) || + ( CAL_DATA_CD2_COND_SENSOR_FILL_BICARB_TEST == calTableId ) ) + { + setCondcutivitySensorCalTable( sensorId, calTableId ); + result = TRUE; + } + break; + + default: + // Sensor ID out of range just reject with a FALSE + break; + } + } + + return result; +} + /**@}*/ Index: firmware/App/Controllers/ConductivitySensors.h =================================================================== diff -u -rc4f3105da2ed8a7c40950588b54b79067185a3ad -rfe738f3cd0fb9a3ab1ea52e202543ab7bde56825 --- firmware/App/Controllers/ConductivitySensors.h (.../ConductivitySensors.h) (revision c4f3105da2ed8a7c40950588b54b79067185a3ad) +++ firmware/App/Controllers/ConductivitySensors.h (.../ConductivitySensors.h) (revision fe738f3cd0fb9a3ab1ea52e202543ab7bde56825) @@ -52,31 +52,38 @@ /// Enumeration of conductivity sensors. typedef enum ConductivitySensors { - CONDUCTIVITYSENSORS_CPI_SENSOR = 0, ///< Inlet water conductivity sensor - CONDUCTIVITYSENSORS_CPO_SENSOR, ///< Outlet water conductivity sensor - CONDUCTIVITYSENSORS_CD1_SENSOR, ///< Post-acid concentrate conductivity sensor - CONDUCTIVITYSENSORS_CD2_SENSOR, ///< Post-bicarbonate concentrate conductivity sensor - NUM_OF_CONDUCTIVITY_SENSORS ///< Number of conductivity sensors + CONDUCTIVITYSENSORS_CPI_SENSOR = 0, ///< Inlet water conductivity sensor + CONDUCTIVITYSENSORS_CPO_SENSOR, ///< Outlet water conductivity sensor + CONDUCTIVITYSENSORS_CD1_SENSOR, ///< Post-acid concentrate conductivity sensor + CONDUCTIVITYSENSORS_CD2_SENSOR, ///< Post-bicarbonate concentrate conductivity sensor + NUM_OF_CONDUCTIVITY_SENSORS ///< Number of conductivity sensors } CONDUCTIVITY_SENSORS_T; /// Conductivity data struct. typedef struct { - F32 roRejectionRatio; ///< RO rejection ratio - F32 cpi; ///< CPi conductivity sensor value - F32 cpo; ///< CPo conductivity sensor value - F32 cd1; ///< CD1 conductivity sensor value - F32 cd2; ///< CD2 conductivity sensor value - F32 cpiRaw; ///< CPi raw conductivity sensor value (without 2% temperature compensated) - F32 cpoRaw; ///< CPo raw conductivity sensor value (without 2% temperature compensated) - F32 cd1Raw; ///< CD1 raw conductivity sensor value (without 2% temperature compensated) - F32 cd2Raw; ///< CD2 raw conductivity sensor value (without 2% temperature compensated) - U32 cpiSensorStatus; ///< CPi conductivity sensor status - U32 cpoSensorStatus; ///< CPo conductivity sensor status - U32 cd1SensorStatus; ///< CD1 conductivity sensor status - U32 cd2SensorStatus; ///< CD2 conductivity sensor status + F32 roRejectionRatio; ///< RO rejection ratio + F32 cpi; ///< CPi conductivity sensor value + F32 cpo; ///< CPo conductivity sensor value + F32 cd1; ///< CD1 conductivity sensor value + F32 cd2; ///< CD2 conductivity sensor value + F32 cpiRaw; ///< CPi raw conductivity sensor value (without 2% temperature compensated) + F32 cpoRaw; ///< CPo raw conductivity sensor value (without 2% temperature compensated) + F32 cd1Raw; ///< CD1 raw conductivity sensor value (without 2% temperature compensated) + F32 cd2Raw; ///< CD2 raw conductivity sensor value (without 2% temperature compensated) + U32 cpiSensorStatus; ///< CPi conductivity sensor status + U32 cpoSensorStatus; ///< CPo conductivity sensor status + U32 cd1SensorStatus; ///< CD1 conductivity sensor status + U32 cd2SensorStatus; ///< CD2 conductivity sensor status } CONDUCTIVITY_DATA_T; +/// Conductivity sensor calibration table selection structure +typedef struct +{ + U32 sensorId; ///< Sensor ID. + U32 calTableId; ///< Calibration table ID. +} CONDUCTIVITY_SENSOR_CAL_TABLE_T; + // ********** public function prototypes ********** void initConductivitySensors( void ); @@ -98,6 +105,7 @@ BOOL testSetConductivityDataPublishIntervalOverride( U32 interval_ms ); BOOL testResetConductivityDataPublishIntervalOverride( void ); +BOOL testSetConductivitySensorCalibrationTable( CONDUCTIVITY_SENSOR_CAL_TABLE_T* data ); /**@}*/ Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -re58e3385eaf5e920335f963937b2e9f654a32cfe -rfe738f3cd0fb9a3ab1ea52e202543ab7bde56825 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision e58e3385eaf5e920335f963937b2e9f654a32cfe) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision fe738f3cd0fb9a3ab1ea52e202543ab7bde56825) @@ -1334,6 +1334,10 @@ handleTestDGSetLoadCellsTareValues( message ); break; + case MSG_ID_DG_SET_COND_SENSOR_CAL_TABLE: + handleTestDGSetConductivitySensorCalTable( message ); + break; + default: // TODO - unrecognized message ID received - ignore break; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -ra0c1350fb3266a722f91298dde1e97876081cd2e -rfe738f3cd0fb9a3ab1ea52e202543ab7bde56825 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision a0c1350fb3266a722f91298dde1e97876081cd2e) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision fe738f3cd0fb9a3ab1ea52e202543ab7bde56825) @@ -4713,4 +4713,30 @@ sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, status ); } +/*********************************************************************//** + * @brief + * The handleTestDGSetConductivitySensorCalTable function handles a request to + * set the conductivity sensor's calibration table. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestDGSetConductivitySensorCalTable( MESSAGE_T* message ) +{ + BOOL status = FALSE; + + if ( sizeof( CONDUCTIVITY_SENSOR_CAL_TABLE_T ) == message->hdr.payloadLen ) + { + CONDUCTIVITY_SENSOR_CAL_TABLE_T payload; + + memcpy( &payload, message->payload, sizeof( CONDUCTIVITY_SENSOR_CAL_TABLE_T ) ); + + testSetConductivitySensorCalibrationTable( &payload ); + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, status ); +} + /**@}*/ Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -re58e3385eaf5e920335f963937b2e9f654a32cfe -rfe738f3cd0fb9a3ab1ea52e202543ab7bde56825 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision e58e3385eaf5e920335f963937b2e9f654a32cfe) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision fe738f3cd0fb9a3ab1ea52e202543ab7bde56825) @@ -494,6 +494,9 @@ // MSG_ID_DG_SET_LOAD_CELLS_TARE_VALUES void handleTestDGSetLoadCellsTareValues( MESSAGE_T* message ); +// MSG_ID_DG_SET_COND_SENSOR_CAL_TABLE +void handleTestDGSetConductivitySensorCalTable( MESSAGE_T* message ); + /**@}*/ #endif