def test_open_serial_number(api): devices = { 42: 1234567890, 4711: 1111222222, 5: 3333444444, } def find_devices(_num, devs): for i, dev in enumerate(devices.keys()): if _num <= i: break devs[i] = dev return len(devices) def open(handle): return (handle, (0,) * 6) def unique_id(handle): return devices[handle] api.py_aa_find_devices.side_effect = find_devices api.py_aa_open_ext.side_effect = open api.py_aa_unique_id.side_effect = unique_id a = pyaardvark.open(serial_number='1234-567890') eq_(a.handle, 42) a = pyaardvark.open(serial_number='1111-222222') eq_(a.handle, 4711) assert_raises(IOError, pyaardvark.open, serial_number='7777-888888')
def __init__(self,ina226_addr = INA226_ADDRESS, i2c_bus_number=I2C_DEFAULT_BUS_NUMBER, i2c_clk_Khz=I2C_DEFAULT_CLK_KHZ, i2c_driver_type = I2C_DRIVER): if PYTHON_AARDVARK_LIB_PRESENT is False and PYTHON_SMBUS_LIB_PRESENT is False: print ("Neither PYAARDVARK nor SMBUS lib is installed, Please install an appropriate one and try again.") sys.exit(0) if i2c_driver_type == 'AARDVARK': if PYTHON_AARDVARK_LIB_PRESENT is False: print ('PYAARDVARK Driver is not installed, Please install and Try again.') sys.exit(0) self.i2c_bus = pyaardvark.open(i2c_bus_number) self.i2c_bus.i2c_bitrate = i2c_clk_Khz self.readRegister16 = self.readRegister16_AARDVARK self.writeRegister16 = self.writeRegister16_AARDVARK elif i2c_driver_type == 'SBC_LINUX_SMBUS': if PYTHON_SMBUS_LIB_PRESENT is False: print ('PYTHON SMBUS Driver is not installed, Please install and Try again.') sys.exit(0) self.i2c_bus = smbus.SMBus(i2c_bus_number) self.readRegister16 = self.readRegister16_SMBUS self.writeRegister16 = self.writeRegister16_SMBUS if i2c_clk_Khz != I2C_DEFAULT_CLK_KHZ: print ('Python SMBUS linux driver doesn\'t provide I2C CLK Freq Manipulation support yet,') print ('So Ignoring i2c_clk_khz param and using default.') else: print ('Unknown I2C DRIVER Specified, available Options are : AARDVARK, SBC_LINUX_SMBUS') self.ina226_address = ina226_addr self.vBusMax = 36 self.vShuntMax = 0.08192 self.rShunt = 0.1 self.currentLSB = 0 self.powerLSB = 0 self.iMaxPossible = 0
def test_context_manager(self, api): api.py_aa_open_ext.return_value = (1, (0,) * 6) with pyaardvark.open() as a: eq_(a.handle, api.py_aa_open_ext.return_value[0]) api.py_aa_open_ext.assert_called_once_with(0) api.py_aa_close.assert_called_once_with( api.py_aa_open_ext.return_value[0])
def test_context_manager(self, api): api.py_aa_open_ext.return_value = (1, (0, ) * 6) with pyaardvark.open() as a: eq_(self.a.handle, api.py_aa_open_ext.return_value[0]) api.py_aa_open_ext.assert_called_once_with(0) api.py_aa_close.assert_called_once_with( api.py_aa_open_ext.return_value[0])
def __init__(self, slave_address=0x20, port=0, serial_number=None, enable_i2c_pullups=True): if pyaardvark is None: raise RuntimeError('No pyaardvark module found. You can not ' 'use this interface.') self.slave_address = slave_address self.timeout = 0.25 # 250 ms self.max_retries = 3 self.next_sequence_number = 0 self._dev = pyaardvark.open(port, serial_number) self._dev.enable_i2c_slave(self.slave_address >> 1)
def test_open_serial_number(api): devices = { 42: 1234567890, 4711: 1111222222, 5: 3333444444, } def f(_num, devs): return len(devices) def f_ext(_num, _num_ids, devs, ids): for i, (dev, unique) in enumerate(devices.items()): if _num > i: devs[i] = dev if _num_ids > i: ids[i] = unique return len(devices) def open(handle): return (handle, (0, ) * 6) def unique_id(handle): return devices[handle] api.py_aa_find_devices.side_effect = f api.py_aa_find_devices_ext.side_effect = f_ext api.py_aa_open_ext.side_effect = open api.py_aa_unique_id.side_effect = unique_id a = pyaardvark.open(serial_number='1234-567890') eq_(a.handle, 42) a = pyaardvark.open(serial_number='1111-222222') eq_(a.handle, 4711) assert_raises(IOError, pyaardvark.open, serial_number='7777-888888')
def test_open_serial_number(api): devices = { 42: 1234567890, 4711: 1111222222, 5: 3333444444, } def f(_num, devs): return len(devices) def f_ext(_num, _num_ids, devs, ids): for i, (dev, unique) in enumerate(devices.items()): if _num > i: devs[i] = dev if _num_ids > i: ids[i] = unique return len(devices) def open(handle): return (handle, (0,) * 6) def unique_id(handle): return devices[handle] api.py_aa_find_devices.side_effect = f api.py_aa_find_devices_ext.side_effect = f_ext api.py_aa_open_ext.side_effect = open api.py_aa_unique_id.side_effect = unique_id a = pyaardvark.open(serial_number='1234-567890') eq_(a.handle, 42) a = pyaardvark.open(serial_number='1111-222222') eq_(a.handle, 4711) assert_raises(IOError, pyaardvark.open, serial_number='7777-888888')
def open_aardvark_adapter(self, port_or_serial=0, alias=None): """Opens a new Aardvark host adapter. The adapter to be used is identified by the port or by a serial number. By default the port 0 is used, which is sufficient if there is only one host adapter. If there are multiple adapters connected, you have to provide either the port or a serial number. The serial number must be given in the form NNNN-NNNNNN, otherwise the argument is interpreted as the port number. Possible already opened adapters are cached and it is possible to switch back to them using the `Switch Aardvark Adapter` keyword. It is possible to switch either using explicitly given `alias` or using the index returned by this keyword. Indexing start from 1 and is reset back to it by the `Close All Connections` keyword. """ port = None serial = None if isinstance(port_or_serial, basestring) and '-' in port_or_serial: logger.info('Opening Aardvark adapter with serial %s' % (port_or_serial,)) serial = port_or_serial else: port = int(port_or_serial) logger.info('Opening Aardvark adapter on port %d' % (port,)) device = pyaardvark.open(port=port, serial_number=serial) device.i2c_bitrate = self._i2c_bitrate device.spi_bitrate = self._spi_bitrate device.enable_i2c = True device.enable_spi = True device.spi_configure_mode(pyaardvark.SPI_MODE_3) self._device = device return self._cache.register(self._device, alias)
def setup(self, api): api.py_aa_open_ext.return_value = (1, (0,) * 6) self.a = pyaardvark.open()
import pyaardvark a = pyaardvark.open() data = a.i2c_master_read(0x53, 256) print(' '.join('%02x' % ord(c) for c in data)) # data = '\x00\x01\x02\x03\x04' a.close()
def test_open_error(api): api.py_aa_open_ext.return_value = (-1, (0,) * 6) pyaardvark.open()
def test_open_version_check_api(api): api.py_aa_open_ext.return_value = (1, (100, 0, 0, 200, 0, 0)) pyaardvark.open()
def main(args=None): parser = argparse.ArgumentParser( description='Total Phase I2C/SPI host adapter CLI.') parser.add_argument('-v', action='store_true', dest='verbose', help='be more verbose') parser.add_argument('-d', '--device', type=int, dest='device', default=0, help='set device number') parser.add_argument( '-s', '--serial-number', type=str, dest='serial_number', default=None, help='set serial number. Takes precedence over port number.') parser.add_argument('-b', '--bitrate', type=int, dest='bitrate', default=100, help='set bitrate in kHz') parser.add_argument('-p', '--enable-i2c-pullups', action='store_true', dest='enable_i2c_pullups', help='enable I2C pullups') parser.add_argument('-P', '--enable-target-power', action='store_true', dest='enable_target_power', help='enable target power (Be careful!)') _sub = parser.add_subparsers(title='Commands') # scan sub command subparser = _sub.add_parser('scan', help='Find attached Aardvark devices') subparser.set_defaults(func=scan) # monitor sub command subparser = _sub.add_parser('monitor', help='Listen on I2C bus') subparser.set_defaults(func=monitor) # spi subcommand subparser = _sub.add_parser('spi', help='SPI commands') subparser.add_argument('data', nargs='+', type=byte, metavar="DATA", help='byte to write') subparser.set_defaults(func=spi) # i2c subcommand subparser = _sub.add_parser('i2c', help='I2C commands') # i2c wr _sub_i2c = subparser.add_subparsers() subparser = _sub_i2c.add_parser('wr', help='write transaction') subparser.add_argument('i2c_address', type=byte, metavar="ADDR", help='I2C slave address') subparser.add_argument('data', nargs='+', type=byte, metavar="DATA", help='byte to write') subparser.set_defaults(func=i2c_wr) # i2c rd subparser = _sub_i2c.add_parser('rd', help='read transaction') subparser.add_argument('i2c_address', type=byte, metavar="ADDR", help='I2C slave address') subparser.add_argument('num_bytes', type=int_base0, metavar="NUM_BYTES", help='number of bytes to read') subparser.set_defaults(func=i2c_rd) # i2c wrrd subparser = _sub_i2c.add_parser('wrrd', help='write/read transaction') subparser.add_argument('i2c_address', type=byte, metavar="ADDR", help='I2C slave address') subparser.add_argument('num_bytes', type=int_base0, metavar="NUM_BYTES", help='number of bytes to read') subparser.add_argument('data', nargs='+', type=byte, metavar="DATA", help='byte to write') subparser.set_defaults(func=i2c_wrrd) args = parser.parse_args(args) logging.basicConfig() if args.verbose: logging.getLogger('pyaardvark').setLevel(logging.DEBUG) a = None ret = 0 try: if args.func != scan: a = pyaardvark.open(args.device, serial_number=args.serial_number) a.target_power = args.enable_target_power args.func(a, args) except IOError as e: print(e) ret = 1 finally: if a is not None: a.close() return ret
def test_open_versions(api): api.py_aa_open_ext.return_value = (1, (0x101, 0x202, 0x303, 0, 0, 0)) a = pyaardvark.open() eq_(a.api_version, '1.01') eq_(a.firmware_version, '2.02') eq_(a.hardware_revision, '3.03')
def test_open_error(api): api.py_aa_open_ext.return_value = (-1, (0, ) * 6) pyaardvark.open()
def setup(self, api): api.py_aa_open_ext.return_value = (1, (0, ) * 6) self.a = pyaardvark.open()
def scan(a, args): for port in pyaardvark.find_devices(): dev = pyaardvark.open(port) print('Device #%d: %s' % (port, dev.unique_id_str())) dev.close()
def main(args=None): parser = argparse.ArgumentParser( description='Total Phase I2C/SPI host adapter CLI.') parser.add_argument('-v', action='store_true', dest='verbose', help='be more verbose') parser.add_argument('-d', '--device', type=int, dest='device', default=0, help='set device') parser.add_argument('-b', '--bitrate', type=int, dest='bitrate', default=100, help='set bitrate in kHz') parser.add_argument('-p', '--enable-i2c-pullups', action='store_true', dest='enable_i2c_pullups', help='enable I2C pullups') parser.add_argument('-P', '--enable-target-power', action='store_true', dest='enable_target_power', help='enable target power (Be careful!)') _sub = parser.add_subparsers(title='Commands') # scan sub command subparser = _sub.add_parser('scan', help='Find attached Aardvark devices') subparser.set_defaults(func=scan) # spi subcommand subparser = _sub.add_parser('spi', help='SPI commands') subparser.add_argument('data', nargs='+', type=byte, metavar="DATA", help='byte to write') subparser.set_defaults(func=spi) # i2c subcommand subparser = _sub.add_parser('i2c', help='I2C commands') # i2c wr _sub_i2c = subparser.add_subparsers() subparser = _sub_i2c.add_parser('wr', help='write transaction') subparser.add_argument('i2c_address', type=byte, metavar="ADDR", help='I2C slave address') subparser.add_argument('data', nargs='+', type=byte, metavar="DATA", help='byte to write') subparser.set_defaults(func=i2c_wr) # i2c rd subparser = _sub_i2c.add_parser('rd', help='read transaction') subparser.add_argument('i2c_address', type=byte, metavar="ADDR", help='I2C slave address') subparser.add_argument('num_bytes', type=int_base0, metavar="NUM_BYTES", help='number of bytes to read') subparser.set_defaults(func=i2c_rd) # i2c wrrd subparser = _sub_i2c.add_parser('wrrd', help='write/read transaction') subparser.add_argument('i2c_address', type=byte, metavar="ADDR", help='I2C slave address') subparser.add_argument('num_bytes', type=int_base0, metavar="NUM_BYTES", help='number of bytes to read') subparser.add_argument('data', nargs='+', type=byte, metavar="DATA", help='byte to write') subparser.set_defaults(func=i2c_wrrd) args = parser.parse_args(args) logging.basicConfig() if args.verbose: logging.getLogger('pyaardvark').setLevel(logging.DEBUG) a = None ret = 0 try: if args.func != scan: a = pyaardvark.open(args.device) a.target_power = args.enable_target_power args.func(a, args) except IOError as e: print(e) ret = 1 finally: if a is not None: a.close() return ret
''' Created on Aug 21, 2014 @author: mzfa ''' import pyaardvark if __name__ == '__main__': device = pyaardvark.find_devices() a = pyaardvark.open(port=device[0]) id_str = a.unique_id_str() # array = [] # for i in range(256): # array.append("0") # a.i2c_bitrate = 400 data = ''.join('%c' % c for c in 'abcde') print data a.i2c_master_write(0x53, data) a.poll(20) data1 = a.i2c_master_read(0x53, 256) print data1 print(' '.join('%02x' % ord(c) for c in data1)) a.close() # print id_str,"closed"
def test_open_port(api): api.py_aa_open_ext.return_value = (42, (0,) * 6) a = pyaardvark.open(4711) api.py_aa_open_ext.assert_called_once_with(4711) eq_(a.handle, api.py_aa_open_ext.return_value[0])
Description: This program scans for all I2C slaves (7bit address) connected to Aardvark and prints them. Dependency: OS:Windows Others: Aardvark Drivers should be installed. """ import pyaardvark try: #a = pyaardvark.open(serial_number='2237-988786') print "Aardvark Info below:" print str(pyaardvark.find_devices()) + '\n' a = pyaardvark.open(0) print "Scanning for I2C devices.." for i in range(0x00, 0x7f): #0 t0 127 data = a.i2c_master_write_read(i, '\x00', 1) if data != '': print str(hex(i)) + ', ' a.close() print "Scanning Completed" except Exception as e: print "Exception occured" print str(e) raw_input() a.close()
def test_open_port(api): api.py_aa_open_ext.return_value = (42, (0, ) * 6) a = pyaardvark.open(4711) api.py_aa_open_ext.assert_called_once_with(4711) eq_(a.handle, api.py_aa_open_ext.return_value[0])