Exemplo n.º 1
0
    def send_start_dfu(self, program_mode, softdevice_size=0, bootloader_size=0, app_size=0):
        super(DfuTransportBle, self).send_start_dfu(program_mode, softdevice_size, bootloader_size, app_size)
        image_size_packet = DfuTransport.create_image_size_packet(softdevice_size, bootloader_size, app_size)

        self._send_event(DfuEvent.PROGRESS_EVENT, progress=0, log_message="Setting up transfer...")

        try:
            logging.debug("Sending 'START DFU' command")
            self.send_control_data(DfuOpcodesBle.START_DFU, chr(program_mode))
            logging.debug("Sending image size")
            self.send_packet_data(image_size_packet)
            self._wait_for_response(DfuOpcodesBle.START_DFU)
        except IllegalStateException:
            #If at first you don't succeed, try, try again.
            self.close()
            self.disconnected_event_received = False
            self.open()

            if not self.is_open():
                raise IllegalStateException("Failed to open transport backend.")

            logging.debug("Sending 'START DFU' command")
            self.send_control_data(DfuOpcodesBle.START_DFU, chr(program_mode))
            logging.debug("Sending image size")
            self.send_packet_data(image_size_packet)
            self._wait_for_response(DfuOpcodesBle.START_DFU)
    def send_start_dfu(self,
                       program_mode,
                       softdevice_size=0,
                       bootloader_size=0,
                       app_size=0):
        super(DfuTransportBle,
              self).send_start_dfu(program_mode, softdevice_size,
                                   bootloader_size, app_size)
        image_size_packet = DfuTransport.create_image_size_packet(
            softdevice_size, bootloader_size, app_size)

        self._send_event(DfuEvent.PROGRESS_EVENT,
                         progress=0,
                         log_message="Setting up transfer...")

        try:
            self._start_dfu(program_mode, image_size_packet)
        except IllegalStateException:
            # We got disconnected. Try to send Start DFU again in case of buttonless dfu.
            self.close()
            self.open()

            if not self.is_open():
                raise IllegalStateException(
                    "Failed to reopen transport backend.")

            self._start_dfu(program_mode, image_size_packet)
Exemplo n.º 3
0
    def send_start_dfu(self, mode, softdevice_size=None, bootloader_size=None, app_size=None):
        super(DfuTransportSerial, self).send_start_dfu(mode, softdevice_size, bootloader_size, app_size)

        frame = int32_to_bytes(DFU_START_PACKET)
        frame += int32_to_bytes(mode)
        frame += DfuTransport.create_image_size_packet(softdevice_size, bootloader_size, app_size)

        packet = HciPacket(frame)
        self.send_packet(packet)
        time.sleep(DfuTransportSerial.SEND_START_DFU_WAIT_TIME)
Exemplo n.º 4
0
    def send_start_dfu(self, mode, softdevice_size=None, bootloader_size=None, app_size=None):
        super(DfuTransportSerial, self).send_start_dfu(mode, softdevice_size, bootloader_size, app_size)

        frame = int32_to_bytes(DFU_START_PACKET)
        frame += int32_to_bytes(mode)
        frame += DfuTransport.create_image_size_packet(softdevice_size, bootloader_size, app_size)

        packet = HciPacket(frame)
        self.send_packet(packet)
        time.sleep(DfuTransportSerial.SEND_START_DFU_WAIT_TIME)
Exemplo n.º 5
0
    def send_start_dfu(self, mode, softdevice_size=None, bootloader_size=None, app_size=None):
        super(DfuTransportSerial, self).send_start_dfu(mode, softdevice_size, bootloader_size, app_size)

        frame = [x for x in int32_to_bytes(DFU_START_PACKET)]
        frame += [x for x in int32_to_bytes(mode)]
        frame += [x for x in DfuTransport.create_image_size_packet(softdevice_size, bootloader_size, app_size)]

        packet = HciPacket(frame)
        self.send_packet(packet)

        self.sd_size = softdevice_size
        self.total_size = softdevice_size+bootloader_size+app_size
        #logger.info("Wait after Init Packet %s second", self.get_erase_wait_time())
        time.sleep( self.get_erase_wait_time() )
Exemplo n.º 6
0
    def send_start_dfu(self, program_mode, softdevice_size=0, bootloader_size=0, app_size=0):
        super(DfuTransportBle, self).send_start_dfu(program_mode, softdevice_size, bootloader_size, app_size)
        image_size_packet = DfuTransport.create_image_size_packet(softdevice_size, bootloader_size, app_size)

        self._send_event(DfuEvent.PROGRESS_EVENT, progress=0, log_message="Setting up transfer...")

        try:
            self._start_dfu(program_mode, image_size_packet)
        except IllegalStateException:
            # We got disconnected. Try to send Start DFU again in case of buttonless dfu.
            self.close()
            self.open()

            if not self.is_open():
                raise IllegalStateException("Failed to reopen transport backend.")

            self._start_dfu(program_mode, image_size_packet)
Exemplo n.º 7
0
    def send_start_dfu(self,
                       program_mode,
                       softdevice_size=0,
                       bootloader_size=0,
                       app_size=0):
        super(DfuTransportBle,
              self).send_start_dfu(program_mode, softdevice_size,
                                   bootloader_size, app_size)
        image_size_packet = DfuTransport.create_image_size_packet(
            softdevice_size, bootloader_size, app_size)

        self._send_event(DfuEvent.PROGRESS_EVENT,
                         progress=0,
                         log_message="Setting up transfer...")

        try:
            logging.debug("Sending 'START DFU' command")
            self.send_control_data(DfuOpcodesBle.START_DFU, chr(program_mode))
            logging.debug("Sending image size")
            self.send_packet_data(image_size_packet)
            self._wait_for_response(DfuOpcodesBle.START_DFU)
        except IllegalStateException:
            #If at first you don't succeed, try, try again.
            self.close()
            self.disconnected_event_received = False
            self.open()

            if not self.is_open():
                raise IllegalStateException(
                    "Failed to open transport backend.")

            logging.debug("Sending 'START DFU' command")
            self.send_control_data(DfuOpcodesBle.START_DFU, chr(program_mode))
            logging.debug("Sending image size")
            self.send_packet_data(image_size_packet)
            self._wait_for_response(DfuOpcodesBle.START_DFU)