From 9721d980a98ba16ceb881a892a0b44d04e8f058a Mon Sep 17 00:00:00 2001 From: Tom Fifield Date: Sun, 15 Dec 2024 09:50:08 +1100 Subject: [PATCH] Fixes --- arch/rp2xx0/rp2350.ini | 2 +- src/concurrency/PacketQueue.h | 73 ----------------- src/main.cpp | 5 -- src/mesh/PhoneAPI.cpp | 2 +- src/mesh/PhoneAPI.h | 5 -- src/mesh/sharedMem/Packet.h | 62 --------------- src/mesh/sharedMem/PacketServer.cpp | 55 ------------- src/mesh/sharedMem/PacketServer.h | 28 ------- src/mesh/sharedMem/SharedQueue.cpp | 37 --------- src/mesh/sharedMem/SharedQueue.h | 35 --------- src/modules/AdminModule.cpp | 2 +- variants/rak4631/platformio.ini | 2 +- variants/t-deck/platformio.ini | 116 ++++------------------------ 13 files changed, 21 insertions(+), 403 deletions(-) delete mode 100644 src/concurrency/PacketQueue.h delete mode 100644 src/mesh/sharedMem/Packet.h delete mode 100644 src/mesh/sharedMem/PacketServer.cpp delete mode 100644 src/mesh/sharedMem/PacketServer.h delete mode 100644 src/mesh/sharedMem/SharedQueue.cpp delete mode 100644 src/mesh/sharedMem/SharedQueue.h diff --git a/arch/rp2xx0/rp2350.ini b/arch/rp2xx0/rp2350.ini index 73662001b..c5849ff2a 100644 --- a/arch/rp2xx0/rp2350.ini +++ b/arch/rp2xx0/rp2350.ini @@ -22,4 +22,4 @@ lib_deps = ${arduino_base.lib_deps} ${environmental_base.lib_deps} ${radiolib_base.lib_deps} - rweather/Crypto + rweather/Crypto \ No newline at end of file diff --git a/src/concurrency/PacketQueue.h b/src/concurrency/PacketQueue.h deleted file mode 100644 index 7c909e682..000000000 --- a/src/concurrency/PacketQueue.h +++ /dev/null @@ -1,73 +0,0 @@ -#pragma once - -#include -#include -#include - -#ifdef BLOCKING_PACKET_QUEUE -#include -#endif - -/** - * Generic platform independent and re-entrant queue wrapper that can be used to - * safely pass (generic) movable objects between threads. - */ -template class PacketQueue -{ - public: - PacketQueue() {} - - PacketQueue(PacketQueue const &other) = delete; - - /** - * Push movable object into queue - */ - void push(T &&packet) - { - std::lock_guard lock(mutex); - queue.push(packet.move()); -#ifdef BLOCKING_PACKET_QUEUE - cond.notify_one(); -#endif - } - -#ifdef BLOCKING_PACKET_QUEUE - /** - * Pop movable object from queue (blocking) - */ - std::unique_ptr pop(void) - { - std::unique_lock lock(mutex); - cond.wait(lock, [this] { return !queue.empty(); }); - T packet = queue.front()->move(); - queue.pop(); - return packet; - } -#endif - - /** - * Pop movable object from queue (non-blocking) - */ - std::unique_ptr try_pop() - { - std::lock_guard lock(mutex); - if (queue.empty()) - return {nullptr}; - auto packet = queue.front()->move(); - queue.pop(); - return packet; - } - - uint32_t size() const - { - std::lock_guard lock(mutex); - return queue.size(); - } - - private: - mutable std::mutex mutex; - std::queue> queue; -#ifdef BLOCKING_PACKET_QUEUE - std::condition_variable cond; -#endif -}; \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index fc5c115c8..2357a00de 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1148,11 +1148,6 @@ void setup() initApiServer(TCPPort); #endif -#ifdef USE_PACKET_API - MeshPacketServer::init(); - PacketClient::init(); -#endif - // Start airtime logger thread. airTime = new AirTime(); diff --git a/src/mesh/PhoneAPI.cpp b/src/mesh/PhoneAPI.cpp index ba0d56919..f49718c5e 100644 --- a/src/mesh/PhoneAPI.cpp +++ b/src/mesh/PhoneAPI.cpp @@ -657,4 +657,4 @@ int PhoneAPI::onNotify(uint32_t newValue) } return timeout ? -1 : 0; // If we timed out, MeshService should stop iterating through observers as we just removed one -} +} \ No newline at end of file diff --git a/src/mesh/PhoneAPI.h b/src/mesh/PhoneAPI.h index 31e05c85b..438693422 100644 --- a/src/mesh/PhoneAPI.h +++ b/src/mesh/PhoneAPI.h @@ -148,11 +148,6 @@ class PhoneAPI */ virtual void onNowHasData(uint32_t fromRadioNum) {} - /** - * Subclasses can use this to find out when a client drops the link - */ - virtual void handleDisconnect(); - /// begin a new connection void handleStartConfig(); diff --git a/src/mesh/sharedMem/Packet.h b/src/mesh/sharedMem/Packet.h deleted file mode 100644 index 5ddff3f8e..000000000 --- a/src/mesh/sharedMem/Packet.h +++ /dev/null @@ -1,62 +0,0 @@ -#pragma once - -#include - -/** - * Polymorphic packets that can be moved into and out of packet queues. - */ -class Packet -{ - public: - using PacketPtr = std::unique_ptr; - - Packet(int packetId) : id(packetId) {} - - // virtual move constructor - virtual PacketPtr move() { return PacketPtr(new Packet(std::move(*this))); } - - // Disable copying - Packet(const Packet &) = delete; - Packet &operator=(const Packet &) = delete; - - virtual ~Packet() {} - - int getPacketId() const { return id; } - - protected: - // Enable moving - Packet(Packet &&) = default; - Packet &operator=(Packet &&) = default; - - private: - int id; -}; - -/** - * generic packet type class - */ -template class DataPacket : public Packet -{ - public: - template DataPacket(int id, Args &&...args) : Packet(id), data(new PacketType(std::forward(args)...)) - { - } - - PacketPtr move() override { return PacketPtr(new DataPacket(std::move(*this))); } - - // Disable copying - DataPacket(const DataPacket &) = delete; - DataPacket &operator=(const DataPacket &) = delete; - - virtual ~DataPacket() {} - - const PacketType &getData() const { return *data; } - - protected: - // Enable moving - DataPacket(DataPacket &&) = default; - DataPacket &operator=(DataPacket &&) = default; - - private: - std::unique_ptr data; -}; diff --git a/src/mesh/sharedMem/PacketServer.cpp b/src/mesh/sharedMem/PacketServer.cpp deleted file mode 100644 index ce2b96e6c..000000000 --- a/src/mesh/sharedMem/PacketServer.cpp +++ /dev/null @@ -1,55 +0,0 @@ -#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; -} - -Packet::PacketPtr PacketServer::receivePacket(void) -{ - assert(queue); - if (queue->clientQueueSize() == 0) - return {nullptr}; - return queue->serverReceive(); -} - -bool PacketServer::sendPacket(Packet &&p) -{ - assert(queue); - if (queue->serverQueueSize() >= max_packet_queue_size) { - return false; - } - queue->serverSend(std::move(p)); - return true; -} - -bool PacketServer::hasData() const -{ - assert(queue); - return queue->clientQueueSize() > 0; -} - -bool PacketServer::available() const -{ - assert(queue); - return queue->serverQueueSize() < max_packet_queue_size; -} diff --git a/src/mesh/sharedMem/PacketServer.h b/src/mesh/sharedMem/PacketServer.h deleted file mode 100644 index fa65afe61..000000000 --- a/src/mesh/sharedMem/PacketServer.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include "concurrency/PacketQueue.h" -#include "sharedMem/Packet.h" - -class SharedQueue; - -/** - * Generic server implementation (base class) for bidirectional task communication - * 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); - // template variant with typed return values - // template<> Packet::PacketPtr receivePacket() - // template T receivePacket(); - virtual bool hasData() const; - virtual bool available() const; - - private: - SharedQueue *queue; -}; diff --git a/src/mesh/sharedMem/SharedQueue.cpp b/src/mesh/sharedMem/SharedQueue.cpp deleted file mode 100644 index f1971c4b0..000000000 --- a/src/mesh/sharedMem/SharedQueue.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "sharedMem/SharedQueue.h" - -SharedQueue::SharedQueue() {} - -SharedQueue::~SharedQueue() {} - -bool SharedQueue::serverSend(Packet &&p) -{ - serverQueue.push(std::move(p)); - return true; -} - -Packet::PacketPtr SharedQueue::serverReceive() -{ - return clientQueue.try_pop(); -} - -size_t SharedQueue::serverQueueSize() const -{ - return serverQueue.size(); -} - -bool SharedQueue::clientSend(Packet &&p) -{ - clientQueue.push(std::move(p)); - return true; -} - -Packet::PacketPtr SharedQueue::clientReceive() -{ - return serverQueue.try_pop(); -} - -size_t SharedQueue::clientQueueSize() const -{ - return clientQueue.size(); -} diff --git a/src/mesh/sharedMem/SharedQueue.h b/src/mesh/sharedMem/SharedQueue.h deleted file mode 100644 index 9b5ea4ca0..000000000 --- a/src/mesh/sharedMem/SharedQueue.h +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include "concurrency/PacketQueue.h" -#include "sharedMem/Packet.h" - -/** - * @brief Queue wrapper that aggregates two thread queues (namely client and server) - * for bidirectional packet transfer between two threads or processes. - * - * This queue may also be created in shared memory (e.g. in Linux for inter-process communication) - */ -class SharedQueue -{ - public: - SharedQueue(); - virtual ~SharedQueue(); - - // server methods - virtual bool serverSend(Packet &&p); - virtual Packet::PacketPtr serverReceive(); - virtual size_t serverQueueSize() const; - - // client methods - virtual bool clientSend(Packet &&p); - virtual Packet::PacketPtr clientReceive(); - virtual size_t clientQueueSize() const; - - private: - // the server pushes into serverQueue and the client pushes into clientQueue - // receiving is done from the opposite queue, respectively - PacketQueue serverQueue; - PacketQueue clientQueue; -}; - -extern SharedQueue *sharedQueue; \ No newline at end of file diff --git a/src/modules/AdminModule.cpp b/src/modules/AdminModule.cpp index 3392a3984..2d33b723d 100644 --- a/src/modules/AdminModule.cpp +++ b/src/modules/AdminModule.cpp @@ -1123,4 +1123,4 @@ void disableBluetooth() nrf52Bluetooth->shutdown(); #endif #endif -} +} \ No newline at end of file diff --git a/variants/rak4631/platformio.ini b/variants/rak4631/platformio.ini index 69560bc8c..ced93df66 100644 --- a/variants/rak4631/platformio.ini +++ b/variants/rak4631/platformio.ini @@ -52,4 +52,4 @@ lib_deps = upload_protocol = stlink ; eventually use platformio/tool-pyocd@^2.3600.0 instad ;upload_protocol = custom -;upload_command = pyocd flash -t nrf52840 $UPLOADERFLAGS $SOURCE +;upload_command = pyocd flash -t nrf52840 $UPLOADERFLAGS $SOURCE \ No newline at end of file diff --git a/variants/t-deck/platformio.ini b/variants/t-deck/platformio.ini index ac86d938d..16769e2f2 100644 --- a/variants/t-deck/platformio.ini +++ b/variants/t-deck/platformio.ini @@ -1,101 +1,19 @@ -// ST7789 TFT LCD -#define ST7789_CS 12 -#define ST7789_RS 11 // DC -#define ST7789_SDA 41 // MOSI -#define ST7789_SCK 40 -#define ST7789_RESET -1 -#define ST7789_MISO 38 -#define ST7789_BUSY -1 -#define ST7789_BL 42 -#define ST7789_SPI_HOST SPI2_HOST -#define TFT_BL 42 -#define SPI_FREQUENCY 40000000 -#define SPI_READ_FREQUENCY 16000000 -#define TFT_HEIGHT 320 -#define TFT_WIDTH 240 -#define TFT_OFFSET_X 0 -#define TFT_OFFSET_Y 0 -#define TFT_OFFSET_ROTATION 0 -#define SCREEN_ROTATE -#define SCREEN_TRANSITION_FRAMERATE 5 -#define BRIGHTNESS_DEFAULT 130 // Medium Low Brightness +; LilyGo T-Deck +[env:t-deck] +extends = esp32s3_base +board = t-deck +board_check = true +upload_protocol = esptool +#upload_port = COM29 -#define HAS_TOUCHSCREEN 1 -#define SCREEN_TOUCH_INT 16 -#define TOUCH_I2C_PORT 0 -#define TOUCH_SLAVE_ADDRESS 0x5D // GT911 +build_flags = ${esp32_base.build_flags} + -DT_DECK + -DBOARD_HAS_PSRAM + -DMAX_THREADS=40 + -DGPS_POWER_TOGGLE + -Ivariants/t-deck -#define SLEEP_TIME 120 - -#define BUTTON_PIN 0 -// #define BUTTON_NEED_PULLUP -#define GPS_DEFAULT_NOT_PRESENT 1 -#define GPS_RX_PIN 44 -#define GPS_TX_PIN 43 - -// Have SPI interface SD card slot -#define HAS_SDCARD 1 -#define SPI_MOSI (41) -#define SPI_SCK (40) -#define SPI_MISO (38) -#define SPI_CS (39) -#define SDCARD_CS SPI_CS - -#define BATTERY_PIN 4 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage -// ratio of voltage divider = 2.0 (RD2=100k, RD3=100k) -#define ADC_MULTIPLIER 2.11 // 2.0 + 10% for correction of display undervoltage. -#define ADC_CHANNEL ADC1_GPIO4_CHANNEL - -// keyboard -#define I2C_SDA 18 // I2C pins for this board -#define I2C_SCL 8 -#define KB_POWERON 10 // must be set to HIGH -#define KB_SLAVE_ADDRESS TDECK_KB_ADDR // 0x55 -#define KB_BL_PIN 46 // not used for now -#define CANNED_MESSAGE_MODULE_ENABLE 1 - -// trackball -#define HAS_TRACKBALL 1 -#define TB_UP 3 -#define TB_DOWN 15 -#define TB_LEFT 1 -#define TB_RIGHT 2 -#define TB_PRESS BUTTON_PIN - -// microphone -#define ES7210_SCK 47 -#define ES7210_DIN 14 -#define ES7210_LRCK 21 -#define ES7210_MCLK 48 - -// dac / amp -#define HAS_I2S -#define DAC_I2S_BCK 7 -#define DAC_I2S_WS 5 -#define DAC_I2S_DOUT 6 -#define DAC_I2S_MCLK 21 // GPIO lrck mic - -// LoRa -#define USE_SX1262 -#define USE_SX1268 - -#define LORA_SCK 40 -#define LORA_MISO 38 -#define LORA_MOSI 41 -#define LORA_CS 9 - -#define LORA_DIO0 -1 // a No connect on the SX1262 module -#define LORA_RESET 17 -#define LORA_DIO1 45 // SX1262 IRQ -#define LORA_DIO2 13 // SX1262 BUSY -#define LORA_DIO3 // Not connected on PCB, but internally on the TTGO SX1262, if DIO3 is high the TXCO is enabled - -#define SX126X_CS LORA_CS // FIXME - we really should define LORA_CS instead -#define SX126X_DIO1 LORA_DIO1 -#define SX126X_BUSY LORA_DIO2 -#define SX126X_RESET LORA_RESET -// Not really an E22 but TTGO seems to be trying to clone that -#define SX126X_DIO2_AS_RF_SWITCH -#define SX126X_DIO3_TCXO_VOLTAGE 1.8 -// Internally the TTGO module hooks the SX1262-DIO2 in to control the TX/RX switch (which is the default for the sx1262interface -// code) +lib_deps = ${esp32s3_base.lib_deps} + lovyan03/LovyanGFX@^1.1.9 + earlephilhower/ESP8266Audio@^1.9.9 + earlephilhower/ESP8266SAM@^1.0.1 \ No newline at end of file