Index: leahi_dialin/dd/proxies/td_proxy.py =================================================================== diff -u -reb0906658a56741e5e0a092359143acda54538f5 -r1cc1305826350e41fa085a2b6d1bd2f66a0c3ea0 --- leahi_dialin/dd/proxies/td_proxy.py (.../td_proxy.py) (revision eb0906658a56741e5e0a092359143acda54538f5) +++ leahi_dialin/dd/proxies/td_proxy.py (.../td_proxy.py) (revision 1cc1305826350e41fa085a2b6d1bd2f66a0c3ea0) @@ -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 @@ -142,3 +142,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)