Index: leahi_dialin/td/modules/ejector.py =================================================================== diff -u -rc966c7c19e22d99c67c32de16ba0de8d81954f39 -r16ea7b6081102316002e7ea5191ea89501de6037 --- leahi_dialin/td/modules/ejector.py (.../ejector.py) (revision c966c7c19e22d99c67c32de16ba0de8d81954f39) +++ leahi_dialin/td/modules/ejector.py (.../ejector.py) (revision 16ea7b6081102316002e7ea5191ea89501de6037) @@ -61,66 +61,27 @@ @return: None """ self.h5_state = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1])) + message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] self.h5_set_speed = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])) + message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] self.td_air_pump_timestamp = timestamp - def cmd_ejector_data_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: - """ - Constructs and sends the ejector data broadcast interval override command - Constraints: - Must be logged into TD. - Given interval must be non-zero and a multiple of the TD general task interval (50 ms). - - @param ms: integer - interval (in ms) to override with - @param reset: integer - 1 to reset a previous override, 0 to override - @return: 1 if successful, zero otherwise - """ - - if not check_broadcast_interval_override_ms(ms): - return False - - rst = integer_to_bytearray(reset) - mis = integer_to_bytearray(ms) - payload = rst + mis - - message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_td_ch_id, - message_id=MsgIds.MSG_ID_TD_AIR_PUMP_PUBLISH_INTERVAL_OVERRIDE_REQUEST.value, - payload=payload) - - self.logger.debug("override TD ejector data broadcast interval") - - # Send message - received_message = self.can_interface.send(message) - - # If there is content... - if received_message is not None: - if reset == RESET: - str_res = "reset back to normal: " - else: - str_res = str(ms) + " ms: " - self.logger.debug("Ejector data broadcast interval overridden to " + str_res + - str(received_message['message'][DenaliMessage.PAYLOAD_START_INDEX])) - # response payload is OK or not OK - return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] - else: - self.logger.debug("Timeout!!!!") - return False - def cmd_ejector_request_command(self, cmd: int) -> int: """ Constructs and sends the ejector request command. - EJECTOR_OPERATION_HOME = 0, ///< Ejector home operation - EJECTOR_OPERATION_RETRACT, ///< Ejector retract operation - EJECTOR_OPERATION_EXTEND, ///< Ejector extend operation - NUM_OF_EJECTOR_OPERATIONS, ///< Number of ejector operations + EJECTOR_STATE_INIT = 0, ///< Ejector Initial (un-homed) state + EJECTOR_STATE_HOMING, ///< Ejector Homing state + EJECTOR_STATE_RETRACTED, ///< Ejector Retracted state + EJECTOR_STATE_EXTENDED, ///< Ejector Extended state + EJECTOR_STATE_RETRACTING, ///< Ejector Retracting state + EJECTOR_STATE_EXTENDING, ///< Ejector Extending state + EJECTOR_STATE_DIR_CHANGE_STOP, ///< Ejector Direction Change Stop state + EJECTOR_STATE_RETRACT_BACKOFF, ///< Ejector Backing Off Retracted state Constraints: Must be logged into TD. - @param cmd: integer - state value to set the ejector - + @param cmd: integer - ID of an ejector operation that is being requested @return: 1 if successful, zero otherwise """ @@ -146,11 +107,11 @@ def cmd_ejector_set_motor_speed_request(self, speed: int) -> int: """ - Constructs and sends the ejector set speed command. + Constructs and sends the ejector set speed command. Negative values imply reverse ( retract ) direction. Constraints: Must be logged into TD. - @param speed: float - value to set the motor speed + @param speed: float - value to set the motor speed in RPM. @return: 1 if successful, zero otherwise """