%% Manipulate Logic Analyzer Programatically
% Use functions to construct and manipulate a dsp.LogicAnalyzer System object.
%% Display Waves on Logic Analyzer scope.

scope = dsp.LogicAnalyzer('NumInputPorts',2);

stop = 30;
for count = 1:stop
    sinValVec = sin(count/stop*2*pi);
    cosValVec = cos(count/stop*2*pi);
    cosValVecOffset = cos((count+10)/stop*2*pi);
    
    scope([count (count-(stop/2))],[sinValVec cosValVec cosValVecOffset]) 
end

%
%
%% Reorganize Display

digitalDividerTag = addDivider(scope,'Name','Digital','Height',20);
analogDividerTag = addDivider(scope,'Name','Analog','Height',40);

tags = getDisplayChannelTags(scope);

modifyDisplayChannel(scope,tags{1},'InputChannel',1,...
    'Name','Ramp Digital','Height',40);
modifyDisplayChannel(scope,tags{2},'InputChannel',2,...
    'Name','Waves Analog','Format','Analog','Height',80);

moveDisplayChannel(scope,digitalDividerTag,'DisplayChannel',1)
moveDisplayChannel(scope,tags{2},'DisplayChannel',length(tags))

show(scope)

%
%
%% Duplicate Wave and Check Information

addWave(scope,'InputChannel',2,'Name','Waves Digital','Format','Digital',...
    'Height',30,'DisplayChannel',3);

%
%
%% Remove Dividers

deleteDisplayChannel(scope,digitalDividerTag)
deleteDisplayChannel(scope,analogDividerTag)

%
%
%% Clear variables

clear analogDividerTag cosValVec cosValVecOffset count digitalDividerTag duplicateWave scope sinValVec stop tags

% Copyright 2012 The MathWorks, Inc.