Index: scripts/update_package_script/utilities.py =================================================================== diff -u -radea121e63d4eabb225c26bc1efd6741c59e0df3 -r988824ec54f3d9d4ff92d60d2be09fe8ad09ee29 --- scripts/update_package_script/utilities.py (.../utilities.py) (revision adea121e63d4eabb225c26bc1efd6741c59e0df3) +++ scripts/update_package_script/utilities.py (.../utilities.py) (revision 988824ec54f3d9d4ff92d60d2be09fe8ad09ee29) @@ -15,8 +15,7 @@ class SWUpdateCommands(SWUpdateEnum): SW_UPDATE_START = 0 SW_UPDATE_ABORT = 1 - SW_UPDATE_RUN_APP = 2 - SW_UPDATE_VERIFY = 3 + SW_UPDATE_VERIFY = 2 NUM_OF_SW_UPDATE_CMDS = 4 @unique @@ -30,13 +29,17 @@ NUM_OF_CAN_COMM_STATES = 6 @unique -class SWUpdateTargets(SWUpdateEnum): - TARGET_TD = 0 - TARGET_TD_FPGA = 1 - TARGET_DD = 2 - TARGET_DD_FPGA = 3 - NUM_OF_TARGETS = 4 +class UpdateStacks(SWUpdateEnum): + STACK_TD = 0 + STACK_DD = 1 + NUM_OF_STACKS = 2 +@unique +class UpdateStacksTargets(SWUpdateEnum): + TARGET_FIRMWARE = 0 + TARGET_FPGA = 1 + NUM_OF_TARGETS = 2 + class Utilities: """ Software update utilities class @@ -84,16 +87,18 @@ _NUM_OF_BYTES_PER_CAN_FRAME = 8 _CAN_INTERFACE = 'can0' _SEND_CMD_MAIL_BOX = 0x601 - _RESP_CMD_MAIL_BOX = '0x602' _CAN_MSG_WAIT_FOR_RESP_S = 3.0 _RESP_MSG_ACK = 1 _RESP_MSG_NACK = 0 _RESP_MSG_ID_INDEX = 0 - _RESP_ACK_NACK_INDEX = 1 + _RESP_ACK_NACK_INDEX = 2 _RESP_CRC_START_INDEX = 4 SEND_MSG_ACK_STATUS_KEY_NAME = 'cmd' UPDATE_MSG_ACK_STATUS_KEY_NAME = 'update' + _STACK_SEND_UPDATE_MAIL_BOX = 'send' + _STACK_RCV_RESP_MAIL_BOX = 'receive' + def __init__(self): """ Utilities class constructor @@ -102,15 +107,17 @@ self._can_bus = SocketcanBus(channel=self._CAN_INTERFACE) self._msg_id_count = 0 self._msg_sw_update_index = 0 - self._update_mail_boxes = self._prepare_update_mail_boxes() + self._update_mail_boxes = dict() self._msg_ack_nack_status = dict() self._total_msg_count = 0 + self._stack = 0 self._msg_ack_nack_status[self.SEND_MSG_ACK_STATUS_KEY_NAME] = CanCommStatus.CAN_COMM_NOT_STARTED.value self._msg_ack_nack_status[self.UPDATE_MSG_ACK_STATUS_KEY_NAME] = CanCommStatus.CAN_COMM_NOT_STARTED.value - self.file_handle = open(os.path.join(os.getcwd(), 'ack_log.log'), 'w') + self._prepare_update_mail_boxes(self._update_mail_boxes) + def get_msg_ack_nack_status(self, msg_type: str): """ Publicly accessible method to get the ack or nack status of a message @@ -131,12 +138,13 @@ """ self._msg_ack_nack_status[msg_type] = CanCommStatus.CAN_COMM_NOT_STARTED.value - def send_command_msg(self, cmd: int, target: int): + def send_command_msg(self, cmd: int, stack: int, destination: int): """ Publicly accessible method to send a command message to the bootloader @param cmd: The command to send (e.g. update, verify) - @param target: The target stack (TD, DD) + @param stack: The stack (TD, DD) + @param target: The destination (Firmware, FPGA) @return none """ @@ -145,18 +153,19 @@ # 1 byte with command a nibble and target as a nibble # 2 bytes as random value for cybersecurity. It is 0 now. # 4 bytes as message CRC - self._msg_id_count = self._msg_id_count + 1 if self._msg_id_count < 0xFF else 0 - can_msg_bytes = self._convert_data_to_bytes('