diff --git a/i2cserv/i2c_array.py b/i2cserv/i2c_array.py index 3baa36454b67c3d007810ca47a4984eb0452c12a..11b7d9f54f339248ade670c3e73c70398dd04040 100644 --- a/i2cserv/i2c_array.py +++ b/i2cserv/i2c_array.py @@ -144,7 +144,7 @@ class i2c_array(hwdev): self.conf['parentcls'].i2csetget(*args,**kwargs) def SetSwitch(self,RCUi): - self.conf['parentcls'].SetChannel(1<<self.RCU_Switch1[RCUi]); + self.conf['parentcls'].SetSW1(self.RCU_Switch1[RCUi]); def SetSwitchMask(self,mask): m=0; diff --git a/i2cserv/i2c_array2.py b/i2cserv/i2c_array2.py index 90feff0c502f23fd9b44e5c45eddc01380e305f7..29d5ec4186822f58c95f888afc0faa47c19a5a19 100644 --- a/i2cserv/i2c_array2.py +++ b/i2cserv/i2c_array2.py @@ -3,15 +3,10 @@ from .i2c_array import i2c_array; from .hwdev import hwdev - class i2c_array2(i2c_array): def __init__(self,config): hwdev.__init__(self,config); -# self.Qout=Qout; -# self.Qin=Qin; -# self.I2Ccallback=I2Ccallback -# self.SWcallback=Switchcallback -# self.previousHBA=np.zeros([number,3,32],dtype='int') + # Make array of switch states pars=config['parameters']; self.Nswitch=(len(pars)+1)//2; @@ -28,9 +23,7 @@ class i2c_array2(i2c_array): self.sw1=[x for x in sw1 for i in range(self.N//len(sw1))] self.sw2=[x for x in sw2 for i in range(self.N//len(sw1)//len(sw2))]*len(sw1) self.sw3=[x for x in sw3]*len(sw1)*len(sw2) -# self.devregs,RCU_storeReg=DevRegList(yaml) logging.debug(str(("Init",config['name'],' len=',self.N,'Nswitch=',self.Nswitch,self.sw1,self.sw2,self.sw3))) -# self.previous =np.zeros([self.N,RCU_storeReg],dtype='int') def SetSwitch(self,RCUi): #print("Set switch element",RCUi,'=',self.sw1[RCUi],self.sw2[RCUi],(self.sw3[RCUi] if len(self.sw3)<0 else 'x')) diff --git a/i2cserv/i2c_switch.py b/i2cserv/i2c_switch.py index 1574fc41c6b770297aa48da440a1f2872a57ba4a..f6a59b97b690612e50a69d19a91f3d1a2cd26785 100644 --- a/i2cserv/i2c_switch.py +++ b/i2cserv/i2c_switch.py @@ -10,6 +10,13 @@ class i2c_switch(i2c): self.CurrentChannel=0 logging.info("i2c switch at address "+str(self.SWaddr)) + def SetSW1(self,channelbit): + channel=1<<(channelbit) + if (channel)==self.CurrentChannel: return True; + logging.debug("SetChannel=%i" % channelbit) + self.CurrentChannel=channel + return self.i2csetget(self.SWaddr,[channel]) + def SetChannel(self,channel): if (channel)==self.CurrentChannel: return True; logging.debug("SetChannel=%i" % channel) diff --git a/testUNB2.py b/testUNB2.py index 2bed6c0f04898709831730d87d74c5837e65d542..a6e3530a84a32db8644c76e8258a8f93bae81b75 100644 --- a/testUNB2.py +++ b/testUNB2.py @@ -31,6 +31,12 @@ I2Cclients.append(RCU_I2C) #Load yaml so that we know the variable names RCU_conf=yamlreader.yamlreader(RCU_I2C,yamlfile=name) +var1=RCU_conf.getvarid('UNB2_EEPROM_Unique_ID'); +N=2; +mask=[i<1 for i in range(N)]; +print("mask=",mask); +RCU_I2C.readvar(var1,mask); + var1=RCU_conf.getvarid('UNB2_DC_DC_48V_12V_VIN'); N=2;