diff --git a/functions/marte2cfg/bus2marte2cfg.m b/functions/marte2cfg/bus2marte2cfg.m index 3e2d3c6ed024448f8462aa94488e46396d7da215..7c8cb125e3037d39ed9f67ed6baae20e5b3eaf7f 100644 --- a/functions/marte2cfg/bus2marte2cfg.m +++ b/functions/marte2cfg/bus2marte2cfg.m @@ -1,4 +1,4 @@ -function [cfg] = bus2marte2cfg(bus, name, datasourcename, varargin) +function [signallist] = bus2marte2cfg(bus, name, datasourcename, varargin) %Translates a simulink bus object into MARTe2 cfg description % This function takes a Simuink.Bus object % as input and prints out its MARTe2 configuration @@ -14,11 +14,13 @@ if nargin<=3 assignin('base','tempbus',bus); busstruct=evalin('base','Simulink.Bus.createMATLABStruct(''tempbus'')'); evalin('base','clear tempbus'); - basealiasname=name;; + basealiasname=name; + signallist={}; else depth=varargin{1}; busstruct=bus; basealiasname=varargin{2}; + signallist=varargin{3}; end spacer=''; for ii=1:depth, spacer=[spacer ' ']; end @@ -29,15 +31,16 @@ if isa(busstruct,'struct') f=fields(busstruct); for ii=1:numel(f) if isa(busstruct.(f{ii}),'struct') - bus2marte2cfg(busstruct.(f{ii}),f{ii},datasourcename,depth+1,[basealiasname '-' f{ii}]); + signallist=bus2marte2cfg(busstruct.(f{ii}),f{ii},datasourcename,depth+1,[basealiasname '-' f{ii}],signallist); else - %TODO: fill the TBC fields martetype=type2marte2(busstruct.(f{ii})); martedims=dims2marte2(busstruct.(f{ii})); marteelems=elems2marte2(busstruct.(f{ii})); fprintf("%s %s = { Type = %s NumberOfDimensions = %d NumberOfElements = %d DataSource = %s Alias = %s }\n",... spacer,f{ii},martetype,martedims,marteelems,datasourcename,... [basealiasname '-' f{ii}]); + signalinfo={{[basealiasname '-' f{ii}]} {martetype} {martedims} {marteelems} {f{ii}}}; + signallist{end+1}=signalinfo; end end fprintf("%s}\n",spacer);