mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-09-22 11:45:07 -04:00
NodeRadioTransport runs a meshtastic-node-kmp MeshNode inside the app and speaks the firmware phone API to it over PhoneApiSession, so every screen works on top of the phone's own node with no radio in the path: BLE advertisements and mesh-peer GATT to other phones and BLE-mesh radios, and LoRa through a CH341 stick on the USB-C port. Config writes land in the node's AdminService and persist; a lora write rebuilds the bearer the way a radio reboots for one. TX power is capped at 10 dBm for a bus-powered stick. Offered as "This device as a mesh node" behind the Demo Mode gate, address prefix 'p'. BLUETOOTH_ADVERTISE joins the manifest and the runtime set, since the node is a peripheral and an advertiser. Demo branch for VCF Midwest: depends on node-kmp from ~/.m2 (-PuseMavenLocal=1, 0.1.0-pb2.8.0.35-g3b3df2a-SNAPSHOT, built from e808296 against this app's protobufs pin), so it is not mergeable as-is and skips the spec lifecycle on purpose. No foreground service yet; Wi-Fi Aware and UDP not wired in.
:core:common
Overview
Targets: Android · JVM (Desktop) · iOS
The :core:common module contains low-level utility functions, extensions, and common data structures that do not depend on any other Meshtastic-specific modules. It is designed to be highly reusable across the project.
Key Components
1. util package
Contains general-purpose extensions and helpers:
- Coroutines: Helpers for structured concurrency and Flow transformations.
- Time: Utilities for handling timestamps and durations, plus
DateFormatterfor display dates. - Exceptions: Standardized exception types for common error scenarios.
NumberFormatter: Locale-aware number formatting (pre-format floats before Compose display).UrlUtils/CommonUri: URL helpers and a multiplatform URI abstraction.
2. MetricFormatter.kt
Centralized utility for display strings — temperature, voltage, current, percent, humidity, pressure, SNR, RSSI. Ensures consistent unit spacing and formatting across all UI surfaces.
3. BuildConfigProvider.kt
An interface for accessing build-time configuration in a multiplatform-friendly way.
Dependency Graph
graph TB
:core:common[common]:::kmp-library
classDef android-application fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef android-application-compose fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef compose-desktop-application fill:#CAFFBF,stroke:#000,stroke-width:2px,color:#000;
classDef android-feature fill:#FFD6A5,stroke:#000,stroke-width:2px,color:#000;
classDef android-library fill:#9BF6FF,stroke:#000,stroke-width:2px,color:#000;
classDef android-library-compose fill:#9BF6FF,stroke:#000,stroke-width:2px,color:#000;
classDef android-test fill:#A0C4FF,stroke:#000,stroke-width:2px,color:#000;
classDef jvm-library fill:#BDB2FF,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-feature fill:#FFD6A5,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-library-compose fill:#FFC1CC,stroke:#000,stroke-width:2px,color:#000;
classDef kmp-library fill:#FFC1CC,stroke:#000,stroke-width:2px,color:#000;
classDef unknown fill:#FFADAD,stroke:#000,stroke-width:2px,color:#000;