mirror of
https://github.com/Sani7/remote-ui.git
synced 2026-10-27 06:01:14 +01:00
can interface
add extra logging of errors
This commit is contained in:
@@ -1,9 +1,12 @@
|
|||||||
#include "CAN_interface.hpp"
|
#include "CAN_interface.hpp"
|
||||||
|
#include "spdlog/spdlog.h"
|
||||||
|
#include "magic_enum.hpp"
|
||||||
|
|
||||||
CAN_Interface::CAN_Interface(QString dev, QObject *parent)
|
CAN_Interface::CAN_Interface(QString dev, QObject *parent)
|
||||||
: QObject(parent), m_mid(0)
|
: QObject(parent)
|
||||||
{
|
{
|
||||||
if (!QCanBus::instance()->plugins().contains(QStringLiteral("socketcan"))) {
|
if (!QCanBus::instance()->plugins().contains(QStringLiteral("socketcan"))) {
|
||||||
|
spdlog::critical("Runtime error: CAN Interface: socketcan plugin not found");
|
||||||
throw std::runtime_error("CAN Interface: socketcan plugin not found");
|
throw std::runtime_error("CAN Interface: socketcan plugin not found");
|
||||||
}
|
}
|
||||||
QString errorString;
|
QString errorString;
|
||||||
@@ -11,9 +14,13 @@ CAN_Interface::CAN_Interface(QString dev, QObject *parent)
|
|||||||
if (!m_canDevice)
|
if (!m_canDevice)
|
||||||
{
|
{
|
||||||
// Error handling goes here
|
// Error handling goes here
|
||||||
|
spdlog::critical("Runtime error: CAN Interface: {}", errorString.toStdString());
|
||||||
throw std::runtime_error("CAN Interface: " + errorString.toStdString());
|
throw std::runtime_error("CAN Interface: " + errorString.toStdString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
connect(m_canDevice, &QCanBusDevice::errorOccurred,
|
||||||
|
this, [=, this](QCanBusDevice::CanBusError error){processErrors(error);});
|
||||||
|
|
||||||
m_canDevice->connectDevice();
|
m_canDevice->connectDevice();
|
||||||
connect(m_canDevice, &QCanBusDevice::framesReceived, this, [this] {
|
connect(m_canDevice, &QCanBusDevice::framesReceived, this, [this] {
|
||||||
for (const QCanBusFrame &frame : m_canDevice->readAllFrames())
|
for (const QCanBusFrame &frame : m_canDevice->readAllFrames())
|
||||||
@@ -33,3 +40,18 @@ void CAN_Interface::send_frame(const QCanBusFrame &frame)
|
|||||||
{
|
{
|
||||||
m_canDevice->writeFrame(frame);
|
m_canDevice->writeFrame(frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CAN_Interface::processErrors(QCanBusDevice::CanBusError error) const
|
||||||
|
{
|
||||||
|
switch (error) {
|
||||||
|
case QCanBusDevice::ReadError:
|
||||||
|
case QCanBusDevice::WriteError:
|
||||||
|
case QCanBusDevice::ConnectionError:
|
||||||
|
case QCanBusDevice::ConfigurationError:
|
||||||
|
case QCanBusDevice::UnknownError:
|
||||||
|
spdlog::critical("CAN Interface: {} {}", magic_enum::enum_name<QCanBusDevice::CanBusError>(error), m_canDevice->errorString().toStdString());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,5 +16,6 @@ class CAN_Interface : public QObject
|
|||||||
void frame_received(const QCanBusFrame frame);
|
void frame_received(const QCanBusFrame frame);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void processErrors(QCanBusDevice::CanBusError error) const;
|
||||||
QCanBusDevice *m_canDevice;
|
QCanBusDevice *m_canDevice;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user