Skip to content

Commit

Permalink
fix thread interconnect
Browse files Browse the repository at this point in the history
  • Loading branch information
DowJhob committed Jan 23, 2022
1 parent 2b3787e commit e830d07
Show file tree
Hide file tree
Showing 8 changed files with 69 additions and 98 deletions.
39 changes: 12 additions & 27 deletions mainwindow.ui
Original file line number Diff line number Diff line change
Expand Up @@ -175,27 +175,15 @@
</attribute>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_11">
<widget class="QLabel" name="label_4">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
<horstretch>93</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>HowTo</string>
</property>
<layout class="QGridLayout" name="gridLayout_10">
<item row="0" column="1">
<widget class="QLabel" name="label_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
<horstretch>93</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string> After pushing &quot;Start&quot; button program trying to connect controller
<property name="text">
<string> After pushing &quot;Start&quot; button program trying to connect controller
using MUT protocol. In success, program reads calibration
numbers from controller's memory. By using calibration number,
program searching for xml file in home folder. The name of file
Expand All @@ -215,16 +203,13 @@ xdf file.

John Banks: aka JCSBanks on http://evolutionM.net creator
DMA logging for Mitsu.</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
</layout>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
</layout>
Expand Down
38 changes: 19 additions & 19 deletions src/DMA-proto/jcsbanksDMA.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,38 +64,38 @@ void jcsbanksDMA::directDMAwrite(quint32 addr, char* buf, int lenght)

void jcsbanksDMA::startLog()
{
qDebug()<<"=========== jcsbanksDMA::startLog ================";
// qDebug()<<"=========== jcsbanksDMA::startLog ================";

for( int i = 0; i < RAM_MUT.size() ; ++i )
{
RAM_MUT[i].offset = readSize;
readSize += RAM_MUT[i].scaling.getElementSize();
//qDebug() << "dataLogger::start" << (*_ecu_definition)->RAM_MUT[i].scaling.name << (*_ecu_definition)->RAM_MUT[i].scaling.getElementSize();
}
scaledRAM_MUTvalue.resize(RAM_MUT.size());
// for( int i = 0; i < RAM_MUT.size() ; ++i )
// {
// RAM_MUT[i].offset = readSize;
// readSize += RAM_MUT[i].scaling.getElementSize();
// //qDebug() << "dataLogger::start" << (*_ecu_definition)->RAM_MUT[i].scaling.name << (*_ecu_definition)->RAM_MUT[i].scaling.getElementSize();
// }
// scaledRAM_MUTvalue.resize(RAM_MUT.size());

pollTimer->start();
// pollTimer->start();

//((pollHelper*)ECUproto)->startLog();
// //((pollHelper*)ECUproto)->startLog();
}

void jcsbanksDMA::stopLog()
{
qDebug()<<"=========== jcsbanksDMA::stopLog ================";
pollTimer->stop();
// pollTimer->stop();
}

void jcsbanksDMA::poll()
{
//qDebug() << "jcsbanksDMA::poll" ;
abstractMemoryScaled a = indirectDMAread(RAM_MUT_addr, readSize);
//a[0] = abs(QCursor::pos().x())/10;
//a[1] = abs(QCursor::pos().y())/6;
for( int i = 0; i < RAM_MUT.size() ; i++ )
{
scaledRAM_MUTvalue[i] = a.toFloatOffset( &RAM_MUT[i].scaling, RAM_MUT[i].offset );
}
emit logReady(scaledRAM_MUTvalue);
// abstractMemoryScaled a = indirectDMAread(RAM_MUT_addr, readSize);
// //a[0] = abs(QCursor::pos().x())/10;
// //a[1] = abs(QCursor::pos().y())/6;
// for( int i = 0; i < RAM_MUT.size() ; i++ )
// {
// scaledRAM_MUTvalue[i] = a.toFloatOffset( &RAM_MUT[i].scaling, RAM_MUT[i].offset );
// }
// emit logReady(scaledRAM_MUTvalue);
}

void jcsbanksDMA::sendDMAcomand(char command, unsigned long addr, unsigned long count, char *buf)
Expand Down
27 changes: 13 additions & 14 deletions src/ecu/ecu-definition.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,17 @@ ecuDefinition::ecuDefinition()
}
);
// //connect(this_thread, &QThread::started, this, &controller::loop, Qt::QueuedConnection);
QObject::connect(this, &QObject::destroyed, this_thread, &QThread::quit); // Когда удалим объект остановим поток
QObject::connect(this_thread, &QThread::finished, this_thread, &QThread::deleteLater); // Когда остановим поток удалим его
connect(this, &ecuDefinition::destroyed, this_thread, &QThread::quit); // Когда удалим объект остановим поток
connect(this, &ecuDefinition::destroyed, pollTimer, &QTimer::deleteLater); // Когда удалим объект остановим поток
connect(this_thread, &QThread::finished, this_thread, &QThread::deleteLater); // Когда остановим поток удалим его
moveToThread(this_thread);
this_thread->start();
}

