Public Access
M3 step 2: Meshtastic header and presets, pcap with LoRaTap (host-tested)
The 16-byte clear header (hops away, channel hash, relay node), the EU_868 presets and their frequency slots, and the channel hash, all checked against Meshtastic's source. Captures are pcap with LoRaTap v0, read back with TShark 4.2.5; packet RSSI is plain dBm, as Wireshark reads it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
|
||||
namespace roro::lora {
|
||||
|
||||
// What the radio knew about one received packet.
|
||||
struct RxInfo {
|
||||
uint32_t frequencyHz = 0;
|
||||
float bandwidthKHz = 0;
|
||||
uint8_t spreadingFactor = 0;
|
||||
float rssi = 0; // dBm
|
||||
float snr = 0; // dB
|
||||
float noiseFloor = 0; // dBm, instantaneous RSSI just before the packet, when known
|
||||
uint8_t syncWord = 0;
|
||||
};
|
||||
|
||||
// A Capture file (M3, Q97): pcap with LoRaTap v0 headers (LINKTYPE_LORATAP, 270), which Wireshark
|
||||
// reads. pcap fields are little-endian, LoRaTap fields big-endian.
|
||||
void appendPcapHeader(std::vector<uint8_t>& out);
|
||||
void appendRecord(std::vector<uint8_t>& out, uint32_t seconds, uint32_t micros, const RxInfo& rx, const uint8_t* data,
|
||||
size_t len);
|
||||
|
||||
constexpr size_t kLoraTapSize = 15;
|
||||
constexpr size_t kRecordOverhead = 16 + kLoraTapSize;
|
||||
|
||||
} // namespace roro::lora
|
||||
Reference in New Issue
Block a user