Package-level declarations
Types
Device configuration and control operations.
Configuration operations valid inside an AdminController.editSettings transaction, scoped to a single destination node so callers don't repeat the node number or manage packet IDs. Mirrors the SDK's AdminEdit.
Interface for handling admin messages from the mesh (config, metadata, session passkey).
Reactive interface for analytics-related preferences.
Reactive interface for App Functions (system AI integration) preferences.
Consolidated interface for all application preferences.
Interface for triggering updates to application widgets.
Detailed result for an awaited send. departureEpochAtDispatch captures the canonical departure counter when an active transport accepts the outbound bytes for asynchronous delivery. Its presence is also the single source of truth for dispatched, allowing callers to distinguish a later transport departure from one that happened while the packet was still queued. Correlated responses received before dispatch are ignored, so an accepted result always belongs to an admitted transport send.
Outcome of a packet whose caller waited for transport admission and any required routing result.
Provides the nRF52 bootloader/OTA quirk catalog resolved by the Meshtastic API (/resource/bootloaderOtaQuirks) and cached locally, seeded from the bundled device_bootloader_ota_quirks.json snapshot so it is never empty on a fresh install or while offline.
Interface for sending commands and packets to the mesh network.
Fresh-handshake identity for one connection session. Separate from the general NodeManager.myNodeNum/ NodeManager.myDeviceId StateFlows, which can retain stale cached values across transport switches. address, nodeNum, and deviceId are captured from one selected transport and one MyNodeInfo handshake so consumers never have to combine independently delivered address and identity flows. sessionGeneration is the active transport session generation at handshake time, so the association collector can discard an identity retained from a previous transport instance even if every other field is equal.
Owns canonical connection state, epochs, and compatibility projections under one publication lock.
Read-only provider of the canonical app-level connection state.
Reactive interface for emoji preferences.
Provides msh.to device links resolved by the Meshtastic API (/resource/deviceLinks) and cached locally. Vendor and region-filtered marketplace links are shown on the device hardware detail view, plus a full directory.
Interface for collecting packets during an active discovery scan. The scan engine implements this interface and registers/unregisters with the packet handler to receive packets during dwell windows.
Registry for discovery packet collectors. The scan engine registers itself when a scan starts and unregisters when it stops. The packet handler checks for an active collector and forwards packets to it.
Reactive interface for Local Mesh Discovery scan preferences.
An expected radio rejection or timeout at an edit-settings transaction boundary.
Event-firmware display metadata, seeded from the bundled event_firmware.json snapshot.
Abstracts file system operations (like reading from or writing to URIs) so that ViewModels can remain platform-independent.
Reactive interface for message filtering preferences.
Interface for dispatching non-packet FromRadio variants to their respective handlers.
Shared constants for the two-stage mesh handshake protocol.
Interface for managing store-and-forward history replay requests.
Reactive interface for homoglyph encoding preferences.
Thrown when a command requires the local node identity before that identity is available.
Android-specific location object typealias for KMP.
Platform-independent location object for KMP.
JVM placeholder location type for repository smoke compilation.
Abstracts high-level location requests (such as one-off current location) that may require platform-specific permission checks or hardware interactions.
Coordinates lockdown passphrase authentication for firmware-locked devices.
Encrypted per-device storage for lockdown passphrases.
The pinned nRF52/RP2040 maintenance-UF2 manifest (factory-erase and OTAFIX bootloader self-update images), seeded from a bundled asset and refreshed from resource/maintenanceUf2. Each image's own sha256 is still checked against its downloaded bytes before any write — see MaintenanceUf2.kt — this repository only caches the manifest that names those images.
Reactive interface for map consent.
Reactive interface for map tile provider settings.
Reactive persistence for received Mesh Beacon invitations. Records are opaque, self-describing strings (see MeshBeaconOffer.encode) so this prefs layer stays free of proto/model types.
Holds Mesh Beacon invitations received from other meshes. Beacons are advisory, zero-hop advertisements — not messages or contacts — so they live in the Discovery surface, which presents them for the user to Discover / Join / Dismiss. The list is capped and deduped in memory (the source of truth) and written through to MeshBeaconPrefs so invitations survive an app restart until the user explicitly dismisses them (Apple 014-mesh-beacons FR-015).
Interface for managing the configuration flow, including local node info and metadata.
Interface for handling device and module configuration updates.
Interface for managing the connection lifecycle and status with the mesh radio.
Interface for handling incoming mesh data packets and routing them to the appropriate handlers.
Interface for managing the local node's location updates and reporting.
Persisted policy used by background mesh-log cleanup.
Reactive interface for mesh log preferences.
Repository interface for managing and retrieving logs from the database.
Decodes MeshLogPrefs.retentionDays, which overloads two sentinels onto the day count: KEEP_FOREVER never prunes and ONE_HOUR keeps only the last hour.
Interface for processing incoming radio messages and mesh packets.
Mesh-domain notification builder. Provides high-level operations for the message arrival, waypoint, reaction, new node, low-battery, and client notification flows specific to this app. Implementations are expected to render the platform notification themselves; the generic dispatch primitive is NotificationManager (which posts/cancels opaque Notification records and is not domain-aware).
Interface for managing background workers for mesh-related tasks.
Interface for filtering messages based on user-configured filter words.
Interface for enqueuing background work for transmitting messages. This allows the domain layer to trigger durable transmission without depending on Android-specific WorkManager.
Messaging operations — sending data packets, reactions, and shared contacts.
Interface for managing MQTT proxy communication.
Interface for handling neighbor info responses from the mesh.
Read-only provider of neighbor info response state.
Node management operations — favorite, ignore, mute, and remove nodes.
Interface for managing the in-memory node database and processing received node information.
Repository interface for managing node-related data.
Tracks a window in which the locally connected node is expected to restart (a config save the firmware applies with a reboot, or an explicit reboot command). While the window is open, an observed transport disconnect is the expected consequence of the restart — the UI presents "restarting" instead of the alarming disconnected state, and the foreground-service notification stays on a connecting presentation.
Platform-agnostic notification dispatch primitive. Posts opaque Notification records, cancels by id, or wipes all active notifications. Intended as the lowest layer of the notification stack.
Reactive interface for notification preferences.
Interface for handling the transmission of packets to the radio and managing the packet queue.
Thrown when the outbound packet queue refuses admission for an operation.
Repository interface for managing mesh packets and message history.
A persisted packet paired with the stable row identity needed by durable background work.
Stable identity of one persisted packet row within its owning node database.
A persisted reaction paired with the exact row identity needed by durable background work.
Stable identity of one persisted reaction row within its owning node database.
Interface to abstract platform-specific functionalities, primarily for analytics and related services that differ between product flavors.
Mesh query operations — position, traceroute, telemetry, user info, and metadata.
Central interface for controlling the radio and mesh network.
Interface for the low-level radio interface that handles raw byte communication.
Reactive interface for radio settings.
Owns admission and revocation for work bound to one transport session.
Immutable identity of the transport session that admitted an inbound radio frame.
A lifecycle lease held by one already-admitted operation for session.
Interface for hardware transports (BLE, Serial, TCP, etc.) that handles raw byte communication. This is the KMP-compatible replacement for the legacy Android-specific IRadioInterface.
Narrow callback interface for transport → service communication.
Creates RadioTransport instances for specific device addresses.
Writes raw protocol frames to the currently admitted transport.
An inbound radio payload bound to the transport session that admitted it.
Encrypted per-node storage for security (public/private) key backups.
Interface for managing background service state, connection status, and mesh events.
Write-side interface for service state mutations.
Owns per-node remote-administration session state — the session passkey the firmware embeds in every admin response and the timestamp it was last refreshed at.
Stored passphrase entry with associated TTL parameters.
A public/private key pair backed up for a single node, plus when it was saved.
Interface for handling Store & Forward (legacy) and SF++ packets.
Interface for handling telemetry packets from the mesh, including battery notifications.
Interface for handling traceroute responses from the mesh.
Read-only provider of traceroute response state.
Repository interface for managing snapshots of traceroute results.
Machine-readable transport disconnect causes that need service/UI-specific handling.
A file received via an XModem transfer from the connected device.
Handles the XModem-CRC receive protocol for file transfers from the connected device.
Functions
Stable platform-notification identity shared by posting and cancellation paths.
Builds the device admin command for setting or removing a fixed position.
Converts the model position to the exact protobuf payload used by fixed-position admin commands.