import struct, os class OtaFrameType: init = 0 data = 1 reflash = 2 ack = 3 reflash_other_device = 4 class FirmwareUploader: ack_frame_len = 7 packet_fw_chunk_size = 128 def __init__(self, comm_interface): self.comm_interface = comm_interface def upload_firmware(self, filename, status_callback): self.status_callback = status_callback self.file = open(filename) self.file.seek(0, os.SEEK_END) fw_size = self.file.tell() self.file.seek(0) init_frame = self.get_header(OtaFrameType.init) secret_code = struct.unpack('