From cedb0067b244de8e989f4c9e873d964ee7a57bb1 Mon Sep 17 00:00:00 2001 From: mverch67 Date: Sat, 6 Apr 2024 13:27:22 +0200 Subject: [PATCH] refactoring part 1: remove MeshPacketClient/Server layer --- src/main.cpp | 5 --- src/mesh/api/PacketAPI.cpp | 8 ----- src/mesh/sharedMem/MeshPacketServer.cpp | 44 ------------------------- src/mesh/sharedMem/MeshPacketServer.h | 20 ----------- src/mesh/sharedMem/PacketServer.cpp | 13 ++++++++ src/mesh/sharedMem/PacketServer.h | 3 +- 6 files changed, 15 insertions(+), 78 deletions(-) delete mode 100644 src/mesh/sharedMem/MeshPacketServer.cpp delete mode 100644 src/mesh/sharedMem/MeshPacketServer.h diff --git a/src/main.cpp b/src/main.cpp index 7c2bc37ac..fc5c115c8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -116,11 +116,6 @@ AudioThread *audioThread = nullptr; float tcxoVoltage = SX126X_DIO3_TCXO_VOLTAGE; // if TCXO is optional, put this here so it can be changed further down. #endif -#ifdef USE_PACKET_API -#include "sharedMem/MeshPacketServer.h" -#include "sharedMem/PacketClient.h" -#endif - using namespace concurrency; volatile static const char slipstreamTZString[] = USERPREFS_TZ_STRING; diff --git a/src/mesh/api/PacketAPI.cpp b/src/mesh/api/PacketAPI.cpp index 9b38db7a6..4942fa2ff 100644 --- a/src/mesh/api/PacketAPI.cpp +++ b/src/mesh/api/PacketAPI.cpp @@ -1,7 +1,6 @@ #include "api/PacketAPI.h" #include "MeshService.h" #include "RadioInterface.h" -#include "sharedMem/MeshPacketServer.h" PacketAPI *packetAPI = nullptr; @@ -23,18 +22,11 @@ bool PacketAPI::receivePacket(void) isConnected = true; data_received = true; - // TODO: think about redesign or drop class MeshPacketServer meshtastic_ToRadio *mr; - // if (typeid(*server) == typeid(MeshPacketServer)) { - // dynamic_cast(server)->receivePacket(*mr); - // } - // else { auto p = server->receivePacket()->move(); int id = p->getPacketId(); LOG_DEBUG("Received packet id=%u\n", id); - // mr = (meshtastic_ToRadio*)&dynamic_cast*>(p.get())->getData(); mr = (meshtastic_ToRadio *)&static_cast *>(p.get())->getData(); - //} switch (mr->which_payload_variant) { case meshtastic_ToRadio_packet_tag: { diff --git a/src/mesh/sharedMem/MeshPacketServer.cpp b/src/mesh/sharedMem/MeshPacketServer.cpp deleted file mode 100644 index 8df56ab4a..000000000 --- a/src/mesh/sharedMem/MeshPacketServer.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include "sharedMem/MeshPacketServer.h" -#include "api/PacketAPI.h" -#include "sharedMem/SharedQueue.h" - -SharedQueue *sharedQueue = nullptr; - -MeshPacketServer *meshPacketServer = nullptr; - -void MeshPacketServer::init(void) -{ - meshPacketServer = new MeshPacketServer; - packetAPI = new PacketAPI(meshPacketServer); - meshPacketServer->begin(); -} - -MeshPacketServer::MeshPacketServer() {} - -void MeshPacketServer::begin(void) -{ - sharedQueue = new SharedQueue; - PacketServer::begin(sharedQueue); -} - -bool MeshPacketServer::receivePacket(meshtastic_ToRadio &to) -{ - // auto p = PacketServer::receivePacket()->move(); - auto p = PacketServer::receivePacket()->move(); - if (p) { - // TODO: avoid data copy :( - // to = dynamic_cast*>(p.get())->getData(); - to = static_cast *>(p.get())->getData(); - } - return p != nullptr; -} - -bool MeshPacketServer::sendPacket(meshtastic_FromRadio &from) -{ - return PacketServer::sendPacket(DataPacket(from.id, from)); -} - -bool MeshPacketServer::sendPacket(meshtastic_FromRadio &&from) -{ - return PacketServer::sendPacket(DataPacket(from.id, from)); -} diff --git a/src/mesh/sharedMem/MeshPacketServer.h b/src/mesh/sharedMem/MeshPacketServer.h deleted file mode 100644 index 858f968df..000000000 --- a/src/mesh/sharedMem/MeshPacketServer.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "mesh-pb-constants.h" -#include "sharedMem/PacketServer.h" - -/** - * @brief This is a wrapper class for the PaketServer to avoid dealing with DataPackets - * in the application code. - * - */ -class MeshPacketServer : public PacketServer -{ - public: - MeshPacketServer(); - static void init(void); - virtual void begin(void); - virtual bool receivePacket(meshtastic_ToRadio &to); - virtual bool sendPacket(meshtastic_FromRadio &from); - virtual bool sendPacket(meshtastic_FromRadio &&from); -}; - -extern MeshPacketServer *meshPacketServer; \ No newline at end of file diff --git a/src/mesh/sharedMem/PacketServer.cpp b/src/mesh/sharedMem/PacketServer.cpp index 628592cc7..ce2b96e6c 100644 --- a/src/mesh/sharedMem/PacketServer.cpp +++ b/src/mesh/sharedMem/PacketServer.cpp @@ -1,11 +1,24 @@ #include "sharedMem/PacketServer.h" +#include "api/PacketAPI.h" #include "sharedMem/SharedQueue.h" #include const uint32_t max_packet_queue_size = 50; +SharedQueue *sharedQueue = nullptr; + +PacketServer *packetServer = nullptr; + PacketServer::PacketServer() : queue(nullptr) {} +void PacketServer::init(void) +{ + packetServer = new PacketServer; + packetAPI = new PacketAPI(packetServer); + sharedQueue = new SharedQueue; + packetServer->begin(sharedQueue); +} + void PacketServer::begin(SharedQueue *_queue) { queue = _queue; diff --git a/src/mesh/sharedMem/PacketServer.h b/src/mesh/sharedMem/PacketServer.h index 44044aa91..fa65afe61 100644 --- a/src/mesh/sharedMem/PacketServer.h +++ b/src/mesh/sharedMem/PacketServer.h @@ -7,12 +7,13 @@ class SharedQueue; /** * Generic server implementation (base class) for bidirectional task communication - * Uses a queue that is shared with the + * Uses a queue that is shared with the client */ class PacketServer { public: PacketServer(); + static void init(void); virtual void begin(SharedQueue *_queue); virtual bool sendPacket(Packet &&p); virtual Packet::PacketPtr receivePacket(void);