Skip to content
Snippets Groups Projects
Commit d1029625 authored by Jan David Mol's avatar Jan David Mol
Browse files

Changed print statements into logging, to allow better control of output

parent 0ff6210e
Branches
Tags
1 merge request!4Timestamp logs
from I2Cdevices import *;
import numpy as np
import logging
class I2Cbitbang(I2Cdevices):
def I2CSet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0):
......@@ -10,7 +11,7 @@ class I2Cbitbang(I2Cdevices):
Addr=Dev['dev_address'];
# data2=[Addr<<1,regnr]+data;
data2=[Addr<<1]+int2bytes(regnr)+value
# print(data2)
# logging.info(data2)
I2Ccallback('SDO',0)
I2Ccallback('SCL',1)
if not(I2CbbTX(data2,I2Ccallback)): return False;
......@@ -18,9 +19,9 @@ class I2Cbitbang(I2Cdevices):
data3=[0]
if not(I2CbbRX(data2,data3,I2Ccallback)): return False;
if data3[0]!=0x80:
print("Expected Ack 0x80, received:",data3);
logging.info("Expected Ack 0x80, received:",data3);
return False;
print("Si4012 TX success!")
logging.info("Si4012 TX success!")
return True;
def I2CGet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0):
SPI=Find(self.D['I2C_devices'],'dev_name',dev)
......@@ -36,7 +37,7 @@ class I2Cbitbang(I2Cdevices):
# data2=[regnr%256]+data2;
# regnr=int(regnr/256);
# data2=[Addr<<1,regnr]+data2;
# print(data2,Addr,Reg['reg_addr']);
# logging.info(data2,Addr,Reg['reg_addr']);
if not(I2CbbTX(data2,I2Ccallback)): return False;
# return False;
data2=[(Addr<<1)+1];
......@@ -49,14 +50,14 @@ class I2Cbitbang(I2Cdevices):
else: value[:]=data3[:];
if (width!=l1*8) or (bitoffset>0):
value[0]=UnMask(value[0],width,bitoffset)
#print("Received:",data3);
#logging.info("Received:",data3);
return True;
def I2CbbTX(data2,SetBit):
SetBit('SDIOdir',1) #Input, should be high
if SetBit('SDI',0,True)==0:
print("I2C line low!")
logging.info("I2C line low!")
return False;
#Start
SetBit('SDIOdir',0) #Output = low
......@@ -64,18 +65,18 @@ def I2CbbTX(data2,SetBit):
for b in data2:
bit_array = "{0:{fill}8b}".format(b, fill='0')
#print(bit_array)
#logging.info(bit_array)
for bit in bit_array:
SetBit('SDIOdir',int(bit)) #input=high, output=low
SetBit('SCL',1)
SetBit('SCL',0)
SetBit('SDIOdir',1) #Input
#print(GetBit(SDI))
#logging.info(GetBit(SDI))
if SetBit('SDI',0,True)==1:
print("I2C: Not ACK")
logging.info("I2C: Not ACK")
return False;
SetBit('SCL',1)
#print(GetBit(SDI))
#logging.info(GetBit(SDI))
SetBit('SCL',0)
# SetBit(SDIOdir,0) #Output
......@@ -88,7 +89,7 @@ def I2CbbTX(data2,SetBit):
def I2CbbRX(data1,data2,SetBit):
SetBit('SDIOdir',1) #Input, should be high
if SetBit('SDI',0,True)==0:
print("I2C ack: line low!")
logging.info("I2C ack: line low!")
return False;
#Start
SetBit('SDIOdir',0) #Output = low
......@@ -97,18 +98,18 @@ def I2CbbRX(data1,data2,SetBit):
for b in data1:
bit_array = "{0:{fill}8b}".format(b, fill='0')
#print(bit_array)
#logging.info(bit_array)
for bit in bit_array:
SetBit('SDIOdir',int(bit)) #input=high, output=low
SetBit('SCL',1)
SetBit('SCL',0)
SetBit('SDIOdir',1) #Input
#print(GetBit(SDI))
#logging.info(GetBit(SDI))
if SetBit('SDI',0,True)==1:
print("I2C: Not ACK")
logging.info("I2C: Not ACK")
return False;
SetBit('SCL',1)
#print(GetBit(SDI))
#logging.info(GetBit(SDI))
SetBit('SCL',0)
for x in range(len(data2)):
......
from hwdev import *;
import numpy as np
import logging
def GetField(D,name,dev_number):
......@@ -44,10 +45,10 @@ class I2Cdevices(hwdev):
return True
def CallMethod(self,name,params,I2Ccallback):
# print("RCU1 call method",name)
# logging.info("RCU1 call method",name)
for Mth in self.D['Methods']:
if Mth['method_name']==name:
print("RCU1 Run method",name)
logging.info("RCU1 Run method",name)
for regs in Mth['registers']:
for key,value in regs.items():
self.SetVarValue(key,value,I2Ccallback)
......@@ -77,11 +78,11 @@ class I2Cdevices(hwdev):
a=[0]
self.I2CGet(Pin[0],Pin[1],a,I2Ccallback,1,Pin[2])
return a[0];
print("Set Child",child)
logging.info("Set Child",child)
return child.GetVarValue(name,value,SetGetPin)
def SetVarValue(self,name,value,I2Ccallback):
print("RCU1 Set ",name,value)
logging.info("RCU1 Set ",name,value)
D=self.D
Var1=Find(D['Variables'],'var_name',name)
......@@ -113,18 +114,18 @@ class I2Cdevices(hwdev):
if childname==c['child_name']:
return self.SetChildValue(c,c['obj'],name[len(childname)+1:],value,I2Ccallback)
# return hwdev.SetVarValue(self,name,value,I2Ccallback)
print("Unknown variable",name);
logging.info("Unknown variable",name);
return False;
print(Dev)
logging.info(Dev)
if scale: value=int2bytes(int(value[0]/float(scale)))
if Find(D['I2C_devices'],'dev_name',Dev[0]):
if not(width): width=8
if not(bitoffset): bitoffset=0
print('SetVar ',name,'I2C',Dev,value,'(width=',width,'bitoffset=',bitoffset,')')
logging.info('SetVar ',name,'I2C',Dev,value,'(width=',width,'bitoffset=',bitoffset,')')
return self.I2CSet(Dev[0],Dev[1],value,I2Ccallback,width,bitoffset)
if Find(D['SPI_devices'],'dev_name',Dev[0]):
print('SetVar ',name,'SPI',Dev,value)
logging.info('SetVar ',name,'SPI',Dev,value)
return SPIset(D,Dev[0],Dev[1],value,I2Ccallback,dev_number)
hwdev.SetVarValue(self,name,value,I2Ccallback)
# return SetVar(self.D,name,value,I2Ccallback)
......@@ -132,7 +133,7 @@ class I2Cdevices(hwdev):
def GetVarValue(self,name,value,I2Ccallback):
#def GetVar(D,name,value,I2Ccallback,dev_number=0):
dev_number=0;D=self.D
print("RCU1 Get ",name,value)
logging.info("RCU1 Get ",name,value)
Var1=Find(D['Variables'],'var_name',name)
if (Var1):
Dev=GetField(Var1,'var_dev',dev_number)
......@@ -151,27 +152,27 @@ class I2Cdevices(hwdev):
if childname==c['child_name']:
return self.GetChildValue(c,c['obj'],name[len(childname)+1:],value,I2Ccallback)
# return hwdev.SetVarValue(self,name,value,I2Ccallback)
print("Unknown variable",name);
logging.info("Unknown variable",name);
return False
print(Dev)
logging.info(Dev)
if not(width): width=8
if not(bitoffset): bitoffset=0
if Find(D['I2C_devices'],'dev_name',Dev[0]):
print('GetVar ',name,'I2C',Dev,value,'(width=',width,'bitoffset=',bitoffset,')')
logging.info('GetVar ',name,'I2C',Dev,value,'(width=',width,'bitoffset=',bitoffset,')')
result=self.I2CGet(Dev[0],Dev[1],value,I2Ccallback,width,bitoffset)
if not(result): return False;
if scale: value[0]=float(value[0])*float(scale);
return True
if Find(D['SPI_devices'],'dev_name',Dev[0]):
print('GetVar ',name,'SPI',Dev,value)
logging.info('GetVar ',name,'SPI',Dev,value)
return SPIget(D,Dev[0],Dev[1],value,I2Ccallback,dev_number)
if Find(D['I2C_bitbang'],'dev_name',Dev[0]):
print('GetVar ',name,'I2C bb',Dev,value)
logging.info('GetVar ',name,'I2C bb',Dev,value)
if not(I2Cbbget(D,Dev[0],Dev[1],value,I2Ccallback,dev_number,width,bitoffset)): return False
if scale: value[0]=float(value[0])*float(scale);
return True;
print("Unknown variable",name)
logging.info("Unknown variable",name)
return False;
# return GetVar(self.D,name,value,I2Ccallback)
......@@ -191,11 +192,11 @@ class I2Cdevices(hwdev):
def I2CSet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0):
#remember of values, add new ones with mask
# print('I2CSet:',dev,'=',value,'(mask=',mask,')')
# logging.info('I2CSet:',dev,'=',value,'(mask=',mask,')')
Dev=Find(self.D['I2C_devices'],'dev_name',dev)
Addr=Dev['dev_address']
Reg=Find(Dev['dev_registers'],'reg_name',reg)
# print(dev,reg,value)
# logging.info(dev,reg,value)
if (width<8) or (bitoffset>0):
previous=Reg.get('previous')
if not(previous):
......@@ -203,8 +204,8 @@ class I2Cdevices(hwdev):
if not(previous):
previous=0;
value[0]=ApplyMask(value[0],width,bitoffset,previous);
# print('masked to',value)
# print("Set",dev,reg,"to",value)
# logging.info('masked to',value)
# logging.info("Set",dev,reg,"to",value)
result=I2Ccallback(Addr,value,reg=Reg['reg_addr'],)
#if result:
Reg['previous']=value[0]
......@@ -215,7 +216,7 @@ class I2Cdevices(hwdev):
Addr=Dev['dev_address']
Reg=Find(Dev['dev_registers'],'reg_name',reg)
l1=int(np.floor((width+bitoffset+7)/8))
# print(width,bitoffset,l1)
# logging.info(width,bitoffset,l1)
makesinglevalue=((len(value)==1) and (l1>1));
if makesinglevalue: value2=[0 for x in range(l1)]
else: value2=value
......@@ -240,7 +241,7 @@ class I2Cdevices(hwdev):
# Addr=Dev['dev_address']
# Reg=Find(Dev['dev_registers'],'reg_name',reg)
# value[0]=Reg.get('previous')
# print("Get Value=",value[0])
# logging.info("Get Value=",value[0])
# if (width<8) or (bitoffset>0):
# value[0]=UnMask(value[0],width,bitoffset)
# return True;
......
from hwdev import *;
import numpy as np
import logging
def I2C_dummy(addr,data,reg=None,read=0):
# print("I2C dummy",addr,data)
# logging.info("I2C dummy",addr,data)
return True;
class I2Cswitch(hwdev):
def SetChannel(self,channel,I2Ccallback):
if not(hasattr(self,'CurrentChannel')): self.CurrentChannel=0
print("SetChannel",channel,self.CurrentChannel)
logging.info("SetChannel",channel,self.CurrentChannel)
if (channel)==self.CurrentChannel: return True;
self.CurrentChannel=channel
return I2Ccallback(self.D['dev_address'],[channel])
......@@ -25,7 +26,7 @@ class I2Cswitch(hwdev):
def GetVarValue(self,name,value,I2Ccallback):
def I2Ccallback2(addr,data,reg=None,read=0):
# print("Getvarcallback",x)
# logging.info("Getvarcallback",x)
if (read==2):
if (cnt>0): return True;
if not(self.SetChannel(gchannel,I2Ccallback)): return False;
......@@ -51,7 +52,7 @@ class I2Cswitch(hwdev):
for cnt,childname2 in enumerate(group['group_members']):
child=Find(self.D['dev_children'],'child_name',childname2)
if not(child): return False;
print("Get:",childname2)
logging.info("Get:",childname2)
cchannel=1<<child['child_addr']
value2=value[cnt*stride:(cnt+1)*stride]
if not(child['obj'].GetVarValue(name[len(childname)+1:],value2,I2Ccallback2)): return False;
......@@ -74,11 +75,11 @@ class I2Cswitch(hwdev):
for y in range(stride):
if value[x*stride+y]!=value[(x+1)*stride+y]: AllSame=False;
if AllSame:
print("Allsame");
logging.info("Allsame");
channel=0;
for childname2 in group['group_members']:
channel+=1<<(Find(self.D['dev_children'],'child_name',childname2)['child_addr'])
print(channel)
logging.info(channel)
if not(self.SetChannel(channel,I2Ccallback)): return False;
for x,childname2 in enumerate(group['group_members']):
child=Find(self.D['dev_children'],'child_name',childname2)
......@@ -90,7 +91,7 @@ class I2Cswitch(hwdev):
for x,childname2 in enumerate(group['group_members']):
child=Find(self.D['dev_children'],'child_name',childname2)
if not(child): return False;
print("Set:",childname2)
logging.info("Set:",childname2)
if not(self.SetChannel(1<<child['child_addr'],I2Ccallback)): return False;
if not(child['obj'].SetVarValue(name[len(childname)+1:],value[x*stride:(x+1)*stride],I2Ccallback)): return false;
return True;
......
from I2Cdevices import *;
import numpy as np
import logging
class SPIbitbang1(I2Cdevices):
def I2CSet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0):
......@@ -13,7 +14,7 @@ class SPIbitbang1(I2Cdevices):
data2 = ( ADC_rw << 23 ) + ( ADC_bytes << 21 ) + ( ADC_address << 8 ) + value[0]
bit_array = "{0:{fill}24b}".format(data2, fill='0')
# print(bit_array)
# logging.debug(bit_array)
SetBit('CS',0) #enable
for bit in bit_array:
SetBit('SDO',int(bit))
......@@ -28,7 +29,7 @@ class SPIbitbang1(I2Cdevices):
SPI=Find(self.D['I2C_devices'],'dev_name',dev)
Reg=Find(SPI['dev_registers'],'reg_name',reg)
ADC_reg_address=Reg['reg_addr']
# print(ADC_reg_address,CS,SDIOdir,SDI,SDO,CLK)
# logging.debug(ADC_reg_address,CS,SDIOdir,SDI,SDO,CLK)
SetBit=I2Ccallback
ADC_bytes = 0x00
......@@ -46,7 +47,7 @@ class SPIbitbang1(I2Cdevices):
SetBit('CS',1) #disable
# print("read byte")
# logging.debug("read byte")
SetBit('SDIOdir',1) #inpute
SetBit('CS',0) #enable
a=[0]
......@@ -60,8 +61,8 @@ class SPIbitbang1(I2Cdevices):
SetBit('SDIOdir',0) #output
# SetBit(SDO,1)
# SetBit(CLK,1)
# print(read_bit)
# logging.debug(read_bit)
# stri = "Read back data is: {0:2x} ".format(int(read_bit, 2))
# print(stri)
# logging.debug(stri)
value[0]=int(read_bit, 2)
return True;
from I2Cdevices import *;
import numpy as np
import logging
class SPIbitbang2(I2Cdevices):
def I2CSet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0):
......@@ -13,7 +14,7 @@ class SPIbitbang2(I2Cdevices):
data2 = ( reg_address << 9 ) + value[0]
bit_array = "{0:{fill}16b}".format(data2, fill='0')
# print(bit_array)
# logging.info(bit_array)
SetBit('CS',0) #enable
for bit in bit_array:
SetBit('SDI',int(bit))
......@@ -28,7 +29,7 @@ class SPIbitbang2(I2Cdevices):
SPI=Find(self.D['I2C_devices'],'dev_name',dev)
Reg=Find(SPI['dev_registers'],'reg_name',reg)
reg_address=(Reg['reg_addr'] if Reg else int(reg))
# print(ADC_reg_address,CS,SDIOdir,SDI,SDO,CLK)
# logging.info(ADC_reg_address,CS,SDIOdir,SDI,SDO,CLK)
SetBit=I2Ccallback
ADC_bytes = 0x00
......@@ -45,7 +46,7 @@ class SPIbitbang2(I2Cdevices):
# SetBit('CS',1) #disable
# print("read byte")
# logging.info("read byte")
# SetBit('SDIOdir',1) #inpute
# SetBit('CS',0) #enable
a=[0]
......@@ -58,8 +59,8 @@ class SPIbitbang2(I2Cdevices):
SetBit('CS',1) #disable
# SetBit(SDO,1)
# SetBit(CLK,1)
# print(read_bit)
# logging.info(read_bit)
stri = "Read back data is: {0:2x} ".format(int(read_bit, 2))
print(stri)
logging.info(stri)
value[0]=int(read_bit, 2)
return True;
import yaml;
import importlib
import sys, inspect
import logging
YAMLDIR='YAML/'
class hwdev:
def __init__(self,configfile):
print("Loading:",configfile)
logging.info("Loading:",configfile)
self.D=yaml.load(open(YAMLDIR+configfile))
self.loadchildren(self.D)
def loadchildren(self,D):
......@@ -15,12 +17,12 @@ class hwdev:
childname=(c['child_name']+"_" if c.get('child_name') else '');
objnm=c['child_dev']
yamlname=c['child_conf']
print("Add child:",childname,objnm,yamlname)
logging.info("Add child:",childname,objnm,yamlname)
i = importlib.import_module(objnm)
for name, obj in inspect.getmembers(i,inspect.isclass):
if name==objnm:
# yamlname=(c['conf_name'] if c.get('conf_name') else nm)
# print(" Load child:",childname," conf=",yamlname+".yaml")
# logging.debug(" Load child:",childname," conf=",yamlname+".yaml")
c['obj']=obj(yamlname+".yaml")
self.children.append([childname,c['obj']])
......@@ -49,7 +51,7 @@ class hwdev:
def CallMethod(self,name,params,I2Ccallback):
childname=name.split('_')[0]
for cname,child in self.children:
# print("hwdev callmethod",cname,childname)
# logging.debug("hwdev callmethod",cname,childname)
if cname=="": child.CallMethod(name,params,I2Ccallback)
elif cname[:-1]==childname: return child.CallMethod(name[len(childname)+1:],params,I2Ccallback)
return False
......
......@@ -6,13 +6,21 @@ import time
from opcua import ua, Server
from datetime import datetime;
import argparse
import logging
parser = argparse.ArgumentParser()
parser.add_argument("-s", "--simulator", help="Do not connect to I2c, but simulate behaviour.", action="store_true")
parser.add_argument("--no-lib-hack", help="Do not require a hacked opcua library. Breaks behaviour.", action="store_true")
parser.add_argument("-p", "--port", help="Port number to listen on [%(default)s].", type=int, default=4842)
parser.add_argument("-l", "--loglevel", help="Log level [%(default)s].", type=str, choices=["DEBUG","INFO","WARNING","ERROR"], default="DEBUG")
args = parser.parse_args()
# set log level
loglevel_nr = getattr(logging, args.loglevel.upper(), None)
if not isinstance(loglevel_nr, int):
raise ValueError('Invalid log level: %s' % args.loglevel)
logging.basicConfig(level=loglevel_nr)
if args.simulator:
import pypcc_test as pypcc
else:
......@@ -41,13 +49,13 @@ if True:
#Vars={}
#Vars[1]='123'
#print(Vars)
#logging.info(Vars)
#exit()
def ValCallback(nodeid,force=False):
vname,myvar,oldvalue=Vars_R[nodeid.Identifier]
# print("Value callback",vname)
# logging.info("Value callback",vname)
# vname=vname[vname.find('_')+1:]
# print("RCU variable:",vname,oldvalue)
# logging.info("RCU variable:",vname,oldvalue)
# X=RCU1.Getvar2(vname)
# if not(running):
if False:
......@@ -56,10 +64,10 @@ def ValCallback(nodeid,force=False):
return myvar
timenow=datetime.utcnow()
timediff=(timenow-myvar.SourceTimestamp).total_seconds()
# print(timediff)
# logging.info(timediff)
if not(force) and timediff<90: return myvar;
res=P1.GetVarValue(vname,oldvalue)
print("Read callback",vname,": Result:",res,oldvalue)
logging.info("Read callback",vname,": Result:",res,oldvalue)
if res:
myvar.Value.Value=(oldvalue[0] if len(oldvalue)==1 else oldvalue)
myvar.SourceTimestamp = datetime.utcnow()
......@@ -74,34 +82,34 @@ class SubHandler(object):
"""
def datachange_notification(self, node, val, data):
# print("Python: New data change event", node, val,data)
# logging.info("Python: New data change event", node, val,data)
if not(running): return
vname,myvar=Vars_W[node.nodeid.Identifier]
val=(val if isinstance(val, list) else [val] )
print("Write callback",vname,val)
logging.info("Write callback",vname,val)
P1.SetVarValue(vname,val)
#readback
# if True:
# print(Vars_R,Vars_R.values())
# logging.info(Vars_R,Vars_R.values())
for vname2,myvar2,oldvalue in Vars_R.values():
if vname2==vname:
if args.simulator:
res=True
print("Simulating fallthrough _RW->_R for",vname,": Result:",res,oldvalue)
logging.info("Simulating fallthrough _RW->_R for",vname,": Result:",res,oldvalue)
else:
res=P1.GetVarValue(vname,val)
print("Read callback",vname,": Result:",res,oldvalue)
logging.info("Read callback",vname,": Result:",res,oldvalue)
if res:
myvar2.Value.Value=(val[0] if len(val)==1 else val)
myvar2.SourceTimestamp = datetime.utcnow()
def event_notification(self, event):
print("Python: New event", event)
logging.debug("Python: New event", event)
def CallMethod(ObjectID,name):
print("Callmethod",name)
logging.debug("Callmethod",name)
P1.CallMethod(name,None)
......@@ -121,19 +129,19 @@ def AddVar(name,dtype=0,RW=0,cnt=1):
myvar = (PCCobj.add_variable(idx, vname, 0.0) if cnt<=1 else PCCobj.add_variable(idx, vname, cnt*[0.0]))
else:
myvar = (PCCobj.add_variable(idx, vname, 0) if cnt<=1 else PCCobj.add_variable(idx, vname, cnt*[0]))
print("Variable added: ",vname)
logging.info("Variable added: ",vname)
Vars_R[myvar.nodeid.Identifier]=[name,myvar.get_data_value(),varvalue2]
ValCallback(myvar.nodeid,force=True)
# print(myvar.get_value())
# logging.info(myvar.get_value())
if not args.no_lib_hack:
server.set_attribute_callback(myvar.nodeid, ValCallback)
# varvalue=myvar.get_data_value().Value
# Vars_R[myvar.nodeid.Identifier][2]=varvalue
# print(varvalue2,varvalue)
# logging.info(varvalue2,varvalue)
if RW in [2,3]:
vname=name+"_RW";
print("Variable added: ",vname)#,'=',varvalue2)
logging.info("Variable added: ",vname)#,'=',varvalue2)
myvar2 = PCCobj.add_variable(idx, vname, (varvalue2[0] if len(varvalue2)==1 else varvalue2))
myvar2.set_writable()
Vars_W[myvar2.nodeid.Identifier]=[name,myvar2.get_data_value()]
......@@ -143,29 +151,29 @@ def AddVar(name,dtype=0,RW=0,cnt=1):
def AddMethod(name):
vname=name;
myvar = PCCobj.add_method(idx, vname, lambda ObjectId : CallMethod(ObjectId,name), [],[] )
print("AddMethod:",vname)
logging.info("AddMethod:",vname)
print("Start server");
logging.info("Start server");
server.start()
handler = SubHandler()
sub = server.create_subscription(500, handler)
running=False;
print("Add variables:")
logging.info("Add variables:")
P1.GetVarNames("",AddVar);
print("Add modes:")
logging.info("Add modes:")
P1.GetMethodNames("",AddMethod);
time.sleep(1)
running=True;
print("Server started")
logging.info("Server started")
try:
while True:
time.sleep(1)
finally:
print("Stop server");
logging.info("Stop server");
server.stop()
......@@ -190,16 +198,16 @@ finally:
#RCU.Setvar2('Power_Ant1',[0])
#print(RCU.Getvar2('Amp_Gain0'))
#logging.info(RCU.Getvar2('Amp_Gain0'))
#print(RCU.Getvar2('ID'))
#logging.info(RCU.Getvar2('ID'))
#print(RCU.Getvar2('ADC_lock1'))
#logging.info(RCU.Getvar2('ADC_lock1'))
#print(RCU.Getvar2('HBA_DelayX1',element=1))
#logging.info(RCU.Getvar2('HBA_DelayX1',element=1))
......
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
......@@ -11,7 +12,7 @@ def I2C1server(addr,data,reg=None,read=0):
if read==3:
time.sleep(data[0]/1000.)
return True
# print("I2C",addr,reg,data,read)
# logging.debug("I2C",addr,reg,data,read)
bus=pylibi2c.I2CDevice('/dev/i2c-1',addr)
if read==1:
length=len(data)
......
from hwdev import hwdev;
import time
import logging
def I2C1server(addr,data,reg=None,read=0):
print("I2C:",addr,data,reg,read)
logging.info("I2C:",addr,data,reg,read)
return True;
class pypcc(hwdev):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment