Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
I2C.py 1.74 KiB
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
I2Ccounter=0;

def I2C1server(addr,data,reg=None,read=0):
  try:
       if read==3:
           time.sleep(data[0]/1000.)
           return True
       logging.debug(str(("I2C",addr,reg,data,read)))

#       print("I2C",addr,reg,data,read)
#       return True;
       bus=pylibi2c.I2CDevice('/dev/i2c-2',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)))
       bus.close()
       return True;
  except:
       if bus: bus.close()
#       data[0]=0xff
       return False;

def I2C2server(addr,data,reg=None,read=0):
  try:
       if read==3:
           time.sleep(data[0]/1000.)
           return True
       logging.debug(str(("I2C",addr,reg,data,read)))

#       print("I2C",addr,reg,data,read)
#       return True;
       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)))
       bus.close()
       return True;
  except:
       if bus: bus.close()
#       data[0]=0xff
       return False;