Skip to content
Snippets Groups Projects
Commit 598642cd authored by Paulus Kruger's avatar Paulus Kruger
Browse files

HBA control

parent 7b685356
Branches
Tags
1 merge request!10Pypcc2
...@@ -17,7 +17,7 @@ def I2C1server(addr,data,reg=None,read=0): ...@@ -17,7 +17,7 @@ def I2C1server(addr,data,reg=None,read=0):
# print("I2C",addr,reg,data,read) # print("I2C",addr,reg,data,read)
# return True; # return True;
bus=pylibi2c.I2CDevice('/dev/i2c-1',addr) bus=pylibi2c.I2CDevice('/dev/i2c-2',addr)
if read==1: if read==1:
length=len(data) length=len(data)
bus.iaddr_bytes=0 bus.iaddr_bytes=0
...@@ -33,6 +33,6 @@ def I2C1server(addr,data,reg=None,read=0): ...@@ -33,6 +33,6 @@ def I2C1server(addr,data,reg=None,read=0):
return True; return True;
except: except:
if bus: bus.close() if bus: bus.close()
# data[0]=0 # data[0]=0xff
return False; return False;
from I2C import *
import time
RCU=1
Ver="RCU2H v0.2"
R1=0
ROM=0x50
ID=[0]*7
I2C1server(0x20,ID,reg=2,read=1)
print(ID)
I2C1server(0x20,ID,reg=2,read=1)
print(ID)
exit()
#0=0
#1=0 #debug?
#2=21 #spd1
#3=7 #spd2
#4=175 #TXspeed
#5=0
#6=0
#Upload version
Ver2=[(c.encode('utf-8')[0]) for c in Ver]
print(len(Ver),Ver,Ver2)
V2=[0]
for i,v in enumerate(Ver2):
time.sleep(0.1)
I2C1server(ROM,[v],reg=R1+i,read=0) #select RCU
# I2C1server(ROM,[v],reg=None,read=0) #select RCU
time.sleep(0.1)
I2C1server(ROM,V2,reg=R1+i,read=1) #select RCU
print(i,v,V2)
#Download version
Ver2=[0]*10
I2C1server(ROM,Ver2,reg=R1,read=1) #select RCU
print(Ver2)
...@@ -46,6 +46,7 @@ class datatype(Enum): ...@@ -46,6 +46,7 @@ class datatype(Enum):
dInt = 0 dInt = 0
dfloat = 1 dfloat = 1
dstring = 2 dstring = 2
dbool = 3
#Variable two device link #Variable two device link
Var2dev=namedtuple("Var2dev","name module type devreg width bitoffset Scale") Var2dev=namedtuple("Var2dev","name module type devreg width bitoffset Scale")
......
...@@ -14,6 +14,8 @@ import time ...@@ -14,6 +14,8 @@ import time
import logging import logging
import argparse import argparse
NRCU=32
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("-s", "--simulator", help="Do not connect to I2c, but simulate behaviour.", action="store_true") parser.add_argument("-s", "--simulator", help="Do not connect to I2c, but simulate behaviour.", action="store_true")
parser.add_argument("-p", "--port", help="Port number to listen on [%(default)s].", type=int, default=4842) parser.add_argument("-p", "--port", help="Port number to listen on [%(default)s].", type=int, default=4842)
...@@ -42,7 +44,7 @@ logging.info("OPC-UA Server started") ...@@ -42,7 +44,7 @@ logging.info("OPC-UA Server started")
SW1=I2Cswitch1.I2Cswitch1(I2C.I2C1server) SW1=I2Cswitch1.I2Cswitch1(I2C.I2C1server)
RCU=RCU.RCU1(32,I2C.I2C1server,SW1.SetChannel) RCU=RCU.RCU1(NRCU,I2C.I2C1server,SW1.SetChannel)
RCU.AddVars(Q1,opcuaserv.AddVarR,opcuaserv.AddVarW) RCU.AddVars(Q1,opcuaserv.AddVarR,opcuaserv.AddVarW)
RCU.AddMethod(Q1,opcuaserv.Addmethod) RCU.AddMethod(Q1,opcuaserv.Addmethod)
RCU.load() #Load current register values from HW RCU.load() #Load current register values from HW
...@@ -75,7 +77,7 @@ def TimerThread(Q1,RCU): ...@@ -75,7 +77,7 @@ def TimerThread(Q1,RCU):
if Q1.qsize()>3: continue; if Q1.qsize()>3: continue;
cnt=0; cnt=0;
logging.debug(str(("I2C bytes=",I2C.I2Ccounter," Qlength=",Q1.qsize()))) logging.debug(str(("I2C bytes=",I2C.I2Ccounter," Qlength=",Q1.qsize())))
RCU.Queue_Monitor(Q1) RCU.Queue_Monitor(Q1,NRCU)
logging.info("End Timer thread") logging.info("End Timer thread")
......
...@@ -4,6 +4,8 @@ from pcctypes import * ...@@ -4,6 +4,8 @@ from pcctypes import *
#Mid plane address #Mid plane address
#MPaddr=namedtuple("MPaddr","nI2C I2C nSwitch Switch"); #MPaddr=namedtuple("MPaddr","nI2C I2C nSwitch Switch");
RCU_MPaddr=MPaddr(1,[1],32,[0,1,2,3,4,5,6,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]) RCU_MPaddr=MPaddr(1,[1],32,[0,1,2,3,4,5,6,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5])
#RCU_MPaddr=MPaddr(1,[1],2,[0,1])
#RCU_MPaddr=MPaddr(1,[1],1,[0])
#CLK_MPaddr=MPaddr(1,[1],1,[7]) #CLK_MPaddr=MPaddr(1,[1],1,[7])
#DevReg=namedtuple("DevReg","Addr Register_R Register_W store"); #DevReg=namedtuple("DevReg","Addr Register_R Register_W store");
...@@ -25,10 +27,10 @@ RCU_IO2_OUT2=DevReg(0x76,1,3,6) ...@@ -25,10 +27,10 @@ RCU_IO2_OUT2=DevReg(0x76,1,3,6)
RCU_IO2_CONF1=DevReg(0x76,6,6,7) RCU_IO2_CONF1=DevReg(0x76,6,6,7)
RCU_IO2_CONF2=DevReg(0x76,7,7,8) RCU_IO2_CONF2=DevReg(0x76,7,7,8)
#Device: TCA6416 #Device: TCA6416
RCU_IO3_OUT1=DevReg(0x20,0,2,9) RCU_IO3_OUT1=DevReg(0x2F,0,2,9)
RCU_IO3_OUT2=DevReg(0x20,1,3,10) RCU_IO3_OUT2=DevReg(0x2F,1,3,10)
RCU_IO3_CONF1=DevReg(0x20,6,6,11) RCU_IO3_CONF1=DevReg(0x2F,6,6,11)
RCU_IO3_CONF2=DevReg(0x20,7,7,12) RCU_IO3_CONF2=DevReg(0x2F,7,7,12)
RCU_storeReg=13; #Number of stored registers RCU_storeReg=13; #Number of stored registers
...@@ -40,9 +42,10 @@ RCU_AN_Ch2=DevReg(0x14,0xB180,-1,0) ...@@ -40,9 +42,10 @@ RCU_AN_Ch2=DevReg(0x14,0xB180,-1,0)
RCU_AN_Temp=DevReg(0x14,0xA0C0,-1,0) RCU_AN_Temp=DevReg(0x14,0xA0C0,-1,0)
#HBA1 #HBA1
RCU_HBA1=DevReg(0x41,0,0,1) RCU_HBA1=DevReg(0x41,0x10,0x10,1)
RCU_HBA2=DevReg(0x42,0,0,2) RCU_HBA2=DevReg(0x42,0x10,0x10,2)
RCU_HBA3=DevReg(0x43,0,0,3) RCU_HBA3=DevReg(0x43,0x10,0x10,3)
RCU_ROM_ID =DevReg(0x50,0xfc,0xfc,0) #32 bit ID=4 bytes RCU_ROM_ID =DevReg(0x50,0xfc,0xfc,0) #32 bit ID=4 bytes
......
...@@ -50,6 +50,7 @@ class RCU1(): ...@@ -50,6 +50,7 @@ class RCU1():
self.I2Ccallback=I2Ccallback self.I2Ccallback=I2Ccallback
self.SWcallback=Switchcallback self.SWcallback=Switchcallback
self.previous =np.zeros([number,Vars.RCU_storeReg],dtype='int') self.previous =np.zeros([number,Vars.RCU_storeReg],dtype='int')
self.previousHBA=np.zeros([number,3,32],dtype='int')
def load(self): def load(self):
Inst1=Vars.Instr(Vars.DevType.Instr,Vars.RCU_init,0,[]) #Read the current status of GPIO IOs Inst1=Vars.Instr(Vars.DevType.Instr,Vars.RCU_init,0,[]) #Read the current status of GPIO IOs
...@@ -79,13 +80,13 @@ class RCU1(): ...@@ -79,13 +80,13 @@ class RCU1():
if Instr.type==Vars.DevType.Instr: if Instr.type==Vars.DevType.Instr:
#Execute instructions #Execute instructions
Iset=Instr.dev; Iset=Instr.dev;
if len(Mask)==0: Mask=Vars.RCU_mask.OPCW.get_data_value().Value.Value if len(Mask)==0: Mask=Vars.RCU_mask.OPCW.get_value()
for i in Iset.instr: for i in Iset.instr:
logging.debug(str(("Inst",i))) logging.debug(str(("Inst",i)))
self.SetVar(i,Mask=Mask) self.SetVar(i,Mask=Mask)
return; return;
if Instr.type in [Vars.DevType.I2C,Vars.DevType.SPIbb,Vars.DevType.I2Cbb]: if Instr.type in [Vars.DevType.I2C,Vars.DevType.SPIbb,Vars.DevType.I2Cbb]:
if len(Mask)==0: Mask=Vars.RCU_mask.OPCW.get_data_value().Value.Value if len(Mask)==0: Mask=Vars.RCU_mask.OPCW.get_value()
mask=0; mask=0;
RCU0=-1; RCU0=-1;
for RCUi in range(self.N): for RCUi in range(self.N):
...@@ -111,15 +112,15 @@ class RCU1(): ...@@ -111,15 +112,15 @@ class RCU1():
logging.error("Wrong size of value") logging.error("Wrong size of value")
return False return False
if V1.Vars[0].type==Vars.DevType.Internal: if V1.Vars[0].type==Vars.DevType.Internal:
Instr.dev.OPCW.get_data_value().Value.Value=Instr.value Instr.dev.OPCW.set_value(Instr.value)
logging.debug("Update internal variable") logging.debug("Update internal variable")
return return
# if V1.Vars[0].type==Vars.DevType.Internal: return; # if V1.Vars[0].type==Vars.DevType.Internal: return;
Step=V1.nVars Step=V1.nVars
Step2=int(V1.size/V1.nVars) Step2=int(V1.size/V1.nVars)
Mask=(Vars.RCU_mask if Step==1 else Vars.Ant_mask) Mask=(Vars.RCU_mask if Step==1 else Vars.Ant_mask)
Mask=Mask.OPCW.get_data_value().Value.Value Mask=Mask.OPCW.get_value()
value1=strs2bytes(Instr.value) if V1.OPCR is None else strs2bytes(V1.OPCR.get_data_value().Value.Value) value1=strs2bytes(Instr.value) if V1.OPCR is None else strs2bytes(V1.OPCR.get_value())
if (len(value1)==V1.nVars) and (self.N>1): value1=(value1*self.N); if (len(value1)==V1.nVars) and (self.N>1): value1=(value1*self.N);
if Instr.type==Vars.DevType.Var: if Instr.type==Vars.DevType.Var:
logging.info(str(('** Set Var:',V1.name,value1))) logging.info(str(('** Set Var:',V1.name,value1)))
...@@ -132,11 +133,12 @@ class RCU1(): ...@@ -132,11 +133,12 @@ class RCU1():
value2=value1[i0:i1] value2=value1[i0:i1]
self.GetVarValue(RCUi,V1.Vars[Vari],value2) self.GetVarValue(RCUi,V1.Vars[Vari],value2)
value1[i0:i1]=value2 value1[i0:i1]=value2
if not(V1.OPCR is None): V1.OPCR.get_data_value().Value.Value=bytes2strs(value1,Step2,V1.type) if not(V1.OPCR is None): V1.OPCR.set_value(bytes2strs(value1,Step2,V1.type))
elif Instr.type==Vars.DevType.VarUpdate: elif Instr.type==Vars.DevType.VarUpdate:
self.GetVarValueAll(V1,value1) self.GetVarValueAll(V1,value1)
if not(V1.OPCR is None): V1.OPCR.get_data_value().Value.Value=bytes2strs(value1,Step2,V1.type) # if not(V1.OPCR is None): V1.OPCR.get_data_value().Value.Value=bytes2strs(value1,Step2,V1.type)
if not(V1.OPCR is None): V1.OPCR.set_value(bytes2strs(value1,Step2,V1.type))
# V1.OPCR.get_data_value().Value.Value=value1 # V1.OPCR.get_data_value().Value.Value=value1
logging.info(str(('** Readback:',V1.name,value1))) logging.info(str(('** Readback:',V1.name,value1)))
...@@ -146,6 +148,9 @@ class RCU1(): ...@@ -146,6 +148,9 @@ class RCU1():
if var.type==Vars.DevType.I2C: if var.type==Vars.DevType.I2C:
self.SWcallback(1<<Vars.RCU_MPaddr.Switch[RCUi]) self.SWcallback(1<<Vars.RCU_MPaddr.Switch[RCUi])
self.GetI2C(RCUi,var.devreg,var.width,var.bitoffset,value) self.GetI2C(RCUi,var.devreg,var.width,var.bitoffset,value)
elif var.type==Vars.DevType.HBA1:
self.SWcallback(1<<Vars.RCU_MPaddr.Switch[RCUi])
self.GetI2CHBA1(RCUi,var.devreg,var.width,var.bitoffset,value)
elif var.type==Vars.DevType.I2Cbb: elif var.type==Vars.DevType.I2Cbb:
logging.error("I2Cbb Implemented") logging.error("I2Cbb Implemented")
elif var.type==Vars.DevType.SPIbb: elif var.type==Vars.DevType.SPIbb:
...@@ -179,6 +184,22 @@ class RCU1(): ...@@ -179,6 +184,22 @@ class RCU1():
elif V1.Vars[0].type==Vars.DevType.SPIbb: elif V1.Vars[0].type==Vars.DevType.SPIbb:
self.GetBBValueAll(V1,value1,mask) self.GetBBValueAll(V1,value1,mask)
# logging.info("SPIbb all not implemented yet") # logging.info("SPIbb all not implemented yet")
elif V1.Vars[0].type==Vars.DevType.HBA1:
for Vari in range(Step):
var=V1.Vars[Vari]
for RCUi in range(self.N):
self.SWcallback(1<<Vars.RCU_MPaddr.Switch[RCUi])
# print(Step,Step2,len(value1),V1.size)
i0=(RCUi*Step+ Vari)*Step2
i1=(RCUi*Step+(Vari+1))*Step2
value2=value1[i0:i1]
self.GetI2CHBA1(RCUi,var.devreg,var.width,var.bitoffset,value2)
value1[i0:i1]=value2
# i0=(RCUi*Step+ Vari)*Step2+16
# i1=(RCUi*Step+(Vari+1))*Step2
# value2=value1[i0:i1]
# self.GetI2Cnoreg(RCUi,var.devreg,var.width,var.bitoffset,value2)
# value1[i0:i1]=value2
else: else:
logging.error("Type not implemented") logging.error("Type not implemented")
# print(value1) # print(value1)
...@@ -213,6 +234,10 @@ class RCU1(): ...@@ -213,6 +234,10 @@ class RCU1():
if var.type==Vars.DevType.I2C: if var.type==Vars.DevType.I2C:
self.SWcallback(1<<Vars.RCU_MPaddr.Switch[RCUi]) self.SWcallback(1<<Vars.RCU_MPaddr.Switch[RCUi])
self.SetI2C(RCUi,var.devreg,var.width,var.bitoffset,value) self.SetI2C(RCUi,var.devreg,var.width,var.bitoffset,value)
elif var.type==Vars.DevType.HBA1:
self.SWcallback(1<<Vars.RCU_MPaddr.Switch[RCUi])
self.SetHBA1I2C(RCUi,var.devreg,var.width,var.bitoffset,value)
# print("RCU1 Set",RCUi,var,value)
elif var.type==Vars.DevType.I2Cbb: elif var.type==Vars.DevType.I2Cbb:
logging.error("I2Cbb Implemented") logging.error("I2Cbb Implemented")
elif var.type==Vars.DevType.SPIbb: elif var.type==Vars.DevType.SPIbb:
...@@ -230,6 +255,20 @@ class RCU1(): ...@@ -230,6 +255,20 @@ class RCU1():
if buffer: return True; if buffer: return True;
return self.I2Ccallback(dev.Addr,value,reg=dev.Register_W) return self.I2Ccallback(dev.Addr,value,reg=dev.Register_W)
def SetHBA1I2C(self,RCUi,dev,width,bitoffset,value,buffer=False):
# if dev.store>0:
previous=self.previousHBA[RCUi,dev.store-1];
L=len(value)
for i in range(L):
value[i]=ApplyMask(value[i],width,bitoffset,previous[i]);
self.previousHBA[RCUi,dev.store-1]=value
# if buffer: return True;
self.I2Ccallback(dev.Addr,value[:16],reg=dev.Register_W)
if L>16: self.I2Ccallback(dev.Addr,value[16:],reg=dev.Register_W+16)
self.I2Ccallback(dev.Addr,[500],reg=dev.Register_W,read=3) #Wait 500ms
return True
# return self.I2Ccallback(dev.Addr,value,reg=dev.Register_W)
def GetI2Cbuffer(self,RCUi,dev,width,bitoffset,value): def GetI2Cbuffer(self,RCUi,dev,width,bitoffset,value):
if not(dev.store>0): return False; if not(dev.store>0): return False;
value[0]=self.previous[RCUi,dev.store-1]; value[0]=self.previous[RCUi,dev.store-1];
...@@ -301,6 +340,20 @@ class RCU1(): ...@@ -301,6 +340,20 @@ class RCU1():
#if (len(value)>1) and (width<8): print value #if (len(value)>1) and (width<8): print value
return True; return True;
def GetI2CHBA1(self,RCUi,dev,width,bitoffset,value):
#print(width,len(value))
value2=value
reg=dev.Register_R
if not(self.I2Ccallback(dev.Addr,value2,read=1)): return False;
if value2[0] is None: return False
value[:]=value2[:];
if dev.store>0:
self.previousHBA[RCUi,dev.store-1]=value
for i in range(len(value)):
value[i]=UnMask(value[i],width,bitoffset)
return True;
def start(self,Q1): def start(self,Q1):
def RCUthread(Q1): def RCUthread(Q1):
while True: while True:
...@@ -314,12 +367,12 @@ class RCU1(): ...@@ -314,12 +367,12 @@ class RCU1():
return RCUthread1 return RCUthread1
def Queue_Monitor(self,Q1): def Queue_Monitor(self,Q1,NRCU):
Inst1=Vars.Instr(Vars.DevType.VarUpdate,Vars.RCU_temp,32,[0]*32) Inst1=Vars.Instr(Vars.DevType.VarUpdate,Vars.RCU_temp,NRCU,[0]*NRCU)
Q1.put(Inst1) Q1.put(Inst1)
# Inst1=Vars.Instr(Vars.DevType.VarUpdate,Vars.RCU_ADC_lock,96,[0]*96) # Inst1=Vars.Instr(Vars.DevType.VarUpdate,Vars.RCU_ADC_lock,96,[0]*96)
# Q1.put(Inst1) # Q1.put(Inst1)
return
def AddVars(self,Q1,AddVarR,AddVarW): def AddVars(self,Q1,AddVarR,AddVarW):
for v in Vars.OPC_devvars: for v in Vars.OPC_devvars:
dim1=Vars.RCU_MPaddr.nI2C*Vars.RCU_MPaddr.nSwitch*v.nVars dim1=Vars.RCU_MPaddr.nI2C*Vars.RCU_MPaddr.nSwitch*v.nVars
...@@ -328,6 +381,7 @@ class RCU1(): ...@@ -328,6 +381,7 @@ class RCU1():
#print(v.name,dim) #print(v.name,dim)
varvalue2=0 varvalue2=0
if v.type==Vars.datatype.dInt: varvalue2=dim2*[0] if v.type==Vars.datatype.dInt: varvalue2=dim2*[0]
elif v.type==Vars.datatype.dbool: varvalue2=dim2*[False]
elif v.type==Vars.datatype.dfloat: varvalue2=dim2*[0.0] elif v.type==Vars.datatype.dfloat: varvalue2=dim2*[0.0]
elif v.type==Vars.datatype.dstring: varvalue2=dim1*[" "*dim3] elif v.type==Vars.datatype.dstring: varvalue2=dim1*[" "*dim3]
print(len(varvalue2),varvalue2) print(len(varvalue2),varvalue2)
......
...@@ -21,11 +21,11 @@ RCU_temp1=Var2dev("RCU_temp1",RCUmod,DevType.I2C,RCU_AN_Temp ,23,0,4.21e-3) ...@@ -21,11 +21,11 @@ RCU_temp1=Var2dev("RCU_temp1",RCUmod,DevType.I2C,RCU_AN_Temp ,23,0,4.21e-3)
dummy=Var2dev("Dummy",RCUmod,DevType.Internal,None,8,0,1) dummy=Var2dev("Dummy",RCUmod,DevType.Internal,None,8,0,1)
Ant_mask=VarArray("Ant_mask" ,3,[dummy,dummy,dummy] ,RW.WriteOnly,datatype.dInt,3,None,None) Ant_mask=VarArray("Ant_mask" ,3,[dummy,dummy,dummy] ,RW.WriteOnly,datatype.dbool,3,None,None)
RCU_att =VarArray("RCU_attenuator" ,3,[RCU_att1 ,RCU_att2 ,RCU_att3] ,RW.ReadWrite,datatype.dInt,3,None,None) RCU_att =VarArray("RCU_attenuator" ,3,[RCU_att1 ,RCU_att2 ,RCU_att3] ,RW.ReadWrite,datatype.dInt,3,None,None)
RCU_band=VarArray("RCU_band" ,3,[RCU_band1,RCU_band2,RCU_band3],RW.ReadWrite,datatype.dInt,3,None,None) RCU_band=VarArray("RCU_band" ,3,[RCU_band1,RCU_band2,RCU_band3],RW.ReadWrite,datatype.dInt,3,None,None)
RCU_mask=VarArray("RCU_mask" ,1,[dummy] ,RW.WriteOnly,datatype.dInt ,1,None,None) RCU_mask=VarArray("RCU_mask" ,1,[dummy] ,RW.WriteOnly,datatype.dbool ,1,None,None)
RCU_temp=VarArray("RCU_temperature",1,[RCU_temp1],RW.ReadOnly ,datatype.dfloat,1,None,None) RCU_temp=VarArray("RCU_temperature",1,[RCU_temp1],RW.ReadOnly ,datatype.dfloat,1,None,None)
RCU_pwrd=VarArray("RCU_Pwr_dig" ,1,[RCU_pwrd1],RW.ReadOnly ,datatype.dInt ,1,None,None) RCU_pwrd=VarArray("RCU_Pwr_dig" ,1,[RCU_pwrd1],RW.ReadOnly ,datatype.dInt ,1,None,None)
RCU_LED =VarArray("RCU_LED0" ,1,[RCU_led0] ,RW.ReadWrite,datatype.dInt ,1,None,None) RCU_LED =VarArray("RCU_LED0" ,1,[RCU_led0] ,RW.ReadWrite,datatype.dInt ,1,None,None)
...@@ -36,13 +36,13 @@ RCU_Dth1_freq=Var2dev("RCU_dth1_freq",RCUmod,DevType.I2Cbb,RCU_Dth1_Freq,32,0,1e ...@@ -36,13 +36,13 @@ RCU_Dth1_freq=Var2dev("RCU_dth1_freq",RCUmod,DevType.I2Cbb,RCU_Dth1_Freq,32,0,1e
RCU_dth_freq=VarArray("RCU_dither_freq",3,[RCU_Dth1_freq,RCU_Dth2_freq,RCU_Dth3_freq],RW.ReadWrite,datatype.dfloat,3,None,None) RCU_dth_freq=VarArray("RCU_dither_freq",3,[RCU_Dth1_freq,RCU_Dth2_freq,RCU_Dth3_freq],RW.ReadWrite,datatype.dfloat,3,None,None)
HBA1_Delay=Var2dev("",RCUmod,DevType.HBA1,RCU_HBA1,5,2,1) HBA1_Delay=Var2dev("",RCUmod,DevType.HBA1,RCU_HBA1,5,2,1)
HBA1_Pwr =Var2dev("",RCUmod,DevType.HBA1,RCU_HBA1,1,1,1) HBA1_led =Var2dev("",RCUmod,DevType.HBA1,RCU_HBA1,1,0,1)
HBA2_Delay=Var2dev("",RCUmod,DevType.HBA1,RCU_HBA2,5,2,1) HBA2_Delay=Var2dev("",RCUmod,DevType.HBA1,RCU_HBA2,5,2,1)
HBA2_Pwr =Var2dev("",RCUmod,DevType.HBA1,RCU_HBA2,1,1,1) HBA2_led =Var2dev("",RCUmod,DevType.HBA1,RCU_HBA2,1,0,1)
HBA3_Delay=Var2dev("",RCUmod,DevType.HBA1,RCU_HBA3,5,2,1) HBA3_Delay=Var2dev("",RCUmod,DevType.HBA1,RCU_HBA3,5,2,1)
HBA3_Pwr =Var2dev("",RCUmod,DevType.HBA1,RCU_HBA3,1,1,1) HBA3_led =Var2dev("",RCUmod,DevType.HBA1,RCU_HBA3,1,0,1)
HBA1_Delay=VarArray("HBA_element_beamformer_delays",3,[HBA1_Delay,HBA2_Delay,HBA3_Delay],RW.ReadWrite,datatype.dInt,96,None,None) HBA_Delay=VarArray("HBA_element_beamformer_delays",3,[HBA1_Delay,HBA2_Delay,HBA3_Delay],RW.ReadWrite,datatype.dInt,96,None,None)
HBA1_Pwr =VarArray("HBA_element_pwr" ,3,[HBA1_Pwr ,HBA2_Pwr ,HBA3_Pwr ],RW.ReadWrite,datatype.dInt,96,None,None) HBA_led =VarArray("HBA_element_led" ,3,[HBA1_led ,HBA2_led ,HBA3_led ],RW.ReadWrite,datatype.dInt,96,None,None)
#RCU_ID0=Var2dev("",RCUmod,DevType.I2C,RCU_ROM,8,0,1) #RCU_ID0=Var2dev("",RCUmod,DevType.I2C,RCU_ROM,8,0,1)
#RCU_ID=VarArray("RCU_ID",1,[RCU_ID0],RW.ReadOnly,datatype.dInt,4,None,None) #RCU_ID=VarArray("RCU_ID",1,[RCU_ID0],RW.ReadOnly,datatype.dInt,4,None,None)
...@@ -53,6 +53,14 @@ RCU_Ver0=Var2dev("",RCUmod,DevType.I2C,RCU_ROM_Ver,7,0,1) ...@@ -53,6 +53,14 @@ RCU_Ver0=Var2dev("",RCUmod,DevType.I2C,RCU_ROM_Ver,7,0,1)
RCU_VER=VarArray("RCU_version",1,[RCU_Ver0],RW.ReadOnly,datatype.dstring,10,None,None) RCU_VER=VarArray("RCU_version",1,[RCU_Ver0],RW.ReadOnly,datatype.dstring,10,None,None)
RCU_uCV_ID =VarArray("uC_ID " ,1,[Var2dev("",RCUmod,DevType.I2C,DevReg(0x40,0,0,0),8 ,0,1)],RW.ReadOnly,datatype.dInt,1,None,None)
RCU_uCV_spd0 =VarArray("uC_spd0" ,1,[Var2dev("",RCUmod,DevType.I2C,DevReg(0x40,1,1,0),8 ,0,1)],RW.ReadOnly,datatype.dInt,1,None,None)
RCU_uCV_debug =VarArray("uC_debug" ,1,[Var2dev("",RCUmod,DevType.I2C,DevReg(0x40,2,2,0),8 ,0,1)],RW.ReadOnly,datatype.dInt,1,None,None)
RCU_uCV_RXspd1=VarArray("uC_RXspd1",1,[Var2dev("",RCUmod,DevType.I2C,DevReg(0x40,3,3,0),8 ,0,1)],RW.ReadOnly,datatype.dInt,1,None,None)
RCU_uCV_RXspd2=VarArray("uC_RXspd2",1,[Var2dev("",RCUmod,DevType.I2C,DevReg(0x40,4,4,0),8 ,0,1)],RW.ReadOnly,datatype.dInt,1,None,None)
RCU_uCV_TXspd1=VarArray("uC_TXspd1",1,[Var2dev("",RCUmod,DevType.I2C,DevReg(0x40,6,6,0),8 ,0,1)],RW.ReadOnly,datatype.dInt,1,None,None)
RCU_ADC1_lock=Var2dev("RCU_ADC1_lock",RCUmod,DevType.SPIbb,RCU_ADC1_PLL_stat,8,0,1) RCU_ADC1_lock=Var2dev("RCU_ADC1_lock",RCUmod,DevType.SPIbb,RCU_ADC1_PLL_stat,8,0,1)
RCU_ADC2_lock=Var2dev("RCU_ADC2_lock",RCUmod,DevType.SPIbb,RCU_ADC2_PLL_stat,8,0,1) RCU_ADC2_lock=Var2dev("RCU_ADC2_lock",RCUmod,DevType.SPIbb,RCU_ADC2_PLL_stat,8,0,1)
RCU_ADC3_lock=Var2dev("RCU_ADC3_lock",RCUmod,DevType.SPIbb,RCU_ADC3_PLL_stat,8,0,1) RCU_ADC3_lock=Var2dev("RCU_ADC3_lock",RCUmod,DevType.SPIbb,RCU_ADC3_PLL_stat,8,0,1)
...@@ -95,15 +103,8 @@ RCU_OUT2=VarArray("RCU_OUT2",3,[RCU_IO1_2,RCU_IO2_2,RCU_IO3_2],RW.ReadOnly,datat ...@@ -95,15 +103,8 @@ RCU_OUT2=VarArray("RCU_OUT2",3,[RCU_IO1_2,RCU_IO2_2,RCU_IO3_2],RW.ReadOnly,datat
#RCU_CNF1=VarArray("RCU_CONF1",3,[RCU_IO1_3,RCU_IO2_3,RCU_IO3_3],RW.ReadOnly,datatype.dInt,None,None) #RCU_CNF1=VarArray("RCU_CONF1",3,[RCU_IO1_3,RCU_IO2_3,RCU_IO3_3],RW.ReadOnly,datatype.dInt,None,None)
#RCU_CNF2=VarArray("RCU_CONF2",3,[RCU_IO1_4,RCU_IO2_4,RCU_IO3_4],RW.ReadOnly,datatype.dInt,None,None) #RCU_CNF2=VarArray("RCU_CONF2",3,[RCU_IO1_4,RCU_IO2_4,RCU_IO3_4],RW.ReadOnly,datatype.dInt,None,None)
OPC_devvars=[RCU_mask,Ant_mask,RCU_att,RCU_band,RCU_temp,RCU_pwrd,RCU_LED,RCU_ADC_lock,RCU_ADC_SYNC,RCU_ADC_JESD,RCU_ADC_CML,RCU_OUT1,RCU_OUT2,RCU_ID,RCU_VER,HBA_Delay,HBA_led]
#OPC_devvars=[RCU_mask,Ant_mask,RCU_att,RCU_band,RCU_temp,RCU_pwrd,RCU_LED,RCU_uCV_ID,RCU_uCV_spd0,RCU_uCV_RXspd1,RCU_uCV_RXspd2,RCU_uCV_TXspd1,RCU_uCV_debug ]#,HBA1_Pwr]#,RCU_CNF1,RCU_CNF2]
OPC_devvars=[RCU_mask,Ant_mask,RCU_att,RCU_band,RCU_temp,RCU_pwrd,RCU_LED,RCU_ADC_lock,RCU_ADC_SYNC,RCU_ADC_JESD,RCU_ADC_CML,RCU_OUT1,RCU_OUT2,RCU_ID,RCU_VER]#,HBA1_Delay,HBA1_Pwr]#,RCU_CNF1,RCU_CNF2]
#Instr=namedtuple("DevInstr","type dev nvalue value") #Instr=namedtuple("DevInstr","type dev nvalue value")
#Instrs=namedtuple("Instr","name ninstr instr") #Instrs=namedtuple("Instr","name ninstr instr")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment