diff --git a/android/app/src/main/java/nl/eddydevink/sylda/BleRelayManager.kt b/android/app/src/main/java/nl/eddydevink/sylda/BleRelayManager.kt index a004c34..f57eca9 100644 --- a/android/app/src/main/java/nl/eddydevink/sylda/BleRelayManager.kt +++ b/android/app/src/main/java/nl/eddydevink/sylda/BleRelayManager.kt @@ -288,11 +288,13 @@ class BleRelayManager( if (versionChar != null) { val ok = gatt.readCharacteristic(versionChar) 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) } } } 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) } } } else { @@ -301,14 +303,16 @@ class BleRelayManager( handler.post { callbacks.onStatusChanged(BleStatus.WrongDevice) } 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) { - 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) } } } diff --git a/android/app/src/main/java/nl/eddydevink/sylda/MainActivity.kt b/android/app/src/main/java/nl/eddydevink/sylda/MainActivity.kt index a077def..604ddab 100644 --- a/android/app/src/main/java/nl/eddydevink/sylda/MainActivity.kt +++ b/android/app/src/main/java/nl/eddydevink/sylda/MainActivity.kt @@ -10,7 +10,6 @@ import android.os.Handler import android.os.Looper import android.view.MotionEvent import android.widget.Button -import android.widget.ImageButton import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity @@ -97,9 +96,9 @@ class MainActivity : AppCompatActivity(), BleCallbacks { statusText = findViewById(R.id.statusText) relay1Button = findViewById(R.id.relay1Button) relay2Button = findViewById(R.id.relay2Button) - val settingsButton = findViewById(R.id.settingsButton) + val settingsContainer = findViewById(R.id.settingsContainer) - settingsButton.setOnClickListener { + settingsContainer.setOnClickListener { startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_SETTINGS) } setupRelayButton() @@ -222,7 +221,7 @@ class MainActivity : AppCompatActivity(), BleCallbacks { } override fun onFirmwareVersion(espVersion: String, appVersion: String) { - if (espVersion != appVersion) { + if (espVersion.isEmpty() || espVersion != appVersion) { runOnUiThread { Toast.makeText(this, getString(R.string.ota_update_available), Toast.LENGTH_LONG).show() } diff --git a/android/app/src/main/res/layout/activity_main.xml b/android/app/src/main/res/layout/activity_main.xml index 1849496..1219dc9 100644 --- a/android/app/src/main/res/layout/activity_main.xml +++ b/android/app/src/main/res/layout/activity_main.xml @@ -4,12 +4,16 @@ android:layout_height="match_parent" android:padding="16dp"> - + Firmware bijwerken via Bluetooth OTA Firmware Update OTA update starten... - Nieuwe firmware beschikbaar — open Instellingen om bij te werken + Nieuwe firmware beschikbaar Update voltooid! ESP herstart... OTA update mislukt: %s Kan firmware bestand niet laden