eddy
0513e7777d
fix: USB/OTA update flow - version check, chunk size, UX improvements
...
- MainActivity: suppress toast when activity not resumed, auto-navigate to
Settings on new firmware
- SettingsActivity: unified BLE/USB radio buttons + single update button,
version check before OTA, show dialog before loadFirmware, spinner timeout
- BleRelayManager: expose getEspVersion()
- OtaManager: reduce chunk size 500→248 to fit BLE MTU 255
- ESP: WRITE→WRITE_NR on OTA characteristic (was silently dropping data)
- Layout/strings: remove intro text, add method radio buttons
- Bump all firmware versions to v5
2026-07-30 18:59:08 +02:00
eddy
e05d57a32c
fix: detecteer ontbrekende OTA characteristic en toon USB-flash melding
2026-07-30 17:37:05 +02:00
eddy
7e45cb4c56
feat: toon 'Firmware is up-to-date' toast bij gelijke versies
2026-07-30 17:29:09 +02:00
eddy
57ef68fcab
fix: toast tekst ingekort, settings balk volledig klikbaar, version-check fallback voor oude ESP firmware
2026-07-30 17:25:57 +02:00
eddy
1499d840ce
fix: handle missing VERSION characteristic gracefully on old ESP firmware
2026-07-30 17:20:38 +02:00
eddy
7607361019
feat: add OTA UI strings
2026-07-30 17:14:29 +02:00
eddy
1988ae3898
feat: add BLE OTA update button to SettingsActivity
2026-07-30 17:14:28 +02:00
eddy
675504cbf5
feat: add OtaManager for BLE firmware update
2026-07-30 17:14:27 +02:00
eddy
2ab1c83655
feat: show toast when firmware update available via BLE
2026-07-30 17:14:26 +02:00
eddy
5235057b83
feat: add version read, OTA characteristic, BLE MTU 512 in BleRelayManager
2026-07-30 17:14:25 +02:00
eddy
6042eceeea
feat: add onFirmwareVersion callback to BleCallbacks
2026-07-30 17:14:24 +02:00
eddy
3e880c9635
feat: bump firmware to v2, update bundled firmware asset
2026-07-30 17:09:09 +02:00
eddy
0833327cea
fix: code review fixes — SharedPreferences docs, Log.e, dead notify code
2026-07-29 23:51:16 +02:00
eddy
df5154732c
Remove intro text from settings, fix button text color in dark mode
...
- Removed 'Sluit de ESP aan op USB en kies een actie.' from settings screen
- Button text now black on light gray background (readable in dark mode)
2026-07-29 23:16:53 +02:00
eddy
4c022b8259
Rename package com.eddy.atomrelay -> nl.eddydevink.sylda, Dutch translations, UI cleanup
...
- Package renamed to nl.eddydevink.sylda (matches eddydevink.nl domain + Sylda app name)
- All status texts translated to Dutch (Niet verbonden, Verbonden, Zoeken, etc.)
- Removed exchange key button, build number, and success toasts
- Button text: Firmware bijwerken, instruction text shortened
- App title changed to Sylda, 'instellingen' label next to settings gear
- ON/HOLD changed to AAN/VAST
2026-07-29 23:09:43 +02:00
eddy
d6d6f6674a
Combined flash + key exchange flow with version check and USB permission persistence
...
- Firmware: add VERSION? command returning BUILD_NR for version check
- Android: flash button checks firmware version first, skips flash if current
- After flash: auto key exchange via reboot detection (expectingReboot flag)
- device_filter.xml + intent-filter: USB permission 'always allow' checkbox
- singleTop + onNewIntent prevents unwanted SettingsActivity launch on USB connect
- platformio.ini: upload_port updated to /dev/ttyACM1
2026-07-29 22:56:40 +02:00
eddy
96162a16be
Fix BLE scan: add neverForLocation to BLUETOOTH_SCAN (results suppressed without it on API 31+)
2026-07-29 22:26:43 +02:00
eddy
3ce2610bc8
Fix hasPermissions: remove ACCESS_FINE_LOCATION from API>=S check (maxSdkVersion=30 excludes it)
2026-07-29 22:10:15 +02:00
eddy
a025e66b61
Simplify permission flow: standard ActivityCompat pattern with one-shot guard
2026-07-29 22:04:46 +02:00
eddy
ecdd693ffa
Reset permissionsRequested flag after deny and on return from settings
2026-07-29 22:01:07 +02:00
eddy
ac2767c2b6
Fix permission dialog flash loop in onResume
2026-07-29 21:58:44 +02:00
eddy
d005fef3f6
Remove manual download-mode instructions, library auto-resets ESP
2026-07-29 21:55:06 +02:00
eddy
106bd25e41
Replace magic numbers with named constants, move remaining hardcoded strings to strings.xml
2026-07-29 20:56:00 +02:00
eddy
c46db32cc7
Move all user-facing strings to strings.xml, add user-facing-text.md reference
2026-07-29 20:48:20 +02:00
eddy
5fb67fdcf0
Button color: gray default, green pressed via setBackgroundColor
2026-07-29 20:42:03 +02:00
eddy
5a1f1da329
Button color: GradientDrawable swap (teal/green), no tint magic
2026-07-29 20:34:58 +02:00
eddy
817f9a0602
Fix button background restore: save/restore original Drawable instead of tint list null -> gray -> teal → grijs blijft grijs na loslaten
2026-07-29 20:29:30 +02:00
eddy
a3142ea85b
Add user-defined button labels with color change on press
...
- PrefsHelper: PREF_LABEL1, PREF_LABEL2 constants
- SettingsActivity: EditText fields with Done-keyboard action to save labels
- MainActivity: buttons show user label, colorAccent on press, textAllCaps disabled
- activity_main.xml: textAllCaps=false for case-sensitive labels
2026-07-29 20:25:27 +02:00
eddy
a6e5df0052
fix: thread safety, GATT cleanup, onResume guard, relay2 docs
2026-07-29 20:05:26 +02:00
eddy
404f46acf8
refactor: extract BLE logic from MainActivity to BleRelayManager
2026-07-29 19:58:44 +02:00
eddy
0f3b695140
feat: add BleRelayManager sendRelayCommand and disconnect
2026-07-29 19:56:40 +02:00
eddy
a60f6cdc1c
feat: add BleRelayManager GATT callback (connect, UUID verify, notifications)
2026-07-29 19:54:31 +02:00
eddy
92585455c8
feat: add BleRelayManager scan logic with permissions
2026-07-29 19:51:11 +02:00
eddy
82852e086e
feat: add BleRelayManager key/HMAC helpers and loadState
2026-07-29 19:49:00 +02:00
eddy
f41f1c3380
feat: add BleRelayManager class skeleton
2026-07-29 19:47:20 +02:00
eddy
61c5c1de32
feat: add BleStatus enum and BleCallbacks interface
2026-07-29 19:45:11 +02:00
eddy
d6e37322f3
fix: NimBLE 128-bit UUID scan response + Android key/UUID loading
...
- Firmware: add explicit setScanResponseData with setCompleteServices for
128-bit service UUID so Android ScanFilter finds the device
- Android: hexStringToBytes accepts any even-length hex (fixes UUID=32chars
failing the hardcoded 64-char check)
- Android: onActivityResult matches SettingsActivity.RESULT_SCAN instead of
Activity.RESULT_OK
2026-07-29 19:30:46 +02:00
eddy
96d3620535
feat: migrate BLE to NimBLE — 45% flash, 33% RAM reduction
...
- Replaced ESP32 BLE Arduino with h2zero/NimBLE-Arduino@^2
- -DCONFIG_BT_NIMBLE_ENABLED to disable built-in Bluedroid
- NIMBLE_PROPERTY::* replaces BLECharacteristic::PROPERTY_* + setAccessPermissions
- BLE2902 descriptor removed (NimBLE auto-creates it)
- pService->start() removed (NimBLE starts services with server)
- setMinPreferred → setMinInterval/setMaxInterval
- onConnect/onDisconnect/onWrite get extra NimBLEConnInfo& param
- Re-advertise: BLEDevice → NimBLEDevice::startAdvertising()
- Firmware: 533KB flash (was 964KB), 29KB RAM (was 44KB)
2026-07-29 18:58:49 +02:00
eddy
42b8092807
fix: replace EncryptedSharedPreferences with plain MODE_PRIVATE for update survival
2026-07-29 18:51:35 +02:00
eddy
348c55d830
feat: add device UUID pairing — unique identity per ESP-phone pair
...
- Firmware: auto-generate 16-byte UUID on first boot (NVS), new READ characteristic
- BLE name: AtomS3R-Relay → SylDa_Server
- KEY? now returns DEVICE_ID + HMAC_KEY, SET_ID command for UUID provisioning
- App: UUID+HMAC loaded from prefs, scan by service UUID, verify UUID after connect
- UUID mismatch → disconnect + skip address + rescan
- Key conflict dialog: keep ESP keys, overwrite ESP (with checkbox confirm), or cancel
- NO_KEY with existing app keys: send existing pair instead of generating new
- Added design spec doc
2026-07-29 18:12:13 +02:00
eddy
f676eb259d
Extract magic numbers to named constants (review 4.3)
...
- MainActivity: RECONNECT_DELAY_MS, POST_SETTINGS_RESCAN_MS, ON_RESUME_SCAN_DELAY_MS
- SettingsActivity: FLUSH_TIMEOUT_MS, READ_CHUNK_TIMEOUT_MS, CDC_CONTROL_TIMEOUT_MS
- UsbSerialTransport: CONTROL_LINE_TIMEOUT_MS
- UsbUtils: shared CDC request constants (REQUEST_TYPE, SET_LINE_CODING, SET_CONTROL_LINE_STATE, DTR, RTS)
Pure refactor — no behavior change. All literals replaced by named private const val in companion objects or shared via UsbUtils.
2026-07-27 12:39:41 +02:00
eddy
c977dc25a2
Voeg thema-selector toe (DayNight, Radiogroep, teal accent)
2026-07-27 00:22:43 +02:00
eddy
7c054a7021
Add scan retry button on timeout
2026-07-26 23:37:02 +02:00
eddy
954264fe37
Add proguard rules for esp32-flash-lib
2026-07-26 23:31:14 +02:00
eddy
05036a5060
Move user-facing strings to strings.xml
2026-07-26 23:21:25 +02:00
eddy
fffc5165a4
Extract magic numbers to named constants
2026-07-26 23:07:11 +02:00
eddy
71b13c51ee
Replace volatile cancel flag with coroutine Job cancellation in EspFlasher
2026-07-26 22:58:08 +02:00
eddy
2dd3f00de4
Use RECEIVER_EXPORTED for USB system broadcasts on API 34+
2026-07-26 22:51:36 +02:00
eddy
af3810554e
Persist sequence counter in EncryptedSharedPreferences
2026-07-26 22:33:43 +02:00
eddy
bbf01946ac
Convert Thread+Handler to lifecycle-aware coroutines, add GPL-3.0 license
2026-07-26 20:43:37 +02:00