How to use the odrive.dfuse.DfuState.DfuState.DFU_DOWNLOAD_BUSY function in odrive

To help you get started, we’ve selected a few odrive examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github madcowswe / ODrive / tools / odrive / dfuse / DfuDevice.py View on Github external
def set_address_safe(self, addr):
        self.set_address(addr)
        status = self.wait_while_state(DfuState.DFU_DOWNLOAD_BUSY)
        if status[1] != DfuState.DFU_DOWNLOAD_IDLE:
            raise RuntimeError("An error occured. Device Status: {!r}".format(status))
        # take device out of DFU_DOWNLOAD_SYNC and into DFU_IDLE
        self.abort()
        status = self.wait_while_state(DfuState.DFU_DOWNLOAD_SYNC)
        if status[1] != DfuState.DFU_IDLE:
            raise RuntimeError("An error occured. Device Status: {!r}".format(status))
github madcowswe / ODrive / tools / odrive / dfuse / DfuDevice.py View on Github external
def write_sector(self, sector, data):
        self.set_alternate_safe(sector['alt'])
        self.set_address_safe(sector['addr'])

        transfer_size = fractions.gcd(sector['len'], MAX_TRANSFER_SIZE)
        
        blocks = [data[i:i + transfer_size] for i in range(0, len(data), transfer_size)]
        for blocknum, block in enumerate(blocks):
            #print('write to {:08X} ({} bytes)'.format(
            #        sector['addr'] + blocknum * TRANSFER_SIZE, len(block)))
            self.write(blocknum, block)
            status = self.wait_while_state(DfuState.DFU_DOWNLOAD_BUSY)
            if status[1] != DfuState.DFU_DOWNLOAD_IDLE:
                raise RuntimeError("An error occured. Device Status: {!r}".format(status))