Skip to content

Commit 0c69427

Browse files
committed
Refine triggered buffer logic.
1 parent d7256a7 commit 0c69427

1 file changed

Lines changed: 20 additions & 13 deletions

File tree

toolbox/src/triggeredBuffer.m

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
end
1515

1616
properties (SetAccess = private)
17-
isTriggered logical
18-
isArmed logical
17+
isTriggered logical = false
18+
isArmed logical = false
1919

2020
TriggerTime {mustBePositive} % Time of occurrence of trigger event
2121
end
@@ -53,7 +53,7 @@
5353

5454
obj.preTrigger_ms = preTrigger_ms;
5555
obj.postTrigger_ms = postTrigger_ms;
56-
obj.RemainingPostTriggerSamplesInitial = 1+round(postTrigger_ms/obj.getSamplePeriod(options.AppName));
56+
obj.RemainingPostTriggerSamplesInitial = 1+round(postTrigger_ms/1000 /obj.getSamplePeriod(options.AppName));
5757
% Check if trigger signal exists by calling its info. Errors out if signal is not found
5858
bossapi.inst.getInfoSignalFromMldatx(options.AppName,triggerSignal);
5959
obj.TriggerSignal = triggerSignal;
@@ -106,7 +106,6 @@ function disarm(obj)
106106
end
107107

108108
function reset(obj)
109-
obj.isArmed = false;
110109
obj.isTriggered = false;
111110
obj.RemainingPostTriggerSamplesCurrent = obj.RemainingPostTriggerSamplesInitial;
112111
reset@bossapi.inst.streamingAsyncBuffer(obj);
@@ -118,7 +117,7 @@ function delete(obj)
118117

119118
function out = read(obj)
120119
if obj.isFull
121-
out = read@bossapi.inst.streamingAsyncBuffer(obj,'extractAsTimetable',true);
120+
out = obj.peek('extractAsTimetable',true);
122121
elseif obj.isArmed
123122
if obj.isTriggered
124123
error('triggeredBuffer:notFull','Buffer is not full yet. Please wait and try again.');
@@ -140,6 +139,7 @@ function write(obj, instObj, event)
140139
if obj.Enable && ~obj.isFull
141140
% Get data for trigger signal
142141
[triggerTime,triggerData] = getCallbackDataForSignal(instObj, event, obj.TriggerSignal);
142+
143143
% Get data for buffer signal
144144
[signalTime,signalData] = obj.getCallbackDataForSignal(instObj, event);
145145
if ~ismatrix(signalData)
@@ -156,11 +156,13 @@ function write(obj, instObj, event)
156156
obj.isTriggered = true;
157157

158158
% Add all buffers pretrigger to buffer
159-
write@bossapi.inst.streamingAsyncBuffer(obj, signalTime(1:triggerIdx-1), signalData(1:triggerIdx-1,:));
159+
if ~isempty(signalData)
160+
write@bossapi.inst.streamingAsyncBuffer(obj, signalTime(1:triggerIdx-1), signalData(1:triggerIdx-1,:));
160161

161-
% Remove rows already added to buffer
162-
signalTime(1:triggerIdx-1) = [];
163-
signalData(1:triggerIdx-1,:) = [];
162+
% Remove rows already added to buffer
163+
signalTime(1:triggerIdx-1) = [];
164+
signalData(1:triggerIdx-1,:) = [];
165+
end
164166
end
165167

166168
% Fill buffer with new samples depending on trigger
@@ -183,15 +185,20 @@ function write(obj, instObj, event)
183185
end
184186
end
185187

186-
function p = plot(obj, parentFig)
188+
function parentAxes = plot(obj, parentAxes)
187189
arguments
188190
obj
189-
parentFig = uifigure
191+
parentAxes matlab.graphics.axis.Axes = axes
190192
end
191193

192-
% WIP
193194
data = obj.read;
194-
p = plot(parentFig, data.Time, data.Variables);
195+
plot(parentAxes, data.Time, data.Variables, 'DisplayName', obj.SignalName);
196+
197+
xline(parentAxes, obj.TriggerTime, '--r','Trigger','DisplayName','Trigger');
198+
199+
title(parentAxes, obj.SignalName,'Interpreter','none');
200+
% legend('show','Interpreter','none');
201+
grid(parentAxes,"on");
195202
end
196203
end
197204

0 commit comments

Comments
 (0)