ecuDefinition::~ecuDefinition(){
ecuDefinition::~ecuDefinition()
{
qDebug() << "=========== ~ecuDefinition ================";
pollTimer->deleteLater();
for(auto c : qAsConst(RAMtables))
{
delete c;
Expand Down Expand Up @@ -117,26 +121,20 @@ void ecuDefinition::disConnectECU()

void ecuDefinition::RAMreset()
{
qDebug() << "ecuManager::RAMreset(addr::" << DEAD_var << ");";
qDebug() << "ecuDefinition::RAMreset(addr::" << DEAD_var << ");";
quint16 r = 0x0000;
abstractMemoryScaled a = abstractMemoryScaled(QByteArray((char*)&r, 2));
a.addr = DEAD_var;
QMetaObject::invokeMethod(ECUproto, "directDMAwrite", Qt::QueuedConnection,
Q_ARG(abstractMemoryScaled, a));
//ECUproto->directDMAwrite(_ecu_definition->DEAD_var, (char*)&r, 2);
ECUproto->directDMAwrite(DEAD_var, (char*)&r, 2);
}

void ecuDefinition::updateRAM(abstractMemoryScaled memory)
{
qDebug()<< "ecuManager::updateRAM" << memory.toHex(':');
QMetaObject::invokeMethod(ECUproto, "directDMAwrite", Qt::QueuedConnection,
Q_ARG(abstractMemoryScaled, memory));
// ECUproto->directDMAwrite(memory);
qDebug()<< "ecuDefinition::updateRAM" << memory.toHex(':');
ECUproto->directDMAwrite(memory);
}

mapDefinition *ecuDefinition::getMap(Map *declMap)
{
//qDebug()<<"ECU_interface::getMap"<<declMap->Name;
//qDebug()<<"ecuDefinition::getMap"<<declMap->Name;
//if(declMap->rom_scaling._storagetype == Storagetype::undef || declMap->rom_scaling._storagetype == Storagetype::bloblist)
// return &mapDefinition();
mapDefinition *defMap = new mapDefinition;
Expand Down Expand Up @@ -167,6 +165,7 @@ void ecuDefinition::poll()
{
//qDebug() << "jcsbanksDMA::poll" ;
abstractMemoryScaled a = ECUproto->indirectDMAread(RAM_MUT_addr, readSize);

//a[0] = abs(QCursor::pos().x())/10;
//a[1] = abs(QCursor::pos().y())/6;
for( int i = 0; i < RAM_MUT.size() ; i++ )
Expand Down
4 changes: 2 additions & 2 deletions src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
//=============================================================================
ui->tabWidget->addTab(&hexEdit, "Hex editor");
//=============================================================================
ui->tabWidget->addTab(&_loggerManager, "Logger");
//ui->tabWidget->addTab(&_loggerManager, "Logger");
//=============================================================================
connect(ui->treeWidget, &QTreeWidget::itemClicked, this, &MainWindow::itemChecks);
statusBar()->showMessage("No interface", 0);
Expand Down Expand Up @@ -104,7 +104,7 @@ void MainWindow::createMap(mapDefinition *dMap)
mapWidget *table = new mapWidget(nullptr, dMap, &colormap);

//connect(table->mapModel_, &mapModel::updateRAM, this, &MainWindow::updateRAM);
connect(table->mapModel_, &mapModel::updateRAM, &_ecuManager, &ecuManager::updateRAM);
connect(table->mapModel_, &mapModel::updateRAM, &_ecuManager, &ecuManager::updateRAM, Qt::QueuedConnection);

//connect(this, &MainWindow::dataLog, table->mapTable, &mapView::logReady);
connect(&_ecuManager, &ecuManager::logReady, table->mapTable, &mapView::logReady);
Expand Down
42 changes: 10 additions & 32 deletions src/widgets/ecuManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,18 @@ ecuManager::ecuManager(QWidget *parent) : QToolBar(parent)

connect(&ECUdef, &ecuDefinition::logReady, this, &ecuManager::logReady);

//setProto(0);
connect(this, &ecuManager::updateRAM, &ECUdef, &ecuDefinition::updateRAM);

//=============================================================================
a_start_action = addAction( QIcon( ":ico/connect.png" ), "Start", this, &ecuManager::startAction);
a_start_action->setDisabled(true);
addSeparator();
a_ramReset = addAction(QIcon( ":ico/Memory-Freer-icon.png" ), "RAM refresh", &ECUdef, &ecuDefinition::RAMreset);
a_ramReset->setDisabled(true);
//a_logger = addAction( "Start", this, &MainWindow::logger_slot);
//a_logger->setDisabled(true);

addSeparator();
//QWidget* empty = new QWidget(this);
//empty->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred);
//addWidget(empty);
//debug_action = ui->toolBar->addAction(QIcon( ":ico/screwdriver.png" ), "Debug", this, &MainWindow::debugButton_slot);

setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred);
setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
setIconSize(QSize(200, 200));
}

Expand Down Expand Up @@ -62,7 +56,7 @@ void ecuManager::setProto(DMA_proto *ECUproto)
qDebug() << "=========== ecuManager::setProto ================";
this->ECUproto = ECUproto;
ECUdef.setDMAproto(ECUproto);
connect(ECUproto, &DMA_proto::logReady, this, &ecuManager::logReady);
connect(ECUproto, &DMA_proto::logReady, this, &ecuManager::logReady, Qt::QueuedConnection);
}

void ecuManager::setLogRate(uint logRate)
Expand Down Expand Up @@ -96,29 +90,13 @@ void ecuManager::startAction()
}
}

