Index: leahi_dialin/dd/proxies/td_proxy.py =================================================================== diff -u -r9dd43942f571c0f63e69e191b5b33b566a07c641 -re48e2e9af260dc96a407bf4a26f4a18713318ae6 --- leahi_dialin/dd/proxies/td_proxy.py (.../td_proxy.py) (revision 9dd43942f571c0f63e69e191b5b33b566a07c641) +++ leahi_dialin/dd/proxies/td_proxy.py (.../td_proxy.py) (revision e48e2e9af260dc96a407bf4a26f4a18713318ae6) @@ -19,7 +19,7 @@ # Project imports from leahi_dialin.common.generic_defs import DataTypes -from leahi_dialin.common.msg_defs import MsgIds +from leahi_dialin.common.msg_ids import MsgIds from leahi_dialin.common.override_templates import cmd_generic_override from leahi_dialin.protocols.CAN import CanMessenger, CanChannels from leahi_dialin.utils.abstract_classes import AbstractSubSystem @@ -147,3 +147,36 @@ override_text = 'N/A', logger = self.logger, can_interface = self.can_interface) + + + 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 + + cmd_generic_override(payload = payload, + reset = None, + channel_id = DenaliChannels.dialin_to_dd_ch_id, + msg_id = MsgIds.MSG_ID_DD_TREATMENT_PARAMS_OVERRIDE_REQUEST, + entity_name = f'DD treatment parameter override: id={paramID}, value={value}, reset={reset}', + override_text = 'N/A', + logger = self.logger, + can_interface = self.can_interface)