コード例 #1
0
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')
コード例 #2
0
    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
コード例 #3
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])
コード例 #4
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])
コード例 #5
0
ファイル: aardvark.py プロジェクト: yhtsnda/python-ipmi
    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)
コード例 #6
0
ファイル: aardvark.py プロジェクト: jjjesus/python-ipmi
    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)
コード例 #7
0
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')
コード例 #8
0
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')
コード例 #9
0
    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)
コード例 #10
0
 def setup(self, api):
     api.py_aa_open_ext.return_value = (1, (0,) * 6)
     self.a = pyaardvark.open()
コード例 #11
0
ファイル: try.py プロジェクト: fanmuzhi/python-aardvark
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()
コード例 #12
0
def test_open_error(api):
    api.py_aa_open_ext.return_value = (-1, (0,) * 6)
    pyaardvark.open()
コード例 #13
0
def test_open_version_check_api(api):
    api.py_aa_open_ext.return_value = (1, (100, 0, 0, 200, 0, 0))
    pyaardvark.open()
コード例 #14
0
ファイル: cli_tool.py プロジェクト: lyh3/automation
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
コード例 #15
0
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')
コード例 #16
0
def test_open_error(api):
    api.py_aa_open_ext.return_value = (-1, (0, ) * 6)
    pyaardvark.open()
コード例 #17
0
 def setup(self, api):
     api.py_aa_open_ext.return_value = (1, (0, ) * 6)
     self.a = pyaardvark.open()
コード例 #18
0
ファイル: cli_tool.py プロジェクト: fanmuzhi/python-aardvark
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()
コード例 #19
0
ファイル: cli_tool.py プロジェクト: fanmuzhi/python-aardvark
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
コード例 #20
0
ファイル: RW.py プロジェクト: fanmuzhi/clown
'''
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"
コード例 #21
0
def test_open_version_check_api(api):
    api.py_aa_open_ext.return_value = (1, (100, 0, 0, 200, 0, 0))
    pyaardvark.open()
コード例 #22
0
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')
コード例 #23
0
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])
コード例 #24
0
ファイル: RW.py プロジェクト: fanmuzhi/clown
'''
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"
コード例 #25
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()
コード例 #26
0
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])