Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
I2Cv2.py 1.60 KiB
#import pylibi2c;
#import 
from periphery import I2C;

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;


i2c1=I2C("/dev/i2c-1")

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

       if read==1:
          if not(reg is None):  i2c1.transfer(addr,[I2C.Message(reg)])
          msgs=[I2C.Message(data,read=True)]
          i2c1.transfer(addr,msgs)
          data[:]=msgs[0].data
       else:
            if reg is None: 
               msgs=[I2C.Message(data)]
            else:
               msgs=[I2C.Message(reg),I2C.Message(data)]
            i2c1.transfer(addr,msgs)
       return True;
  except:
       return False;

i2c4=I2C("/dev/i2c-1")

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

       if read==1:
          if not(reg is None):  i2c4.transfer(addr,[I2C.Message(reg)])
          msgs=[I2C.Message(data,read=True)]
          i2c4.transfer(addr,msgs)
          data[:]=msgs[0].data
       else:
            if reg is None: 
               msgs=[I2C.Message(data)]
            else:
               msgs=[I2C.Message(reg),I2C.Message(data)]
            i2c4.transfer(addr,msgs)
       return True;
  except:
       return False;