fix: toast tekst ingekort, settings balk volledig klikbaar, version-check fallback voor oude ESP firmware

This commit is contained in:
eddy 2026-07-30 17:25:57 +02:00
commit 57ef68fcab
4 changed files with 27 additions and 20 deletions

View file

@ -288,11 +288,13 @@ class BleRelayManager(
if (versionChar != null) { if (versionChar != null) {
val ok = gatt.readCharacteristic(versionChar) val ok = gatt.readCharacteristic(versionChar)
if (!ok) { if (!ok) {
Log.w(TAG, "readCharacteristic(VERSION) returned false, skipping version check") Log.w(TAG, "readCharacteristic(VERSION) returned false, treating as no version")
handler.post { callbacks.onFirmwareVersion("", appVersion) }
handler.post { callbacks.onStatusChanged(BleStatus.Connected) } handler.post { callbacks.onStatusChanged(BleStatus.Connected) }
} }
} else { } else {
Log.d(TAG, "VERSION characteristic not found, skipping version check") Log.d(TAG, "VERSION characteristic not found on ESP (old firmware)")
handler.post { callbacks.onFirmwareVersion("", appVersion) }
handler.post { callbacks.onStatusChanged(BleStatus.Connected) } handler.post { callbacks.onStatusChanged(BleStatus.Connected) }
} }
} else { } else {
@ -301,14 +303,16 @@ class BleRelayManager(
handler.post { callbacks.onStatusChanged(BleStatus.WrongDevice) } handler.post { callbacks.onStatusChanged(BleStatus.WrongDevice) }
gatt.disconnect() gatt.disconnect()
} }
} else if (characteristic.uuid == VERSION_UUID && status == BluetoothGatt.GATT_SUCCESS) {
val version = String(value, Charsets.UTF_8).trim()
espVersion = version
Log.d(TAG, "ESP firmware version: $version, app bundled: $appVersion")
handler.post { callbacks.onFirmwareVersion(version, appVersion) }
handler.post { callbacks.onStatusChanged(BleStatus.Connected) }
} else if (characteristic.uuid == VERSION_UUID) { } else if (characteristic.uuid == VERSION_UUID) {
Log.w(TAG, "Version read failed (status=$status), using Connected anyway") if (status == BluetoothGatt.GATT_SUCCESS) {
val version = String(value, Charsets.UTF_8).trim()
espVersion = version
Log.d(TAG, "ESP firmware version: $version, app bundled: $appVersion")
handler.post { callbacks.onFirmwareVersion(version, appVersion) }
} else {
Log.w(TAG, "Version read failed (status=$status), treating as no version")
handler.post { callbacks.onFirmwareVersion("", appVersion) }
}
handler.post { callbacks.onStatusChanged(BleStatus.Connected) } handler.post { callbacks.onStatusChanged(BleStatus.Connected) }
} }
} }

View file

@ -10,7 +10,6 @@ import android.os.Handler
import android.os.Looper import android.os.Looper
import android.view.MotionEvent import android.view.MotionEvent
import android.widget.Button import android.widget.Button
import android.widget.ImageButton
import android.widget.TextView import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
@ -97,9 +96,9 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
statusText = findViewById(R.id.statusText) statusText = findViewById(R.id.statusText)
relay1Button = findViewById(R.id.relay1Button) relay1Button = findViewById(R.id.relay1Button)
relay2Button = findViewById(R.id.relay2Button) relay2Button = findViewById(R.id.relay2Button)
val settingsButton = findViewById<ImageButton>(R.id.settingsButton) val settingsContainer = findViewById<android.view.View>(R.id.settingsContainer)
settingsButton.setOnClickListener { settingsContainer.setOnClickListener {
startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_SETTINGS) startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_SETTINGS)
} }
setupRelayButton() setupRelayButton()
@ -222,7 +221,7 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
} }
override fun onFirmwareVersion(espVersion: String, appVersion: String) { override fun onFirmwareVersion(espVersion: String, appVersion: String) {
if (espVersion != appVersion) { if (espVersion.isEmpty() || espVersion != appVersion) {
runOnUiThread { runOnUiThread {
Toast.makeText(this, getString(R.string.ota_update_available), Toast.LENGTH_LONG).show() Toast.makeText(this, getString(R.string.ota_update_available), Toast.LENGTH_LONG).show()
} }

View file

@ -4,12 +4,16 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:padding="16dp"> android:padding="16dp">
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:id="@+id/settingsContainer"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_gravity="end|top" android:layout_height="wrap_content"
android:orientation="horizontal" android:layout_gravity="end|top"
android:gravity="center_vertical"> android:orientation="horizontal"
android:gravity="center_vertical"
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"

View file

@ -107,7 +107,7 @@
<string name="button_ota_update">Firmware bijwerken via Bluetooth</string> <string name="button_ota_update">Firmware bijwerken via Bluetooth</string>
<string name="title_ota_update">OTA Firmware Update</string> <string name="title_ota_update">OTA Firmware Update</string>
<string name="msg_ota_starting">OTA update starten...</string> <string name="msg_ota_starting">OTA update starten...</string>
<string name="ota_update_available">Nieuwe firmware beschikbaar — open Instellingen om bij te werken</string> <string name="ota_update_available">Nieuwe firmware beschikbaar</string>
<string name="ota_complete">Update voltooid! ESP herstart...</string> <string name="ota_complete">Update voltooid! ESP herstart...</string>
<string name="ota_failed">OTA update mislukt: %s</string> <string name="ota_failed">OTA update mislukt: %s</string>
<string name="ota_load_failed">Kan firmware bestand niet laden</string> <string name="ota_load_failed">Kan firmware bestand niet laden</string>