Index: dialin/common/alarm_defs.py =================================================================== diff -u -ree6d6510f576bd68b997eea7a02f64c650dc1bbf -rebcf9b27cfca23df61de2dcb8faabea5fbe07ef2 --- dialin/common/alarm_defs.py (.../alarm_defs.py) (revision ee6d6510f576bd68b997eea7a02f64c650dc1bbf) +++ dialin/common/alarm_defs.py (.../alarm_defs.py) (revision ebcf9b27cfca23df61de2dcb8faabea5fbe07ef2) @@ -278,7 +278,7 @@ ALARM_ID_HD_UI_COMPATIBILITY_ERROR = 255 ALARM_ID_HD_DISINFECT_CHEM_FLUSH = 256 ALARM_ID_AVAILABLE_8 = 257 - ALARM_ID_AVAILABLE_9 = 258 + ALARM_ID_HD_UI_POST_FAILURE_OS_VERSION = 258 ALARM_ID_HD_TEMPERATURES_OUT_OF_RANGE = 259 ALARM_ID_HD_UI_POST_FAILURE_SHASUM = 260 ALARM_ID_HD_UI_POST_FAILURE_CANBUS = 261 Index: dialin/common/dg_defs.py =================================================================== diff -u -rce496196d464677ee4a7c6581925d26e7c0be687 -rebcf9b27cfca23df61de2dcb8faabea5fbe07ef2 --- dialin/common/dg_defs.py (.../dg_defs.py) (revision ce496196d464677ee4a7c6581925d26e7c0be687) +++ dialin/common/dg_defs.py (.../dg_defs.py) (revision ebcf9b27cfca23df61de2dcb8faabea5fbe07ef2) @@ -312,7 +312,10 @@ DG_EVENT_RESERVOIR_FILL_VALUES = 14 # DG reservoir fill base reservoir weight and filled volume values DG_EVENT_OPERATION_STATUS = 15 # DG operation status event DG_EVENT_TEMPERATURE_DRIFT = 16 # DG temperature drift event - NUM_OF_DG_EVENT_IDS = 17 # Total number of DG events + DG_EVENT_BICARB_CHECK_RESULT = 17 # DG bicarb check result + DG_EVENT_ACID_CHECK_RESULT = 18 # DG acid check result + DG_EVENT_COND1_VS_COND2_DIFF_RESULT = 19 # DG CD1 (acid) vs. CD2 (bicarb) different result + NUM_OF_DG_EVENT_IDS = 20 # Total number of DG events @unique Index: dialin/common/hd_defs.py =================================================================== diff -u -r7d68bce1cd1bc6cb19db1ca0445ccbccf3860122 -rebcf9b27cfca23df61de2dcb8faabea5fbe07ef2 --- dialin/common/hd_defs.py (.../hd_defs.py) (revision 7d68bce1cd1bc6cb19db1ca0445ccbccf3860122) +++ dialin/common/hd_defs.py (.../hd_defs.py) (revision ebcf9b27cfca23df61de2dcb8faabea5fbe07ef2) @@ -363,7 +363,8 @@ HD_EVENT_AIR_PUMP_ON_OFF = 25 # HD turned air pump on or off. HD_EVENT_BLOOD_LEAK_SELF_TEST_RESULT = 26 # HD Blood leak self test result. HD_EVENT_BLOOD_LEAK_NUM_OF_SET_POINT_CHECK_FAILURES = 27 # HD blood leak number of setpoint check failures - NUM_OF_EVENT_IDS = 28 # Total number of HD events + HD_EVENT_DRY_SELF_TEST_PRESSURE_DECAY_WAIT_PERIOD = 28 # HD dry self test pressure decay wait period + NUM_OF_EVENT_IDS = 29 # Total number of HD events @unique class HDEventDataType(DialinEnum): Index: dialin/common/msg_ids.py =================================================================== diff -u -r2abf398a7fffa390c46f8d41403de44575ffd97e -rebcf9b27cfca23df61de2dcb8faabea5fbe07ef2 --- dialin/common/msg_ids.py (.../msg_ids.py) (revision 2abf398a7fffa390c46f8d41403de44575ffd97e) +++ dialin/common/msg_ids.py (.../msg_ids.py) (revision ebcf9b27cfca23df61de2dcb8faabea5fbe07ef2) @@ -449,7 +449,7 @@ MSG_ID_DG_SEND_SCHEDULED_RUNS_RECORD = 0xA03E MSG_ID_DG_FLUID_LEAK_SEND_INTERVAL_OVERRIDE = 0xA03F MSG_ID_DG_FLUID_LEAK_STATE_DETECTOR_OVERRIDE = 0xA040 - MSG_ID_MSG_AVAILABLE_11 = 0xA041 + MSG_ID_DG_RUN_MODE_FILL_FOR_CAL_CHECK = 0xA041 MSG_ID_FILTER_FLUSH_TIME_PERIOD_OVERRIDE = 0xA042 MSG_ID_DG_FANS_RPM_OVERRIDE = 0xA043 MSG_ID_FLOW_DATA_PUBLISH_INTERVAL_OVERRIDE = 0xA044 Index: dialin/dg/calibration_record.py =================================================================== diff -u -r2abf398a7fffa390c46f8d41403de44575ffd97e -rebcf9b27cfca23df61de2dcb8faabea5fbe07ef2 --- dialin/dg/calibration_record.py (.../calibration_record.py) (revision 2abf398a7fffa390c46f8d41403de44575ffd97e) +++ dialin/dg/calibration_record.py (.../calibration_record.py) (revision ebcf9b27cfca23df61de2dcb8faabea5fbe07ef2) @@ -53,6 +53,7 @@ _DEFAULT_ULTRAFILTER_TAU_C_PER_MIN = -1.0 _DEFAULT_RESERVOIR_TAU_C_PER_MIN = -0.25 _DEFAULT_ULTRAFILTER_VOLUME_ML = 700 + _DEFAULT_COND_SENSOR_TEMP_COMP_COEFF = 0.0207 # Maximum allowed bytes that are allowed to be written to EEPROM in firmware # The padding size then is calculated to be divisions of 16 @@ -318,7 +319,9 @@ # element is the dictionary that was built and the second element is the byte size of the dictionary. records_with_sizes = [self._prepare_pressure_sensors_cal_record(), self._prepare_flow_sensors_cal_record(), self._prepare_load_cells_record(), self._prepare_temperature_sensors_record(), - self._prepare_conductivity_sensors_record(), self._prepare_pumps_record(), + self._prepare_conductivity_sensors_record(), + self._prepare_conductivity_sensors_temperature_compensation_record(), + self._prepare_pumps_record(), self._prepare_volume_record(), self._prepare_acid_concentrates_record(), self._prepare_bicarb_concentrates_record(), self._prepare_filters_record(), self._prepare_fans_record(), self._prepare_accelerometer_sensor_record(), @@ -480,6 +483,31 @@ return hardware_group, group_byte_size + def _prepare_conductivity_sensors_temperature_compensation_record(self): + """ + Handles creating the calibration dictionary of the conductivity sensors temperature compensation hardware group. + + @return: conductivity sensors temperature compensation hardware group dictionary and the byte size of this + hardware group + """ + hardware_names = ['cpi', 'cpo', 'cd1', 'cd2'] + group_byte_size = 0 + group_name = 'conductivity_sensors_temp_comp' + hardware_group = OrderedDict({group_name: OrderedDict()}) + hardware = OrderedDict() + + for i in hardware_names: + hardware[i] = {'gain': [' int: + """ + Constructs and sends a message to set the mode fill calibration check status. + Constraints: + Must be logged into DG. + + @param cal_check_state: the state (0 = prime, 1 = bicarb check, 2 = acid check) + @return: 1 if successful, zero otherwise + """ + state_string = "None" + payload = integer_to_bytearray(cal_check_state) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, + message_id=MsgIds.MSG_ID_DG_RUN_MODE_FILL_FOR_CAL_CHECK.value, + payload=payload) + if cal_check_state == 0: + state_string = "Prime" + elif cal_check_state == 1: + state_string = "Bicarb Check" + elif cal_check_state == 2: + state_string = "Acid Check" + + self.logger.debug("Setting the Mode Fill calibration check to {}.".format(state_string)) + + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + self.logger.debug("Setting the Mode Fill calibration check to {}.".format(state_string)) + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False