From fcd0cf7eb2cecdcbc3d98bba84e7db9f16fbbb9b Mon Sep 17 00:00:00 2001
From: Federico Felici <federico.felici@epfl.ch>
Date: Sat, 20 Nov 2021 17:46:43 +0100
Subject: [PATCH] Set receiving thread sampling time equal to that of wrapper

---
 code/classes/SCDclass_expcode.m |  2 +-
 code/classes/SCDclass_node.m    | 15 +++++++++++----
 code/classes/SCDclass_wrapper.m |  2 +-
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/code/classes/SCDclass_expcode.m b/code/classes/SCDclass_expcode.m
index 2c947e5..15e1eb4 100644
--- a/code/classes/SCDclass_expcode.m
+++ b/code/classes/SCDclass_expcode.m
@@ -813,7 +813,7 @@ classdef SCDclass_expcode
           % set node parameter structure in main data dictionary
           for ii=obj.definednodes
             node = obj.nodes{ii};
-            for field = {'name','timing'}
+            for field = {'active','name','timing'}
               nodeparams.(field{:}) = node.(field{:});
             end
             varname = sprintf('SCDnode%02dparams',node.nodenr);
diff --git a/code/classes/SCDclass_node.m b/code/classes/SCDclass_node.m
index d1f75d6..492e339 100644
--- a/code/classes/SCDclass_node.m
+++ b/code/classes/SCDclass_node.m
@@ -56,8 +56,13 @@ classdef SCDclass_node < SCDclass_component
       mywrapper.wrapperobj = wrapperObj;
       mywrapper.cpunr      = cpunr;
       mywrapper.varalgo    = varalgo;
-      obj.wrappers{cpunr} = mywrapper;
+      
+      % add wrapper to obj
+      obj.wrappers{cpunr}  = mywrapper;
+      % set cpu of this wrapper to active
       obj.cpuactive(cpunr) = isactive;
+      % set receiving node cpu sample time to wrapper sample time
+      obj.timing.thperiod(obj.nodenr) = wrapperObj.timing.dt;
     end
     
     function node = defaultnodeconfig(node,nodenr)
@@ -178,7 +183,9 @@ classdef SCDclass_node < SCDclass_component
       node.cpuactive = zeros(1,node.ncpu);
       
       % thread timing
-      node.timing.thperiod = 1e-3*ones(1,node.ncpu);
+      if ~isfield(node.timing,'thperiod')
+        node.timing.thperiod = 1e-3*ones(1,node.ncpu);
+      end
       
       % add template node wrappers
       for icpu=1:node.ncpu
@@ -210,8 +217,8 @@ classdef SCDclass_node < SCDclass_component
     
     function printinfo(obj)
       % print wrapper and algo info
-      fprintf('\nNode%02d, CPUs:%02d, nodename:%s\n',...
-              obj.nodenr,obj.ncpu,obj.name)
+      fprintf('\nNode%02d, CPUs:%02d, name:%s, dt=%5.3fms\n',...
+              obj.nodenr,obj.ncpu,obj.name,obj.timing.dt*1e3)
       for wrapper = obj.wrappers
         fprintf(' CPU %d wrapper: ',wrapper{:}.cpunr);
         wrapper{:}.wrapperobj.printinfo;
diff --git a/code/classes/SCDclass_wrapper.m b/code/classes/SCDclass_wrapper.m
index a3959a2..5b8944c 100644
--- a/code/classes/SCDclass_wrapper.m
+++ b/code/classes/SCDclass_wrapper.m
@@ -22,7 +22,7 @@ classdef SCDclass_wrapper < SCDclass_component
     end
     
     function printinfo(obj)
-      fprintf('%s\n',obj.name);
+      fprintf('%s, dt=%5.3f[ms]\n',obj.name,obj.timing.dt*1e3);
       fprintf('   Algos:');
       if isempty(obj.algos), fprintf('  none'); end
       fprintf('\n');
-- 
GitLab