Skip to content

Commit 0f50eab

Browse files
committed
android: move ATT code to viewmodel from screens and enable notifications
1 parent 1381022 commit 0f50eab

11 files changed

Lines changed: 383 additions & 644 deletions

File tree

android/app/src/main/java/me/kavishdevar/librepods/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ fun Main() {
466466
OpenSourceLicensesScreen(navController)
467467
}
468468
composable("update_hearing_test") {
469-
if (airPodsViewModel != null) UpdateHearingTestScreen()
469+
if (airPodsViewModel != null) UpdateHearingTestScreen(airPodsViewModel)
470470
}
471471
composable("version_info") {
472472
if (airPodsViewModel != null) VersionScreen(airPodsViewModel)

android/app/src/main/java/me/kavishdevar/librepods/bluetooth/ATTManager.kt

Lines changed: 141 additions & 192 deletions
Large diffs are not rendered by default.

android/app/src/main/java/me/kavishdevar/librepods/bluetooth/ATTManagerv2.kt

Lines changed: 0 additions & 63 deletions
This file was deleted.

android/app/src/main/java/me/kavishdevar/librepods/data/HearingAid.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ import kotlinx.coroutines.Job
2626
import kotlinx.coroutines.delay
2727
import kotlinx.coroutines.launch
2828
import me.kavishdevar.librepods.bluetooth.ATTHandles
29-
import me.kavishdevar.librepods.bluetooth.ATTManager
30-
import me.kavishdevar.librepods.bluetooth.ATTManagerv2
3129
import java.io.IOException
3230
import java.nio.ByteBuffer
3331
import java.nio.ByteOrder
@@ -139,15 +137,15 @@ fun parseHearingAidSettingsResponse(data: ByteArray): HearingAidSettings? {
139137
}
140138

141139
fun sendHearingAidSettings(
142-
// attManager: ATTManager,
140+
currentData: ByteArray,
143141
hearingAidSettings: HearingAidSettings,
144-
debounceJob: MutableState<Job?>
142+
debounceJob: MutableState<Job?>,
143+
sender: (ATTHandles, ByteArray) -> Unit
145144
) {
146145
debounceJob.value?.cancel()
147146
debounceJob.value = CoroutineScope(Dispatchers.IO).launch {
148147
delay(100)
149148
try {
150-
val currentData = ATTManagerv2.readCharacteristic(ATTHandles.HEARING_AID)?: return@launch
151149
Log.d(TAG, "Current data before update: ${currentData.joinToString(" ") { String.format("%02X", it) }}")
152150
if (currentData.size < 104) {
153151
Log.w(TAG, "Current data size ${currentData.size} too small, cannot send settings")
@@ -185,7 +183,7 @@ fun sendHearingAidSettings(
185183

186184
Log.d(TAG, "Sending updated settings: ${currentData.joinToString(" ") { String.format("%02X", it) }}")
187185

188-
ATTManagerv2.writeCharacteristic(ATTHandles.HEARING_AID, currentData)
186+
sender(ATTHandles.HEARING_AID, currentData)
189187
} catch (e: IOException) {
190188
e.printStackTrace()
191189
}

android/app/src/main/java/me/kavishdevar/librepods/data/Transparency.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ data class TransparencySettings(
8383
}
8484
}
8585

86-
fun parseTransparencySettingsResponse(data: ByteArray): TransparencySettings {
86+
fun parseTransparencySettingsResponse(data: ByteArray): TransparencySettings? {
87+
if (data.size < 50) return null // 50 is arbitrary, too lazy to count
8788
val buffer = ByteBuffer.wrap(data).order(ByteOrder.LITTLE_ENDIAN)
8889

8990
val enabled = buffer.float

0 commit comments

Comments
 (0)