Skip to content

Commit 7fb9094

Browse files
committed
Add sync tolerance monitor
1 parent 42c7b9b commit 7fb9094

File tree

7 files changed

+300
-245
lines changed

7 files changed

+300
-245
lines changed

Source/Processors/Editors/StreamSelector.cpp

Lines changed: 53 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -109,25 +109,36 @@ Component* StreamTableModel::refreshComponentForCell (int rowNumber,
109109
}
110110
else if (columnId == StreamTableModel::Columns::START_TIME)
111111
{
112-
auto* syncOffsetMonitor = dynamic_cast<SyncOffsetMonitor*> (existingComponentToUpdate);
112+
auto* syncStartTimeMonitor = dynamic_cast<SyncStartTimeMonitor*> (existingComponentToUpdate);
113113

114-
if (syncOffsetMonitor == nullptr)
114+
if (syncStartTimeMonitor == nullptr)
115115
{
116-
syncOffsetMonitor = new SyncOffsetMonitor ();
116+
syncStartTimeMonitor = new SyncStartTimeMonitor();
117117
}
118118

119-
return syncOffsetMonitor;
119+
return syncStartTimeMonitor;
120120
}
121121
else if (columnId == StreamTableModel::Columns::LATEST_SYNC)
122122
{
123-
auto* syncTimeMonitor = dynamic_cast<SyncTimeMonitor*> (existingComponentToUpdate);
123+
auto* lastSyncEventMonitor = dynamic_cast<LastSyncEventMonitor*> (existingComponentToUpdate);
124124

125-
if (syncTimeMonitor == nullptr)
125+
if (lastSyncEventMonitor == nullptr)
126126
{
127-
syncTimeMonitor = new SyncTimeMonitor();
127+
lastSyncEventMonitor = new LastSyncEventMonitor();
128128
}
129129

130-
return syncTimeMonitor;
130+
return lastSyncEventMonitor;
131+
}
132+
else if (columnId == StreamTableModel::Columns::SYNC_ACCURACY)
133+
{
134+
auto* syncAccuracyMonitor = dynamic_cast<SyncAccuracyMonitor*> (existingComponentToUpdate);
135+
136+
if (syncAccuracyMonitor == nullptr)
137+
{
138+
syncAccuracyMonitor = new SyncAccuracyMonitor();
139+
}
140+
141+
return syncAccuracyMonitor;
131142
}
132143

133144
jassert (existingComponentToUpdate == nullptr);
@@ -257,12 +268,13 @@ TableListBox* StreamSelectorTable::createTableView (bool expanded)
257268
table->getHeader().addColumn ("ID", StreamTableModel::Columns::PROCESSOR_ID, 30, 30, 30, TableHeaderComponent::notResizableOrSortable);
258269
table->getHeader().addColumn ("# CH", StreamTableModel::Columns::NUM_CHANNELS, 30, 30, 30, TableHeaderComponent::notResizableOrSortable);
259270
table->getHeader().addColumn ("Hz", StreamTableModel::Columns::SAMPLE_RATE, 40, 40, 40, TableHeaderComponent::notResizableOrSortable);
260-
table->getHeader().addColumn ("", StreamTableModel::Columns::ENABLED, 15, 15, 15, TableHeaderComponent::notResizableOrSortable);
271+
//table->getHeader().addColumn ("", StreamTableModel::Columns::ENABLED, 15, 15, 15, TableHeaderComponent::notResizableOrSortable);
261272

262273
if (isRecordNode)
263274
{
264-
table->getHeader().addColumn ("Offset", StreamTableModel::Columns::START_TIME, 50, 50, 50, TableHeaderComponent::notResizableOrSortable);
265-
table->getHeader().addColumn ("Latest Sync", StreamTableModel::Columns::LATEST_SYNC, 70, 70, 70, TableHeaderComponent::notResizableOrSortable);
275+
table->getHeader().addColumn ("Start", StreamTableModel::Columns::START_TIME, 50, 50, 50, TableHeaderComponent::notResizableOrSortable);
276+
table->getHeader().addColumn ("Tolerance", StreamTableModel::Columns::SYNC_ACCURACY, 55, 50, 50, TableHeaderComponent::notResizableOrSortable);
277+
table->getHeader().addColumn ("Latest Sync", StreamTableModel::Columns::LATEST_SYNC, 55, 60, 60, TableHeaderComponent::notResizableOrSortable);
266278
}
267279
}
268280

