diff --git a/src/main.cpp b/src/main.cpp index 928119308..3052c1e58 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -110,6 +110,7 @@ AudioThread *audioThread; #include "DisplayDriverConfig.h" #include "PacketClient.h" #include "PacketServer.h" +#include "api/PacketAPI.h" void tft_task_handler(void *); @@ -725,12 +726,14 @@ void setup() }); } deviceScreen = &DeviceScreen::create(&displayConfig); - PacketServer::init(); + PacketAPI::create(PacketServer::init()); deviceScreen->init(new PacketClient); + } else { + LOG_INFO("Running without TFT display!\n"); } #else deviceScreen = &DeviceScreen::create(); - PacketServer::init(); + PacketAPI::create(PacketServer::init()); deviceScreen->init(new PacketClient); #endif #endif diff --git a/src/mesh/api/PacketAPI.cpp b/src/mesh/api/PacketAPI.cpp index ac99d027f..a025ca7f4 100644 --- a/src/mesh/api/PacketAPI.cpp +++ b/src/mesh/api/PacketAPI.cpp @@ -6,7 +6,13 @@ PacketAPI *packetAPI = nullptr; -void PacketAPI::init(void) {} +PacketAPI *PacketAPI::create(PacketServer *_server) +{ + if (!packetAPI) { + packetAPI = new PacketAPI(_server); + } + return packetAPI; +} PacketAPI::PacketAPI(PacketServer *_server) : concurrency::OSThread("PacketAPI"), isConnected(false), server(_server) {} diff --git a/src/mesh/api/PacketAPI.h b/src/mesh/api/PacketAPI.h index d4aaadad8..f9ae0812a 100644 --- a/src/mesh/api/PacketAPI.h +++ b/src/mesh/api/PacketAPI.h @@ -12,12 +12,12 @@ class PacketAPI : public PhoneAPI, public concurrency::OSThread { public: - PacketAPI(PacketServer *_server); - static void init(void); + static PacketAPI *create(PacketServer *_server); virtual ~PacketAPI(){}; virtual int32_t runOnce(); protected: + PacketAPI(PacketServer *_server); // Check the current underlying physical queue to see if the client is fetching packets bool checkIsConnected() override;