mapDefinition *ecuManager::getMap(Map *declMap)
{
//qDebug()<<"ECU_interface::getMap"<<declMap->Name;
//if(declMap->rom_scaling._storagetype == Storagetype::undef || declMap->rom_scaling._storagetype == Storagetype::bloblist)
// return &mapDefinition();
mapDefinition *defMap = new mapDefinition;
defMap->declMap = declMap;
if(declMap->X_axis.addr != 0)
defMap->X_axis = ECUproto->directDMAread(declMap->X_axis.addr, declMap->X_axis.byteSize()); // читаем оси
if(declMap->Y_axis.addr != 0)
defMap->Y_axis = ECUproto->directDMAread(declMap->Y_axis.addr, declMap->Y_axis.byteSize());
defMap->Map = ECUproto->directDMAread(declMap->addr, declMap->byteSize());
//emit gettedMap(defMap);
return defMap;
}

void ecuManager::updateRAM(abstractMemoryScaled memory)
{
qDebug()<< "ecuManager::updateRAM" << memory.toHex(':');
QMetaObject::invokeMethod(ECUproto, "directDMAwrite", Qt::QueuedConnection,
Q_ARG(abstractMemoryScaled, memory));
// ECUproto->directDMAwrite(memory);
}
//void ecuManager::updateRAM(abstractMemoryScaled memory)
//{
// qDebug()<< "ecuManager::updateRAM" << memory.toHex(':');
// QMetaObject::invokeMethod(&ECUdef, "updateRAM", Qt::QueuedConnection,
// Q_ARG(abstractMemoryScaled, memory));
// // ECUproto->directDMAwrite(memory);
//}

void ecuManager::lockConnect(bool lockFlag)
{
Expand Down
3 changes: 1 addition & 2 deletions src/widgets/ecuManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ public slots:

void ecuConnected();

void updateRAM(abstractMemoryScaled memory);

void lockConnect(bool lockFlag);
void lockReset(bool lockFlag);
Expand All @@ -51,7 +50,6 @@ public slots:
char* p_in_buff;
char* p_out_buff;

mapDefinition *getMap(Map *declMap);

private slots:
void startAction();
Expand All @@ -61,6 +59,7 @@ private slots:
void disConnectECUaction();
void create_table(mapDefinition*);

void updateRAM(abstractMemoryScaled memory);

void Log(QString);
void logReady(QVector<float>);
Expand Down
8 changes: 7 additions & 1 deletion src/widgets/loggermanager.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
#include "loggermanager.h"

loggerManager::loggerManager(QWidget *parent) : QWidget{parent}
loggerManager::loggerManager(QWidget *parent) : QMdiArea{parent}
{
setDisabled(true);
tileSubWindows();
setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Preferred);

setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
}

6 changes: 5 additions & 1 deletion src/widgets/loggermanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,17 @@
#define LOGGERMANAGER_H

#include <QWidget>
#include <QMdiArea>

class loggerManager : public QWidget
class loggerManager : public QMdiArea
{
Q_OBJECT
public:
explicit loggerManager(QWidget *parent = nullptr);

private:
//QMdiArea logMdiArea;

signals:

};
Expand Down

0 comments on commit e830d07

Please sign in to comment.