ReactionEntity
-
+
+
- + + +
-
+
ReactionEntity
- Constructors
-Properties
--
+
+
- + + +
-
+
toReaction
AutoMigration12to13
AutoMigration12to13
- AutoMigration29to30
AutoMigration29to30
- AutoMigration33to34
AutoMigration33to34
- AutoMigration34to35
AutoMigration34to35
- AutoMigration42to43
AutoMigration42to43
- Device links moved from the bundled urls.json to the resolved API; original_url is no longer stored.
Device links moved from the bundled urls.json to the resolved API; original_url is no longer stored.
configureCommon
Configures a RoomDatabase.Builder with standard settings for this project.
All platforms force setSingleConnectionPool. Without it, Room defaults to a 4-reader pool for named databases, and under coroutine cancellation churn (e.g. DB switches via flatMapLatest) the reader-pool permit semaphore can wedge: all reader connections report Free but permits=0, so every read acquisition times out indefinitely ("Error code: 5, Timed out attempting to acquire a reader connection"). Android hit this first; desktop (Flathub, 2026-07-10) reproduced the identical wedge in field logs, so JVM/iOS were moved off the multi-reader pool too. Single-connection eliminates the separate reader permit pool entirely.
For in-memory databases (tests) this is a no-op for pooling — Room already serves name == null databases from a single connection — it just serializes the query dispatcher.
Configures a RoomDatabase.Builder with standard settings for this project.
All platforms force setSingleConnectionPool. Without it, Room defaults to a 4-reader pool for named databases, and under coroutine cancellation churn (e.g. DB switches via flatMapLatest) the reader-pool permit semaphore can wedge: all reader connections report Free but permits=0, so every read acquisition times out indefinitely ("Error code: 5, Timed out attempting to acquire a reader connection"). Android hit this first; desktop (Flathub, 2026-07-10) reproduced the identical wedge in field logs, so JVM/iOS were moved off the multi-reader pool too. Single-connection eliminates the separate reader permit pool entirely.
For in-memory databases (tests) this is a no-op for pooling — Room already serves name == null databases from a single connection — it just serializes the query dispatcher.
MeshtasticDatabase
bootloaderOtaQuirksDao
channelSetDao
deviceHardwareDao
deviceLinkDao
discoveryDao
eventFirmwareEditionDao
firmwareReleaseDao
MeshtasticDatabase
- maintenanceUf2Dao
mergeMarkerDao
meshLogDao
nodeInfoDao
packetDao
quickChatActionDao
tracerouteNodePositionDao
Reaction
-
+
+
- + + +
-
+
channel
emoji
hopsAway
Reaction
-Constructors
-Properties
-The radio's verdict on the ack that delivered this outgoing reaction (see MeshPacket.AckProofStatus).
True when the radio verified this broadcast reaction's XEdDSA signature (MeshPacket.xeddsa_signed).
packetId
relayNode
relays
replyId
routingError
rssi
sfppHash
snr
status
timestamp
to
user
-
+
+
- + + +
-
+
RobolectricBleBonding
Reusable Robolectric helpers for driving Android Bluetooth bonding logic in androidHostTest source sets.
These let a unit test exercise the real AndroidBluetoothRepository.bond() (and any future BLE bonding code) without an emulator and without a production seam. They rely on two Robolectric behaviors (verified against Robolectric 4.16.x):
android.bluetooth.BluetoothAdapter.getRemoteDevice caches the returned BluetoothDevice by address in a static map, so the shadow configured here is the same instance production code reads when it calls
getRemoteDevice(mac)internally.ShadowBluetoothDevice.createBond calls
checkForBluetoothConnectPermission()first, so tests must call grantBluetoothConnectPermission orcreateBond()throws SecurityException instead of returning a value.
Isolation note: because the device cache is static and survives across tests in the same JVM, give each test a distinct MAC so bond-state cannot bleed between tests.
Reusable Robolectric helpers for driving Android Bluetooth bonding logic in androidHostTest source sets.
These let a unit test exercise the real AndroidBluetoothRepository.bond() (and any future BLE bonding code) without an emulator and without a production seam. They rely on two Robolectric behaviors (verified against Robolectric 4.16.x):
android.bluetooth.BluetoothAdapter.getRemoteDevice caches the returned BluetoothDevice by address in a static map, so the shadow configured here is the same instance production code reads when it calls
getRemoteDevice(mac)internally.ShadowBluetoothDevice.createBond calls
checkForBluetoothConnectPermission()first, so tests must call grantBluetoothConnectPermission orcreateBond()throws SecurityException instead of returning a value.
Isolation note: because the device cache is static and survives across tests in the same JVM, give each test a distinct MAC so bond-state cannot bleed between tests.