Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -re6a5b70e931c5447c87c79b83e8acd9834e84bec -rcaa8c39a7f29badacdcc7a85ecc65d86d48c5978 --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision e6a5b70e931c5447c87c79b83e8acd9834e84bec) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision caa8c39a7f29badacdcc7a85ecc65d86d48c5978) @@ -50,7 +50,6 @@ #define MAX_COND_SENSOR_CPI_WARNING_HIGH_US_PER_CM 2000.0F ///< Maximum allowed high conductivity value in uS/cm. #define MIN_COND_SENSOR_CPI_WARNING_HIGH_US_PER_CM 1990.0F ///< Minimum allowed high conductivity value in uS/cm. -#define MAX_COND_SENSOR_CPI_WARNING_LOW_US_PER_CM 200.0F ///< Maximum allowed low conductivity value in uS/cm. #define MIN_COND_SENSOR_CPI_WARNING_LOW_US_PER_CM 220.0F ///< Minimum allowed low conductivity value in uS/cm. #define MAX_RO_ONLY_COND_SENSOR_CPI_HIGH_US_PER_CM 100.0F ///< Maximum RO only mode high conductivity value in uS/cm. @@ -148,6 +147,7 @@ static DG_COND_SENSORS_CAL_RECORD_T condSensorsCalRecord; ///< Conductivity sensors' calibration record. static DG_COND_SENSORS_TEMP_COMP_CAL_RECORD_T condSensorsTempCompCalRecord; ///< Conductivity sensors' temperature compensation calibration record. static CAL_DATA_DG_COND_SENSORS_T condSensorCalTable[ NUM_OF_CONDUCTIVITY_SENSORS ]; ///< Conductivity sensors calibration table. +static F32 minInletWaterCondAlarmLimitUSPCM; ///< Min inlet water conductivity alarm limit in uS/cm. // ********** private function prototypes ********** @@ -171,8 +171,9 @@ void initConductivitySensors( void ) { U08 i; - roRejectionRatio = 0.0F; - condDataPublishCounter = DATA_PUBLISH_COUNTER_START_COUNT; + roRejectionRatio = 0.0F; + condDataPublishCounter = DATA_PUBLISH_COUNTER_START_COUNT; + minInletWaterCondAlarmLimitUSPCM = 0.0F; for ( i = 0; i < NUM_OF_CONDUCTIVITY_SENSORS; i++ ) { @@ -351,7 +352,7 @@ if ( FALSE == isROOnlyModeEnabled() ) { - isConductTooLow = ( conductivity < MAX_COND_SENSOR_CPI_WARNING_LOW_US_PER_CM ? TRUE : FALSE ); + isConductTooLow = ( conductivity < minInletWaterCondAlarmLimitUSPCM ? TRUE : FALSE ); isConductTooHigh = ( conductivity > MAX_COND_SENSOR_CPI_WARNING_HIGH_US_PER_CM ? TRUE : FALSE ); } else @@ -372,7 +373,7 @@ } // Per PRS 403 - checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_CONDUCTIVITY_IN_LOW_RANGE, isConductTooLow, conductivity, MAX_COND_SENSOR_CPI_WARNING_LOW_US_PER_CM ); + checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_CONDUCTIVITY_IN_LOW_RANGE, isConductTooLow, conductivity, minInletWaterCondAlarmLimitUSPCM ); if ( TRUE == isAlarmActive( ALARM_ID_DG_INLET_WATER_CONDUCTIVITY_IN_HIGH_RANGE ) ) { @@ -399,7 +400,7 @@ // Per PRS 403 checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_COND_TOO_HIGH, isConductTooHigh, conductivity, MAX_COND_SENSOR_CPI_WARNING_HIGH_US_PER_CM ); // Per PRS 404 - checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_COND_TOO_LOW, isConductTooLow, conductivity, MAX_COND_SENSOR_CPI_WARNING_LOW_US_PER_CM ); + checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_COND_TOO_LOW, isConductTooLow, conductivity, minInletWaterCondAlarmLimitUSPCM ); break; default: @@ -411,10 +412,10 @@ else { // VPI is closed - clear all alarms - checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_CONDUCTIVITY_IN_LOW_RANGE, FALSE, conductivity, MAX_COND_SENSOR_CPI_WARNING_LOW_US_PER_CM ); + checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_CONDUCTIVITY_IN_LOW_RANGE, FALSE, conductivity, minInletWaterCondAlarmLimitUSPCM ); checkPersistentAlarm( ALARM_ID_DG_INLET_WATER_CONDUCTIVITY_IN_HIGH_RANGE, FALSE, conductivity, MAX_COND_SENSOR_CPI_WARNING_HIGH_US_PER_CM ); checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_COND_TOO_HIGH, FALSE, conductivity, MAX_COND_SENSOR_CPI_WARNING_HIGH_US_PER_CM ); - checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_COND_TOO_LOW, FALSE, conductivity, MAX_COND_SENSOR_CPI_WARNING_LOW_US_PER_CM ); + checkPersistentAlarm( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_COND_TOO_LOW, FALSE, conductivity, minInletWaterCondAlarmLimitUSPCM ); } } @@ -450,6 +451,20 @@ /*********************************************************************//** * @brief + * The setMinInletWaterConductivityAlarmLimitUSPCM function sets the min + * inlet water conductivity alarm limit in uS/cm. + * @details Inputs: none + * @details Outputs: minInletWaterConductivityAlarmLimitUSPCM + * @param conductivity value + * @return none + *************************************************************************/ +void setMinInletWaterConductivityAlarmLimitUSPCM( F32 valueUSPM ) +{ + minInletWaterCondAlarmLimitUSPCM = valueUSPM; +} + +/*********************************************************************//** + * @brief * The getConductivityValue function gets the compensated conductivity * value for a given conductivity sensor id. * @details Inputs: compensatedConductivityValues[] Index: firmware/App/Controllers/ConductivitySensors.h =================================================================== diff -u -r721bd715bef050760e5c0f79044d1cba642c8354 -rcaa8c39a7f29badacdcc7a85ecc65d86d48c5978 --- firmware/App/Controllers/ConductivitySensors.h (.../ConductivitySensors.h) (revision 721bd715bef050760e5c0f79044d1cba642c8354) +++ firmware/App/Controllers/ConductivitySensors.h (.../ConductivitySensors.h) (revision caa8c39a7f29badacdcc7a85ecc65d86d48c5978) @@ -94,6 +94,7 @@ void checkInletWaterConductivity( void ); void setCondcutivitySensorCalTable( CONDUCTIVITY_SENSORS_T sensor, CAL_DATA_DG_COND_SENSORS_T calTable ); +void setMinInletWaterConductivityAlarmLimitUSPCM( F32 valueUSPM ); F32 getConductivityValue( U32 sensorId ); Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -r721bd715bef050760e5c0f79044d1cba642c8354 -rcaa8c39a7f29badacdcc7a85ecc65d86d48c5978 --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 721bd715bef050760e5c0f79044d1cba642c8354) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision caa8c39a7f29badacdcc7a85ecc65d86d48c5978) @@ -272,6 +272,8 @@ sendPOSTFinalResult( TRUE ); // Request whether we are in the RO only mode from UI requestROOnlyModeStatusFromUI(); + // Request the DG institutional values from HD + sendDGInstitutionalValuesRequestToHD(); // Go to standby mode requestNewOperationMode( DG_MODE_STAN ); break; Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r7acc14a8f6eeaf6b26757fc2b5d2f6fc7edbdcec -rcaa8c39a7f29badacdcc7a85ecc65d86d48c5978 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 7acc14a8f6eeaf6b26757fc2b5d2f6fc7edbdcec) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision caa8c39a7f29badacdcc7a85ecc65d86d48c5978) @@ -264,7 +264,6 @@ { pendingStartDGRequest = FALSE; signalSyncToHD(); - sendMaxRORejectionRatioRequestToHD(); requestNewOperationMode( DG_MODE_GENE ); } else if ( TRUE == pendingStartDGFlushRequest ) Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r27792ea3eb8f23c8f0432620619fad4f654bdbe3 -rcaa8c39a7f29badacdcc7a85ecc65d86d48c5978 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 27792ea3eb8f23c8f0432620619fad4f654bdbe3) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision caa8c39a7f29badacdcc7a85ecc65d86d48c5978) @@ -977,8 +977,8 @@ handleSendDGServiceRecordToHD( message ); break; - case MSG_ID_HD_MAX_RO_REJ_RATIO_FROM_HD_INSTIT_RECORD_RESPONSE: - handleMaxRORejectionResponseFromHDInstitRecord( message ); + case MSG_ID_DG_INSTIT_VALUES_FROM_HD_INSTIT_RECORD_RESPONSE: + handleDGInstitutionalValuesResponseFromHDInstitRecord( message ); break; // NOTE: This case must be last Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r27792ea3eb8f23c8f0432620619fad4f654bdbe3 -rcaa8c39a7f29badacdcc7a85ecc65d86d48c5978 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 27792ea3eb8f23c8f0432620619fad4f654bdbe3) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision caa8c39a7f29badacdcc7a85ecc65d86d48c5978) @@ -1989,19 +1989,19 @@ /*********************************************************************//** * @brief - * The sendMaxRORejectionRatioRequestToHD function handles sending the max RO - * rejection ratio request to HD + * The sendDGInstitutionalValuesRequestToHD function handles sending the + * request to the DG institutional values from HD * @details Inputs: none * @details Outputs: none * @return none *************************************************************************/ -void sendMaxRORejectionRatioRequestToHD( void ) +void sendDGInstitutionalValuesRequestToHD( void ) { MESSAGE_T msg; // Create a message record blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_DG_MAX_RO_REJ_RATIO_FROM_HD_INSTIT_RECORD_REQUEST; + msg.hdr.msgID = MSG_ID_DG_INSTIT_VALUES_FROM_HD_INSTIT_RECORD_REQUEST; msg.hdr.payloadLen = 0; // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer @@ -2010,23 +2010,24 @@ /*********************************************************************//** * @brief - * The handleMaxRORejectionResponseFromHDInstitRecord function handles receiving - * max RO rejection ratio response from HD institutional record + * The handleDGInstitutionalValuesResponseFromHDInstitRecord function handles + * receiving DG institutional values from HD institutional record * @details Inputs: none * @details Outputs: message handled * @param message a pointer to the message to handle * @return none *************************************************************************/ -void handleMaxRORejectionResponseFromHDInstitRecord( MESSAGE_T* message ) +void handleDGInstitutionalValuesResponseFromHDInstitRecord( MESSAGE_T* message ) { BOOL status = FALSE; - if ( message->hdr.payloadLen == sizeof(F32) ) + if ( message->hdr.payloadLen == sizeof(DG_INSTITUTIONAL_VALUES_T) ) { - F32 roRejectionRatio; + DG_INSTITUTIONAL_VALUES_T institValues; - memcpy( &roRejectionRatio, message->payload, sizeof(F32) ); - setMaxRORejectionRatio( roRejectionRatio ); + memcpy( &institValues, message->payload, sizeof(DG_INSTITUTIONAL_VALUES_T) ); + setMaxRORejectionRatio( institValues.maxRORejectionRatio ); + setMinInletWaterConductivityAlarmLimitUSPCM( institValues.minInletWaterCondAlarmLimitUSPCM ); status = TRUE; } Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r27792ea3eb8f23c8f0432620619fad4f654bdbe3 -rcaa8c39a7f29badacdcc7a85ecc65d86d48c5978 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 27792ea3eb8f23c8f0432620619fad4f654bdbe3) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision caa8c39a7f29badacdcc7a85ecc65d86d48c5978) @@ -201,11 +201,11 @@ // MSG_ID_DG_START_STOP_NOCTURNAL_HEAT_DISINFECT void handleStartStopDGPassiveCoolHeatDisifnect( MESSAGE_T* message ); -// MSG_ID_DG_MAX_RO_REJ_RATIO_FROM_HD_INSTIT_RECORD_REQUEST -void sendMaxRORejectionRatioRequestToHD( void ); +// MSG_ID_DG_INSTIT_VALUES_FROM_HD_INSTIT_RECORD_REQUEST +void sendDGInstitutionalValuesRequestToHD( void ); -// MSG_ID_HD_MAX_RO_REJ_RATIO_FROM_HD_INSTIT_RECORD_RESPONSE -void handleMaxRORejectionResponseFromHDInstitRecord( MESSAGE_T* message ); +// MSG_ID_DG_INSTIT_VALUES_FROM_HD_INSTIT_RECORD_RESPONSE +void handleDGInstitutionalValuesResponseFromHDInstitRecord( MESSAGE_T* message ); // *********** public test support message functions **********