@@ -285,14 +297,12 @@ void StreamSelectorTable::buttonClicked (Button* button)
285297
{
286298
if (button == expanderButton.get())
287299
{
288-
LOGD ("EXPANDER BUTTON CLICKED -- ", isRecordNode);
289-
290300
auto* table = createTableView (true);
291301

292-
int width = 331;
302+
int width = 316;
293303

294304
if (isRecordNode)
295-
width += 120;
305+
width += 160;
296306

297307
table->setBounds (0, 0, width, streams.size() * 20 + 24);
298308
table->selectRow (viewedStreamIndex);
@@ -317,8 +327,6 @@ void StreamSelectorTable::buttonClicked (Button* button)
317327

318328
void StreamSelectorTable::componentBeingDeleted (Component& component)
319329
{
320-
LOGD ("POPUP TABLE CLOSED");
321-
322330
tableModel->table = streamTable.get();
323331
streamTable->selectRow (viewedStreamIndex);
324332

@@ -376,18 +384,23 @@ bool StreamSelectorTable::checkStream (const DataStream* streamToCheck)
376384
}
377385
}
378386

379-
SyncOffsetMonitor* StreamSelectorTable::getSyncOffsetMonitor (const DataStream* stream)
387+
SyncStartTimeMonitor* StreamSelectorTable::getSyncStartTimeMonitor (const DataStream* stream)
380388
{
381389
TableListBox* currentTable = tableModel->table;
382-
return dynamic_cast<SyncOffsetMonitor*> (currentTable->getCellComponent (StreamTableModel::Columns::START_TIME, streams.indexOf (stream)));
390+
return dynamic_cast<SyncStartTimeMonitor*> (currentTable->getCellComponent (StreamTableModel::Columns::START_TIME, streams.indexOf (stream)));
383391
}
384392

385-
SyncTimeMonitor* StreamSelectorTable::getSyncTimeMonitor (const DataStream* stream)
393+
LastSyncEventMonitor* StreamSelectorTable::getlastSyncEventMonitor (const DataStream* stream)
386394
{
387395
TableListBox* currentTable = tableModel->table;
388-
return dynamic_cast<SyncTimeMonitor*> (currentTable->getCellComponent (StreamTableModel::Columns::LATEST_SYNC, streams.indexOf (stream)));
396+
return dynamic_cast<LastSyncEventMonitor*> (currentTable->getCellComponent (StreamTableModel::Columns::LATEST_SYNC, streams.indexOf (stream)));
389397
}
390398

399+
SyncAccuracyMonitor* StreamSelectorTable::getSyncAccuracyMonitor (const DataStream* stream)
400+
{
401+
TableListBox* currentTable = tableModel->table;
402+
return dynamic_cast<SyncAccuracyMonitor*> (currentTable->getCellComponent (StreamTableModel::Columns::SYNC_ACCURACY, streams.indexOf (stream)));
403+
}
391404

392405
TTLMonitor* StreamSelectorTable::getTTLMonitor (const DataStream* stream)
393406
{
@@ -403,7 +416,7 @@ DelayMonitor* StreamSelectorTable::getDelayMonitor (const DataStream* stream)
403416

404417
void StreamSelectorTable::startAcquisition()
405418
{
406-
startTimer (50);
419+
startTimer (20);
407420
}
408421

409422
void StreamSelectorTable::stopAcquisition()
@@ -418,36 +431,42 @@ void StreamSelectorTable::timerCallback()
418431
TTLMonitor* ttlMonitor = getTTLMonitor (stream);
419432

420433
if (ttlMonitor != nullptr)
421-
ttlMonitor->repaint();
434+
ttlMonitor->repaint();
422435
}
423436

424437
counter++;
425438

426-
if (counter == 10)
439+
if (counter % 10 == 0)
427440
{
428-
counter = 0;
429-
430441
for (auto stream : streams)
431442
{
432443
DelayMonitor* delayMonitor = getDelayMonitor (stream);
433444

434445
if (delayMonitor != nullptr)
435-
delayMonitor->repaint();
446+
delayMonitor->repaint();
436447

437-
if (isRecordNode)
448+
if (isRecordNode && counter % 20 == 0)
438449
{
439-
SyncOffsetMonitor* syncOffsetMonitor = getSyncOffsetMonitor (stream);
450+
SyncStartTimeMonitor* syncStartTimeMonitor = getSyncStartTimeMonitor (stream);
440451

441-
if (syncOffsetMonitor != nullptr)
442-
syncOffsetMonitor->repaint();
452+
if (syncStartTimeMonitor != nullptr)
453+
syncStartTimeMonitor->repaint();
443454

444-
SyncTimeMonitor* syncTimeMonitor = getSyncTimeMonitor (stream);
455+
LastSyncEventMonitor* lastSyncEventMonitor = getlastSyncEventMonitor (stream);
445456

446-
if (syncTimeMonitor != nullptr)
447-
syncTimeMonitor->repaint();
457+
if (lastSyncEventMonitor != nullptr)
458+
lastSyncEventMonitor->repaint();
459+
460+
SyncAccuracyMonitor* syncAccuracyMonitor = getSyncAccuracyMonitor (stream);
461+
462+
if (syncAccuracyMonitor != nullptr)
463+
syncAccuracyMonitor->repaint();
448464
}
449465
}
450466
}
467+
468+
if (counter > 20)
469+
counter = 0;
451470
}
452471

