refactoring part 1: remove MeshPacketClient/Server layer

This commit is contained in:
mverch67 2024-04-06 13:27:22 +02:00 committed by Tom Fifield
parent e045e862e8
commit cedb0067b2
6 changed files with 15 additions and 78 deletions

View File

@ -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;

View File

@ -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<MeshPacketServer*>(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<DataPacket<meshtastic_ToRadio>*>(p.get())->getData();
mr = (meshtastic_ToRadio *)&static_cast<DataPacket<meshtastic_ToRadio> *>(p.get())->getData();
//}
switch (mr->which_payload_variant) {
case meshtastic_ToRadio_packet_tag: {

View File

@ -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<Packet::PacketPtr>()->move();
auto p = PacketServer::receivePacket()->move();
if (p) {
// TODO: avoid data copy :(
// to = dynamic_cast<DataPacket<meshtastic_ToRadio>*>(p.get())->getData();
to = static_cast<DataPacket<meshtastic_ToRadio> *>(p.get())->getData();
}
return p != nullptr;
}
bool MeshPacketServer::sendPacket(meshtastic_FromRadio &from)
{
return PacketServer::sendPacket(DataPacket<meshtastic_FromRadio>(from.id, from));
}
bool MeshPacketServer::sendPacket(meshtastic_FromRadio &&from)
{
return PacketServer::sendPacket(DataPacket<meshtastic_FromRadio>(from.id, from));
}

View File

@ -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;

View File

@ -1,11 +1,24 @@
#include "sharedMem/PacketServer.h"
#include "api/PacketAPI.h"
#include "sharedMem/SharedQueue.h"
#include <assert.h>
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;

View File

@ -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);