Store & Forward packet type support #97
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Store & Forward packet type support in the logs.
Currently it's displayed as "Other app packet" with these details:
Two questions to settle before any code: (1) how granular should the packet-type taxonomy be and (2) what does the STORE_FORWARD_APP payload actually carry that the existing traceroute-style details view needs.
On the packet-type side
The current
portnum_name = "STORE_FORWARD_APP"fallback to"Other app packet"is just the default unknown-portnum branch. A clean fix is to add a single enum case —PacketType::StoreForward— in the sameportnum.ts/packet_type.gofile that already enumeratesPosition,Telemetry,Traceroute, etc. No schema change, no migration; just one more variant. The enum is the load-bearing piece — every downstream surface (log filters, map legend, statistics bins) keys off it.web/src/types/packet.ts(or the equivalent Go enum ininternal/projection/)StoreForward = 'STORE_FORWARD_APP'?packet_type=...)On the custom details view — what to actually show
The S&F module has two distinct modes in Meshtastic firmware (see the
StoreAndForward.protodefinition inmeshtastic/firmware): the server side (history pulls,Historymessages) and the client side (WantNodeNum,HistoryRequest,Heartbeat). Whether the user actually needs a custom view depends on which direction the captured packets came from.StoreAndForward.Server.History(binary)(node_num, timestamp, payload_portnum)triples — decoded from thevarint-length-prefixedrepeated HistoryfieldStoreAndForward.Client.HistoryRequest/WantNodeNum/Heartbeatwanted_dest,last_heard,from_nodeMy recommendation
PacketDetailsTraceroute.tsxand the corresponding Go decoder to crib the structure.Historydecoding to a separate issue gated on a concrete share of S&F packets being captured. Decoding the binaryrepeated Historyblock is the one piece of work that needs a careful protobuf dependency decision, and there's no point paying that cost until we know the data is actually present in the local capture.One thing worth deciding before PR 1 lands
Should the S&F bucket group with routing packets (Heartbeat, Traceroute, StoreForward) or with data packets (Position, Telemetry, TextMessage)? I'd say routing — the payload is about moving data to/from a store, not about user-visible content — but the log filter sidebar taxonomy might disagree. Worth pinning down because renaming a packet-type group later is a UI-breaking change for anyone with saved filters.
Smallest first PR checklist
StoreForwardto the packet-type enum.STORE_FORWARD_APP→StoreForwardin the projection layer (single switch case, same file as the existing portnum-name mapping).Open questions
StoreAndForward.protoalready vendored inweb/src/proto/, or does the project rely on the upstreammeshtastic/firmwarecheckout at build time? Affects whether PR 2 needs abuf generatestep in CI.