453472
void StreamSelectorTable::setStreamEnabledState (uint16 streamId, bool isEnabled)

Source/Processors/Editors/StreamSelector.h

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,9 @@
3838
class DataStream;
3939
class GenericEditor;
4040
class TTLMonitor;
41-
class SyncOffsetMonitor;
42-
class SyncTimeMonitor;
41+
class SyncStartTimeMonitor;
42+
class LastSyncEventMonitor;
43+
class SyncAccuracyMonitor;
4344
class DelayMonitor;
4445
class UtilityButton;
4546

@@ -72,7 +73,8 @@ class StreamTableModel : public TableListBoxModel
7273
TTL_LINE_STATES,
7374
ENABLED,
7475
START_TIME,
75-
LATEST_SYNC
76+
LATEST_SYNC,
77+
SYNC_ACCURACY
7678
};
7779

7880
/** Callback when a cell is clicked (not a sub-component) */
@@ -154,11 +156,14 @@ class PLUGIN_API StreamSelectorTable : public Component,
154156
/** Renders the component*/
155157
void paint (Graphics& g) override;
156158

157-
/** Returns a pointer to the SyncOffsetMonitor for a given DataStream*/
158-
SyncOffsetMonitor* getSyncOffsetMonitor (const DataStream* stream);
159+
/** Returns a pointer to the SyncStartTimeMonitor for a given DataStream*/
160+
SyncStartTimeMonitor* getSyncStartTimeMonitor (const DataStream* stream);
159161

160-
/** Returns a pointer to the SyncTimeMonitor for a given DataStream*/
161-
SyncTimeMonitor* getSyncTimeMonitor (const DataStream* stream);
162+
/** Returns a pointer to the LastSyncEventMonitor for a given DataStream*/
163+
LastSyncEventMonitor* getlastSyncEventMonitor (const DataStream* stream);
164+
165+
/** Returns a pointer to the SyncAccuracyMonitor for a given DataStream*/
166+
SyncAccuracyMonitor* getSyncAccuracyMonitor (const DataStream* stream);
162167

163168
/** Returns a pointer to the TTLMonitor for a given DataStream*/
164169
TTLMonitor* getTTLMonitor (const DataStream* stream);

Source/Processors/RecordNode/RecordNode.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,8 +1003,9 @@ void RecordNode::updateSyncMonitors()
10031003

10041004
RecordNodeEditor* editor = (RecordNodeEditor*) getEditor();
10051005

1006-
editor->setStreamOffset (streamId, synchronizer.isStreamSynced (streamKey), synchronizer.getOffsetMs (streamKey));
1007-
editor->setLatestSyncTime (streamId, synchronizer.isStreamSynced (streamKey), synchronizer.getLatestSync (streamKey));
1006+
editor->setStreamStartTime (streamId, synchronizer.isStreamSynced (streamKey), synchronizer.getStartTime (streamKey));
1007+
editor->setLastSyncEvent (streamId, synchronizer.isStreamSynced (streamKey), synchronizer.getLastSyncEvent (streamKey));
1008+
editor->setSyncAccuracy (streamId, synchronizer.isStreamSynced (streamKey), synchronizer.getAccuracy (streamKey));
10081009

10091010
}
10101011
}

0 commit comments

Comments
 (0)