Index: dialin/common/msg_defs.py =================================================================== diff -u -rcff98df963746b055cac8e59ceb899da1903027c -r9e96d02a9333213f5b5c719f15e5884a804b65c8 --- dialin/common/msg_defs.py (.../msg_defs.py) (revision cff98df963746b055cac8e59ceb899da1903027c) +++ dialin/common/msg_defs.py (.../msg_defs.py) (revision 9e96d02a9333213f5b5c719f15e5884a804b65c8) @@ -185,6 +185,7 @@ MSG_ID_HD_GET_SERVICE_RECORD = 0x8043 # HD get service record that is requested from Dialin MSG_ID_HD_SET_SERVICE_RECORD = 0x8044 # HD set service record that is received from Dialin MSG_ID_HD_SEND_SERVICE_RECORD = 0x8045 # HD send service record to CAN bus to be received in Dialin (equivalent to publish) + MSG_ID_HD_SET_OP_MODE_REQUEST = 0x8046 # HD set operation mode request MSG_ID_DG_TESTER_LOGIN_REQUEST = 0XA000 # DG tester log-in MSG_ID_DG_ALARM_STATE_OVERRIDE = 0xA001 # DG alarm state override message ID Index: dialin/hd/hemodialysis_device.py =================================================================== diff -u -r363867c876456821000c189f86fbb55b4d583c50 -r9e96d02a9333213f5b5c719f15e5884a804b65c8 --- dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision 363867c876456821000c189f86fbb55b4d583c50) +++ dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision 9e96d02a9333213f5b5c719f15e5884a804b65c8) @@ -51,8 +51,7 @@ HD_OP_MODE_SERVICE = 1 HD_OP_MODE_INIT_POST = 2 HD_OP_MODE_STANDBY = 3 - HD_OP_MODE_PRESCRIPTION = 4 - HD_OP_MODE_OP_PARAMS = 5 + HD_OP_MODE_TREATMENT_PARAMS = 4 HD_OP_MODE_PRE_TREATMENT = 6 HD_OP_MODE_TREATMENT = 7 HD_OP_MODE_POST_TREATMENT = 8 @@ -277,6 +276,48 @@ self.logger.debug("Timeout!!!!") return False + def cmd_hd_set_operation_mode(self, newMode=0): + """ + Constructs and sends a set operation mode request command via CAN bus. + Constraints: + Must be logged into HD. + Transition from current to requested op mode must be legal. + + @param newMode: ID of operation mode to transition to + HD_OP_MODE_FAULT = 0 + HD_OP_MODE_SERVICE = 1 + HD_OP_MODE_INIT_POST = 2 + HD_OP_MODE_STANDBY = 3 + HD_OP_MODE_TREATMENT_PARAMS = 4 + HD_OP_MODE_PRE_TREATMENT = 6 + HD_OP_MODE_TREATMENT = 7 + HD_OP_MODE_POST_TREATMENT = 8 + + @return: 1 if successful, zero otherwise + + """ + + payload = integer_to_bytearray(newMode) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, + message_id=MsgIds.MSG_ID_HD_SET_OP_MODE_REQUEST.value, + payload=payload) + + self.logger.debug("Requesting HD mode change to " + str(newMode)) + + # Send message + received_message = self.can_interface.send(message) + + if received_message is not None: + if received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] == 1: + self.logger.debug("Success: Mode change accepted") + else: + self.logger.debug("Failure: Mode change rejected.") + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("HD mode change request Timeout!!!!") + return False + def cmd_hd_safety_shutdown_override(self, active=True, reset=NO_RESET): """ Constructs and sends an HD safety shutdown override command via CAN bus.