From 682af406f55d62e2f1e5328a6f4ee88a5dc1d2c1 Mon Sep 17 00:00:00 2001 From: gogacoder Date: Tue, 19 Mar 2024 19:14:51 +0700 Subject: [PATCH] Correct discarding for invalid messages and small fixes --- app/src/main/java/com/helible/pilot/MainActivity.kt | 1 + .../com/helible/pilot/components/CalibrationPage.kt | 3 ++- .../pilot/components/deviceScreen/DeviceBadge.kt | 10 +++++++++- .../pilot/viewmodels/BluetoothDataTransferService.kt | 7 ++++--- app/src/main/res/values/strings.xml | 2 +- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/helible/pilot/MainActivity.kt b/app/src/main/java/com/helible/pilot/MainActivity.kt index 4eb72d2..f50c29e 100644 --- a/app/src/main/java/com/helible/pilot/MainActivity.kt +++ b/app/src/main/java/com/helible/pilot/MainActivity.kt @@ -23,6 +23,7 @@ import com.helible.pilot.components.deviceScreen.DeviceControlScreen import com.helible.pilot.components.deviceScreen.defaultDeviceActionsList import com.helible.pilot.components.PidSettingsPage import com.helible.pilot.components.scannerScreen.ScannerScreen +import com.helible.pilot.dataclasses.DeviceStatus import com.helible.pilot.permissions.PermissionsLauncher import com.helible.pilot.permissions.PermissionsRequest import com.helible.pilot.permissions.RequestHardwareFeatures diff --git a/app/src/main/java/com/helible/pilot/components/CalibrationPage.kt b/app/src/main/java/com/helible/pilot/components/CalibrationPage.kt index 4d8c5a5..5eb7528 100644 --- a/app/src/main/java/com/helible/pilot/components/CalibrationPage.kt +++ b/app/src/main/java/com/helible/pilot/components/CalibrationPage.kt @@ -1,5 +1,6 @@ package com.helible.pilot.components +import android.content.res.Configuration import android.widget.Spinner import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -70,7 +71,7 @@ fun CalibrationPage( } } -@Preview +@Preview(showSystemUi = true) @Composable fun CalibrationPagePreview() { Surface { diff --git a/app/src/main/java/com/helible/pilot/components/deviceScreen/DeviceBadge.kt b/app/src/main/java/com/helible/pilot/components/deviceScreen/DeviceBadge.kt index a69299e..c8b7c97 100644 --- a/app/src/main/java/com/helible/pilot/components/deviceScreen/DeviceBadge.kt +++ b/app/src/main/java/com/helible/pilot/components/deviceScreen/DeviceBadge.kt @@ -27,6 +27,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.helible.pilot.R import com.helible.pilot.dataclasses.BluetoothUiState +import com.helible.pilot.dataclasses.DeviceState import com.helible.pilot.dataclasses.DeviceStatus import com.helible.pilot.viewmodels.AppPreferences @@ -103,7 +104,14 @@ fun DeviceBadge( @Composable fun DeviceBadgePreview() { DeviceBadge( - bluetoothUiState = BluetoothUiState(isConnected = true), + bluetoothUiState = BluetoothUiState( + isConnected = false, + isConnecting = true, + deviceState = DeviceState( + status = DeviceStatus.Idle, + batteryCharge = 50, + ) + ), tryToReconnect = {}, getPreferences = { AppPreferences("Helicopter", "AA:BB:CC:FF:DD") } ) diff --git a/app/src/main/java/com/helible/pilot/viewmodels/BluetoothDataTransferService.kt b/app/src/main/java/com/helible/pilot/viewmodels/BluetoothDataTransferService.kt index bf0c3ab..ab0bc70 100644 --- a/app/src/main/java/com/helible/pilot/viewmodels/BluetoothDataTransferService.kt +++ b/app/src/main/java/com/helible/pilot/viewmodels/BluetoothDataTransferService.kt @@ -22,7 +22,6 @@ class BluetoothDataTransferService( return flow { if (!socket.isConnected) return@flow - val buffer = BufferedInputStream(socket.inputStream, maxPackageSize) while (true) { val message: String = try { @@ -39,9 +38,11 @@ class BluetoothDataTransferService( emit(GeneralMessage(messageType, messageData)) } } catch (e: NoSuchElementException) { - Log.e("BluetoothController", "Message type is invalid: $message") + Log.e("BluetoothController", "Message type is invalid: ${e.message}") } catch (e: NumberFormatException) { - Log.e("BluetoothController", "Message invalid, may be device buffer congested: $message") + Log.e("BluetoothController", "Message invalid, may be device buffer congested: ${e.message}") + } catch (e: Exception) { + Log.e("BluetoothController", "Unknown error: ${e.message}") } } }.flowOn(Dispatchers.IO) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a346cfb..952f568 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,6 +2,6 @@ Digital Pilot Расположите устройство на ровной горизонтальной поверхности, чтобы сани вертолета полностью лежали на ней. Нажмите кнопку калибровки ниже и ждите её окончания, не создавая тряски. Сначала подберите значение коэффицента P, которое балансирует между слишком низкой и слишком высокой чувствительностью. - Затем подберите значение коэффицента I, которое уберёт нежелательный дрейв, но не повлияет на отзывчивость. + Затем подберите значение коэффицента I, которое уберёт нежелательный дрейф, но не повлияет на отзывчивость. После установите значение коэффицента D таким образом, чтобы обеспечить более стабильное и плавное управление. \ No newline at end of file