This commit is contained in:
maciek16c
2023-11-22 15:23:38 +01:00
parent 190d51ae90
commit 2bf0782946
10 changed files with 62 additions and 1 deletions
+2
View File
@@ -21,6 +21,7 @@ ICON = icons/SavvyIcon.icns
SOURCES += main.cpp\
canbridgewindow.cpp \
connections/canlogserver.cpp \
connections/canserver.cpp \
connections/lawicel_serial.cpp \
connections/mqtt_bus.cpp \
@@ -104,6 +105,7 @@ HEADERS += mainwindow.h \
can_structs.h \
canbridgewindow.h \
canframemodel.h \
connections/canlogserver.h \
connections/canserver.h \
connections/lawicel_serial.h \
connections/socketcand.h \
+1
View File
@@ -22,6 +22,7 @@ namespace CANCon {
MQTT,
LAWICEL,
CANSERVER,
CANLOGSERVER,
NONE
};
}
+3
View File
@@ -6,6 +6,7 @@
#include "socketcand.h"
#include "lawicel_serial.h"
#include "canserver.h"
#include "canlogserver.h"
using namespace CANCon;
@@ -29,6 +30,8 @@ CANConnection* CanConFactory::create(type pType, QString pPortName, QString pDri
return new MQTT_BUS(pPortName);
case CANSERVER:
return new CANserver(pPortName);
case CANLOGSERVER:
return new CanLogServer(pPortName);
default: {}
}
+1
View File
@@ -88,6 +88,7 @@ QVariant CANConnectionModel::data(const QModelIndex &index, int role) const
case CANCon::KAYAK: return "socketcand";
case CANCon::LAWICEL: return "LAWICEL";
case CANCon::CANSERVER: return "CANserver";
case CANCon::CANLOGSERVER: return "CanLogServer";
default: {}
}
else qDebug() << "Tried to show connection type but connection was nullptr";
+1 -1
View File
@@ -9,7 +9,7 @@
#include "canlogserver.h"
CanLogServer::CanLogServer(QString serverAddressString) :
CANConnection(serverAddressString, "CanLogserver", CANCon::CANLOGSERVER, 0, 0, 1, 4000, true),
CANConnection(serverAddressString, "CanLogserver", CANCon::CANLOGSERVER, 0, 0, false, 0, 1, 4000, true),
m_ptcpSocket(new QTcpSocket(this))
{
+25
View File
@@ -29,6 +29,7 @@ NewConnectionDialog::NewConnectionDialog(QVector<QString>* gvretips, QVector<QSt
connect(ui->rbMQTT, &QAbstractButton::clicked, this, &NewConnectionDialog::handleConnTypeChanged);
connect(ui->rbLawicel, &QAbstractButton::clicked, this, &NewConnectionDialog::handleConnTypeChanged);
connect(ui->rbCANserver, &QAbstractButton::clicked, this, &NewConnectionDialog::handleConnTypeChanged);
connect(ui->rbCanlogserver, &QAbstractButton::clicked, this, &NewConnectionDialog::handleConnTypeChanged);
connect(ui->cbDeviceType, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &NewConnectionDialog::handleDeviceTypeChanged);
connect(ui->btnOK, &QPushButton::clicked, this, &NewConnectionDialog::handleCreateButton);
@@ -68,6 +69,7 @@ void NewConnectionDialog::handleConnTypeChanged()
if (ui->rbKayak->isChecked()) selectKayak();
if (ui->rbMQTT->isChecked()) selectMQTT();
if (ui->rbCANserver->isChecked()) selectCANserver();
if (ui->rbCanlogserver->isChecked()) selectCANlogserver();
}
void NewConnectionDialog::handleDeviceTypeChanged()
@@ -250,6 +252,23 @@ void NewConnectionDialog::selectCANserver()
ui->cbPort->clear();
}
void NewConnectionDialog::selectCANlogserver()
{
ui->lPort->setText("CANlogserver IP Address:");
ui->lblDeviceType->setHidden(true);
ui->cbDeviceType->setHidden(true);
ui->cbCANSpeed->setHidden(true);
ui->cbSerialSpeed->setHidden(true);
ui->lblCANSpeed->setHidden(true);
ui->lblSerialSpeed->setHidden(true);
ui->cbCanFd->setHidden(true);
ui->cbDataRate->setHidden(true);
ui->lblDataRate->setHidden(true);
ui->cbPort->clear();
}
void NewConnectionDialog::setPortName(CANCon::type pType, QString pPortName, QString pDriver)
{
@@ -276,6 +295,9 @@ void NewConnectionDialog::setPortName(CANCon::type pType, QString pPortName, QSt
case CANCon::CANSERVER:
ui->rbCANserver->setChecked(true);
break;
case CANCon::CANLOGSERVER:
ui->rbCanlogserver->setChecked(true);
break;
default: {}
}
@@ -320,6 +342,7 @@ void NewConnectionDialog::setPortName(CANCon::type pType, QString pPortName, QSt
ui->cbPort->setCurrentText(pPortName);
break;
case CANCon::CANSERVER:
case CANCon::CANLOGSERVER:
{
ui->cbPort->setCurrentText(pPortName);
break;
@@ -340,6 +363,7 @@ QString NewConnectionDialog::getPortName()
case CANCon::KAYAK:
return ui->cbPort->currentText();
case CANCon::CANSERVER:
case CANCon::CANLOGSERVER:
return ui->cbPort->currentText();
default:
@@ -385,6 +409,7 @@ CANCon::type NewConnectionDialog::getConnectionType()
if (ui->rbMQTT->isChecked()) return CANCon::MQTT;
if (ui->rbLawicel->isChecked()) return CANCon::LAWICEL;
if (ui->rbCANserver->isChecked()) return CANCon::CANSERVER;
if (ui->rbCanlogserver->isChecked()) return CANCon::CANLOGSERVER;
qDebug() << "getConnectionType: error";
return CANCon::NONE;
+1
View File
@@ -49,6 +49,7 @@ private:
void selectMQTT();
void selectLawicel();
void selectCANserver();
void selectCANlogserver();
bool isSerialBusAvailable();
void setPortName(CANCon::type pType, QString pPortName, QString pDriver);
};
+6
View File
@@ -78,6 +78,8 @@ bool SerialBusConnection::piGetBusSettings(int pBusIdx, CANBus& pBus)
void SerialBusConnection::piSetBusSettings(int pBusIdx, CANBus bus)
{
quint32 sbusconfig = 0;
//CANConStatus stats;
/* sanity checks */
if(0 != pBusIdx)
@@ -106,6 +108,10 @@ void SerialBusConnection::piSetBusSettings(int pBusIdx, CANBus bus)
mDev_p->setConfigurationParameter(QCanBusDevice::BitRateKey, bus.speed);
mDev_p->setConfigurationParameter(QCanBusDevice::CanFdKey, bus.canFD);
if(bus.listenOnly)
sbusconfig |= EN_SILENT_MODE;
mDev_p->setConfigurationParameter(QCanBusDevice::UserKey, sbusconfig);
/* connect device */
if (!mDev_p->connectDevice()) {
disconnectDevice();
+15
View File
@@ -7,6 +7,21 @@
#include <QCanBusDevice>
#include <QTimer>
/*
QCanBusDevice::UserKey
0x00000001 - enable silent mode
0x00000002 - enable loopback mode
0x00000004 - disable auto retransmissions
0x00000008 - enable terminator
0x00000010 - enable automatic bus off recovery
*/
#define EN_SILENT_MODE 0x00000001
#define EN_LOOPBACK_MODE 0x00000002
#define DIS_AUTO_RETRANSMISSIONS 0x00000004
#define EN_TERMINATOR 0x00000008
#define EN_AUTOMATIC_BUSOFF_RECOVERY 0x00000010
class SerialBusConnection : public CANConnection
{
Q_OBJECT
+7
View File
@@ -78,6 +78,13 @@
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QRadioButton" name="rbCanlogserver">
<property name="text">
<string>CANlogserver</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>