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)
-
-