X-Git-Url: https://defiant.homedns.org/gitweb/?p=ros_wild_thumper.git;a=blobdiff_plain;f=scripts%2Fi2c.py;h=2bb9f94026849106394d92e9f3210d7feff14de6;hp=4522c5ff52e0c5b8a999f9213f5bd48c76c53c62;hb=9349f21c7fb8f1629fe4154cc054fc894a9e600d;hpb=ece97d94709b5e779ec2a48cf47319163a122bc5 diff --git a/scripts/i2c.py b/scripts/i2c.py index 4522c5f..2bb9f94 100755 --- a/scripts/i2c.py +++ b/scripts/i2c.py @@ -6,10 +6,12 @@ import inspect import os import logging import struct +import fcntl from ctypes import * from time import sleep DEBUG=0 +I2C_FILENAME = "/dev/i2c-2" logger = logging.getLogger(__name__) class i2c: @@ -32,9 +34,10 @@ class i2c: logger.warning("Error: (%s) I2C blocked %fs by %s!", parent, count*0.001, parent_owner) i2c.__parent_owner = inspect.stack()[1] i2c.__single = True - self.dev = i2c.libc.open("/dev/i2c-2", os.O_RDWR) + self.dev = i2c.libc.open(I2C_FILENAME, os.O_RDWR) if self.dev < 0: raise IOError("open") + fcntl.flock(self.dev, fcntl.LOCK_EX) err = i2c.libc.ioctl(self.dev, i2c.I2C_SLAVE, addr>>1) if err < 0: raise IOError("ioctl") @@ -66,14 +69,14 @@ class i2c: def i2c_write_reg(addr, reg, buf): dev = i2c(addr) - s = struct.pack("B", reg) + buf + s = struct.pack(">B", reg) + buf dev.write(s) dev.close() def i2c_read_reg(addr, reg, num=1): dev = i2c(addr) - s = struct.pack("B", reg) + s = struct.pack(">B", reg) dev.write(s) s = dev.read(num) dev.close()