mirror of
https://github.com/liquidraver/ZephCore.git
synced 2026-10-15 21:20:03 +00:00
- Mesh, Dispatcher, Packet, packet pool and the core headers rebuilt from Arduino MeshCore's text; ZephCore changes re-applied, each fenced `// ZEPHCORE:` (diff vs upstream: 4540 -> 1147 lines) - upstream header layout; MainBoard gains handleCommand/loop and the other upstream members; RNG::nextInt back in Utils.cpp - packet logging moved to the roles' log hooks (helpers/PacketLog.h) - zero-hop direct ACKs deduplicated and length-checked as upstream - RadioIncludes.h -> src/, LoRaConfig.h -> helpers/ - .editorconfig: shared files keep upstream formatting Verified: 10 role builds, per-function disassembly review, bench DM/ACK regression (T1000-E, Wio L1, XIAO S3 on 1.17.4) incl. via live repeater.
25 lines
1011 B
C++
25 lines
1011 B
C++
#pragma once
|
|
|
|
#include <mesh/Dispatcher.h>
|
|
|
|
// ZEPHCORE: the queues and the pool are static and live in the .cpp — no heap in
|
|
// the packet path. Pool and queue sizes are compile-time (32 each).
|
|
|
|
class StaticPoolPacketManager : public mesh::PacketManager {
|
|
public:
|
|
|
|
mesh::Packet* allocNew() override;
|
|
void free(mesh::Packet* packet) override;
|
|
void queueOutbound(mesh::Packet* packet, uint8_t priority, uint32_t scheduled_for) override;
|
|
mesh::Packet* getNextOutbound(uint32_t now) override;
|
|
int getOutboundCount(uint32_t now) const override;
|
|
int getOutboundTotal() const override;
|
|
int getFreeCount() const override;
|
|
mesh::Packet* getOutboundByIdx(int i) override;
|
|
mesh::Packet* removeOutboundByIdx(int i) override;
|
|
// ZEPHCORE: no inbound queue (see mesh::PacketManager); schedule access instead.
|
|
uint32_t getOutboundSchedule(int i) const override;
|
|
bool rescheduleOutbound(int i, uint32_t new_scheduled_for) override;
|
|
uint8_t peekNextOutboundPriority(uint32_t now) const override;
|
|
};
|