From fd2881432ef39a00297cba8d75cf8ffa06c1b37d Mon Sep 17 00:00:00 2001
From: Federico Felici <federico.felici@epfl.ch>
Date: Sat, 20 Nov 2021 17:20:44 +0100
Subject: [PATCH] Add timing to wrapper and check correct algo dt when adding

---
 code/classes/SCDclass_component.m | 6 ++++++
 code/classes/SCDclass_node.m      | 1 -
 code/classes/SCDclass_wrapper.m   | 6 ++++--
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/code/classes/SCDclass_component.m b/code/classes/SCDclass_component.m
index 292e027..694654a 100644
--- a/code/classes/SCDclass_component.m
+++ b/code/classes/SCDclass_component.m
@@ -12,6 +12,7 @@ classdef SCDclass_component
     mdlname % simulink model name
     ddname  % data dictionary name
     algos   % algorithms contained in this wrapper
+    timing  % sample time
   end
 
   methods
@@ -19,6 +20,11 @@ classdef SCDclass_component
     function obj = addalgo(obj,algo)
       % add an algorithm object
       assert(isa(algo,'SCDclass_algo'));
+      
+      assert(algo.gettiming.dt == obj.timing.dt,...
+        'Algorithm %s sample time: %f does not match %s sample time: %f',...
+        algo.getname,algo.gettiming.dt,obj.name,obj.timing.dt)
+      
       obj.algos = [obj.algos;algo];
     end
     
diff --git a/code/classes/SCDclass_node.m b/code/classes/SCDclass_node.m
index 5351e4c..d1f75d6 100644
--- a/code/classes/SCDclass_node.m
+++ b/code/classes/SCDclass_node.m
@@ -11,7 +11,6 @@ classdef SCDclass_node < SCDclass_component
     hasethercat
     ncpu           % number of CPUs
     cputype
-    timing
     buildcfg
     initscdbeforecomp
     cpuactive
diff --git a/code/classes/SCDclass_wrapper.m b/code/classes/SCDclass_wrapper.m
index c1b482c..a3959a2 100644
--- a/code/classes/SCDclass_wrapper.m
+++ b/code/classes/SCDclass_wrapper.m
@@ -1,12 +1,14 @@
 classdef SCDclass_wrapper < SCDclass_component
   % Wrapper class containing algos
   methods
-    function obj = SCDclass_wrapper(name)
+    function obj = SCDclass_wrapper(name,dt)
+      if nargin<2, dt=1e-3; end % default wrapper period
+      
       obj.name    = name;
       obj.algos   = [];
       obj.ddname  = [name,'.sldd'];
       obj.mdlname = [name,'.slx'];
-      
+      obj.timing  = struct('dt',dt);
       assert(~isempty(which(obj.mdlname)),...
         'could not find %s for SCD component %s',obj.mdlname,obj.name);
     end
-- 
GitLab