diff --git a/I2Cbitbang.py b/I2Cbitbang.py deleted file mode 100644 index ad03b4343636726b04c73cb5b89480a4cf8bf775..0000000000000000000000000000000000000000 --- a/I2Cbitbang.py +++ /dev/null @@ -1,134 +0,0 @@ -from I2Cdevices import *; -import numpy as np -import logging - -class I2Cbitbang(I2Cdevices): - def I2CSet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0): -# def I2Cset(self,D,name,reg,data,I2Ccallback,dev_number=0): - Dev=Find(self.D['I2C_devices'],'dev_name',dev) - Reg=Find(Dev['dev_registers'],'reg_name',reg) - regnr=Reg['reg_addr'] - Addr=Dev['dev_address']; -# data2=[Addr<<1,regnr]+data; - data2=[Addr<<1]+int2bytes(regnr)+value -# logging.info("%s",data2) - I2Ccallback('SDO',0) - I2Ccallback('SCL',1) - if not(I2CbbTX(data2,I2Ccallback)): return False; - data2=[(Addr<<1)+1]; - data3=[0] - if not(I2CbbRX(data2,data3,I2Ccallback)): return False; - if data3[0]!=0x80: - logging.error("Expected Ack 0x80, received: %s",data3); - return False; - 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) - dev_number=0; - Reg=Find(SPI['dev_registers'],'reg_name',reg) - Addr=SPI['dev_address']; - regnr=Reg['reg_addr'] - data2=[Addr<<1]+int2bytes(regnr) - if (len(data2)==3) and (data2[1]==17): - data2[1]=18; #SI4012 hack as get is one higher than set - width+=1; #hack to ignore first ack byte -# while regnr>255: -# data2=[regnr%256]+data2; -# regnr=int(regnr/256); -# data2=[Addr<<1,regnr]+data2; -# logging.info("%s %s %s",data2,Addr,Reg['reg_addr']); - if not(I2CbbTX(data2,I2Ccallback)): return False; -# return False; - data2=[(Addr<<1)+1]; - l1=int(np.floor((width+bitoffset+7)/8)) - makesinglevalue=((len(value)==1) and (l1>1)); - if makesinglevalue: data3=[0 for x in range(l1)] - else: data3=value - if not(I2CbbRX(data2,data3,I2Ccallback)): return False; - if makesinglevalue: value[0]=bytes2int(data3) - else: value[:]=data3[:]; - if (width!=l1*8) or (bitoffset>0): - value[0]=UnMask(value[0],width,bitoffset) - #logging.info("Received: %s",data3); - return True; - - -def I2CbbTX(data2,SetBit): - SetBit('SDIOdir',1) #Input, should be high - if SetBit('SDI',0,True)==0: - logging.error("I2C line low!") - return False; - #Start - SetBit('SDIOdir',0) #Output = low - SetBit('SCL',0) - - for b in data2: - bit_array = "{0:{fill}8b}".format(b, fill='0') - #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 - #logging.info(GetBit(SDI)) - if SetBit('SDI',0,True)==1: - logging.error("I2C: Not ACK") - return False; - SetBit('SCL',1) - #logging.info(GetBit(SDI)) - SetBit('SCL',0) -# SetBit(SDIOdir,0) #Output - - #Stop - SetBit('SDIOdir',0) #Low - SetBit('SCL',1) - SetBit('SDIOdir',1) #High - return True - -def I2CbbRX(data1,data2,SetBit): - SetBit('SDIOdir',1) #Input, should be high - if SetBit('SDI',0,True)==0: - logging.error("I2C ack: line low!") - return False; - #Start - SetBit('SDIOdir',0) #Output = low - SetBit('SCL',0) - - - for b in data1: - bit_array = "{0:{fill}8b}".format(b, fill='0') - #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 - #logging.info(GetBit(SDI)) - if SetBit('SDI',0,True)==1: - logging.error("I2C: Not ACK") - return False; - SetBit('SCL',1) - #logging.info(GetBit(SDI)) - SetBit('SCL',0) - - for x in range(len(data2)): - readbit=''; - SetBit('SDIOdir',1) #Input - for bit in range(8): - SetBit('SCL',1) - readbit+=str(SetBit('SDI',0,True)) - SetBit('SCL',0) - if x<len(data2)-1: - SetBit('SDIOdir',0) #Output - else: #last one = not-ack - SetBit('SDIOdir',1) #Output - SetBit('SCL',1) - SetBit('SCL',0) - data2[x]=int(readbit,2) - - #Stop - SetBit('SDIOdir',0) #Output = low - SetBit('SCL',1) - SetBit('SDIOdir',1) #Input = high - return True; diff --git a/I2Cdevices.py b/I2Cdevices.py deleted file mode 100644 index 58fc0d5b41e9e908a803ec5ed205a9d9a9204c27..0000000000000000000000000000000000000000 --- a/I2Cdevices.py +++ /dev/null @@ -1,249 +0,0 @@ -from hwdev import *; -import numpy as np -import logging - - -def GetField(D,name,dev_number): - X=D.get(name) - return X[dev_number] if isinstance(X,list) else X; - - -def bytes2int(bts): - x=0; - for b in bts: - x=x*256+b; - return x; -def int2bytes(i): - b=[]; - while i>255: - b=[i%256]+b; - i>>=8; - return [i]+b; - - -def I2CName2pin(s): - dev,reg,pin=s.split('.') - return dev,reg,int(pin) - - -def ApplyMask(value,width=8,bitoffset=0,previous=0): - mask=(1<<width)-1 - if bitoffset>0: - value<<=bitoffset; - mask<<=bitoffset; - return (value & mask) + (previous - (previous & mask)); -def UnMask(value,width=8,bitoffset=0): - mask=(1<<width)-1 - if bitoffset>0: - value>>=bitoffset; - value=value&mask; - return value; - - -class I2Cdevices(hwdev): - def GetVarValues(names,value,I2Ccallback): - return True - - def CallMethod(self,name,params,I2Ccallback): -# logging.info("RCU1 call method %s",name) - for Mth in self.D['Methods']: - if Mth['method_name']==name: - logging.info("RCU1 Run method %s",name) - for regs in Mth['registers']: - for key,value in regs.items(): - self.SetVarValue(key,value,I2Ccallback) - return True - return hwdev.CallMethod(self,name,params,I2Ccallback) - - def SetChildValue(self,D,child,name,value,I2Ccallback): - Pins={} - for p in D['child_GPIO']: - for key,regvalue in p.items(): - Pins[key]=I2CName2pin(regvalue) - def SetGetPin(pin,value,Get=False): - Pin=Pins[pin] - if not(Get): return self.I2CSet(Pin[0],Pin[1],[value],I2Ccallback,1,Pin[2]) - a=[0] - self.I2CGet(Pin[0],Pin[1],a,I2Ccallback,1,Pin[2]) - return a[0]; - return child.SetVarValue(name,value,SetGetPin) - def GetChildValue(self,D,child,name,value,I2Ccallback): - Pins={} - for p in D['child_GPIO']: - for key,regvalue in p.items(): - Pins[key]=I2CName2pin(regvalue) - def SetGetPin(pin,value,Get=False): - Pin=Pins[pin] - if not(Get): return self.I2CSet(Pin[0],Pin[1],[value],I2Ccallback,1,Pin[2]) - a=[0] - self.I2CGet(Pin[0],Pin[1],a,I2Ccallback,1,Pin[2]) - return a[0]; - logging.info("Set Child %s",child) - return child.GetVarValue(name,value,SetGetPin) - - def SetVarValue(self,name,value,I2Ccallback): - logging.info("RCU1 Set %s=%s",name,value) - D=self.D - Var1=Find(D['Variables'],'var_name',name) - - if (Var1): - dev_number=0 - Dev=GetField(Var1,'var_dev',dev_number) - Dev=Dev.split('.') - - vmax=GetField(Var1,'var_max',dev_number) - if vmax: - if value[0]>vmax: value[0]=vmax; - vmin=GetField(Var1,'var_min',dev_number) - if vmin: - if value[0]<vmin: value[0]=vmin; - value[0]=value-vmin; - width=GetField(Var1,'var_width',dev_number) - bitoffset=GetField(Var1,'var_bitoffset',dev_number) - scale=GetField(Var1,'var_scale',dev_number) - elif (Find(D['Methods'],'method_name',name)): - return self.CallMethod(name,value,I2Ccallback) - elif len(name.split('.'))==2: - Dev=name.split('.'); - width=False; - bitoffset=False; - scale=False; - else: - childname=name.split('_')[0] - for c in self.D['dev_children']: - if childname==c['child_name']: - return self.SetChildValue(c,c['obj'],name[len(childname)+1:],value,I2Ccallback) -# return hwdev.SetVarValue(self,name,value,I2Ccallback) - logging.error("Unknown variable %s",name); - return False; - logging.info("%s",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 - logging.info('SetVar %s I2C %s to %s (width=%s bitoffset=%s)',name,Dev,value,width,bitoffset) - return self.I2CSet(Dev[0],Dev[1],value,I2Ccallback,width,bitoffset) - - if Find(D['SPI_devices'],'dev_name',Dev[0]): - logging.info('SetVar %s SPI %S to %s',name,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) - - def GetVarValue(self,name,value,I2Ccallback): -#def GetVar(D,name,value,I2Ccallback,dev_number=0): - dev_number=0;D=self.D - logging.info("RCU1 Get %s=%s",name,value) - Var1=Find(D['Variables'],'var_name',name) - if (Var1): - Dev=GetField(Var1,'var_dev',dev_number) - Dev=Dev.split('.') - width=GetField(Var1,'var_width',dev_number) - bitoffset=GetField(Var1,'var_bitoffset',dev_number) - scale=GetField(Var1,'var_scale',dev_number) - elif len(name.split('.'))==2: - Dev=name.split('.'); - width=False; - bitoffset=False; - scale=False; - else: - childname=name.split('_')[0] - for c in self.D['dev_children']: - if childname==c['child_name']: - return self.GetChildValue(c,c['obj'],name[len(childname)+1:],value,I2Ccallback) -# return hwdev.SetVarValue(self,name,value,I2Ccallback) - logging.error("Unknown variable %s",name); - return False - - logging.info("%s",Dev) - if not(width): width=8 - if not(bitoffset): bitoffset=0 - if Find(D['I2C_devices'],'dev_name',Dev[0]): - logging.info('GetVar %s I2C %s value %s (width=%s bitoffset=%s)',name,Dev,value,width,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]): - logging.info('GetVar %s SPI %s value %s',name,Dev,value) - return SPIget(D,Dev[0],Dev[1],value,I2Ccallback,dev_number) - if Find(D['I2C_bitbang'],'dev_name',Dev[0]): - logging.info('GetVar %s I2C bb %s value %s',name,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; - logging.error("Unknown variable %s",name) - return False; - -# return GetVar(self.D,name,value,I2Ccallback) - - def GetVarNames(self,parentname,callback): - for V in self.D['Variables']: - dtype=(1 if V.get('var_scale') else 0) - RWs={'RO' : 1,'WO' : 2,'RW' : 3} - RW=(RWs[V.get('var_R/W')] if V.get('var_R/W') else 0) - callback(parentname+V['var_name'],dtype,RW) - return hwdev.GetVarNames(self,parentname,callback); - - def GetMethodNames(self,parentname,callback): - for V in self.D['Methods']: - if not(V.get('method_invisible')): callback(parentname+V['method_name']) - return hwdev.GetMethodNames(self,parentname,callback); - - def I2CSet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0): - #remember of values, add new ones with mask - # logging.info('I2CSet: %s=%s (mask=%s)',dev,value,mask) - Dev=Find(self.D['I2C_devices'],'dev_name',dev) - Addr=Dev['dev_address'] - Reg=Find(Dev['dev_registers'],'reg_name',reg) - # logging.info("%s %s %s",dev,reg,value) - if (width<8) or (bitoffset>0): - previous=Reg.get('previous') - if not(previous): - previous=Reg.get('reg_default') - if not(previous): - previous=0; - value[0]=ApplyMask(value[0],width,bitoffset,previous); - # logging.info('masked to %s',value) - # logging.info("Set %s %s to %s",dev,reg,value) - result=I2Ccallback(Addr,value,reg=Reg['reg_addr'],) - #if result: - Reg['previous']=value[0] - return result - - def I2CGet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0): - Dev=Find(self.D['I2C_devices'],'dev_name',dev) - Addr=Dev['dev_address'] - Reg=Find(Dev['dev_registers'],'reg_name',reg) - l1=int(np.floor((width+bitoffset+7)/8)) -# logging.info("%s %s %s",width,bitoffset,l1) - makesinglevalue=((len(value)==1) and (l1>1)); - if makesinglevalue: value2=[0 for x in range(l1)] - else: value2=value - reg=Reg['reg_addr'] - if reg>255: #This is for the monitor ADC - if not(I2Ccallback(Addr,int2bytes(reg),read=2)): return False; - I2Ccallback(Addr,[250],read=3) - if not(I2Ccallback(Addr,value2,read=1)): return False; - else: - if not(I2Ccallback(Addr,value2,reg=Reg['reg_addr'],read=1)): return False; - if value2[0] is None: return False - if makesinglevalue: value[0]=bytes2int(value2) - else: value[:]=value2[:]; - Reg['previous']=value[0] - if (width!=l1*8) or (bitoffset>0): - value[0]=UnMask(value[0],width,bitoffset) - else: value[0]=value2[0] - return True; - -#def I2CGetBuff(D,dev,reg,value,I2Ccallback,width=8,bitoffset=0): -# Dev=Find(D['I2C_devices'],'dev_name',dev) -# Addr=Dev['dev_address'] -# Reg=Find(Dev['dev_registers'],'reg_name',reg) -# value[0]=Reg.get('previous') -# logging.info("Get Value=%s",value[0]) -# if (width<8) or (bitoffset>0): -# value[0]=UnMask(value[0],width,bitoffset) -# return True; - - diff --git a/I2Cswitch.py b/I2Cswitch.py deleted file mode 100644 index 004b62fe0b7c2a61c8462f2f76f0f2c203334684..0000000000000000000000000000000000000000 --- a/I2Cswitch.py +++ /dev/null @@ -1,131 +0,0 @@ -from hwdev import *; -import numpy as np -import logging - -def I2C_dummy(addr,data,reg=None,read=0): -# logging.info("I2C dummy addr=%s data=%s",addr,data) - return True; - -class I2Cswitch(hwdev): - def SetChannel(self,channel,I2Ccallback): - if not(hasattr(self,'CurrentChannel')): self.CurrentChannel=0 - logging.info("SetChannel %s %s",channel,self.CurrentChannel) - if (channel)==self.CurrentChannel: return True; - self.CurrentChannel=channel - return I2Ccallback(self.D['dev_address'],[channel]) - -# def GetVarNames(self,parentname,callback): -# for c in self.D['dev_children']: -# c['obj'].GetVarNames(parentname+c['name']+'_',callback) -# return True; - -# def GetMethodNames(self,parentname,callback): -# for c in self.D['dev_children']: -# c['obj'].GetMethodNames(parentname+c['name']+'_',callback) -# return True; - - def GetVarValue(self,name,value,I2Ccallback): - def I2Ccallback2(addr,data,reg=None,read=0): -# logging.info("Getvarcallback %s",x) - if (read==2): - if (cnt>0): return True; - if not(self.SetChannel(gchannel,I2Ccallback)): return False; - elif (read==3): - if (cnt>0): return True; - return I2Ccallback(addr,data,reg,read) - elif not(self.SetChannel(cchannel,I2Ccallback)): return False; - return I2Ccallback(addr,data,reg,read) - - childname=name.split('_')[0] - child=Find(self.D['dev_children'],'child_name',childname) - if child: - if not(self.SetChannel(1<<child['child_addr'],I2Ccallback)): return False; - return child['obj'].GetVarValue(name[len(childname)+1:],value,I2Ccallback) - group=Find(self.D['dev_groups'],'group_name',childname) - if group: - devcnt=len(group['group_members']) - stride=len(value)//devcnt; - gchannel=0; - for childname2 in group['group_members']: - gchannel+=1<<(Find(self.D['dev_children'],'child_name',childname2)['child_addr']) - - for cnt,childname2 in enumerate(group['group_members']): - child=Find(self.D['dev_children'],'child_name',childname2) - if not(child): return False; - logging.info("Get: %s",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; - value[cnt*stride:(cnt+1)*stride]=value2 - return True; - return False - - def SetVarValue(self,name,value,I2Ccallback): - childname=name.split('_')[0] - child=Find(self.D['dev_children'],'child_name',childname) - if child: - if not(self.SetChannel(1<<child['child_addr'],I2Ccallback)): return False; - return child['obj'].SetVarValue(name[len(childname)+1:],value,I2Ccallback) - group=Find(self.D['dev_groups'],'group_name',childname) - if group: - devcnt=len(group['group_members']) - stride=len(value)//devcnt; - AllSame=True; - for x in range(devcnt-1): - for y in range(stride): - if value[x*stride+y]!=value[(x+1)*stride+y]: AllSame=False; - if AllSame: - logging.info("Allsame"); - channel=0; - for childname2 in group['group_members']: - channel+=1<<(Find(self.D['dev_children'],'child_name',childname2)['child_addr']) - logging.info("%s",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) - if not(child): return False; - callback=(I2Ccallback if x==0 else I2C_dummy) - if not(child['obj'].SetVarValue(name[len(childname)+1:],value[:stride],callback)): return false; - return True; - else: - for x,childname2 in enumerate(group['group_members']): - child=Find(self.D['dev_children'],'child_name',childname2) - if not(child): return False; - logging.info("Set: %s",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; - return False - - def CallMethod(self,name,params,I2Ccallback): - childname=name.split('_')[0] - child=Find(self.D['dev_children'],'child_name',childname) - if child: - if not(self.SetChannel(1<<child['child_addr'],I2Ccallback)): return False; - return child['obj'].CallMethod(name[len(childname)+1:],params,I2Ccallback) - group=Find(self.D['dev_groups'],'group_name',childname) - if group: - channel=0; - for childname2 in group['group_members']: - channel+=1<<(Find(self.D['dev_children'],'child_name',childname2)['child_addr']) - 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) - if not(child): return False; - callback=(I2Ccallback if x==0 else I2C_dummy) - if not(child['obj'].CallMethod(name[len(childname)+1:],params,callback)): return false; - return True; - return False; - - def GetVarNames(self,parentname,callback): - if not(hwdev.GetVarNames(self,parentname,callback)): return False; - def AddVar(name,dtype=0,RW=3,cnt=1): - callback(name,dtype,RW,cnt*devcnt) - for group in self.D['dev_groups']: - childname=group['group_members'][0] - devcnt=len(group['group_members']) - child=Find(self.D['dev_children'],'child_name',childname) - if not(child): return False; - child['obj'].GetVarNames(parentname+group['group_name']+'_',AddVar) - return True; - diff --git a/SPIbitbang1.py b/SPIbitbang1.py deleted file mode 100644 index 196a5a8ab1c75fabe03e64f251424a133e6b504a..0000000000000000000000000000000000000000 --- a/SPIbitbang1.py +++ /dev/null @@ -1,68 +0,0 @@ -from I2Cdevices import *; -import numpy as np -import logging - -class SPIbitbang1(I2Cdevices): - def I2CSet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0): - SPI=Find(self.D['I2C_devices'],'dev_name',dev) - Reg=Find(SPI['dev_registers'],'reg_name',reg) - ADC_address=Reg['reg_addr'] - SetBit=I2Ccallback - - ADC_bytes = 0x00 - ADC_rw = 0x00 # 0 for write, 1 for read - data2 = ( ADC_rw << 23 ) + ( ADC_bytes << 21 ) + ( ADC_address << 8 ) + value[0] - - bit_array = "{0:{fill}24b}".format(data2, fill='0') - # logging.debug("%s",bit_array) - SetBit('CS',0) #enable - for bit in bit_array: - SetBit('SDO',int(bit)) - SetBit('CLK',1) - SetBit('CLK',0) - SetBit('CS',1) - return True; - - - def I2CGet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0): - - SPI=Find(self.D['I2C_devices'],'dev_name',dev) - Reg=Find(SPI['dev_registers'],'reg_name',reg) - ADC_reg_address=Reg['reg_addr'] -# logging.debug("%s %s %s %s %s %s",ADC_reg_address,CS,SDIOdir,SDI,SDO,CLK) - SetBit=I2Ccallback - - ADC_bytes = 0x00 - ADC_rw = 0x01 # 0 for write, 1 for read - - data = ( ADC_rw << 15) + ( ADC_bytes << 13 ) + ADC_reg_address - - SetBit('CS',0) #enable - - bit_array = "{0:{fill}16b}".format(data, fill='0') - for bit in bit_array: - SetBit('SDO',int(bit)) - SetBit('CLK',1) - SetBit('CLK',0) - - SetBit('CS',1) #disable - - # logging.debug("read byte") - SetBit('SDIOdir',1) #inpute - SetBit('CS',0) #enable - a=[0] - read_bit = '' - for cnt in range(8*(ADC_bytes+1)): - ret_value=SetBit('SDI',0,True) - read_bit += str(ret_value) - SetBit('CLK',1) - SetBit('CLK',0) #read after falling edge - SetBit('CS',1) #disable - SetBit('SDIOdir',0) #output -# SetBit(SDO,1) -# SetBit(CLK,1) -# logging.debug("%s",read_bit) -# stri = "Read back data is: {0:2x} ".format(int(read_bit, 2)) -# logging.debug("%s",stri) - value[0]=int(read_bit, 2) - return True; diff --git a/SPIbitbang2.py b/SPIbitbang2.py deleted file mode 100644 index edbdc9e45613a6178a0c86f2f55cc8672daf8f87..0000000000000000000000000000000000000000 --- a/SPIbitbang2.py +++ /dev/null @@ -1,66 +0,0 @@ -from I2Cdevices import *; -import numpy as np -import logging - -class SPIbitbang2(I2Cdevices): - def I2CSet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0): - 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)) - SetBit=I2Ccallback - -# dev_rw = 0x00 # 0 for write, 1 for read -# data2 = ( reg_address << 9 ) + ( dev_rw << 8 ) + value[0] - data2 = ( reg_address << 9 ) + value[0] - - bit_array = "{0:{fill}16b}".format(data2, fill='0') - # logging.info("%s",bit_array) - SetBit('CS',0) #enable - for bit in bit_array: - SetBit('SDI',int(bit)) - SetBit('CLK',1) - SetBit('CLK',0) - SetBit('CS',1) - return True; - - - def I2CGet(self,dev,reg,value,I2Ccallback,width=8,bitoffset=0): - - 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)) -# logging.info("%s %s %s %s %s %s",ADC_reg_address,CS,SDIOdir,SDI,SDO,CLK) - SetBit=I2Ccallback - ADC_bytes = 0x00 - -# ADC_rw = 0x01 # 0 for write, 1 for read - data = ( reg_address << 7 ) + 1 - - SetBit('CS',0) #enable - - bit_array = "{0:{fill}8b}".format(data, fill='0') - for bit in bit_array: - SetBit('SDI',int(bit)) - SetBit('CLK',1) - SetBit('CLK',0) - -# SetBit('CS',1) #disable - - # logging.info("read byte") -# SetBit('SDIOdir',1) #inpute -# SetBit('CS',0) #enable - a=[0] - read_bit = '' - for cnt in range(8*(ADC_bytes+1)): - ret_value=SetBit('SDO',0,True) - read_bit += str(ret_value) - SetBit('CLK',1) - SetBit('CLK',0) #read after falling edge - SetBit('CS',1) #disable -# SetBit(SDO,1) -# SetBit(CLK,1) -# logging.info("%s",read_bit) - stri = "Read back data is: {0:2x} ".format(int(read_bit, 2)) - logging.info("%s",stri) - value[0]=int(read_bit, 2) - return True; diff --git a/YAML/LTS_RCU2L.yaml b/YAML/LTS_RCU2L.yaml deleted file mode 100644 index 03ce80441325522d175a29a6a123e8bba371947c..0000000000000000000000000000000000000000 --- a/YAML/LTS_RCU2L.yaml +++ /dev/null @@ -1,272 +0,0 @@ -dev_children: - - child_name: Dither3 - child_dev : I2Cbitbang - child_conf: LTS_RCU2_dither - child_GPIO: - - SCL : IO1.OUT1.6 - - SDO : IO2.OUT2.3 - - SDI : IO2.IN2.3 - - SDIOdir : IO2.CONF2.3 - - child_name: Dither2 - child_dev : I2Cbitbang - child_conf: LTS_RCU2_dither - child_GPIO: - - SCL : IO1.OUT2.7 - - SDO : IO1.OUT1.7 - - SDI : IO1.IN1.7 - - SDIOdir : IO1.CONF1.7 - - child_name: ADC1 - child_dev : SPIbitbang1 - child_conf: LTS_RCU2_ADC - child_GPIO: - - CLK : IO3.OUT1.1 - - SDO : IO3.OUT1.0 - - SDI : IO3.IN1.0 - - SDIOdir: IO3.CONF1.0 - - CS : IO3.OUT2.0 - - child_name: ADC2 - child_dev : SPIbitbang1 - child_conf: LTS_RCU2_ADC - child_GPIO: - - CLK : IO3.OUT1.3 - - SDO : IO3.OUT1.2 - - SDI : IO3.IN1.2 - - SDIOdir: IO3.CONF1.2 - - CS : IO3.OUT2.1 - - child_name: ADC3 - child_dev : SPIbitbang1 - child_conf: LTS_RCU2_ADC - child_GPIO: - - CLK : IO3.OUT1.5 - - SDO : IO3.OUT1.4 - - SDI : IO3.IN1.4 - - SDIOdir: IO3.CONF1.4 - - CS : IO3.OUT2.2 - -#This is the I2C devices in the RCU -I2C_devices: - - dev_name: IO1 - dev_description: IO-Expander for filter selection - dev_address: 0x75 - dev_device: TCA9539 - dev_registers: - - reg_name: CONF1 - reg_addr: 6 - - reg_name: CONF2 - reg_addr: 7 - - reg_name: OUT1 - reg_addr: 2 - ref_default: 0 - - reg_name: OUT2 - reg_addr: 3 - ref_default: 0 - - reg_name: IN1 - reg_addr: 0 - - reg_name: IN2 - reg_addr: 1 - - - dev_name: IO3 - dev_description: IO-Expander for ADC control - dev_address: 0x20 - dev_device: TCA6416 - dev_registers: - - reg_name: CONF1 - reg_description: Direction of IO pins 0..7 - reg_addr: 6 - - reg_name: CONF2 - reg_description: Direction of IO pints 8..15 - reg_addr: 7 - - reg_name: IN1 - reg_description: Ouput port register 0..7 - reg_addr: 0 - - reg_name: IN2 - reg_description: Ouput port register 0..7 - reg_addr: 1 - - reg_name: OUT1 - reg_description: Ouput port register 0..7 - reg_addr: 2 - reg_default: 0x0F - - reg_name: OUT2 - reg_description: Ouput port register 8..15 - reg_addr: 3 - reg_default: 0x0F - - - dev_name: IO2 - dev_description: IO-Expander for ON/OFF, Band, BUFx2 - dev_address: 0x76 - dev_device: TCA9539 - dev_registers: - - reg_name: CONF1 - reg_addr: 6 - - reg_name: CONF2 - reg_addr: 7 - - reg_name: OUT1 - reg_addr: 2 - ref_default: 0 - - reg_name: OUT2 - reg_addr: 3 - ref_default: 0 - - reg_name: IN1 - reg_addr: 0 - - reg_name: IN2 - reg_addr: 1 - - - dev_name: UC - dev_description: RCU microcontroller - dev_address: 0x40 - dev_registers: - - reg_name: ID - reg_description: Device ID - reg_addr: 0 - - - dev_name: ROM - dev_description: EEPROM memory - dev_address: 0x53 - dev_registers: - - reg_name: ctr_len - reg_description: Length of control data - reg_addr: 0 - - reg_name: ctr_dat - reg_description: Control data (protocol buffers) - reg_addr: 2 - - - - dev_name: AN - dev_description: Monitor ADC on RCU - dev_address: 0x14 - dev_device: LTC2495 - dev_registers: - - reg_name: Ch0 - reg_addr: 0xB080 - - reg_name: Ch1 - reg_addr: 0xB8 - - reg_name: Ch2 - reg_addr: 0xB1 - - reg_name: Ch3 - reg_addr: 0xB9 - - reg_name: Ch4 - reg_addr: 0xB2 - - reg_name: Ch5 - reg_addr: 0xBA - - reg_name: Ch6 - reg_addr: 0xB3 - - reg_name: Ch7 - reg_addr: 0xBB - - reg_name: Temp - reg_addr: 0xA0C0 - -Variables: - - var_name: Attenuator1 - var_dev: IO1.OUT1 - var_width: 5 - var_max: 21 - var_R/W: RW - - var_name: Attenuator2 - var_dev: IO1.OUT2 - var_width: 5 - var_max: 21 - var_R/W: RW - - var_name: Attenuator3 - var_dev: IO2.OUT1 - var_width: 5 - var_max: 24 - var_R/W: RW - - - var_name: Pwr_dig - var_description: Enable LDOs - var_dict: {0 : Off, 1 : On} - var_dev: IO2.OUT1 - var_width: 1 - var_bitoffset: 6 - var_R/W: RO - - - var_name: Band3 - var_dev: IO2.OUT2 - var_dict: {0 : 10MHz, 1 : 30MHz} - var_width: 1 - var_bitoffset: 0 - var_R/W: RW - - - var_name: Band1 - var_dev: IO2.OUT2 - var_dict: {0 : 10MHz, 1 : 30MHz} - var_width: 1 - var_bitoffset: 1 - var_R/W: RW - - - var_name: Band2 - var_dev: IO2.OUT2 - var_dict: {0 : 10MHz, 1 : 30MHz} - var_width: 1 - var_bitoffset: 4 - var_R/W: RW - - - var_name: LED0 - var_description: Front panel LEDs, 0=On - var_dict: {0 : Off, 1 : Yellow, 2: Red, 3: Orange} - var_dev: IO2.OUT2 - var_width: 2 - var_bitoffset: 6 - var_R/W: RW - - - var_name: Temperature - var_dev: AN.Temp - var_width: 23 - var_scale: 4.21e-3 - var_R/W: RO - - - var_name: Dth3_Pwr - var_dev: IO2.OUT2 - var_width: 1 - var_bitoffset: 2 - - - var_name: Dth2_Pwr - var_dev: IO1.OUT2 - var_width: 1 - var_bitoffset: 6 - - -Methods: - - method_name: RCU_on - registers: - - IO2.CONF1: [0] #Setup IO expanders to output with default values - - IO2.OUT1: [0x4A] - - IO2.OUT2: [0x55] - - IO3.OUT1: [0x7f] - - IO3.OUT2: [0x47] - - IO1.OUT1: [0xCA] - - IO1.OUT2: [0xCA] - - IO2.CONF2: [0] - - IO3.CONF1: [0] - - IO3.CONF2: [0] - - IO1.CONF1: [0] - - IO1.CONF2: [0] - - ADC1_Setup: 1 - - ADC2_Setup: 1 - - ADC3_Setup: 1 - - - method_name: RCU_off - registers: - - IO2.OUT1: [0x00] #Switch all off - - IO2.OUT2: [0x00] - - IO3.OUT1: [0x00] - - IO3.OUT2: [0x00] - - IO1.OUT1: [0x00] - - IO1.OUT2: [0x00] - - - method_name: Dither_on - method_invisible: 1 - registers: - - Dth3_Pwr: [1] - - Dth2_Pwr: [1] - - Dither3_Setup: 1 - - Dither2_Setup: 1 - - - method_name: Dither_off - method_invisible: 1 - registers: - - Dth3_Pwr: [0] - - Dth2_Pwr: [0] - - - diff --git a/YAML/LTS_RCU2_ADC.yaml b/YAML/LTS_RCU2_ADC.yaml deleted file mode 100644 index 111f6d900601827e176d2ea29491aad67835f9e0..0000000000000000000000000000000000000000 --- a/YAML/LTS_RCU2_ADC.yaml +++ /dev/null @@ -1,45 +0,0 @@ -I2C_devices: - - dev_name: ADC1 - dev_description: I2C-SPI bridge to ADC - dev_device: AD9683 - dev_registers: - - reg_name: PLL_stat - reg_description: PLL locked status - reg_addr: 0x0A - - reg_name: JESD_control1 - reg_description: JESD link control, ILAS mode - reg_addr: 0x5F - - reg_name: CML_level - reg_description: CML output adjust - reg_addr: 0x15 - - reg_name: SYNC_control - reg_description: SYNC / SYSREF control - reg_addr: 0x3A - - reg_name: Update - reg_description: Global device update - reg_addr: 0xFF - -Variables: - - var_name: locked - var_dev: ADC1.PLL_stat - var_width: 8 -# var_R/W: RO - - var_name: SYNC - var_dev: ADC1.SYNC_control - var_width: 8 - - var_name: CML - var_dev: ADC1.CML_level - var_width: 8 - - var_name: JESD - var_dev: ADC1.JESD_control1 - var_width: 8 - var_R/W: RO - -Methods: - - method_name: Setup - method_invisible: 1 - registers: - - ADC1.JESD_control1: [14] #Setup ADCs - - ADC1.SYNC_control: [1] #Setup ADCs - - ADC1.CML_level: [0x7] - - ADC1.Update: [1] #Needed to update ADC registers diff --git a/YAML/LTS_RCU2_dither.yaml b/YAML/LTS_RCU2_dither.yaml deleted file mode 100644 index aa21250ea19d56284ef2c72cb91c1ca7ab6eac21..0000000000000000000000000000000000000000 --- a/YAML/LTS_RCU2_dither.yaml +++ /dev/null @@ -1,29 +0,0 @@ -I2C_devices: - - dev_name: DS1 - dev_description: Dither Source, SI4010 - dev_address: 0x70 - dev_registers: - - reg_name: TX_Stop - reg_addr: 0x67 - - reg_name: TX_Start - reg_addr: 0x62 - - reg_name: property - reg_addr: 0x11 - - reg_name: TX_FREQ - reg_addr: 0x1140 - -Variables: - - var_name: Frequency - var_dev: DS1.TX_FREQ - var_width: 32 - var_scale: 1e-6 - var_bitoffset: 0 - -Methods: - - method_name: Setup - method_invisible: 1 - registers: - - DS1.property: [0x60,1,0,0,0,125,127] #Power level (1,0) - - DS1.property: [0x40,0x06,0x0c,0xc4,0x60] #Frequency 101.5MHz - - DS1.property: [0x21,0,0] #tuning off - - DS1.TX_Start: [0,0,0,0,1] diff --git a/YAML/LTS_RCU2dig.yaml b/YAML/LTS_RCU2dig.yaml deleted file mode 100644 index 2f9c9ee5f16e668149a517872752236a8a4f59fb..0000000000000000000000000000000000000000 --- a/YAML/LTS_RCU2dig.yaml +++ /dev/null @@ -1,212 +0,0 @@ -dev_children: - - child_name: ADC1 - child_dev : SPIbitbang1 - child_conf: LTS_RCU2_ADC - child_GPIO: - - CLK : IO3.OUT1.1 - - SDO : IO3.OUT1.0 - - SDI : IO3.IN1.0 - - SDIOdir: IO3.CONF1.0 - - CS : IO3.OUT2.0 - - child_name: ADC2 - child_dev : SPIbitbang1 - child_conf: LTS_RCU2_ADC - child_GPIO: - - CLK : IO3.OUT1.3 - - SDO : IO3.OUT1.2 - - SDI : IO3.IN1.2 - - SDIOdir: IO3.CONF1.2 - - CS : IO3.OUT2.1 - - child_name: ADC3 - child_dev : SPIbitbang1 - child_conf: LTS_RCU2_ADC - child_GPIO: - - CLK : IO3.OUT1.5 - - SDO : IO3.OUT1.4 - - SDI : IO3.IN1.4 - - SDIOdir: IO3.CONF1.4 - - CS : IO3.OUT2.2 - -#This is the I2C devices in the RCU -I2C_devices: - - dev_name: IO1 - dev_description: IO-Expander for filter selection - dev_address: 0x75 - dev_device: TCA9539 - dev_registers: - - reg_name: CONF1 - reg_addr: 6 - - reg_name: CONF2 - reg_addr: 7 - - reg_name: OUT1 - reg_addr: 2 - ref_default: 0 - - reg_name: OUT2 - reg_addr: 3 - ref_default: 0 - - reg_name: IN1 - reg_addr: 0 - - reg_name: IN2 - reg_addr: 1 - - - dev_name: IO3 - dev_description: IO-Expander for ADC control - dev_address: 0x20 - dev_device: TCA6416 - dev_registers: - - reg_name: CONF1 - reg_description: Direction of IO pins 0..7 - reg_addr: 6 - - reg_name: CONF2 - reg_description: Direction of IO pints 8..15 - reg_addr: 7 - - reg_name: IN1 - reg_description: Ouput port register 0..7 - reg_addr: 0 - - reg_name: IN2 - reg_description: Ouput port register 0..7 - reg_addr: 1 - - reg_name: OUT1 - reg_description: Ouput port register 0..7 - reg_addr: 2 - reg_default: 0x0F - - reg_name: OUT2 - reg_description: Ouput port register 8..15 - reg_addr: 3 - reg_default: 0x0F - - - dev_name: IO2 - dev_description: IO-Expander for ON/OFF, Band, BUFx2 - dev_address: 0x76 - dev_device: TCA9539 - dev_registers: - - reg_name: CONF1 - reg_addr: 6 - - reg_name: CONF2 - reg_addr: 7 - - reg_name: OUT1 - reg_addr: 2 - ref_default: 0 - - reg_name: OUT2 - reg_addr: 3 - ref_default: 0 - - reg_name: IN1 - reg_addr: 0 - - reg_name: IN2 - reg_addr: 1 - - - dev_name: UC - dev_description: RCU microcontroller - dev_address: 0x40 - dev_registers: - - reg_name: ID - reg_description: Device ID - reg_addr: 0 - - - dev_name: ROM - dev_description: EEPROM memory - dev_address: 0x53 - dev_registers: - - reg_name: ctr_len - reg_description: Length of control data - reg_addr: 0 - - reg_name: ctr_dat - reg_description: Control data (protocol buffers) - reg_addr: 2 - - - - dev_name: AN - dev_description: Monitor ADC on RCU - dev_address: 0x14 - dev_device: LTC2495 - dev_registers: - - reg_name: Ch0 - reg_addr: 0xB080 - - reg_name: Ch1 - reg_addr: 0xB8 - - reg_name: Ch2 - reg_addr: 0xB1 - - reg_name: Ch3 - reg_addr: 0xB9 - - reg_name: Ch4 - reg_addr: 0xB2 - - reg_name: Ch5 - reg_addr: 0xBA - - reg_name: Ch6 - reg_addr: 0xB3 - - reg_name: Ch7 - reg_addr: 0xBB - - reg_name: Temp - reg_addr: 0xA0C0 - -Variables: - - var_name: Attenuator1 - var_dev: IO1.OUT1 - var_width: 5 - var_max: 21 - var_R/W: RW - - var_name: Attenuator2 - var_dev: IO1.OUT2 - var_width: 5 - var_max: 21 - var_R/W: RW - - var_name: Attenuator3 - var_dev: IO2.OUT1 - var_width: 5 - var_max: 24 - var_R/W: RW - - - var_name: Pwr_dig - var_description: Enable LDOs - var_dict: {0 : Off, 1 : On} - var_dev: IO2.OUT1 - var_width: 1 - var_bitoffset: 6 - var_R/W: RO - - - var_name: LED0 - var_description: Front panel LEDs, 0=On - var_dict: {0 : Off, 1 : Yellow, 2: Red, 3: Orange} - var_dev: IO2.OUT2 - var_width: 2 - var_bitoffset: 6 - var_R/W: RW - - - var_name: Temperature - var_dev: AN.Temp - var_width: 23 - var_scale: 4.21e-3 - var_R/W: RO - - - -Methods: - - method_name: RCU_on - registers: - - IO2.CONF1: [0] #Setup IO expanders to output with default values - - IO2.OUT1: [0x4A] - - IO2.OUT2: [0x55] - - IO3.OUT1: [0x7f] - - IO3.OUT2: [0x47] - - IO1.OUT1: [0xCA] - - IO1.OUT2: [0xCA] - - IO2.CONF2: [0] - - IO3.CONF1: [0] - - IO3.CONF2: [0] - - IO1.CONF1: [0] - - IO1.CONF2: [0] - - ADC1_Setup: 1 - - ADC2_Setup: 1 - - ADC3_Setup: 1 - - - method_name: RCU_off - registers: - - IO2.OUT1: [0x00] #Switch all off - - IO2.OUT2: [0x00] - - IO3.OUT1: [0x00] - - IO3.OUT2: [0x00] - - IO1.OUT1: [0x00] - - IO1.OUT2: [0x00] - - - diff --git a/YAML/LTS_clk.yaml b/YAML/LTS_clk.yaml deleted file mode 100644 index 58ae764f2450bfe0eb7c1be8ace23df2842e28c4..0000000000000000000000000000000000000000 --- a/YAML/LTS_clk.yaml +++ /dev/null @@ -1,84 +0,0 @@ -dev_children: - - child_name: PLL - child_dev : SPIbitbang2 - child_conf: LTS_clkPLL - child_GPIO: - - CLK : IO3.OUT1.4 - - SDO : IO3.IN1.5 - - SDI : IO3.OUT1.7 - - CS : IO3.OUT1.6 - -#This is the I2C devices in the RCU -I2C_devices: - - dev_name: IO3 - dev_description: IO-Expander - dev_address: 0x20 - dev_device: TCA6416 - dev_registers: - - reg_name: CONF1 - reg_addr: 6 - - reg_name: CONF2 - reg_addr: 7 - - reg_name: IN1 - reg_addr: 0 - - reg_name: IN2 - reg_addr: 1 - - reg_name: OUT1 - reg_addr: 2 - reg_default: 0x0F - - reg_name: OUT2 - reg_addr: 3 - reg_default: 0x0F - -Variables: - - var_name: IGNORE_PPS - var_dev: IO3.OUT1 - var_width: 1 - var_bitoffset: 6 -# var_R/W: RW - - - var_name: ENABLE_PWR - var_dev: IO3.OUT1 - var_width: 1 - var_bitoffset: 7 -# var_R/W: RW - - - var_name: STAT1 - var_dev: IO3.OUT1 - var_width: 1 - var_bitoffset: 4 -# var_R/W: RO - -# - var_name: STAT2 -# var_dev: IO3.OUT1 -# var_width: 1 -# var_bitoffset: 5 -# var_R/W: RO - - - var_name: CONF - var_dev: IO3.CONF1 - var_width: 8 - - - var_name: OUT - var_dev: IO3.OUT1 - var_width: 8 - - - var_name: IN - var_dev: IO3.IN1 - var_width: 8 - - -Methods: - - method_name: on1 - registers: - - IO3.CONF1: [0x2C] - - IO3.OUT1: [0x42] - - method_name: off1 - method_invisible: 1 - registers: - - IO3.CONF1: [0x2C] - - IO3.OUT1: [0x40] - -#Output High=SDI(x2), PPS (0x40) #Read 0x42, -# IN=0x46: High: SDI, CLK, Enable_PWR - diff --git a/YAML/LTS_clkPLL.yaml b/YAML/LTS_clkPLL.yaml deleted file mode 100644 index c6e99bb74ccc33cc5454bbc8b10766e1f8948d44..0000000000000000000000000000000000000000 --- a/YAML/LTS_clkPLL.yaml +++ /dev/null @@ -1,43 +0,0 @@ -I2C_devices: - - dev_name: PLL1 - dev_description: I2C-SPI bridge to PLL - dev_device: LTC6950 - dev_registers: - - reg_name: a0 - reg_addr: 0x00 - -Variables: - - var_name: locked - var_dev: PLL1.a0 - var_R/W: RO - var_width: 23 - -Methods: - - method_name: Power_off - method_invisible: 1 - registers: - - PLL1.3: [0x88] - - method_name: Power_on - method_invisible: 1 - registers: - - PLL1.3: [0x08] - - method_name: Reset - method_invisible: 1 - registers: - - PLL1.3: [0x0C] - - method_name: Setup - method_invisible: 1 - registers: - - PLL1.3: [0x08] - - PLL1.5: [0x97] - - PLL1.6: [0x10] - - PLL1.7: [0x04] - - PLL1.8: [0x01] - - PLL1.7: [0x00] - - PLL1.9: [0x10] - - PLL1.10: [0x14] #0x0A - - PLL1.9: [0x00] - - PLL1.13: [0x01] #0x0D - - PLL1.15: [0x01] #0x0F - - PLL1.17: [0x01] #0x11 - - PLL1.19: [0x01] #0x13 diff --git a/YAML/LTS_pypcc.yaml b/YAML/LTS_pypcc.yaml deleted file mode 100644 index a059a312ba6e84e319a4a0eb09d9743a7b0e7e4d..0000000000000000000000000000000000000000 --- a/YAML/LTS_pypcc.yaml +++ /dev/null @@ -1,5 +0,0 @@ -dev_name: PCC_I2C -dev_children: - - child_dev : I2Cswitch - child_conf: LTS_switch - child_addr: 1 #I2C port on raspberry pi \ No newline at end of file diff --git a/YAML/LTS_switch.yaml b/YAML/LTS_switch.yaml deleted file mode 100644 index eec8a3935bb327201e51b6d337abf968df45fd72..0000000000000000000000000000000000000000 --- a/YAML/LTS_switch.yaml +++ /dev/null @@ -1,26 +0,0 @@ -dev_name: Switch1 -dev_address: 0x70 -dev_device: TCA9548 -# LTS midplane: I2C 0-5 = RCU 0-5, I2C 6 = UNB2_N0, I2C 7 = UNB2 -dev_children: - - child_name: RCU01 - child_dev: I2Cdevices - child_conf: LTS_RCU2L - child_addr: 1 - - child_name: RCU02 - child_dev: I2Cdevices - child_conf: LTS_RCU2L - child_addr: 2 - - child_name: RCU03 - child_dev: I2Cdevices - child_conf: LTS_RCU2L - child_addr: 3 - - child_name: CLK - child_dev: I2Cdevices - child_conf: LTS_clk - child_addr: 7 - -dev_groups: #Must have the same config! - - group_name: RCUs - group_members: [RCU01,RCU02,RCU03] -# group_members: [RCU01] diff --git a/hwdev.py b/hwdev.py deleted file mode 100644 index fb98964a03ba06559df8a18cc833ba51c17746d1..0000000000000000000000000000000000000000 --- a/hwdev.py +++ /dev/null @@ -1,63 +0,0 @@ -import yaml; -import importlib -import sys, inspect -import logging - -YAMLDIR='YAML/' -class hwdev: - def __init__(self,configfile): - logging.info("Loading: %s",configfile) - self.D=yaml.load(open(YAMLDIR+configfile)) - self.loadchildren(self.D) - def loadchildren(self,D): - self.children=[] - self.childnames=[] - if "dev_children" in D: - for c in D['dev_children']: - childname=(c['child_name']+"_" if c.get('child_name') else ''); - objnm=c['child_dev'] - yamlname=c['child_conf'] - logging.info("Add child: %s %s %s",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) -# logging.debug(" Load child: %s conf=%s.yaml",childname,yamlname) - c['obj']=obj(yamlname+".yaml") - self.children.append([childname,c['obj']]) - - def GetVarNames(self,parentname,callback): - for name,child in self.children: - child.GetVarNames(parentname+name,callback) - return True; - - def GetMethodNames(self,parentname,callback): - for name,child in self.children: - child.GetMethodNames(parentname+name,callback) - return True; - - def GetVarValue(self,name,value,I2Ccallback): - return False - - def SetVarValue(self,name,value,I2Ccallback): - return False - -# def CallMethod(self,name,params,I2Ccallback): -# for name,child in self.children: -# child.CallMethod(name,params,I2Ccallback) -# return True; - - - def CallMethod(self,name,params,I2Ccallback): - childname=name.split('_')[0] - for cname,child in self.children: -# logging.debug("hwdev callmethod %s %s",cname,childname) - if cname=="": child.CallMethod(name,params,I2Ccallback) - elif cname[:-1]==childname: return child.CallMethod(name[len(childname)+1:],params,I2Ccallback) - return False - -def Find(L,name,value): - for x in L: - if x[name]==value: - return x; - return False; diff --git a/pypcc.code-workspace b/pypcc.code-workspace deleted file mode 100644 index 362d7c25bb405a5cc76d0c7518cc240999a574f4..0000000000000000000000000000000000000000 --- a/pypcc.code-workspace +++ /dev/null @@ -1,7 +0,0 @@ -{ - "folders": [ - { - "path": "." - } - ] -} \ No newline at end of file diff --git a/pypcc.py b/pypcc.py deleted file mode 100644 index 29961e7c101751142296280a06d4f2a63cfe7273..0000000000000000000000000000000000000000 --- a/pypcc.py +++ /dev/null @@ -1,47 +0,0 @@ -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; diff --git a/pypcc_test.py b/pypcc_test.py deleted file mode 100644 index ee5a8f09dac088fbba4738dc8e3f259f0e1d469e..0000000000000000000000000000000000000000 --- a/pypcc_test.py +++ /dev/null @@ -1,24 +0,0 @@ -from hwdev import hwdev; -import time -import logging - -def I2C1server(addr,data,reg=None,read=0): - logging.info("I2C: addr=%s data=%s reg=%s read=%s",addr,data,reg,read) - return True; - -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; diff --git a/test_array.py b/test_array.py deleted file mode 100644 index b2f785208a089edd788b20e169afa8bda6e3997d..0000000000000000000000000000000000000000 --- a/test_array.py +++ /dev/null @@ -1,127 +0,0 @@ -import pypcc; -#import pypcc_test as pypcc; - -P1=pypcc.pypcc("LTS_pypcc.yaml") - -def Getvalue(name): - a=[0] - P1.GetVarValue("RCU01_"+name,a) - print("GET:",name,a[0]) - -def Setvalue(name,value): - P1.SetVarValue("RCU01_"+name,[value]) - print("SET:",name,value) - - -def AddMethod(name): - print("Method:",name) -P1.GetMethodNames("",AddMethod); - -def AddVar(name,dtype=0,RW=3,cnt=1): - Types={0:'int',1:'float'} - RWs={0:'hidden',1:'RO',2:'WO',3:'RW'} - print("Var:",name,Types[dtype],RWs[RW],cnt) -P1.GetVarNames("",AddVar); -#P1.CallMethod("RCUx_RCU_on",None) -a=[1.,2.,3.] -#assert(P1.SetVarValue("RCUx_LED0",[0,0,0])) -#assert(P1.SetVarValue("RCUx_LED0",[0,0,1])) -P1.GetVarValue("RCUx_Temperature",a) -print(a) - -#a=[1,2,3] -#assert(P1.SetVarValue("RCUx_LED0",[0,0,0])) -#assert(P1.SetVarValue("RCUx_LED0",[0,0,1])) -#P1.GetVarValue("RCUx_LED0",a) -#print(a) -exit() -#P1.CallMethod("RCU01_Dither_on",None) -#P1.CallMethod("RCU02_RCU_on",None) -exit() -if False: - P1.CallMethod("RCU01_Init_ADCR",None) - Getvalue("ADC_lock1") - -if False: - Setvalue("Band1",1) - Setvalue("Band2",0) - Setvalue("Band3",1) - Getvalue("Band1") - Getvalue("Band2") - Getvalue("Band3") -#exit() - -if False: -# Setvalue("Dth3_Pwr",0) -# Setvalue("Dth2_Pwr",0) -# Setvalue("Dth3_Pwr",1) -# Setvalue("Dth2_Pwr",1) - P1.CallMethod("RCU01_Dither1_Setup",None) - P1.CallMethod("RCU01_Dither2_Setup",None) - P1.CallMethod("RCU01_Dither3_Setup",None) - -# a=[0,0,0,0] -# P1.GetVarValue("RCU01_Dth1_FREQ",a) -# print("GET:",a[0]) -# Getvalue("Dither1_Frequency") - Setvalue("Dither1_Frequency",101.0) - Setvalue("Dither2_Frequency",101.2) - Getvalue("Dither1_Frequency") - Getvalue("Dither2_Frequency") -# Getvalue("Dth1_FREQ") - -if False: -# a=[0,0,0] -# P1.GetVarValue("RCU01_V_x",a) -# print("GET:",a[0]) -# import time -# time.sleep(0.2) -# Setvalue("V_x",0xC0) -# time.sleep(0.2) -# a=[0,0,0] -# P1.GetVarValue("RCU01_Temp",a) -# print("GET:",a[0]) - Getvalue("Temp") -#exit() -if False: - P1.CallMethod("RCU01_ADC1_Switch_on",None) - Getvalue("ADC1_locked") - Getvalue("ADC2_locked") - Getvalue("ADC3_locked") -#Getvalue("ADC_lock3") -#Getvalue("ADC_lock1") -#Setvalue("LED0",1) -#Getvalue("LED0") -#Setvalue("Band2",1) -#Getvalue("Band2") -#Getvalue("LED0") -exit() - -#Setvalue("Dth3_Pwr",1) -Setvalue("Dth2_Pwr",0) -Setvalue("Dth2_SDA",0) -Setvalue("Dth2_SCL",0) -Setvalue("Dth3_Pwr",0) -Setvalue("Dth3_SDA",0) -Setvalue("Dth3_SCL",0) - -Setvalue("LED0",2) - -Setvalue("Att1",10) -Setvalue("Att2",10) -Setvalue("Att3",10) - - -#Setvalue("Dth3_Pwr",1) -#Setvalue("Dth2_SCL",1) - -#assert(a[0]==1) -#print(P1.SetVarValue("RCU01_Band1",3)) -#print(P1.SetVarValue("RCU02_Band1",0)) -#print(P1.GetVarValue("RCU01_Band1",a)) -#print(a[0]) -#assert(a[0]==3) -#print(P1.GetVarValue("RCU02_Band1",a)) -#assert(a[0]==0) - -