Skip to content

Commit d5a94a1

Browse files
committed
Sender at bottom of main window is now operational.
1 parent a7dd904 commit d5a94a1

File tree

4 files changed

+64
-49
lines changed

4 files changed

+64
-49
lines changed

framesenderobject.cpp

+11-7
Original file line numberDiff line numberDiff line change
@@ -154,12 +154,15 @@ void FrameSenderObject::timerTriggered()
154154
sendingList.clear();
155155
if(mutex.tryLock())
156156
{
157-
//get elapsed microseconds since last tick (in case timer skips or is otherwise inaccurate, though there are no guarantees about elapsed timer either)
158-
quint64 elapsed = sendingElapsed.nsecsElapsed() / 1000;
157+
/*
158+
* Requested tick interval was 1ms but the actual interval could be wildly different. So, we track
159+
* by counting microseconds and accumulating. This creates decent stability even for long intervals
160+
*/
161+
quint64 elapsed = sendingElapsed.nsecsElapsed() / 1000ul;
159162
if (elapsed == 0) elapsed = 1;
160163
sendingElapsed.start();
161164
sendingLastTimeStamp += elapsed;
162-
//qDebug() << playbackLastTimeStamp;
165+
//qDebug() << sendingLastTimeStamp;
163166
//qDebug() << "El: " << elapsed;
164167
statusCounter++;
165168
for (int i = 0; i < sendingData.count(); i++)
@@ -178,19 +181,20 @@ void FrameSenderObject::timerTriggered()
178181
}
179182
if (sendData->triggers.count() == 0)
180183
{
181-
qDebug() << "No triggers to process";
184+
//qDebug() << "No triggers to process";
182185
break;
183186
}
184187
for (int j = 0; j < sendData->triggers.count(); j++)
185188
{
186189
trigger = &sendData->triggers[j];
187-
if (trigger->currCount >= trigger->maxCount) continue; //don't process if we've sent max frames we were supposed to
190+
//if ( (trigger->currCount >= trigger->maxCount) || (trigger->maxCount == -1) ) continue; //don't process if we've sent max frames we were supposed to
188191
if (!trigger->readyCount) continue; //don't tick if not ready to tick
189192
//is it time to fire?
190193
trigger->msCounter += elapsed; //gives proper tracking even if timer doesn't fire as fast as it should
191-
if (trigger->msCounter >= trigger->milliseconds)
194+
//qDebug() << trigger->msCounter;
195+
if (trigger->msCounter >= (trigger->milliseconds * 1000))
192196
{
193-
trigger->msCounter -= trigger->milliseconds;
197+
trigger->msCounter -= (trigger->milliseconds * 1000);
194198
sendData->count++;
195199
trigger->currCount++;
196200
doModifiers(i);

mainwindow.cpp

+22-14
Original file line numberDiff line numberDiff line change
@@ -230,13 +230,12 @@ MainWindow::MainWindow(QWidget *parent) :
230230
ui->actionSingle_Multi_State_2->setVisible(false);
231231

232232
QStringList headers;
233-
headers << "En" << "Bus" << "ID" << "Len" << "Ext" << "Rem" << "Data"
233+
headers << "En" << "Bus" << "ID" << "Ext" << "Rem" << "Data"
234234
<< "Interval" << "Count";
235-
ui->tableSimpleSender->setColumnCount(9);
235+
ui->tableSimpleSender->setColumnCount(8);
236236
ui->tableSimpleSender->setColumnWidth(SIMP_COL::SC_COL_EN, 70);
237237
ui->tableSimpleSender->setColumnWidth(SIMP_COL::SC_COL_BUS, 70);
238238
ui->tableSimpleSender->setColumnWidth(SIMP_COL::SC_COL_ID, 70);
239-
ui->tableSimpleSender->setColumnWidth(SIMP_COL::SC_COL_LEN, 70);
240239
ui->tableSimpleSender->setColumnWidth(SIMP_COL::SC_COL_EXT, 70);
241240
ui->tableSimpleSender->setColumnWidth(SIMP_COL::SC_COL_REM, 70);
242241
ui->tableSimpleSender->setColumnWidth(SIMP_COL::SC_COL_DATA, 300);
@@ -489,7 +488,12 @@ void MainWindow::processSenderCellChange(int line, int col)
489488

490489
if (!tempData)
491490
{
491+
qDebug() << "Need to set up a new entry in senders";
492492
FrameSendData dat;
493+
dat.enabled = false;
494+
dat.count = 0;
495+
dat.frameCount = 0;
496+
dat.bus = 0;
493497
frameSender->addSendRecord(dat);
494498
tempData = frameSender->getSendRecordRef(line);
495499
}
@@ -530,13 +534,6 @@ void MainWindow::processSenderCellChange(int line, int col)
530534
}
531535
qDebug() << "setting ID to " << tempVal;
532536
break;
533-
case SIMP_COL::SC_COL_LEN:
534-
tempVal = Utility::ParseStringToNum(ui->tableSimpleSender->item(line, SIMP_COL::SC_COL_LEN)->text());
535-
if (tempVal < 0) tempVal = 0;
536-
if (tempVal > 8) tempVal = 8;
537-
arr.resize(tempVal);
538-
tempData->setPayload(arr);
539-
break;
540537
case SIMP_COL::SC_COL_EXT:
541538
if (ui->tableSimpleSender->item(line, SIMP_COL::SC_COL_EXT)->checkState() == Qt::Checked) {
542539
tempData->setExtendedFrameFormat(true);
@@ -555,9 +552,9 @@ void MainWindow::processSenderCellChange(int line, int col)
555552
for (int i = 0; i < 8; i++) tempData->payload().data()[i] = 0;
556553

557554
#if QT_VERSION >= QT_VERSION_CHECK( 5, 14, 0 )
558-
tokens = ui->tableSimpleSender->item(line, ST_COLS::SENDTAB_COL_DATA)->text().split(" ", Qt::SkipEmptyParts);
555+
tokens = ui->tableSimpleSender->item(line, SIMP_COL::SC_COL_DATA)->text().split(" ", Qt::SkipEmptyParts);
559556
#else
560-
tokens = ui->tableSender->item(line, ST_COLS::SENDTAB_COL_DATA)->text().split(" ", QString::SkipEmptyParts);
557+
tokens = ui->tableSimpleSender->item(line, SIMP_COL::SC_COL_DATA)->text().split(" ", QString::SkipEmptyParts);
561558
#endif
562559
arr.clear();
563560
arr.reserve(tokens.count());
@@ -569,7 +566,7 @@ void MainWindow::processSenderCellChange(int line, int col)
569566
break;
570567
case SIMP_COL::SC_COL_INTERVAL: //interval in ms
571568

572-
QString trigger = ui->tableSimpleSender->item(line, ST_COLS::SENDTAB_COL_TRIGGER)->text().toUpper();
569+
QString trigger = ui->tableSimpleSender->item(line, SIMP_COL::SC_COL_INTERVAL)->text().toUpper();
573570

574571
Trigger thisTrigger;
575572
thisTrigger.bus = -1; //-1 means we don't care which
@@ -598,7 +595,6 @@ void MainWindow::processSenderCellChange(int line, int col)
598595
}
599596
}
600597

