Merge branch 'work/select_commands' into 'develop'
Fix select next transacion and use current time instead of ID See merge request ems/astdm/dram.sys!307
This commit is contained in:
@@ -149,76 +149,90 @@ shared_ptr<Transaction> TraceDB::getTransactionByID(ID id)
|
||||
}
|
||||
|
||||
|
||||
shared_ptr<Transaction> TraceDB::getNextActivate(ID currentTransactionId)
|
||||
shared_ptr<Transaction> TraceDB::getNextActivate(traceTime time)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
QString queryText = queryTexts.queryHead +
|
||||
"WHERE TransactionID > :currentID AND PhaseName = 'ACT' LIMIT 1";
|
||||
"WHERE PhaseBegin > :traceTime AND PhaseName "
|
||||
"IN ('ACT','ACTB') ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
|
||||
query.prepare(queryText);
|
||||
query.bindValue(":currentID", currentTransactionId);
|
||||
query.bindValue(":traceTime", time);
|
||||
executeQuery(query);
|
||||
return parseTransactionFromQuery(query);
|
||||
}
|
||||
|
||||
shared_ptr<Transaction> TraceDB::getNextPrecharge(ID currentTransactionId)
|
||||
shared_ptr<Transaction> TraceDB::getNextPrecharge(traceTime time)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
QString queryText = queryTexts.queryHead +
|
||||
"WHERE TransactionID > :currentID AND PhaseName IN ('PRE','PREA') LIMIT 1";
|
||||
"WHERE PhaseBegin > :traceTime AND PhaseName "
|
||||
"IN ('PRE','PREA','PREB','PRESB') ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
|
||||
query.prepare(queryText);
|
||||
query.bindValue(":currentID", currentTransactionId);
|
||||
query.bindValue(":traceTime", time);
|
||||
executeQuery(query);
|
||||
return parseTransactionFromQuery(query);
|
||||
}
|
||||
|
||||
shared_ptr<Transaction> TraceDB::getNextActb(ID currentTransactionId)
|
||||
// shared_ptr<Transaction> TraceDB::getNextActb(ID currentTransactionId)
|
||||
// {
|
||||
// QSqlQuery query(database);
|
||||
// QString queryText = queryTexts.queryHead +
|
||||
// "WHERE TransactionID > :currentID AND PhaseName = 'ACTB' LIMIT 1";
|
||||
//
|
||||
// query.prepare(queryText);
|
||||
// query.bindValue(":currentID", currentTransactionId);
|
||||
// executeQuery(query);
|
||||
// return parseTransactionFromQuery(query);
|
||||
// }
|
||||
|
||||
// shared_ptr<Transaction> TraceDB::getNextPreb(ID currentTransactionId)
|
||||
// {
|
||||
// QSqlQuery query(database);
|
||||
// QString queryText = queryTexts.queryHead +
|
||||
// "WHERE TransactionID > :currentID AND PhaseName = 'PREB' LIMIT 1";
|
||||
//
|
||||
// query.prepare(queryText);
|
||||
// query.bindValue(":currentID", currentTransactionId);
|
||||
// executeQuery(query);
|
||||
// return parseTransactionFromQuery(query);
|
||||
// }
|
||||
|
||||
shared_ptr<Transaction> TraceDB::getNextRefresh(traceTime time)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
QString queryText = queryTexts.queryHead +
|
||||
"WHERE TransactionID > :currentID AND PhaseName = 'ACTB' LIMIT 1";
|
||||
|
||||
"WHERE PhaseBegin > :traceTime AND PhaseName "
|
||||
"IN ('REFA','REFB','REFSB','SREF','SREFB') ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
query.prepare(queryText);
|
||||
query.bindValue(":currentID", currentTransactionId);
|
||||
query.bindValue(":traceTime", time);
|
||||
executeQuery(query);
|
||||
return parseTransactionFromQuery(query);
|
||||
}
|
||||
|
||||
shared_ptr<Transaction> TraceDB::getNextPreb(ID currentTransactionId)
|
||||
std::shared_ptr<Transaction> TraceDB::getNextCommand(traceTime time)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
QString queryText = queryTexts.queryHead +
|
||||
"WHERE TransactionID > :currentID AND PhaseName = 'PREB' LIMIT 1";
|
||||
|
||||
"WHERE PhaseBegin > :traceTime ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
query.prepare(queryText);
|
||||
query.bindValue(":currentID", currentTransactionId);
|
||||
query.bindValue(":traceTime", time);
|
||||
executeQuery(query);
|
||||
return parseTransactionFromQuery(query);
|
||||
}
|
||||
|
||||
shared_ptr<Transaction> TraceDB::getNextRefresh(ID currentTransactionId)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
QString queryText = queryTexts.queryHead +
|
||||
"WHERE TransactionID > :currentID AND PhaseName IN ('REFA') LIMIT 1";
|
||||
query.prepare(queryText);
|
||||
query.bindValue(":currentID", currentTransactionId);
|
||||
executeQuery(query);
|
||||
return parseTransactionFromQuery(query);
|
||||
}
|
||||
|
||||
shared_ptr<Transaction> TraceDB::getNextRefb(ID currentTransactionId)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
QString queryText = queryTexts.queryHead +
|
||||
"WHERE TransactionID > :currentID AND PhaseName = 'REFB' LIMIT 1";
|
||||
|
||||
query.prepare(queryText);
|
||||
query.bindValue(":currentID", currentTransactionId);
|
||||
executeQuery(query);
|
||||
return parseTransactionFromQuery(query);
|
||||
}
|
||||
// shared_ptr<Transaction> TraceDB::getNextRefb(ID currentTransactionId)
|
||||
// {
|
||||
// QSqlQuery query(database);
|
||||
// QString queryText = queryTexts.queryHead +
|
||||
// "WHERE TransactionID > :currentID AND PhaseName = 'REFB' LIMIT 1";
|
||||
//
|
||||
// query.prepare(queryText);
|
||||
// query.bindValue(":currentID", currentTransactionId);
|
||||
// executeQuery(query);
|
||||
// return parseTransactionFromQuery(query);
|
||||
// }
|
||||
|
||||
ID TraceDB::getTransactionIDFromPhaseID(ID phaseID)
|
||||
{
|
||||
|
||||
@@ -86,12 +86,13 @@ public:
|
||||
QString queryText);
|
||||
std::vector<std::shared_ptr<Transaction>> getTransactionsInTimespan(
|
||||
const Timespan &span);
|
||||
std::shared_ptr<Transaction> getNextPrecharge(ID currentTransactionId);
|
||||
std::shared_ptr<Transaction> getNextActivate(ID currentTransactionId);
|
||||
std::shared_ptr<Transaction> getNextRefresh(ID currentTransactionId);
|
||||
std::shared_ptr<Transaction> getNextPreb(ID currentTransactionId);
|
||||
std::shared_ptr<Transaction> getNextActb(ID currentTransactionId);
|
||||
std::shared_ptr<Transaction> getNextRefb(ID currentTransactionId);
|
||||
std::shared_ptr<Transaction> getNextPrecharge(traceTime time);
|
||||
std::shared_ptr<Transaction> getNextActivate(traceTime time);
|
||||
std::shared_ptr<Transaction> getNextRefresh(traceTime time);
|
||||
std::shared_ptr<Transaction> getNextCommand(traceTime time);
|
||||
// std::shared_ptr<Transaction> getNextPreb(ID currentTransactionId);
|
||||
// std::shared_ptr<Transaction> getNextActb(ID currentTransactionId);
|
||||
// std::shared_ptr<Transaction> getNextRefb(ID currentTransactionId);
|
||||
|
||||
|
||||
std::shared_ptr<Transaction> getTransactionByID(ID id);
|
||||
|
||||
@@ -201,85 +201,85 @@ void TraceNavigator::selectLastTransaction()
|
||||
}
|
||||
|
||||
|
||||
void TraceNavigator::selectNextRefresh()
|
||||
void TraceNavigator::selectNextRefresh(traceTime time)
|
||||
{
|
||||
shared_ptr<Transaction> nextRefresh;
|
||||
|
||||
if (!SelectedTransactions().empty())
|
||||
nextRefresh = traceFile.getNextRefresh(SelectedTransactions().front()->id);
|
||||
else
|
||||
nextRefresh = traceFile.getNextRefresh(0);
|
||||
nextRefresh = traceFile.getNextRefresh(time);
|
||||
|
||||
if (nextRefresh)
|
||||
selectTransaction(nextRefresh);
|
||||
}
|
||||
|
||||
void TraceNavigator::selectNextActivate()
|
||||
void TraceNavigator::selectNextActivate(traceTime time)
|
||||
{
|
||||
shared_ptr<Transaction> nextActivate;
|
||||
|
||||
if (!SelectedTransactions().empty())
|
||||
nextActivate = traceFile.getNextActivate(SelectedTransactions().front()->id);
|
||||
else
|
||||
nextActivate = traceFile.getNextActivate(0);
|
||||
nextActivate = traceFile.getNextActivate(time);
|
||||
|
||||
if (nextActivate)
|
||||
selectTransaction(nextActivate);
|
||||
}
|
||||
|
||||
void TraceNavigator::selectNextPrecharge()
|
||||
void TraceNavigator::selectNextPrecharge(traceTime time)
|
||||
{
|
||||
shared_ptr<Transaction> nextPrecharge;
|
||||
|
||||
if (!SelectedTransactions().empty())
|
||||
nextPrecharge = traceFile.getNextPrecharge(
|
||||
SelectedTransactions().front()->id);
|
||||
else
|
||||
nextPrecharge = traceFile.getNextPrecharge(0);
|
||||
nextPrecharge = traceFile.getNextPrecharge(time);
|
||||
|
||||
if (nextPrecharge)
|
||||
selectTransaction(nextPrecharge);
|
||||
}
|
||||
|
||||
void TraceNavigator::selectNextActb()
|
||||
void TraceNavigator::selectNextCommand(traceTime time)
|
||||
{
|
||||
shared_ptr<Transaction> nextActb;
|
||||
shared_ptr<Transaction> nextCommand;
|
||||
|
||||
if (!SelectedTransactions().empty())
|
||||
nextActb = traceFile.getNextActb(SelectedTransactions().front()->id);
|
||||
else
|
||||
nextActb = traceFile.getNextActb(0);
|
||||
nextCommand = traceFile.getNextCommand(time);
|
||||
|
||||
if (nextActb)
|
||||
selectTransaction(nextActb);
|
||||
if (nextCommand)
|
||||
selectTransaction(nextCommand);
|
||||
}
|
||||
|
||||
void TraceNavigator::selectNextPreb()
|
||||
{
|
||||
shared_ptr<Transaction> nextPreb;
|
||||
|
||||
if (!SelectedTransactions().empty())
|
||||
nextPreb = traceFile.getNextPreb(
|
||||
SelectedTransactions().front()->id);
|
||||
else
|
||||
nextPreb = traceFile.getNextPreb(0);
|
||||
|
||||
if (nextPreb)
|
||||
selectTransaction(nextPreb);
|
||||
}
|
||||
|
||||
void TraceNavigator::selectNextRefb()
|
||||
{
|
||||
shared_ptr<Transaction> n;
|
||||
|
||||
if (!SelectedTransactions().empty())
|
||||
n = traceFile.getNextRefb(SelectedTransactions().front()->id);
|
||||
else
|
||||
n = traceFile.getNextRefb(0);
|
||||
|
||||
if (n)
|
||||
selectTransaction(n);
|
||||
}
|
||||
// void TraceNavigator::selectNextActb()
|
||||
// {
|
||||
// shared_ptr<Transaction> nextActb;
|
||||
//
|
||||
// if (!SelectedTransactions().empty())
|
||||
// nextActb = traceFile.getNextActb(SelectedTransactions().front()->id);
|
||||
// else
|
||||
// nextActb = traceFile.getNextActb(0);
|
||||
//
|
||||
// if (nextActb)
|
||||
// selectTransaction(nextActb);
|
||||
// }
|
||||
//
|
||||
// void TraceNavigator::selectNextPreb()
|
||||
// {
|
||||
// shared_ptr<Transaction> nextPreb;
|
||||
//
|
||||
// if (!SelectedTransactions().empty())
|
||||
// nextPreb = traceFile.getNextPreb(
|
||||
// SelectedTransactions().front()->id);
|
||||
// else
|
||||
// nextPreb = traceFile.getNextPreb(0);
|
||||
//
|
||||
// if (nextPreb)
|
||||
// selectTransaction(nextPreb);
|
||||
// }
|
||||
//
|
||||
// void TraceNavigator::selectNextRefb()
|
||||
// {
|
||||
// shared_ptr<Transaction> n;
|
||||
//
|
||||
// if (!SelectedTransactions().empty())
|
||||
// n = traceFile.getNextRefb(SelectedTransactions().front()->id);
|
||||
// else
|
||||
// n = traceFile.getNextRefb(0);
|
||||
//
|
||||
// if (n)
|
||||
// selectTransaction(n);
|
||||
// }
|
||||
|
||||
bool TraceNavigator::transactionIsSelected(const shared_ptr<Transaction>
|
||||
&transaction) const
|
||||
|
||||
@@ -87,12 +87,13 @@ public:
|
||||
void selectPreviousTransaction();
|
||||
void selectLastTransaction();
|
||||
void selectFirstTransaction();
|
||||
void selectNextRefresh();
|
||||
void selectNextActivate();
|
||||
void selectNextPrecharge();
|
||||
void selectNextActb();
|
||||
void selectNextPreb();
|
||||
void selectNextRefb();
|
||||
void selectNextRefresh(traceTime time);
|
||||
void selectNextActivate(traceTime time);
|
||||
void selectNextPrecharge(traceTime time);
|
||||
void selectNextCommand(traceTime time);
|
||||
// void selectNextActb();
|
||||
// void selectNextPreb();
|
||||
// void selectNextRefb();
|
||||
|
||||
void addSelectedTransactions(const std::vector<std::shared_ptr<Transaction>>
|
||||
&transactions);
|
||||
|
||||
@@ -98,40 +98,42 @@ void TracePlot::setUpActions()
|
||||
SLOT(on_executeQuery()));
|
||||
|
||||
selectNextRefresh = new QAction("Select next refresh", this);
|
||||
selectNextRefresh->setShortcut(QKeySequence("alt+r"));
|
||||
addAction(selectNextRefresh);
|
||||
QObject::connect(selectNextRefresh, SIGNAL(triggered()), this,
|
||||
SLOT(on_selectNextRefresh()));
|
||||
|
||||
selectNextActivate = new QAction("Select next activate", this);
|
||||
selectNextActivate->setShortcut(QKeySequence("alt+a"));
|
||||
addAction(selectNextActivate);
|
||||
QObject::connect(selectNextActivate, SIGNAL(triggered()), this,
|
||||
SLOT(on_selectNextActivate()));
|
||||
|
||||
selectNextPrecharge = new QAction("Select next precharge", this);
|
||||
selectNextPrecharge->setShortcut(QKeySequence("alt+p"));
|
||||
addAction(selectNextPrecharge);
|
||||
QObject::connect(selectNextPrecharge, SIGNAL(triggered()), this,
|
||||
SLOT(on_selectNextPrecharge()));
|
||||
|
||||
selectNextActb = new QAction("Select next atcb", this);
|
||||
selectNextActb->setShortcut(QKeySequence("alt+b"));
|
||||
addAction(selectNextActb);
|
||||
QObject::connect(selectNextActb, SIGNAL(triggered()), this,
|
||||
SLOT(on_selectNextActb()));
|
||||
selectNextCommand = new QAction("Select next command", this);
|
||||
addAction(selectNextCommand);
|
||||
QObject::connect(selectNextCommand, SIGNAL(triggered()), this,
|
||||
SLOT(on_selectNextCommand()));
|
||||
|
||||
selectNextPreb = new QAction("Select next preb", this);
|
||||
selectNextPreb->setShortcut(QKeySequence("alt+q"));
|
||||
addAction(selectNextPreb);
|
||||
QObject::connect(selectNextPreb, SIGNAL(triggered()), this,
|
||||
SLOT(on_selectNextPreb()));
|
||||
|
||||
selectNextRefb = new QAction("Select next refb", this);
|
||||
selectNextRefb->setShortcut(QKeySequence("alt+s"));
|
||||
addAction(selectNextRefb);
|
||||
QObject::connect(selectNextRefb, SIGNAL(triggered()), this,
|
||||
SLOT(on_selectNextRefb()));
|
||||
// selectNextActb = new QAction("Select next atcb", this);
|
||||
// selectNextActb->setShortcut(QKeySequence("alt+b"));
|
||||
// addAction(selectNextActb);
|
||||
// QObject::connect(selectNextActb, SIGNAL(triggered()), this,
|
||||
// SLOT(on_selectNextActb()));
|
||||
//
|
||||
// selectNextPreb = new QAction("Select next preb", this);
|
||||
// selectNextPreb->setShortcut(QKeySequence("alt+q"));
|
||||
// addAction(selectNextPreb);
|
||||
// QObject::connect(selectNextPreb, SIGNAL(triggered()), this,
|
||||
// SLOT(on_selectNextPreb()));
|
||||
//
|
||||
// selectNextRefb = new QAction("Select next refb", this);
|
||||
// selectNextRefb->setShortcut(QKeySequence("alt+s"));
|
||||
// addAction(selectNextRefb);
|
||||
// QObject::connect(selectNextRefb, SIGNAL(triggered()), this,
|
||||
// SLOT(on_selectNextRefb()));
|
||||
|
||||
setColorGroupingPhase = new QAction("Group by Phase", this);
|
||||
addAction(setColorGroupingPhase);
|
||||
@@ -176,7 +178,7 @@ void TracePlot::setUpContextMenu()
|
||||
contextMenu->addMenu(goToSubMenu);
|
||||
|
||||
QMenu *selectSubMenu = new QMenu("Select", contextMenu);
|
||||
selectSubMenu->addActions({selectNextRefresh, selectNextActivate, selectNextPrecharge, selectNextActb, selectNextPreb, selectNextRefb});
|
||||
selectSubMenu->addActions({selectNextRefresh, selectNextActivate, selectNextPrecharge, selectNextCommand /*, selectNextActb, selectNextPreb, selectNextRefb */});
|
||||
contextMenu->addMenu(selectSubMenu);
|
||||
|
||||
contextMenu->addActions({showQueryEditor, insertComment, exportToPdf, toggleCollapsedState});
|
||||
@@ -446,33 +448,42 @@ void TracePlot::on_executeQuery()
|
||||
|
||||
void TracePlot::on_selectNextRefresh()
|
||||
{
|
||||
navigator->selectNextRefresh();
|
||||
traceTime time = invTransform(xBottom, contextMenuMouseDown.x());
|
||||
navigator->selectNextRefresh(time);
|
||||
}
|
||||
|
||||
void TracePlot::on_selectNextActivate()
|
||||
{
|
||||
navigator->selectNextActivate();
|
||||
traceTime time = invTransform(xBottom, contextMenuMouseDown.x());
|
||||
navigator->selectNextActivate(time);
|
||||
}
|
||||
|
||||
void TracePlot::on_selectNextPrecharge()
|
||||
{
|
||||
navigator->selectNextPrecharge();
|
||||
traceTime time = invTransform(xBottom, contextMenuMouseDown.x());
|
||||
navigator->selectNextPrecharge(time);
|
||||
}
|
||||
|
||||
void TracePlot::on_selectNextActb()
|
||||
void TracePlot::on_selectNextCommand()
|
||||
{
|
||||
navigator->selectNextActb();
|
||||
traceTime time = invTransform(xBottom, contextMenuMouseDown.x());
|
||||
navigator->selectNextCommand(time);
|
||||
}
|
||||
|
||||
void TracePlot::on_selectNextPreb()
|
||||
{
|
||||
navigator->selectNextPreb();
|
||||
}
|
||||
|
||||
void TracePlot::on_selectNextRefb()
|
||||
{
|
||||
navigator->selectNextRefb();
|
||||
}
|
||||
// void TracePlot::on_selectNextActb()
|
||||
// {
|
||||
// navigator->selectNextActb();
|
||||
// }
|
||||
//
|
||||
// void TracePlot::on_selectNextPreb()
|
||||
// {
|
||||
// navigator->selectNextPreb();
|
||||
// }
|
||||
//
|
||||
// void TracePlot::on_selectNextRefb()
|
||||
// {
|
||||
// navigator->selectNextRefb();
|
||||
// }
|
||||
|
||||
void TracePlot::on_colorGroupingPhase()
|
||||
{
|
||||
|
||||
@@ -103,9 +103,10 @@ private Q_SLOTS:
|
||||
void on_selectNextRefresh();
|
||||
void on_selectNextActivate();
|
||||
void on_selectNextPrecharge();
|
||||
void on_selectNextActb();
|
||||
void on_selectNextPreb();
|
||||
void on_selectNextRefb();
|
||||
void on_selectNextCommand();
|
||||
// void on_selectNextActb();
|
||||
// void on_selectNextPreb();
|
||||
// void on_selectNextRefb();
|
||||
void on_colorGroupingPhase();
|
||||
void on_colorGroupingTransaction();
|
||||
void on_colorGroupingThread();
|
||||
@@ -171,9 +172,10 @@ private:
|
||||
QAction *selectNextRefresh;
|
||||
QAction *selectNextActivate;
|
||||
QAction *selectNextPrecharge;
|
||||
QAction *selectNextActb;
|
||||
QAction *selectNextPreb;
|
||||
QAction *selectNextRefb;
|
||||
QAction *selectNextCommand;
|
||||
// QAction *selectNextActb;
|
||||
// QAction *selectNextPreb;
|
||||
// QAction *selectNextRefb;
|
||||
QAction *setColorGroupingPhase;
|
||||
QAction *setColorGroupingTransaction;
|
||||
QAction *setColorGroupingThread;
|
||||
|
||||
Reference in New Issue
Block a user