Fixed a nasty bug that could cause the whole program to crash when
changing ID filters. Made the new connection screen update to show the set baud rates. Added the ability to set Single Wire mode on the connection window but it actually doesn't work yet.
This commit is contained in:
+11
-3
@@ -323,18 +323,23 @@ void CANFrameModel::addFrame(const CANFrame &frame, bool autoRefresh = false)
|
|||||||
|
|
||||||
void CANFrameModel::sendRefresh()
|
void CANFrameModel::sendRefresh()
|
||||||
{
|
{
|
||||||
|
mutex.lock();
|
||||||
qDebug() << "Sending mass refresh";
|
qDebug() << "Sending mass refresh";
|
||||||
|
QVector<CANFrame> tempContainer;
|
||||||
beginResetModel();
|
beginResetModel();
|
||||||
filteredFrames.clear();
|
int count = frames.count();
|
||||||
for (int i = 0; i < frames.count(); i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
if (filters[frames[i].ID])
|
if (filters[frames[i].ID])
|
||||||
{
|
{
|
||||||
filteredFrames.append(frames[i]);
|
tempContainer.append(frames[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
filteredFrames.clear();
|
||||||
|
filteredFrames = tempContainer;
|
||||||
lastUpdateNumFrames = filteredFrames.count();
|
lastUpdateNumFrames = filteredFrames.count();
|
||||||
endResetModel();
|
endResetModel();
|
||||||
|
mutex.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CANFrameModel::sendRefresh(int pos)
|
void CANFrameModel::sendRefresh(int pos)
|
||||||
@@ -359,6 +364,8 @@ void CANFrameModel::sendBulkRefresh(int num)
|
|||||||
if (num == 0) return;
|
if (num == 0) return;
|
||||||
if (filteredFrames.count() == 0) return;
|
if (filteredFrames.count() == 0) return;
|
||||||
|
|
||||||
|
mutex.lock();
|
||||||
|
|
||||||
if (!overwriteDups)
|
if (!overwriteDups)
|
||||||
{
|
{
|
||||||
if (num > filteredFrames.count()) num = filteredFrames.count();
|
if (num > filteredFrames.count()) num = filteredFrames.count();
|
||||||
@@ -369,6 +376,7 @@ void CANFrameModel::sendBulkRefresh(int num)
|
|||||||
{
|
{
|
||||||
sendRefresh();
|
sendRefresh();
|
||||||
}
|
}
|
||||||
|
mutex.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CANFrameModel::clearFrames()
|
void CANFrameModel::clearFrames()
|
||||||
|
|||||||
@@ -103,6 +103,8 @@ void ConnectionWindow::setSpeeds(int speed0, int speed1)
|
|||||||
{
|
{
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
|
||||||
|
qDebug() << speed0 << "X" << speed1;
|
||||||
|
|
||||||
for (int i = 0; i < ui->cbSpeed0->count(); i++)
|
for (int i = 0; i < ui->cbSpeed0->count(); i++)
|
||||||
{
|
{
|
||||||
if (ui->cbSpeed0->itemText(i).toInt() == speed0)
|
if (ui->cbSpeed0->itemText(i).toInt() == speed0)
|
||||||
@@ -184,3 +186,14 @@ ConnectionType::ConnectionType ConnectionWindow::getConnectionType()
|
|||||||
if (ui->rbKvaser->isChecked()) return ConnectionType::KVASER;
|
if (ui->rbKvaser->isChecked()) return ConnectionType::KVASER;
|
||||||
if (ui->rbSocketCAN->isChecked()) return ConnectionType::SOCKETCAN;
|
if (ui->rbSocketCAN->isChecked()) return ConnectionType::SOCKETCAN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConnectionWindow::setCAN1SWMode(bool mode)
|
||||||
|
{
|
||||||
|
ui->ckSingleWire->setChecked(mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ConnectionWindow::getCAN1SWMode()
|
||||||
|
{
|
||||||
|
if (ui->ckSingleWire->checkState() == Qt::Checked) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|||||||
@@ -31,12 +31,14 @@ public:
|
|||||||
int getSpeed1();
|
int getSpeed1();
|
||||||
QString getPortName(); //name of port to connect to
|
QString getPortName(); //name of port to connect to
|
||||||
ConnectionType::ConnectionType getConnectionType();
|
ConnectionType::ConnectionType getConnectionType();
|
||||||
|
bool getCAN1SWMode();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void updateConnectionSettings(QString connectionType, QString port, int speed0, int speed1);
|
void updateConnectionSettings(QString connectionType, QString port, int speed0, int speed1);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setSpeeds(int speed0, int speed1);
|
void setSpeeds(int speed0, int speed1);
|
||||||
|
void setCAN1SWMode(bool mode);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleOKButton();
|
void handleOKButton();
|
||||||
|
|||||||
@@ -96,6 +96,13 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="ckSingleWire">
|
||||||
|
<property name="text">
|
||||||
|
<string>Set CAN1 to Single Wire Mode</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="btnOK">
|
<widget class="QPushButton" name="btnOK">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|||||||
+5
-2
@@ -13,8 +13,6 @@ Things that were planned for the GVRET-PC project but never completed.
|
|||||||
|
|
||||||
Single / Multi state - The goal is to find bits that change based on toggles or discrete state items (shifters, etc)
|
Single / Multi state - The goal is to find bits that change based on toggles or discrete state items (shifters, etc)
|
||||||
|
|
||||||
Range state - Find things that range like accelerator pedal inputs, road speed, tach, etc
|
|
||||||
|
|
||||||
fuzzy scope - Try to find potential places where a given value might be stored - offer guesses and the program tries to find candidates for you
|
fuzzy scope - Try to find potential places where a given value might be stored - offer guesses and the program tries to find candidates for you
|
||||||
or, try to find things that appear to be multi-byte integers
|
or, try to find things that appear to be multi-byte integers
|
||||||
*/
|
*/
|
||||||
@@ -321,6 +319,7 @@ void MainWindow::connButtonPress()
|
|||||||
if (ports[i].portName() == portName)
|
if (ports[i].portName() == portName)
|
||||||
{
|
{
|
||||||
portInfo = ports[i];
|
portInfo = ports[i];
|
||||||
|
//need to create some way to send single wire mode to serial port code
|
||||||
emit sendSerialPort(&portInfo);
|
emit sendSerialPort(&portInfo);
|
||||||
lbStatusConnected.setText(tr("Attempting to connect to port ") + portName);
|
lbStatusConnected.setText(tr("Attempting to connect to port ") + portName);
|
||||||
}
|
}
|
||||||
@@ -907,6 +906,7 @@ void MainWindow::connectionSucceeded(int baud0, int baud1)
|
|||||||
ui->cbSpeed2->setCurrentIndex(ui->cbSpeed2->count() - 1);
|
ui->cbSpeed2->setCurrentIndex(ui->cbSpeed2->count() - 1);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
connectionWindow->setSpeeds(baud0, baud1);
|
||||||
//ui->btnConnect->setEnabled(false);
|
//ui->btnConnect->setEnabled(false);
|
||||||
ui->actionConnect->setText(tr("Disconnect"));
|
ui->actionConnect->setText(tr("Disconnect"));
|
||||||
isConnected = true;
|
isConnected = true;
|
||||||
@@ -961,6 +961,9 @@ void MainWindow::gotDeviceInfo(int build, int swCAN)
|
|||||||
+ "\n\nPlease upgrade your firmware version.\nOtherwise, you may experience difficulties.");
|
+ "\n\nPlease upgrade your firmware version.\nOtherwise, you may experience difficulties.");
|
||||||
msgBox.exec();
|
msgBox.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (swCAN == 1) connectionWindow->setCAN1SWMode(true);
|
||||||
|
else connectionWindow->setCAN1SWMode(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::setTargettedID(int id)
|
void MainWindow::setTargettedID(int id)
|
||||||
|
|||||||
Reference in New Issue
Block a user