Index: leahi_dialin/dd/proxies/td_proxy.py =================================================================== diff -u -r2dab2b0329a56006e07cd36a3883ed099d7a367a -r44459bf3f991b530142dd5676702171abc465800 --- leahi_dialin/dd/proxies/td_proxy.py (.../td_proxy.py) (revision 2dab2b0329a56006e07cd36a3883ed099d7a367a) +++ leahi_dialin/dd/proxies/td_proxy.py (.../td_proxy.py) (revision 44459bf3f991b530142dd5676702171abc465800) @@ -129,4 +129,34 @@ payload=payload) self.logger.debug("Sending TD start pre gen request to DD.") - self.can_interface.send(message, 0) \ No newline at end of file + self.can_interface.send(message, 0) + + def cmd_td_override_treatment_parameter(self, paramID: int, value, reset: int = 0): + """ + Constructs and sends a treatment parameter override request. + @param paramID : integer - Treatment parameter ID + @param value : float or integer - Override value + @param reset : integer 1 to reset override, 0 to apply override + @returns None + """ + + rst = integer_to_bytearray(reset) + pid = integer_to_bytearray(paramID) + # Dialysate rate, UF rate and dialysate temperature are f32 + float_params = [ 0, 1, 2 ] + # Acid type and bicarbonate type are u32 + uint_params = [ 3, 4 ] + if paramID in float_params: + val = float_to_bytearray(float(value)) + elif paramID in uint_params: + val = integer_to_bytearray(int(value)) + else: + val = integer_to_bytearray(int(value)) + payload = rst + val + pid + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dd_ch_id, + message_id=MsgIds.MSG_ID_DD_TREATMENT_PARAMS_OVERRIDE_REQUEST.value, + payload=payload) + + self.logger.debug("Sending DD treatment parameter override: id={}, value={}, reset={}".format( paramID, value, reset)) + self.can_interface.send(message, 0)