From ac893d2f6455d36f38297058b4440a9efdb3b3a1 Mon Sep 17 00:00:00 2001
From: Federico Felici <federico.felici@epfl.ch>
Date: Sat, 20 Nov 2021 16:38:05 +0100
Subject: [PATCH] Generate SCDnode*parameters in setup and put in main sldd

---
 code/classes/SCDclass_expcode.m | 27 +++++++++++++++++++++++++--
 code/classes/SCDclass_node.m    | 15 +++++----------
 2 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/code/classes/SCDclass_expcode.m b/code/classes/SCDclass_expcode.m
index f7e3804..2c947e5 100644
--- a/code/classes/SCDclass_expcode.m
+++ b/code/classes/SCDclass_expcode.m
@@ -144,7 +144,6 @@ classdef SCDclass_expcode
            obj.setupnodedd;
            obj.setupmaindd;
            
-           
            fprintf('Setting up expcode %d, ''%s'', configuring default tunable parameters ...\n',obj.maincode,obj.name);           
            obj.updatedefaulttp;
            fprintf('Setting up expcode %d, ''%s'', configuring global data ...\n',obj.maincode,obj.name);
@@ -186,6 +185,9 @@ classdef SCDclass_expcode
           fprintf('Setting up variant model configuration')
           obj.setupvaralgo;
           
+          fprintf('Setting up node parameters configuration\n')
+          obj.setupnodeparams;
+          
           dd.saveChanges;
 
         end
@@ -777,7 +779,7 @@ classdef SCDclass_expcode
 
         end
         
-        function obj = setupvaralgo(obj)
+        function setupvaralgo(obj)
             % Sets up varalgo structure in main tcv data dictionary
             % according to varalgo info of the nodes
 
@@ -806,6 +808,27 @@ classdef SCDclass_expcode
             end
         end
         
+        function setupnodeparams(obj)
+          
+          % set node parameter structure in main data dictionary
+          for ii=obj.definednodes
+            node = obj.nodes{ii};
+            for field = {'name','timing'}
+              nodeparams.(field{:}) = node.(field{:});
+            end
+            varname = sprintf('SCDnode%02dparams',node.nodenr);
+            % setup node parameters
+            d=Simulink.data.dictionary.open(obj.ddname);
+            dd=getSection(d, 'Design Data');
+            fprintf('setting Node parameters %s in %s\n',varname,obj.ddname);
+            if dd.exist(varname)
+              ee=dd.getEntry(varname);
+              ee.setValue(nodeparams);
+            else
+              dd.addEntry(varname,nodeparams);
+            end
+          end
+        end
         function obj = buildworkspacesimstructnode(obj,inode,dd)
           % build simulation data structure
           node = obj.nodes{inode};
diff --git a/code/classes/SCDclass_node.m b/code/classes/SCDclass_node.m
index 23b10a8..5351e4c 100644
--- a/code/classes/SCDclass_node.m
+++ b/code/classes/SCDclass_node.m
@@ -11,8 +11,7 @@ classdef SCDclass_node < SCDclass_component
     hasethercat
     ncpu           % number of CPUs
     cputype
-    timing       = struct('t_start',-4.5,'t_stop',3,'dt',1e-4);
-    thperiod
+    timing
     buildcfg
     initscdbeforecomp
     cpuactive
@@ -64,6 +63,7 @@ classdef SCDclass_node < SCDclass_component
     
     function node = defaultnodeconfig(node,nodenr)
       % Default configuration for nodes
+      node.name = sprintf('CRPPRT%02d',nodenr);
       switch nodenr
         case 1
           node.ncpu = 1;
@@ -71,7 +71,6 @@ classdef SCDclass_node < SCDclass_component
           node.timing.t_start = -4.5;
           node.timing.t_stop = 3;
           node.timing.dt = 1e-4;
-          node.thperiod = 1.0000e-03;
           node.buildcfg.conffile{1} = 'standard';
           node.buildcfg.initscdbeforecomp = false;
           node.haswavegen = true;
@@ -83,7 +82,6 @@ classdef SCDclass_node < SCDclass_component
           node.timing.t_start = -4.5;
           node.timing.t_stop = 3;
           node.timing.dt = 1e-4;
-          node.thperiod = [1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03 1.0e-3 1.0e-3];
           node.buildcfg.conffile = cell(node.ncpu,1);
           node.buildcfg.conffile{1} = 'standard';
           node.buildcfg.conffile{2} = 'standard';
@@ -101,7 +99,6 @@ classdef SCDclass_node < SCDclass_component
           node.timing.t_start = -2.0;
           node.timing.t_stop = 2.75;
           node.timing.dt = 1e-3;
-          node.thperiod = [1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03];
           node.buildcfg.conffile = cell(node.ncpu,1);
           node.buildcfg.conffile{1} = 'standard';
           node.buildcfg.conffile{2} = 'standard';
@@ -117,7 +114,6 @@ classdef SCDclass_node < SCDclass_component
           node.timing.t_start = -4.5;
           node.timing.t_stop = 3;
           node.timing.dt = 1e-4;
-          node.thperiod = 1.0000e-04;
           node.buildcfg.conffile{1} = 'standard';
           node.buildcfg.initscdbeforecomp = false;
           node.haswavegen = true;
@@ -129,7 +125,6 @@ classdef SCDclass_node < SCDclass_component
           node.timing.t_start = -4.5;
           node.timing.t_stop = 3;
           node.timing.dt = 1e-4;
-          node.thperiod = 1.0000e-04;
           node.buildcfg.conffile{1} = 'standard';
           node.buildcfg.initscdbeforecomp = false;
           node.haswavegen = true;
@@ -141,7 +136,6 @@ classdef SCDclass_node < SCDclass_component
           node.timing.t_start = 0.0;
           node.timing.t_stop = 2.75;
           node.timing.dt = 1e-3;
-          node.thperiod = [1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03];
           node.buildcfg.conffile = cell(node.ncpu,1);
           node.buildcfg.conffile{1} = 'standard';
           node.buildcfg.conffile{2} = 'standard';
@@ -157,7 +151,6 @@ classdef SCDclass_node < SCDclass_component
           node.timing.t_start = -0.5;
           node.timing.t_stop = 2.5;
           node.timing.dt = 1e-3;
-          node.thperiod = [1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03];
           node.buildcfg.conffile = cell(node.ncpu,1);
           node.buildcfg.conffile{1} = 'standard';
           node.buildcfg.conffile{2} = 'standard';
@@ -173,7 +166,6 @@ classdef SCDclass_node < SCDclass_component
           node.timing.t_start = -0.5;
           node.timing.t_stop = 2.5;
           node.timing.dt = 1e-3;
-          node.thperiod = [1.0000e-03 1.0000e-03 1.0000e-03 1.0000e-03];
           node.buildcfg.conffile = cell(node.ncpu,1);
           node.buildcfg.conffile{1} = 'standard';
           node.buildcfg.conffile{2} = 'standard';
@@ -186,6 +178,9 @@ classdef SCDclass_node < SCDclass_component
       end
       node.cpuactive = zeros(1,node.ncpu);
       
+      % thread timing
+      node.timing.thperiod = 1e-3*ones(1,node.ncpu);
+      
       % add template node wrappers
       for icpu=1:node.ncpu
         wrappername = sprintf('SCDwrap_template%02d%02d',nodenr,icpu);
-- 
GitLab