You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Android Companion App via BLE: Architecture & Implementation
Overview
Add an Android companion application that communicates with CYD boards via Bluetooth Low Energy (BLE) while preserving the existing ESP-NOW synchronization between the two CYD boards.
Architecture Document
See docs/ANDROID_COMPANION_ARCHITECTURE.md (to be added) for full specification.
Key Architectural Decisions (ADRs)
ADR
Decision
Rationale
ADR-001
Retain ESP-NOW for CYD↔CYD
Already implemented, encrypted, offline-capable
ADR-002
BLE for Android↔CYD
Both boards verified BLE; Android native BLE APIs
ADR-003
Shared C++ core via JNI/NDK
Single authoritative game/protocol implementation
ADR-004
Explicit packet serialization
No struct memory layout dependence
ADR-005
Spectator mode first
Validate transport before multi-writer sync
ADR-006
CYDs remain authoritative
Boards work offline when phone disconnects
ADR-007
BLE over BT Classic
GATT model, low power, notifications
System Architecture
[Android Phone] <---> BLE GATT <---> [CYD Host/Gateway] <---> ESP-NOW <---> [CYD Peer]
^ ^
Kotlin + C++ Core (shared)
Jetpack Compose (JNI on Android)
Phased Implementation Plan
Phase 1: Core Extraction & Protocol Hardening
Extract platform-neutral C++ logic into core/ (protocol, packet, serializer, reconciliation, active_game, mastermind, puzzle, aquarium)
Remove Arduino/ESP32 dependencies from core
Define explicit packet serialization (replace raw struct memcpy)
Android Companion App via BLE: Architecture & Implementation
Overview
Add an Android companion application that communicates with CYD boards via Bluetooth Low Energy (BLE) while preserving the existing ESP-NOW synchronization between the two CYD boards.
Architecture Document
See
docs/ANDROID_COMPANION_ARCHITECTURE.md(to be added) for full specification.Key Architectural Decisions (ADRs)
System Architecture
Phased Implementation Plan
Phase 1: Core Extraction & Protocol Hardening
core/(protocol, packet, serializer, reconciliation, active_game, mastermind, puzzle, aquarium)Phase 2: BLE Spectator Transport (Android Connects, Read-Only)
Phase 3: Android Native Core Integration
Phase 4: Android Player Actions
Phase 5: Persistence & History
Current State
core/include/include/protocol.hwith static_assert wire format checksAction Items (Start Here)
docs/main.cpptocore/Relevant Files
src/main.cpp,include/protocol.h,core/include/docs/ANDROID_COMPANION_ARCHITECTURE.mdandroid/directoryLabels
android,ble,architecture,enhancement