From af97db25137a6a5de2de359c4a6bda8563f5e29a Mon Sep 17 00:00:00 2001
From: kruger <kruger@astron.nl>
Date: Wed, 28 Apr 2021 15:04:21 +0200
Subject: [PATCH] RCU init debug

---
 config/RCU.yaml      |  3 +--
 i2cserv/i2c_dev.py   |  4 ++--
 i2cserv/i2cthread.py | 10 +++++++---
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/config/RCU.yaml b/config/RCU.yaml
index ba37d23..26727f0 100644
--- a/config/RCU.yaml
+++ b/config/RCU.yaml
@@ -210,6 +210,7 @@ variables:
 
    - name: RCU_state
      description: State of RCUs 0=unknown, 1=ready, 2=busy, 3= wait PPS, 4=error
+     driver: I2C_RCU
      rw:  variable #server variable, not linked to IO
      dtype: uint8
      dim: 1
@@ -360,9 +361,7 @@ methods:
 #    - IO3.GPIO1: Update
 #    - IO3.GPIO2: Update
     - IO3.CONF1: Update
-    - RCU_mask: True
     - RCU_update: 0
-    - RCU_mask: False
     - RCU_state: 1
 
   - name: RCU_on
diff --git a/i2cserv/i2c_dev.py b/i2cserv/i2c_dev.py
index bcf8ba9..ef0651f 100644
--- a/i2cserv/i2c_dev.py
+++ b/i2cserv/i2c_dev.py
@@ -94,11 +94,11 @@ class i2c_dev(hwdev):
               if len(mask)==0: mask=[True]*len(data);
               if len(data)!=len(mask): 
                 logging.warn("Trying to set I2C OK with wrong mask length!")
-                return
+                return []
               for x,m in enumerate(mask):
                 if m: self.I2Cmask[x]=data[x];
                 return [OPCUAset(self.I2Cmaskid,InstType.varSet,self.I2Cmask.copy(),[])]
-          return;
+          return [OPCUAset(varid,InstType.varSet,data,mask)];
        logging.info(str(("Set Var",var1['name'],data,mask)))
        oldmask=self.I2Cmask.copy()
        data,mask2=self.SetGetVarValueMask(var1,data,mask);
diff --git a/i2cserv/i2cthread.py b/i2cserv/i2cthread.py
index 2d4bd44..05ae1a9 100644
--- a/i2cserv/i2cthread.py
+++ b/i2cserv/i2cthread.py
@@ -36,19 +36,23 @@ def runmethod(conf,Qout,methodid,mask):
         for key,value in inst.items():
             if not(isinstance(value,list)): value=[value]
             logging.info(str(("Run instruction",key,value,mask)));
+            if mask is None: mask=[]
             if (key=='WAIT'):
                 sleep(value[0]/1000.)
                 continue;
             v1=conf.getvarid(key)
             if v1: 
                 if value[0]=='Update':
-                   mask=getvar(conf,Qout,v1,mask)
+                   #mask=
+                   getvar(conf,Qout,v1,mask)
                 else:
-                   mask=setvar(conf,Qout,v1,value,mask)
+                   #mask=
+                   setvar(conf,Qout,v1,value,mask)
                 continue;
             v1=conf.getmethodid(key)
             if v1: 
-                mask=runmethod(conf,Qout,v1,mask)
+                #mask=
+                runmethod(conf,Qout,v1,mask)
                 continue;
             v1=conf.getdevreg(key)
             if v1:
-- 
GitLab