601-
602598
void MainWindow::createSenderRow()
603599
{
604600
int row = ui->tableSimpleSender->rowCount();
@@ -1018,6 +1014,18 @@ void MainWindow::tickGUIUpdate()
10181014
}
10191015
}
10201016

1017+
//refresh the count for all the frame senders
1018+
FrameSendData *tempData;
1019+
int numRows = ui->tableSimpleSender->rowCount();
1020+
for (int i = 0; i < numRows; i++)
1021+
{
1022+
tempData = frameSender->getSendRecordRef(i);
1023+
if (tempData)
1024+
{
1025+
ui->tableSimpleSender->item(i, SIMP_COL::SC_COL_COUNT)->setText(QString::number( tempData->count ));
1026+
}
1027+
}
1028+
10211029
rxFrames = 0;
10221030
//}
10231031
}

mainwindow.h

+5-6
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,11 @@ enum SIMP_COL
4545
SC_COL_EN = 0,
4646
SC_COL_BUS = 1,
4747
SC_COL_ID = 2,
48-
SC_COL_LEN = 3,
49-
SC_COL_EXT = 4,
50-
SC_COL_REM = 5,
51-
SC_COL_DATA = 6,
52-
SC_COL_INTERVAL = 7,
53-
SC_COL_COUNT = 8,
48+
SC_COL_EXT = 3,
49+
SC_COL_REM = 4,
50+
SC_COL_DATA = 5,
51+
SC_COL_INTERVAL = 6,
52+
SC_COL_COUNT = 7,
5453
};
5554

5655
namespace Ui {

ui/mainwindow.ui

+26-22
Original file line numberDiff line numberDiff line change
@@ -26,27 +26,34 @@
2626
<string>SavvyCAN</string>
2727
</property>
2828
<widget class="QWidget" name="centralWidget">
29-
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="5,1">
29+
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="0">
3030
<item>
31-
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="4,1">
31+
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="3,1">
3232
<item>
33-
<widget class="QTableView" name="canFramesView">
34-
<property name="font">
35-
<font>
36-
<pointsize>11</pointsize>
37-
<bold>false</bold>
38-
</font>
39-
</property>
40-
<property name="alternatingRowColors">
41-
<bool>true</bool>
42-
</property>
43-
<property name="verticalScrollMode">
44-
<enum>QAbstractItemView::ScrollPerPixel</enum>
45-
</property>
46-
<property name="wordWrap">
47-
<bool>false</bool>
48-
</property>
49-
</widget>
33+
<layout class="QVBoxLayout" name="verticalLayout_3" stretch="4,1">
34+
<item>
35+
<widget class="QTableView" name="canFramesView">
36+
<property name="font">
37+
<font>
38+
<pointsize>11</pointsize>
39+
<bold>false</bold>
40+
</font>
41+
</property>
42+
<property name="alternatingRowColors">
43+
<bool>true</bool>
44+
</property>
45+
<property name="verticalScrollMode">
46+
<enum>QAbstractItemView::ScrollPerPixel</enum>
47+
</property>
48+
<property name="wordWrap">
49+
<bool>false</bool>
50+
</property>
51+
</widget>
52+
</item>
53+
<item>
54+
<widget class="QTableWidget" name="tableSimpleSender"/>
55+
</item>
56+
</layout>
5057
</item>
5158
<item>
5259
<layout class="QVBoxLayout" name="verticalLayout">
@@ -364,9 +371,6 @@
364371
</item>
365372
</layout>
366373
</item>
367-
<item>
368-
<widget class="QTableWidget" name="tableSimpleSender"/>
369-
</item>
370374
</layout>
371375
</widget>
372376
<widget class="QMenuBar" name="menuBar">

0 commit comments

Comments
 (0)