Filing this as a protocol-compatibility tracking item, found while
comparing Meck's mesh-layer implementation against current upstream
meshcore-dev/MeshCore to check interop between this fork (built on
MeshCore v1.11 core) and mainline (currently v1.16) on a shared mesh.
Delta found
BaseChatMesh::onGroupDataRecv() (src/helpers/BaseChatMesh.cpp:355) only
handles PAYLOAD_TYPE_GRP_TXT. There's no branch for PAYLOAD_TYPE_GRP_DATA (0x06) and no sendGroupData() — this fork can
neither receive nor send channel binary datagrams. Mesh::onRecvPacket()
already decrypts GRP_DATA packets and calls onGroupDataRecv() exactly
like GRP_TXT (src/Mesh.cpp:215-238), so the data does arrive — it's
silently dropped at the application layer with no log.
Why it's worth tracking
GRP_DATA is upstream's registered extension point for apps to broadcast
structured (non-chat) data over a channel, per
docs/number_allocations.md:
0x0100 MeshCore Open (github.com/zjs81/meshcore-open)
0x0110-011F Ripple (the official MeshCore companion app/UI)
Any device sharing a channel with this fork's devices that broadcasts
data via one of those registered apps will have that data silently
ignored on this side — not a crash, just an interop gap.
If/when implemented
Current upstream wire format (as of mainline commit 2f687691, "fix:
Widen grp data type") is:
(data_type was 1 byte in the original upstream implementation, PR #1928; it's since been widened to 2 bytes, so any new implementation
here should target the current format to stay compatible with current
mainline-based peers.)
Scope
Regular channel text chat (GRP_TXT) and direct messages are unaffected
by this gap — this is specific to the GRP_DATA extension mechanism.
Not filing as urgent, just tracking the delta for future interop work.
Filing this as a protocol-compatibility tracking item, found while
comparing Meck's mesh-layer implementation against current upstream
meshcore-dev/MeshCore to check interop between this fork (built on
MeshCore v1.11 core) and mainline (currently v1.16) on a shared mesh.
## Delta found
`BaseChatMesh::onGroupDataRecv()` (src/helpers/BaseChatMesh.cpp:355) only
handles `PAYLOAD_TYPE_GRP_TXT`. There's no branch for
`PAYLOAD_TYPE_GRP_DATA` (0x06) and no `sendGroupData()` — this fork can
neither receive nor send channel binary datagrams. Mesh::onRecvPacket()
already decrypts GRP_DATA packets and calls onGroupDataRecv() exactly
like GRP_TXT (src/Mesh.cpp:215-238), so the data does arrive — it's
silently dropped at the application layer with no log.
## Why it's worth tracking
GRP_DATA is upstream's registered extension point for apps to broadcast
structured (non-chat) data over a channel, per
docs/number_allocations.md:
0x0100 MeshCore Open (github.com/zjs81/meshcore-open)
0x0110-011F Ripple (the official MeshCore companion app/UI)
Any device sharing a channel with this fork's devices that broadcasts
data via one of those registered apps will have that data silently
ignored on this side — not a crash, just an interop gap.
## If/when implemented
Current upstream wire format (as of mainline commit 2f687691, "fix:
Widen grp data type") is:
data_type(2, little-endian) · data_len(1) · payload
(data_type was 1 byte in the original upstream implementation, PR
#1928; it's since been widened to 2 bytes, so any new implementation
here should target the current format to stay compatible with current
mainline-based peers.)
## Scope
Regular channel text chat (GRP_TXT) and direct messages are unaffected
by this gap — this is specific to the GRP_DATA extension mechanism.
Not filing as urgent, just tracking the delta for future interop work.
<!-- github-sync-id:4679949841 -->
Sorry, I'll confess I completely forgot about this. As you can see, it's now been incorporated into a new commit. I need to do quite a bit of testing still, but It'll be in the v1.15 firmware rollout.
Sorry, I'll confess I completely forgot about this. As you can see, it's now been incorporated into a new commit. I need to do quite a bit of testing still, but It'll be in the v1.15 firmware rollout.
<!-- github-comment-id:6091478823 -->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Filing this as a protocol-compatibility tracking item, found while
comparing Meck's mesh-layer implementation against current upstream
meshcore-dev/MeshCore to check interop between this fork (built on
MeshCore v1.11 core) and mainline (currently v1.16) on a shared mesh.
Delta found
BaseChatMesh::onGroupDataRecv()(src/helpers/BaseChatMesh.cpp:355) onlyhandles
PAYLOAD_TYPE_GRP_TXT. There's no branch forPAYLOAD_TYPE_GRP_DATA(0x06) and nosendGroupData()— this fork canneither receive nor send channel binary datagrams. Mesh::onRecvPacket()
already decrypts GRP_DATA packets and calls onGroupDataRecv() exactly
like GRP_TXT (src/Mesh.cpp:215-238), so the data does arrive — it's
silently dropped at the application layer with no log.
Why it's worth tracking
GRP_DATA is upstream's registered extension point for apps to broadcast
structured (non-chat) data over a channel, per
docs/number_allocations.md:
0x0100 MeshCore Open (github.com/zjs81/meshcore-open)
0x0110-011F Ripple (the official MeshCore companion app/UI)
Any device sharing a channel with this fork's devices that broadcasts
data via one of those registered apps will have that data silently
ignored on this side — not a crash, just an interop gap.
If/when implemented
Current upstream wire format (as of mainline commit 2f687691, "fix:
Widen grp data type") is:
data_type(2, little-endian) · data_len(1) · payload
(data_type was 1 byte in the original upstream implementation, PR
#1928; it's since been widened to 2 bytes, so any new implementation
here should target the current format to stay compatible with current
mainline-based peers.)
Scope
Regular channel text chat (GRP_TXT) and direct messages are unaffected
by this gap — this is specific to the GRP_DATA extension mechanism.
Not filing as urgent, just tracking the delta for future interop work.
Sorry, I'll confess I completely forgot about this. As you can see, it's now been incorporated into a new commit. I need to do quite a bit of testing still, but It'll be in the v1.15 firmware rollout.
Closing as it's been added to https://github.com/pelgraine/Meck/releases/tag/v1.15-max with Pro soon to follow.