From 6d56372836d7307a182064a8e76c0ea97b06d53a Mon Sep 17 00:00:00 2001
From: Federico Felici <federico.felici@epfl.ch>
Date: Wed, 4 Dec 2019 18:38:02 +0100
Subject: [PATCH] LIUQE works now with RT data

---
 code/classes/SCDclass_expcode.m | 87 ++++++++++++++++++---------------
 1 file changed, 48 insertions(+), 39 deletions(-)

diff --git a/code/classes/SCDclass_expcode.m b/code/classes/SCDclass_expcode.m
index 49d70e0..12fd2e8 100644
--- a/code/classes/SCDclass_expcode.m
+++ b/code/classes/SCDclass_expcode.m
@@ -176,8 +176,17 @@ classdef SCDclass_expcode
         end
       end
       
-      function threadslx = getthreadslx(inode,icpu)
-        threadslx = sprintf('SCD_rtccode_%02d_%02d',inode,icpu);
+      function myslx = getslx(inode,icpu)
+        if nargin==0
+          myslx = 'tcv';
+        elseif nargin==1
+            assert(isnumeric(inode))
+            myslx = sprintf('SCD_rtc_%02d',inode);
+          elseif nargin==2
+            myslx = sprintf('SCD_rtccode_%02d_%02d',inode,icpu);
+          else
+            error('invalid number of arguments');
+        end
       end
       
       function setcachefolder(obj)
@@ -580,55 +589,55 @@ classdef SCDclass_expcode
             fprintf("}\n");
         end
        
-        function compile(obj)
+        function compile(~,varargin)
+          myslx = SCDclass_expcode.getslx(varargin{:});
+          fprintf('Compiling %s.slx\n',myslx)
           try
-            tcv([],[],[],'compile');
-            tcv([],[],[],'term');
+            eval(sprintf('%s([],[],[],''compile'')',myslx));
+            eval(sprintf('%s([],[],[],''term'')',myslx));
           catch ME
             rethrow(ME)
           end
         end
         
-
-        
-        function sim(obj)
-          SCDconf_setCODEconf('configurationSettingsCODEicc')
-          sim('tcv')
+        function sim(~,varargin)
+          SCDconf_setSIMconf
+          myslx = SCDclass_expcode.getslx(varargin{:});
+          fprintf('Simulating %s.slx\n',myslx)
+          sim(myslx)
         end  
         
-        function open(~,node,cpu)
-          if nargin==1
-            openslx = 'tcv';
-          elseif nargin==2
-            assert(isnumeric(node))
-            openslx = sprintf('SCD_rtc_%02d',node);
-          elseif nargin==3
-            openslx = SCDclass_expcode.getthreadslx(node,cpu);
-          else
-            error('invalid number of arguments');
-          end
+        function open(~,varargin)
+          openslx = SCDclass_expcode.getslx(varargin{:});
+          fprintf('Spening %s.slx\n',openslx)
           open(openslx);
         end
         
-        function build(obj)
-          fprintf('\n=== Building %s ===\n',obj.name);
+        function build(obj,varargin)
                     
-           % make list of nodes to build
-           compileslx_list = cell(0);
-           for inode=1:8
-             nodeinfo=obj.(sprintf('node%02d',inode));
-             for icpu = 1:nodeinfo.ncpu
-               if nodeinfo.cpuactive(icpu)
-                 compileslx_list = [compileslx_list,...
-                   SCDclass_expcode.getthreadslx(node,cpu)]; %#ok<AGROW>
-               end
-             end
-           end
-           
-           if isempty(compileslx_list)
-             fprintf('No active nodes found, no .slx to compile. Done\n');
-             return
-           end
+          if numel(varargin)==0
+            fprintf('\n=== Building all threads for %s ===\n',obj.name);
+            % make list of nodes to build
+            compileslx_list = cell(0);
+            for inode=1:8
+              nodeinfo=obj.(sprintf('node%02d',inode));
+              for icpu = 1:nodeinfo.ncpu
+                if nodeinfo.cpuactive(icpu)
+                  compileslx_list = [compileslx_list,...
+                    SCDclass_expcode.getthreadslx(node,cpu)]; %#ok<AGROW>
+                end
+              end
+            end
+            
+            if isempty(compileslx_list)
+              fprintf('No active nodes found, no .slx to compile. Done\n');
+              return
+            end
+          else
+            % user passed nodes,threads to compile
+            myslx = SCDclass_expcode.getslx(varargin{:});
+            fprintf('building %s.slx\n',myslx)
+          end
          
            % set CodeGen folder for this expcode (allows fast rebuilding)
            SCDclass_expcode.setcodegenfolder(obj)
-- 
GitLab