Skip to content

MeshCore H1: binary Companion bearer (IDappsBackhaul / IBackhaulInbox) #154

Description

@M0LTE

Parent: #137. Implement the MeshCore Companion-over-USB bearer in DAPPS, validated by the standalone PoC in poc/MeshCorePoc/.

  • MeshCoreCompanionBackhaul : IDappsBackhaul — carry BackhaulMessage over the binary channel-data path (SEND_CHANNEL_DATA 0x3E / CHANNEL_DATA_RECV 0x1B), data_type=0xFFFF, 1-byte nonce/flags header (the mesh dedups identical frames — binary has no on-air timestamp). Reuse BackhaulMessageCodec + Packetiser.
  • Hosted inbound reader (MSG_WAITING 0x83 → SYNC_NEXT_MESSAGE 0x0A pull loop) → IBackhaulInbox.DeliverAsync; sender identity via LinkSourceCallsign with a MESHCORE sentinel fallback.
  • zstd + versioned shared dictionary (collapses most messages to 1 packet; per-message compressed flag already in the wire header).
  • App-layer reliability over an unacked flood: idempotency on dapps-id, end-to-end ack, TTL resends with long backoff.
  • Discovery via B5 passive learning (no flooded beacons).

Wire-shape findings from the PoC (see poc/MeshCorePoc/README.md + CHARACTERISATION.md): firmware v1.16.0 returns the legacy 0x08 text frame (not v3 0x11) but binary 0x1B as expected; the text path auto-prepends "<name>: " (binary does not — verified byte-identical on air); ~165 B/packet; companion firmware can hang (needs a serial watchdog + reset).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions