Parent: #137. Implement the MeshCore Companion-over-USB bearer in DAPPS, validated by the standalone PoC in poc/MeshCorePoc/.
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).
Parent: #137. Implement the MeshCore Companion-over-USB bearer in DAPPS, validated by the standalone PoC in
poc/MeshCorePoc/.MeshCoreCompanionBackhaul : IDappsBackhaul— carryBackhaulMessageover the binary channel-data path (SEND_CHANNEL_DATA0x3E /CHANNEL_DATA_RECV0x1B),data_type=0xFFFF, 1-byte nonce/flags header (the mesh dedups identical frames — binary has no on-air timestamp). ReuseBackhaulMessageCodec+Packetiser.MSG_WAITING0x83 →SYNC_NEXT_MESSAGE0x0A pull loop) →IBackhaulInbox.DeliverAsync; sender identity viaLinkSourceCallsignwith aMESHCOREsentinel fallback.dapps-id, end-to-end ack, TTL resends with long backoff.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).