Index: leahi_dialin/fp/filtration_purification.py =================================================================== diff -u -r20c821bd230fc7689a0275a2918981669ff5cc19 -r57aed15d5b38f236deaea49daba706ce352162d2 --- leahi_dialin/fp/filtration_purification.py (.../filtration_purification.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) +++ leahi_dialin/fp/filtration_purification.py (.../filtration_purification.py) (revision 57aed15d5b38f236deaea49daba706ce352162d2) @@ -345,6 +345,46 @@ can_interface = self.can_interface) + def cmd_fp_set_operation_sub_mode(self, new_mode: int = 0, new_sub_mode: int = 0) -> int: + """ + Constructs and sends a set operation sub mode request command via CAN bus. + Constraints: + Must be logged into FP. + Transition from current to requested op sub mode must be legal. + NOTE: for POST the FP device shall be in Standby Mode + + @param new_mode: ID of operation sub mode to transition to + + @return: 1 if successful, zero otherwise + """ + mode = integer_to_bytearray(new_mode) + sub_mode = integer_to_bytearray(new_sub_mode) + payload = mode + sub_mode + + if self.fp_operation_mode == 0: + new_mode_enum = fp_enum_repository.FPFaultStates(new_mode) + elif self.fp_operation_mode == fp_enum_repository.FPOpModes.MODE_PRE_GENP.value: + new_mode_enum = fp_enum_repository.FPPreGenPermeateStates(new_mode) + elif self.fp_operation_mode == fp_enum_repository.FPOpModes.MODE_GENP.value: + new_mode_enum = fp_enum_repository.FPGenPermeateStates(new_mode) + elif self.fp_operation_mode == fp_enum_repository.FPOpModes.MODE_DPGP.value: + new_mode_enum = fp_enum_repository.FPPreGenPDefStates(new_mode) + elif self.fp_operation_mode == fp_enum_repository.FPOpModes.MODE_DEGP.value: + new_mode_enum = fp_enum_repository.FPGenPermeateDefStates(new_mode) + else: + new_mode_enum = fp_enum_repository.FPOpModes.MODE_NLEG + + return cmd_generic_override( + payload = payload, + reset = NO_RESET, + channel_id = DenaliChannels.dialin_to_fp_ch_id, + msg_id = MsgIds.MSG_ID_FP_SET_OP_SUB_MODE_REQUEST, + entity_name = 'FP Operation Sub Mode', + override_text = new_mode_enum.name, + logger = self.logger, + can_interface = self.can_interface) + + def cmd_fp_software_reset_request(self) -> None: """ Constructs and sends an FP software reset request via CAN bus.