Created
December 7, 2016 13:47
-
-
Save themadinventor/0b486cf2521c407a1dadb3ada8ff1d18 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python3 | |
| import usb.core | |
| import usb.util | |
| class BusError(Exception): | |
| pass | |
| class USBI(object): | |
| USBI_VID = 0x0456 | |
| USBI_PID = 0x7031 | |
| CMD_WRITE = 0xb2 | |
| CMD_WRITE_READ = 0xb3 | |
| CMD_READ = 0xb4 | |
| CMD_CHECK_WRITE = 0xb5 | |
| CMD_CHECK_READ = 0xb6 | |
| CMD_RESET = 0xb7 | |
| CMD_POWERBOARD = 0xb8 | |
| CMD_LED = 0xb9 | |
| CMD_RESET_TOGGLE = 0xba | |
| def __init__(self): | |
| self.dev = usb.core.find(idVendor=self.USBI_VID, | |
| idProduct=self.USBI_PID) | |
| if self.dev is None: | |
| raise ValueError('USBI device not found') | |
| try: | |
| self.dev.set_configuration() | |
| except Exception as e: | |
| print(e) | |
| def write(self, chip, addr, data): | |
| msg = bytes((addr >> 8, addr & 0xff)) + data | |
| self.dev.ctrl_transfer(0x40, self.CMD_WRITE, chip, 0, msg) | |
| if self.dev.ctrl_transfer(0xc0, self.CMD_CHECK_WRITE, chip, 0, 1)[0] !=1: | |
| raise BusError() | |
| def read(self, chip, addr, length): | |
| msg = bytes((addr >> 8, addr & 0xff)) | |
| self.dev.ctrl_transfer(0x40, self.CMD_WRITE_READ, chip, 0, msg) | |
| if self.dev.ctrl_transfer(0xc0, self.CMD_CHECK_WRITE, chip, 0, 1)[0] !=1: | |
| raise BusError() | |
| d = self.dev.ctrl_transfer(0xc0, self.CMD_READ, chip, 0, length) | |
| if self.dev.ctrl_transfer(0xc0, self.CMD_CHECK_READ, chip, 0, 1)[0] !=1: | |
| raise BusError() | |
| return d | |
| if __name__ == '__main__': | |
| d = USBI() | |
| d.write(0x34, 0x081c, b'\x00\x80') | |
| d.write(0x34, 0x0820, b'\x00\x00\x00') | |
| d.write(0x34, 0x0821, b'\x00\x22\x00') | |
| d.write(0x34, 0x0808, b'\x00\x00') | |
| print(d.read(0x34, 0x0800, 4)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment