| 23 | # |
| 24 | |
| 25 | class FlashBdev: |
| 26 | def __init__(self, flash): |
| 27 | self.flash = flash |
| 28 | self.sectorsize = flash.flash_sectorsize() |
| 29 | |
| 30 | def readblocks(self, n, buf, offset=0): |
| 31 | self.flash.flash_read(n * self.sectorsize + offset, buf) |
| 32 | |
| 33 | def writeblocks(self, n, buf, offset=0): |
| 34 | if offset == 0: |
| 35 | self.flash.flash_erase(n * self.sectorsize) |
| 36 | self.flash.flash_write(n * self.sectorsize + offset, buf) |
| 37 | |
| 38 | def ioctl(self, op, arg): |
| 39 | if op == 4: # MP_BLOCKDEV_IOCTL_BLOCK_COUNT |
| 40 | return self.flash.flash_size() // self.sectorsize |
| 41 | if op == 5: # MP_BLOCKDEV_IOCTL_BLOCK_SIZE |
| 42 | return self.sectorsize |
| 43 | if op == 6: # MP_BLOCKDEV_IOCTL_BLOCK_ERASE |
| 44 | self.flash.flash_erase(arg * self.sectorsize) |
| 45 | return 0 |
no outgoing calls
no test coverage detected