From 9a103ea61bf4456533a71a712f136453dfda1719 Mon Sep 17 00:00:00 2001
From: kruger <kruger@astron.nl>
Date: Thu, 18 Feb 2021 19:14:03 +0000
Subject: [PATCH] CLK SPIbb bug

---
 clk/CLK.py | 19 ++++++++++++++-----
 pypcc2.py  | 10 +++++-----
 2 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/clk/CLK.py b/clk/CLK.py
index decd383..f71fe4d 100644
--- a/clk/CLK.py
+++ b/clk/CLK.py
@@ -124,7 +124,7 @@ class RCU1():
            Mask=Mask.OPCW.get_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 (Instr.type==Vars.DevType.Var)  or ((self.N==1) and (Instr.type==Vars.DevType.VarUpdate)):
+        if (Instr.type==Vars.DevType.Var):
           logging.info(str(('** Set Var:',V1.name,value1)))
           for RCUi in range(self.N):
             for Vari in range(Step):
@@ -138,10 +138,19 @@ class RCU1():
           if not(V1.OPCR is None): V1.OPCR.set_value(bytes2strs(value1,Step2,V1.type))
 
         elif Instr.type==Vars.DevType.VarUpdate:
-          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.set_value(bytes2strs(value1,Step2,V1.type))
-#          V1.OPCR.get_data_value().Value.Value=value1
+          if self.N==1:
+             for Vari in range(Step):
+                i0=(Vari)*Step2
+                i1=(Vari+1)*Step2
+                value2=value1[i0:i1]
+                self.GetVarValue(0,V1.Vars[Vari],value2)
+                value1[i0:i1]=value2
+             if not(V1.OPCR is None): V1.OPCR.set_value(bytes2strs(value1,Step2,V1.type))
+          else:
+             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.set_value(bytes2strs(value1,Step2,V1.type))
+#            V1.OPCR.get_data_value().Value.Value=value1
 
         logging.info(str(('** Readback:',V1.name,value1)))
 
diff --git a/pypcc2.py b/pypcc2.py
index 719eef9..6ba9f38 100644
--- a/pypcc2.py
+++ b/pypcc2.py
@@ -50,10 +50,10 @@ RCU.AddVars(Q1,opcuaserv.AddVarR,opcuaserv.AddVarW)
 RCU.AddMethod(Q1,opcuaserv.Addmethod)
 RCU.load() #Load current register values from HW
 
-#CLK=CLK.RCU1(1,I2C.I2C2server,SW0.SetChannel)
-#CLK.AddVars(Q2,opcuaserv.AddVarR,opcuaserv.AddVarW)
-#CLK.AddMethod(Q2,opcuaserv.Addmethod)
-#CLK.load() #Load current register values from HW
+CLK=CLK.RCU1(1,I2C.I2C2server,SW0.SetChannel)
+CLK.AddVars(Q2,opcuaserv.AddVarR,opcuaserv.AddVarW)
+CLK.AddMethod(Q2,opcuaserv.Addmethod)
+CLK.load() #Load current register values from HW
 
 #logging.debug(str(("I2C bytes=",I2C.I2Ccounter)))
 
@@ -62,7 +62,7 @@ if False:
   exit()
 
 RCUthread1=RCU.start(Q1)
-#CLKthread1=CLK.start(Q2)
+CLKthread1=CLK.start(Q2)
 
 RunTimer=True;
 def TimerThread(Q1,RCU):
-- 
GitLab