from hwdev import hwdev; import pylibi2c; import time import logging #bus = pylibi2c.I2CDevice('/dev/i2c-1' #read=0: write to register #read=1: read from register #read=2: write to register (common in group) #read=3: wait ms second def I2C1server(addr,data,reg=None,read=0): try: if read==3: time.sleep(data[0]/1000.) return True # logging.debug("I2C addr=%s reg=%s data=%s read=%s",addr,reg,data,read) bus=pylibi2c.I2CDevice('/dev/i2c-1',addr) if read==1: length=len(data) bus.iaddr_bytes=0 if not(reg is None): bus.ioctl_write(0,str(bytearray([reg]))) data[:]=[int(x) for x in bus.ioctl_read(0,length)] else: if reg is None: bus.iaddr_bytes=0 reg=0; bus.ioctl_write(reg,str(bytearray(data))) return True; except: return False; class pypcc(hwdev): def GetVarValue(self,name,value): for cname,child in self.children: if not(child.GetVarValue(name,value,I2C1server)): return False return True def SetVarValue(self,name,value): for cname,child in self.children: if not(child.SetVarValue(name,value,I2C1server)): return False return True def CallMethod(self,name,params): for cname,child in self.children: child.CallMethod(name,params,I2C1server) return True;