Skip to content

feat(companion): frames for device-originated messages 馃馃 - #3447

Open
MarekZegare4 wants to merge 2 commits into
meshcore-dev:devfrom
MarekZegare4:feature/sent-msg-sync
Open

MarekZegare4 wants to merge 2 commits into
meshcore-dev:devfrom
MarekZegare4:feature/sent-msg-sync

Conversation

@MarekZegare4

Copy link
Copy Markdown

Refs #3225.

Adds RESP_CODE_CONTACT_MSG_SENT_V3 (30) and RESP_CODE_CHANNEL_MSG_SENT_V3 (31),
plus queueSentMessage() / queueSentChannelMessage(), so firmware that sends
messages on its own (bot replies, on-device keyboard) can mirror them into the
app's history. They use the existing offline queue and CMD_SYNC_NEXT_MESSAGE,
with the RECV_V3 layout (pubkey = recipient, SNR byte reserved). Needs
app_target_ver >= 3; older apps are skipped.

Mainline never calls them, so this only adds API surface for custom builds.
Flash usage is identical with and without the change.

Compatibility: a host that stops polling on an unknown packet type stalls the
queue. The second commit documents that hosts must keep polling on any
response, as already happened with 0x1B.

Builds: Heltec_v3_companion_radio_ble.

MarekZegare4 and others added 2 commits September 19, 2026 01:18
Adds RESP_CODE_CONTACT_MSG_SENT_V3 (0x1E) and
RESP_CODE_CHANNEL_MSG_SENT_V3 (0x1F) so firmware that sends messages on
its own (bot auto-replies, on-device keyboard input) can mirror them into
the companion app's history, which today only ever sees inbound traffic
and messages the app itself sent. See meshcore-dev#3225.

Both ride the existing offline-queue / MSG_WAITING / SYNC_NEXT_MESSAGE
pipe and reuse the RECV_V3 byte layout, with the pubkey field holding the
recipient instead of the sender and the SNR byte reserved. Requires
app_target_ver >= 3; there is no pre-V3 shape, so older apps are skipped.

Mainline never calls these -- nothing in companion_radio self-originates
messages -- so this is API surface for custom builds, and the linker
drops both functions when unused (identical flash usage before/after).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
CMD_SYNC_NEXT_MESSAGE drains a shared queue, so a host that only advances
its polling loop on packet types it recognizes stalls on the first unknown
one, and everything queued behind it stays undelivered until the next
PACKET_MESSAGES_WAITING. This already bit clients when
PACKET_CHANNEL_DATA_RECV (0x1B) was introduced; spelling it out so the
next added type doesn't repeat it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@MarekZegare4
MarekZegare4 marked this pull request as ready for review September 18, 2026 23:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant