Public Access
LoRa Scanner: a MeshCore preset, and its packets read
- MeshCore joins the presets (EU/UK Narrow: 869.618 MHz, 62.5 kHz, SF8, CR 4/8, sync 0x12), after the Meshtastic ones so stored choices keep their number; `lora preset MeshCore` on the console - lib/meshcore reads what MeshCore sends in clear: header, path, and a node's advert (name, kind, key, position) - the list row, the details, a Capture's viewer and the console echo read a packet by the sync word it was received on - the bandwidth is printed as 62.5, not 62 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0162FokPdvY2KsS4NBfwyWPk
This commit is contained in:
@@ -7,23 +7,29 @@
|
||||
|
||||
namespace roro::lora {
|
||||
|
||||
// Whose packets the radio's settings were for, by their sync word: whose clear header to read.
|
||||
enum class Protocol : uint8_t { None, Meshtastic, MeshCore };
|
||||
Protocol protocolOf(uint8_t syncWord);
|
||||
|
||||
// What the LoRa Scanner shows of one packet (M3, Q96).
|
||||
struct PacketSummary {
|
||||
const uint8_t* data;
|
||||
size_t len;
|
||||
float rssi, snr;
|
||||
bool crcOk;
|
||||
bool meshtastic; // received on Meshtastic settings (sync word 0x2B): read its clear header
|
||||
Protocol protocol; // what the settings it was received on were for
|
||||
};
|
||||
|
||||
// One list row, at most about 36 characters: "21:45:07 -97 6.2 5678>all 1/3". Nodes by their default
|
||||
// short name (the last 4 hex digits); headerLines() has the full numbers.
|
||||
// One list row, at most about 36 characters: "21:45:07 -97 6.2 5678>all 1/3". Meshtastic nodes by their
|
||||
// default short name (the last 4 hex digits); headerLines() has the full numbers. MeshCore: what
|
||||
// it is, then who ("adv Brussels-R1", "txt a3>7f", "chan #11") and the hops in its path ("2h").
|
||||
std::string row(const PacketSummary& p, const std::string& time);
|
||||
|
||||
// Eight bytes a line, with the printable ones: "0000 ff ff ff ff 78 56 34 12 ....xV4.".
|
||||
std::vector<std::string> hexDump(const uint8_t* data, size_t len);
|
||||
|
||||
// The Meshtastic header, one field a line; empty when the packet is too short to have one.
|
||||
std::vector<std::string> headerLines(const uint8_t* data, size_t len);
|
||||
// What is in clear, one field a line: the Meshtastic header, or MeshCore's header, path and (for an
|
||||
// advert) who the node says it is. Empty when the packet can't be read as that.
|
||||
std::vector<std::string> headerLines(const uint8_t* data, size_t len, Protocol protocol = Protocol::Meshtastic);
|
||||
|
||||
} // namespace roro::lora
|
||||
|
||||
Reference in New Issue
Block a user