Meshtastic-Android/core
James Rich a74d5d470a feat(core): implement batched node info handling for mesh handshake
This commit optimizes the mesh handshake protocol by introducing explicit support for `NodeInfoBatch` messages. It updates the configuration flow to handle both primary batched node delivery and legacy single-node delivery for backwards compatibility with older firmware.

Key changes include:

- **Batch Processing Optimization:**
    - Added `handleNodeInfoBatch` to the `MeshConfigFlowManager` interface to allow bulk processing of node information, reducing per-item overhead during the initial handshake.
    - Updated `MeshConfigFlowManagerImpl` to accumulate batched nodes efficiently using `addAll`.
    - Refactored `FromRadioPacketHandlerImpl` to delegate batch processing directly to the manager instead of iterating through individual items.

- **Handshake Protocol Updates:**
    - Updated `HandshakeConstants` to distinguish between `BATCH_NODE_INFO_NONCE` (primary Stage 2) and `NODE_INFO_NONCE` (legacy Stage 2).
    - Modified `handleConfigComplete` logic to trigger Stage 2 completion for both batched and legacy nonces.
    - Ensured `MeshConnectionManager` prioritizes the batch nonce when requesting node information.

- **Testing & Simulation:**
    - Created `MeshConfigFlowManagerImplTest` to validate node accumulation, batch handling, and handshake nonce routing.
    - Improved `MockInterface` to better simulate real-world packet ordering by delaying live traffic until after the handshake completion coroutine has processed the node database.
    - Added verification tests to ensure the connection manager uses the correct batching nonces.

Specific changes:
- Added `handleNodeInfoBatch` implementation to `MeshConfigFlowManagerImpl`.
- Updated documentation in `HandshakeConstants` regarding two-stage mesh handshake protocol.
- Refactored `MockInterface.sendStage2NodeInfoResponse` to handle packet encoding and simulation delays.
- Added unit tests covering edge cases for empty and mixed node info batches.
2026-04-03 10:51:17 -05:00
..
api feat(tak): introduce built-in Local TAK Server and mesh integration (#4951) 2026-04-01 20:21:25 +00:00
barcode feat(ci): shard test suite and enable JUnit 5 parallel execution (#4977) 2026-04-03 13:08:49 +00:00
ble feat(ci): shard test suite and enable JUnit 5 parallel execution (#4977) 2026-04-03 13:08:49 +00:00
common feat(ci): shard test suite and enable JUnit 5 parallel execution (#4977) 2026-04-03 13:08:49 +00:00
data feat(core): implement batched node info handling for mesh handshake 2026-04-03 10:51:17 -05:00
database feat(ci): shard test suite and enable JUnit 5 parallel execution (#4977) 2026-04-03 13:08:49 +00:00
datastore Refactor map layer management and navigation infrastructure (#4921) 2026-03-26 00:29:24 +00:00
di refactor: BLE transport and UI for Kotlin Multiplatform unification (#4911) 2026-03-25 02:15:51 +00:00
domain feat(wifi-provision): add mPWRD-OS branding and disclaimer banner (#4978) 2026-04-03 13:47:15 +00:00
model refactor: BLE transport and UI for Kotlin Multiplatform unification (#4911) 2026-03-25 02:15:51 +00:00
navigation feat(wifi): introduce BLE-based WiFi provisioning for nymea-compatible devices (#4968) 2026-04-02 17:31:17 +00:00
network feat(core): implement batched node info handling for mesh handshake 2026-04-03 10:51:17 -05:00
nfc refactor: BLE transport and UI for Kotlin Multiplatform unification (#4911) 2026-03-25 02:15:51 +00:00
prefs feat(ci): shard test suite and enable JUnit 5 parallel execution (#4977) 2026-04-03 13:08:49 +00:00
proto refactor: BLE transport and UI for Kotlin Multiplatform unification (#4911) 2026-03-25 02:15:51 +00:00
repository feat(core): implement batched node info handling for mesh handshake 2026-04-03 10:51:17 -05:00
resources chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4975) 2026-04-03 09:13:23 -05:00
service feat(ci): shard test suite and enable JUnit 5 parallel execution (#4977) 2026-04-03 13:08:49 +00:00
takserver feat(wifi-provision): add mPWRD-OS branding and disclaimer banner (#4978) 2026-04-03 13:47:15 +00:00
testing feat(analytics): expand DataDog RUM integration and align with iOS parity (#4970) 2026-04-01 20:27:28 +00:00
ui feat(ci): shard test suite and enable JUnit 5 parallel execution (#4977) 2026-04-03 13:08:49 +00:00