def find_devices(): devices = list() for i in xrange(128): try: device_factory(i) devices.append(i) print(i) except IOError: pass return devices
def speed_test(device_address, reg): device = device_factory(device_address) start_time = time.time() for i in xrange(256): device.read_port(reg) end_time = time.time() delta_time = end_time - start_time print("Read reg '{}': 256 times in: {}ms".format(reg, delta_time*1000))
def turn_on_address(device_addrss, column, row): device = device_factory(device_addrss) column, row = find_int(column), find_int(row) column, row = turn_bit_on(0, 0, (column, row)) if 0 > column > 8 or 0 > row > 8: raise ValueError("[-] column and row have to be 0 to 8, instead\nrow: {}\ncolumn: {}".format(row, column)) device.write_port('A', column) device.write_port('B', row) return
def write_byte(device_addr, reg, data): if reg == "a": reg = "GPIOA" elif reg == "b": reg = "GPIOB" data = data_lookup(data) reg = register_lookup(reg) device = device_factory(device_addr) device.write_byte(reg, data)
def device_mode(command): command = {'action': ""} device = device_factory(raw_input("insert device address > ")) while command['action'] not in ['q', 'quit', 'exit']: command = parse_command_strings(raw_input("\ntest> "), exclude=['device']) command['device'] = device parse_command(command) quit()
def listen(device_address): device = device_factory(device_address) change = False drive = 'B' inp = 'A' prev_column_data = 0 prev_row_data = 0 device.set_io_mode('output', drive) device.set_io_mode('input', inp) while True: if change: print("[+] input detected: row: {}| column: {}".format(repr_binary(row_data), repr_binary(column_data))) change = False column_data = device.read_port(drive) row_data = device.read_port(inp) if column_data != prev_column_data or row_data != prev_row_data: change = True prev_column_data = column_data prev_row_data = row_data time.sleep(0.1)
def debug_IO(device_addr): device = device_factory(device_addr) print("++++++++ debug ++++++++") for line in repr(device).split('\n'): print("| " + line) print("-----------------------")
def pin_mode(device_addr, reg, io): # todo: rewrite into 'port_mode' device = device_factory(device_addr) device.pin_mode(reg, io)
def read_byte(device_addr, reg): device = device_factory(device_addr) reg = register_lookup(reg) data = device.read_byte(reg) print("[+]read: " + register_names[reg] + ": " + repr_binary(data)) return data