From 08675a76f655bdb4721101b8fbf83b0bb353e377 Mon Sep 17 00:00:00 2001
From: galperti <cristian.galperti@epfl.ch>
Date: Mon, 20 Apr 2020 17:20:41 +0200
Subject: [PATCH] up to adc 01 loading via a task

but task location and datadict to be rethought
to be consistent with node 01, probably
---
 code/classes/SCDclass_taskmdsloadprevADC.m | 62 +++++++++++++++++++++-
 1 file changed, 60 insertions(+), 2 deletions(-)

diff --git a/code/classes/SCDclass_taskmdsloadprevADC.m b/code/classes/SCDclass_taskmdsloadprevADC.m
index c3350e4..9e02e50 100644
--- a/code/classes/SCDclass_taskmdsloadprevADC.m
+++ b/code/classes/SCDclass_taskmdsloadprevADC.m
@@ -12,11 +12,13 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task
         function obj=SCDclass_taskmdsloadprevADC(id, varargin)   
             obj@SCDclass_task(id, varargin);
             obj.cparser.addRequired('modelbus',@(x) ischar(x));
-            obj.cparser.addParameter('node', 0, @(x) (isnumeric(x) && (x==2)));
+            obj.cparser.addParameter('node', 0, @(x) (isnumeric(x) && ((x==1) || x==2)));
             obj=obj.parseconstructorcommon(id, varargin);
             obj.modelbus=obj.cparser.Results.modelbus;
             obj.node=obj.cparser.Results.node;
             switch(obj.node)
+                case 1
+                    obj.workspacedatabasestructure='SCDsimdata.SCDnode01simdata.adc';                    
                 case 2
                     obj.workspacedatabasestructure='SCDsimdata.SCDnode02simdata.adc';
                 otherwise
@@ -30,6 +32,8 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task
             mdsopen(obj.mdstree, shot);
                   
             switch(obj.node)
+                case 1
+                    obj.actualizeNode01(shot);
                 case 2
                     obj.actualizeNode02(shot); 
             end    
@@ -40,6 +44,8 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task
             %value=eval(obj.getcommand);
             
             switch(obj.node)
+                case 1
+                      [~,value]=obj.getdataNode01ACQ196(shot);
                 case 2
                     if shot<65113
                       [~,value]=obj.getdataNode02ACQ196(shot); %% Here we need to switch betweeen old and new acquisition unit and tcv standard also
@@ -64,6 +70,30 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task
     
     methods(Access = private)
        
+        function obj = actualizeNode01(obj, shot)
+            dd=SCDconf_getdatadict(obj.datadictionary);
+            adcbus=dd.getEntry(obj.modelbus).getValue;
+            [~,data]=obj.getdata(shot);
+            T=timeseries; 
+            if obj.verbose==1
+               fprintf('Actualizing data for bus: ''%s'' (%s, shot %d) ', obj.modelbus, obj.classname, shot);
+            end
+            for ii=1:96
+                T.Time=data.Time;
+                T.Data=int16(data.Data(:,ii));
+                assignin('base','temp',T);
+                assigncmd=sprintf('%s.%s=temp;',obj.workspacedatabasestructure, adcbus.Elements(ii).Name);
+                evalin('base',assigncmd);
+                if obj.verbose==1 && mod(ii,4)==0
+                    fprintf('.');
+                end
+            end
+            evalin('base','clear temp');
+            if obj.verbose==1
+                fprintf('\n');
+            end   
+        end
+                
         function obj = actualizeNode02(obj, shot)
             dd=SCDconf_getdatadict(obj.datadictionary);
             adcbus=dd.getEntry(obj.modelbus).getValue;
@@ -87,7 +117,7 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task
                 fprintf('\n');
             end   
         end
-        
+                
         function [obj, value] = getdataNode02ACQ196(obj, shot)
             T=timeseries;
             timebase=mdsvalue('dim_of(\top.crpprt02.board1.adc_01)'); %% TODO: check with marte
@@ -151,6 +181,34 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task
                 fprintf('\n');
             end              
         end
+
+        function [obj, value] = getdataNode01ACQ196(obj, shot)
+            T=timeseries;
+            timebase=mdsvalue('dim_of(\top.crpprt01.board1.adc_01)'); %% TODO: check with marte
+            d_time = double(mdsvalueraw( '\top.crpprt01.params:d_time' ))*1.0e-6;
+            %timebase = round(timebase.*1/d_time)*d_time-d_time/2;
+            timebase = round(timebase.*1/d_time)*d_time-d_time/100;
+            T.Time=timebase;
+            T.Data=zeros(numel(timebase),96);
+            if obj.verbose==1
+               fprintf('Getting data for bus: ''%s'' (%s, shot %d) ', obj.modelbus, obj.classname, shot);
+            end
+            for ii=1:96
+                % Node 01 data are loaded in the stored order since
+                % up to now there is only old node 01
+
+                channelstr=sprintf('\\top.crpprt01.board1.adc_%02d.raw',physical2logical(ii));
+                T.Data(:,ii)=int16(mdsvalue(channelstr));   
+                if obj.verbose==1 && mod(ii,4)==0 
+                    fprintf('.');
+                end
+            end
+            value=T;
+            if obj.verbose==1
+                fprintf('\n');
+            end  
+        end
+        
         
     end
 end
-- 
GitLab