diff --git a/lib_utils/src/main/java/no/nordicsemi/android/utils/TryOrLog.kt b/lib_utils/src/main/java/no/nordicsemi/android/utils/TryOrLog.kt new file mode 100644 index 00000000..e3ad5ee7 --- /dev/null +++ b/lib_utils/src/main/java/no/nordicsemi/android/utils/TryOrLog.kt @@ -0,0 +1,9 @@ +package no.nordicsemi.android.utils + +suspend fun tryOrLog(block: suspend () -> Unit) { + try { + block() + } catch (t: Throwable) { + t.printStackTrace() + } +} diff --git a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt index 5cb4fac5..dd1a35b3 100644 --- a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt +++ b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt @@ -70,6 +70,7 @@ import no.nordicsemi.android.kotlin.ble.profile.racp.RACPResponseCode import no.nordicsemi.android.service.DEVICE_DATA import no.nordicsemi.android.service.NotificationService import no.nordicsemi.android.utils.launchWithCatch +import no.nordicsemi.android.utils.tryOrLog import java.util.* import javax.inject.Inject @@ -224,7 +225,9 @@ internal class CGMService : NotificationService() { } if (sessionStartTime == 0L) { - opsControlPointCharacteristic.write(CGMSpecificOpsControlPointDataParser.startSession(secured)) + tryOrLog { + opsControlPointCharacteristic.write(CGMSpecificOpsControlPointDataParser.startSession(secured)) + } } } @@ -260,13 +263,17 @@ internal class CGMService : NotificationService() { private suspend fun onNumberOfRecordsReceived(numberOfRecords: Int) { if (numberOfRecords > 0) { if (repository.hasRecords) { - recordAccessControlPointCharacteristic.write( - RecordAccessControlPointInputParser.reportStoredRecordsGreaterThenOrEqualTo(repository.highestSequenceNumber) - ) + tryOrLog { + recordAccessControlPointCharacteristic.write( + RecordAccessControlPointInputParser.reportStoredRecordsGreaterThenOrEqualTo(repository.highestSequenceNumber) + ) + } } else { - recordAccessControlPointCharacteristic.write( - RecordAccessControlPointInputParser.reportAllStoredRecords() - ) + tryOrLog { + recordAccessControlPointCharacteristic.write( + RecordAccessControlPointInputParser.reportAllStoredRecords() + ) + } } } repository.onNewRequestStatus(RequestStatus.SUCCESS) diff --git a/profile_gls/src/main/java/no/nordicsemi/android/gls/main/viewmodel/GLSViewModel.kt b/profile_gls/src/main/java/no/nordicsemi/android/gls/main/viewmodel/GLSViewModel.kt index 98f326c2..56707b13 100644 --- a/profile_gls/src/main/java/no/nordicsemi/android/gls/main/viewmodel/GLSViewModel.kt +++ b/profile_gls/src/main/java/no/nordicsemi/android/gls/main/viewmodel/GLSViewModel.kt @@ -82,6 +82,7 @@ import no.nordicsemi.android.kotlin.ble.profile.racp.RACPResponseCode import no.nordicsemi.android.toolbox.scanner.ScannerDestinationId import no.nordicsemi.android.ui.view.NordicLoggerFactory import no.nordicsemi.android.ui.view.StringConst +import no.nordicsemi.android.utils.tryOrLog import java.util.* import javax.inject.Inject @@ -268,13 +269,17 @@ internal class GLSViewModel @Inject constructor( if (numberOfRecords > 0) { try { if (state.value.glsServiceData.records.isNotEmpty()) { - recordAccessControlPointCharacteristic.write( - RecordAccessControlPointInputParser.reportStoredRecordsGreaterThenOrEqualTo(highestSequenceNumber) - ) + tryOrLog { + recordAccessControlPointCharacteristic.write( + RecordAccessControlPointInputParser.reportStoredRecordsGreaterThenOrEqualTo(highestSequenceNumber) + ) + } } else { - recordAccessControlPointCharacteristic.write( - RecordAccessControlPointInputParser.reportAllStoredRecords() - ) + tryOrLog { + recordAccessControlPointCharacteristic.write( + RecordAccessControlPointInputParser.reportAllStoredRecords() + ) + } } } catch (e: GattOperationException) { e.printStackTrace() diff --git a/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXService.kt b/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXService.kt index be7dd8ac..c30956c3 100644 --- a/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXService.kt +++ b/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXService.kt @@ -62,6 +62,7 @@ import no.nordicsemi.android.kotlin.ble.server.main.service.ServerBleGattService import no.nordicsemi.android.kotlin.ble.server.main.service.ServerBluetoothGattConnection import no.nordicsemi.android.service.DEVICE_DATA import no.nordicsemi.android.service.NotificationService +import no.nordicsemi.android.utils.tryOrLog import java.util.* import javax.inject.Inject @@ -200,7 +201,9 @@ internal class PRXService : NotificationService() { .catch { it.printStackTrace() } .launchIn(lifecycleScope) - linkLossCharacteristic.write(AlertLevelInputParser.parse(AlarmLevel.HIGH)) + tryOrLog { + linkLossCharacteristic.write(AlertLevelInputParser.parse(AlarmLevel.HIGH)) + } } private suspend fun writeAlertLevel(alarmLevel: AlarmLevel) {