Skip to content
Snippets Groups Projects
Commit cdabdd23 authored by Lorenzo Pivetta's avatar Lorenzo Pivetta
Browse files

First import

parent d4bd13d9
No related branches found
No related tags found
No related merge requests found
clear all;
for num_sequences=1:64
seq_name = sprintf('seq_launcher_%d.txt',num_sequences);
header{1} = '#';
header{2} = '# Description: $description';
header{3} = '# Author: Giulio Gaio';
header{4} = '# Date: 22/01/2020';
header{5} = '#';
header{6} = sprintf('# This launching sequence starts %d sub-sequences',num_sequences);
header{7} = '#';
error_step = 1+1+num_sequences+num_sequences*7+1+num_sequences*7+3;
rollback_step = error_step + 3;
abort_step = rollback_step + 2;
exit_step = abort_step + 2*num_sequences;
cnt = 0;
cnt = cnt + 1;
blk{cnt}=sprintf('step%d;(write(this/RetryCounter) = 0) && (write(this/TimeoutMask) = 0) && goto(%d);Resetting internal variables;Error resetting internal variables;-1',cnt,cnt+1);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(read(this/TimeoutMask) > 0) ? goto(-1) : goto(%d);Checking sequences timeout;Sequence timeout error;-1',cnt,cnt+1);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(read(this/RetryCounter) > read(this/MaxRetryCounter)) ? goto(%d) : goto(%d);Checking retry counter;Max number of retries reached;-1',cnt,rollback_step,cnt+1);
% reset executed flag
for seq=1:num_sequences
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(write(this/ExecutedSeq%d) = 0) && goto(%d);Resetting $devseq%d$ executed flag;Error resetting $devseq%d executed flag;-1',cnt,seq,cnt+1,seq,seq);
end
% start sequences
for seq=1:num_sequences
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;((read($devseq%d$/State) == RUNNING) || (read(this/EnableSeq%d) == 0)) ? goto(%d) : goto(%d);Checking $devseq%d$ already running;Error checking $devseq%d$ already running;-1',cnt,seq,seq,cnt+7,cnt+1,seq,seq);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;((read(this/RetryCounter) == 0) || (read(this/RetryMask) & 0x%x)) ? command($devseq%d$/Start) && sleep($sleep_after_start_cmd) && goto(%d) : goto(%d);Starting $devseq%d$ sequence;Error starting $devseq%d$ sequence;-1;tangoerror=goto(%d)',cnt,2^(seq-1),seq,cnt+1,cnt+6,seq,seq,error_step);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(read(this/BlockMask) & 0x%x) ? goto(%d) : goto(%d);Check $devseq%d$ blocking state;Error checking $devseq%d$ blocking;-1',cnt,2^(seq-1),cnt+1,cnt+5,seq,seq);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(read($devseq%d$/State) == RUNNING) ? sleep($sleep_wait_refresh_state) && goto(%d) : goto(%d);Waiting $devseq%d$ (blocking);Error waiting $devseq%d$ (blocking);$sequence_timeout000;tangoerror=goto(%d)',cnt,seq,cnt,cnt+1,seq,seq,error_step);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;read($devseq%d$/State) == FAULT ? goto(%d) : (write(this/ExecutedSeq%d) = 1) && goto(%d);Checking $devseq%d$ state;$devseq%d$ in FAULT state;-1;tangoerror=goto(%d)',cnt,seq,cnt+1,seq,cnt+3,seq,seq,error_step);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(read(this/CatchErrorExitMask) & 0x%x) == 0 ? goto(%d) : goto(%d);Checking $devseq%d$ abort;Error checking $devseq%d$ abort;-1;tangoerror=goto(%d)',cnt,2^(seq-1),cnt+1,abort_step,seq,seq,error_step);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(read(this/CatchErrorContinueMask) & 0x%x) == 0 ? goto(%d) : goto(%d);Checking $devseq%d$ abort;Error checking $devseq%d$ abort;-1;tangoerror=goto(%d)',cnt,2^(seq-1),error_step,cnt+1,seq,seq,error_step);
end
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;sleep($sleep_wait_refresh_state) && (write(this/RunningCounter) = 0) && (write(this/ErrorCounter) = 0) && goto(%d);Waiting sequence state update;Error waiting sequence state update;-1',cnt,cnt+1);
% check RUNNING
for seq=1:num_sequences
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(read(this/EnableSeq%d) == 0) ? goto(%d) : goto(%d);Checking $devseq%d$ enabled;Error checking $devseq%d$ enabled;-1',cnt,seq,cnt+7,cnt+1,seq,seq);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(read($devseq%d$/State) == OFF) ? (write(this/ExecutedSeq%d) = 1) && goto(%d) : goto(%d);Checking $devseq%d$ OFF state;Error checking $devseq%d$ OFF state;-1;tangoerror=goto(%d)',cnt,seq,seq,cnt+6,cnt+1,seq,seq,error_step);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;read($devseq%d$/State) == FAULT ? goto(%d) : goto(%d);Checking $devseq%d$ FAULT state;Error checking $devseq%d$ FAULT state;-1;tangoerror=goto(%d)',cnt,seq,cnt+1,cnt+3,seq,seq,error_step);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(read(this/CatchErrorExitMask) & 0x%x) == 0 ? goto(%d) : goto(%d);Checking $devseq%d$ abort;Error checking $devseq%d$ abort;-1;tangoerror=goto(%d)',cnt,2^(seq-1),cnt+1,abort_step,seq,seq,error_step);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(read(this/CatchErrorContinueMask) & 0x%x) == 0 ? (write(this/ErrorCounter) = (read(this/ErrorCounter) + 1)) && goto(%d) : goto(%d);Checking $devseq%d$ abort;Error checking $devseq%d$ abort;-1;tangoerror=goto(%d)',cnt,2^(seq-1),cnt+1,cnt+1,seq,seq,error_step);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;read($devseq%d$/State) == RUNNING ? (write(this/RunningCounter) = (read(this/RunningCounter) + 1)) && sleep($sleep_wait_refresh_state) && goto(%d) : goto(%d);$devseq%d$ RUNNING;Error RUNNING $devseq%d$;$sequence_timeout000;timeouterror=goto(%d)',cnt,seq,cnt+2,cnt+2,seq,seq,cnt+1);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(write(this/TimeoutMask) = (read(this/TimeoutMask) | 0x%x)) && goto(%d);Setting $devseq%d$ timeout mask;Error setting $devseq%d$ timeout mask;-1',cnt,2^(seq-1),cnt+1,seq,seq);
end
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(read(this/RunningCounter) == 0) ? goto(%d) : goto(%d);Checking running sequences;Error checking running sequences;-1',cnt, cnt+2, cnt - 7*num_sequences-1);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(write(this/ErrorCounter) = read(this/ErrorCounter) + 1) && goto(%d);Increasing error counter;Error increasing error counter;-1',cnt,cnt+1);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;(write(this/RetryCounter) = read(this/RetryCounter) + 1) && goto(%d);Increasing retry counter;Error increasing retry counter;-1',cnt,cnt+1);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;read(this/ErrorCounter) == 0 ? goto(%d) : goto(%d);Increasing retry counter;Error increasing retry counter;-1',cnt,exit_step,2);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;((read(this/EnableRollback) == 1) && (read(this/EnableSeq%d) == 0)) ? command($devseq%d$/Start) && sleep($sleep_after_start_cmd) && goto(%d) : goto(-1);Executing rollback sequence $devseq%d$;Error executing rollback sequence $devseq%d;-1',cnt,num_sequences,num_sequences,cnt+1,num_sequences,num_sequences);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;sleep($sleep_wait_refresh_state) && (read($devseq%d$/State) == RUNNING) ? goto(%d) : goto(-1);Rolling back $devseq%d$ RUNNING;Error rolling back $devseq%d$;$sequence_timeout000;-1',cnt,num_sequences,cnt,num_sequences,num_sequences);
% abort step
for seq=1:num_sequences
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;sleep($sleep_wait_refresh_state) && ((read($devseq%d$/State) == FAULT) && (read(this/EnableSeq%d) == 1)) ? command($devseq%d$/Acknowledge) && goto(%d) : goto(%d);Acknowleding $devseq%d$;Error acknowledging $devseq%d$;$sequence_timeout000;tangoerror=goto(%d)',cnt,seq,seq,seq,cnt+1,cnt+1,seq,seq,cnt+1);
cnt = cnt + 1;
blk{cnt} = sprintf('step%d;((read($devseq%d$/State) == RUNNING) && (read(this/EnableSeq%d) == 1)) ? command($devseq%d$/Stop) && goto(%d) : goto(%d);Stopping $devseq%d$;Error stopping$devseq%d$;$sequence_timeout000;tangoerror=goto(%d)',cnt,seq,seq,seq,cnt-1,cnt+1,seq,seq,cnt+1);
end
% dynamic attributes
cnt = 0;
cnt = cnt + 1;
footer{cnt} = 'attr;BlockMask;long64;0';
cnt = cnt + 1;
footer{cnt} = 'attr;RetryMask;long64;0';
cnt = cnt + 1;
footer{cnt} = 'attr;CatchErrorExitMask;long64;0';
cnt = cnt + 1;
footer{cnt} = 'attr;CatchErrorContinueMask;long64;0';
cnt = cnt + 1;
footer{cnt} = 'attr;EnableRollback;bool;0';
cnt = cnt + 1;
footer{cnt} = 'attr;TimeoutMask;long64;0';
cnt = cnt + 1;
footer{cnt} = 'attr;ErrorCounter;long;0';
cnt = cnt + 1;
footer{cnt} = 'attr;RunningCounter;long;0';
cnt = cnt + 1;
footer{cnt} = 'attr;MaxRetryCounter;long;1';
% check Enable
for seq=1:num_sequences
cnt = cnt + 1;
footer{cnt} = sprintf('attr;EnableSeq%d;bool;1',seq);
end
% check Executed
for seq=1:num_sequences
cnt = cnt + 1;
footer{cnt} = sprintf('attr;ExecutedSeq%d;bool;0',seq);
end
cnt = cnt + 1;
footer{cnt} = 'attr;RetryCounter;long;0';
fileID = fopen(seq_name,'w');
for i=1:size(header,2)
fprintf(fileID,'%s\n',header{i});
end
for i=1:size(blk,2)
fprintf(fileID,'%s\n',blk{i});
end
for i=1:size(footer,2)
fprintf(fileID,'%s\n',footer{i});
end
fclose(fileID);
end
% Dynamic R/W attributes
%
% User
% attr;Block;long;0
% attr;Retry;long;0
% attr;EnableRollback;bool;0
% attr;MaxRetryCounter;long;0
% attr;EnableSeq1;bool;0
% attr;EnableSeq2;bool;0
% .........
% Internal
% attr;Executed;long;0
% attr;RetryCounter;long;0
% Wildcards
% $description=
% sleep_after_start_cmd=1
% $sleep_wait_refresh_state=4
% $sequence_timeout=240
% $devseq1=
% $devseq2=
% $devseq3=
% .........
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment