From e9bec527a61cb6f342e2705b8cb0ee93fd164d66 Mon Sep 17 00:00:00 2001 From: Sander Speetjens Date: Mon, 21 Apr 2025 16:43:26 +0200 Subject: [PATCH] server move to communication struct --- server/simulator_base.cpp | 5 ++--- server/simulator_base.hpp | 14 +++++++++++--- server/simulators.cpp | 2 ++ server/simulators.hpp | 3 ++- server/simulators/can_debugger.cpp | 6 +++--- server/simulators/can_debugger.hpp | 2 +- server/simulators/test_sim.cpp | 4 ++-- server/simulators/test_sim.hpp | 2 +- 8 files changed, 24 insertions(+), 14 deletions(-) diff --git a/server/simulator_base.cpp b/server/simulator_base.cpp index 0b56372..ffdedbf 100644 --- a/server/simulator_base.cpp +++ b/server/simulator_base.cpp @@ -1,9 +1,8 @@ #include "simulator_base.hpp" -Simulator_base::Simulator_base(std::string name, CAN_Wrapper *can_wrapper, QSerialPort *serial, +Simulator_base::Simulator_base(std::string name, Communication* com, std::chrono::milliseconds interval, QObject *parent) - : QObject(parent), m_name(name), m_timer(new QTimer(this)), m_interval(interval), m_can_wrapper(can_wrapper), - m_serial(serial) + : QObject(parent), m_name(name), m_timer(new QTimer(this)), m_interval(interval), m_com(com) { connect(m_timer, &QTimer::timeout, this, [this] { timer(); }); m_UI_items.reserve(50); diff --git a/server/simulator_base.hpp b/server/simulator_base.hpp index a26815d..4321c4f 100644 --- a/server/simulator_base.hpp +++ b/server/simulator_base.hpp @@ -7,6 +7,15 @@ #include #define PUSH_UI_ITEM(item) push_ui_item(&item) +struct Communication +{ + CAN_Wrapper* c_if1 = nullptr; + CAN_Wrapper* c_if2 = nullptr; + QSerialPort* s_if1 = nullptr; + QSerialPort* s_if2 = nullptr; + QSerialPort* s_if3 = nullptr; + QSerialPort* s_if4 = nullptr; +}; class Simulator_base : public QObject { @@ -18,7 +27,7 @@ class Simulator_base : public QObject * @param name The name of the simulator * @param interval The interval of the timer (default is 100ms) */ - Simulator_base(std::string name, CAN_Wrapper *can_wrapper = nullptr, QSerialPort *serial = nullptr, + Simulator_base(std::string name, Communication* comms, std::chrono::milliseconds interval = std::chrono::milliseconds(100), QObject *parent = nullptr); /** @@ -108,6 +117,5 @@ class Simulator_base : public QObject std::vector m_UI_items; QTimer *m_timer; std::chrono::milliseconds m_interval; - CAN_Wrapper *m_can_wrapper; - QSerialPort *m_serial; + Communication* m_com; }; diff --git a/server/simulators.cpp b/server/simulators.cpp index 785910b..1f45629 100644 --- a/server/simulators.cpp +++ b/server/simulators.cpp @@ -28,6 +28,8 @@ Simulators::Simulators(uint16_t port, QString can_dev, QString uart_dev, QObject SPDLOG_CRITICAL("Error {}", m_serial->errorString().toStdString()); } } + m_com.c_if1 = m_can_wrapper; + m_com.s_if1 = m_serial; INSERT_SIMULATOR(Test_Sim); INSERT_SIMULATOR(Can_Debugger); diff --git a/server/simulators.hpp b/server/simulators.hpp index 03c8c19..9acd404 100644 --- a/server/simulators.hpp +++ b/server/simulators.hpp @@ -9,7 +9,7 @@ #include "websocket.hpp" #define INSERT_SIMULATOR(type) \ - m_simulators.insert(std::make_pair(type().name(), std::make_unique(m_can_wrapper, m_serial, this))); + m_simulators.insert(std::make_pair(type().name(), std::make_unique(&m_com, this))); class Simulators : public QObject { @@ -59,6 +59,7 @@ class Simulators : public QObject Websocket *m_server; CAN_Wrapper *m_can_wrapper; QSerialPort *m_serial; + Communication m_com; std::map> m_simulators; std::string m_current_simulator = ""; std::mutex m_mutex; diff --git a/server/simulators/can_debugger.cpp b/server/simulators/can_debugger.cpp index ea5de12..517b8c7 100644 --- a/server/simulators/can_debugger.cpp +++ b/server/simulators/can_debugger.cpp @@ -1,8 +1,8 @@ #include "can_debugger.hpp" -Can_Debugger::Can_Debugger(CAN_Wrapper *can_wrapper, QSerialPort *serial, QObject *parent) - : Simulator_base("Can Debugger", can_wrapper, serial, std::chrono::milliseconds(100), parent), - m_wrapper(can_wrapper), m_can_ui(Color::Black, Color::White) +Can_Debugger::Can_Debugger(Communication *com, QObject *parent) + : Simulator_base("Can Debugger", com, std::chrono::milliseconds(100), parent), + m_wrapper(com->c_if1), m_can_ui(Color::Black, Color::White) { PUSH_UI_ITEM(m_can_ui); diff --git a/server/simulators/can_debugger.hpp b/server/simulators/can_debugger.hpp index cc1f712..338b995 100644 --- a/server/simulators/can_debugger.hpp +++ b/server/simulators/can_debugger.hpp @@ -5,7 +5,7 @@ class Can_Debugger : public Simulator_base { Q_OBJECT public: - explicit Can_Debugger(CAN_Wrapper *can_wrapper = nullptr, QSerialPort *serial = nullptr, QObject *parent = nullptr); + explicit Can_Debugger(Communication *serial = nullptr, QObject *parent = nullptr); void timer() override; void run_at_startup() override; void run_at_stop() override; diff --git a/server/simulators/test_sim.cpp b/server/simulators/test_sim.cpp index 0175a83..321dba1 100644 --- a/server/simulators/test_sim.cpp +++ b/server/simulators/test_sim.cpp @@ -1,7 +1,7 @@ #include "test_sim.hpp" -Test_Sim::Test_Sim(CAN_Wrapper *can_wrapper, QSerialPort *serial, QObject *parent) - : Simulator_base("Test Sim", can_wrapper, serial, std::chrono::milliseconds(1000), parent), +Test_Sim::Test_Sim(Communication* com, QObject *parent) + : Simulator_base("Test Sim", com, std::chrono::milliseconds(1000), parent), m_button("Off", Color::White, Color::Red), m_combobox(Color::White, Color::Black, {"Option 1", "Option 2", "Option 3"}, 0), m_label("Label", Color::White, Color::Black), m_checkbox("Option 1", Color::Default, Color::Default), diff --git a/server/simulators/test_sim.hpp b/server/simulators/test_sim.hpp index d032af4..b0f5f56 100644 --- a/server/simulators/test_sim.hpp +++ b/server/simulators/test_sim.hpp @@ -5,7 +5,7 @@ class Test_Sim : public Simulator_base { Q_OBJECT public: - explicit Test_Sim(CAN_Wrapper *can_wrapper = nullptr, QSerialPort *serial = nullptr, QObject *parent = nullptr); + explicit Test_Sim(Communication* comms = nullptr, QObject *parent = nullptr); void timer() override; void run_at_startup() override;