38b4c987c9
fix: address all issues from koda's code review
...
🔴 Critical:
- DXSmartProvisioner: complete rewrite to match Android's new SDK protocol
- Writes to FFE2 (not FFE1) using 4E4F protocol packets
- Correct command IDs: 0x74 UUID, 0x75 Major, 0x76 Minor, 0x77 RSSI,
0x78 AdvInt, 0x79 TxPower, 0x60 Save
- Frame selection (0x11/0x12) + frame type (0x62 iBeacon)
- Old SDK fallback (0x36-0x43 via FFE1 with 555555 re-auth per command)
- Auth timing: 100ms delays (was 500ms, matches Android SDK)
- BeaconShardPool: replaced 71 pattern UUIDs with exact 64 from Android
🟡 Warnings:
- BlueCharmProvisioner: 3 fallback write methods matching Android
(FEA3 direct → FEA1 raw → FEA1 indexed), legacy FFF0 support,
added "minew123" and "bc04p" passwords (5 total, was 3)
- BeaconBanList: added 4 missing prefixes (8492E75F, A0B13730,
EBEFD083, B5B182C7), full UUID ban list, getBanReason() helper
- BLEManager: documented MAC OUI limitation (48:87:2D not available
on iOS via CoreBluetooth)
🔵 Info:
- APIClient: added get_beacon_config endpoint for server-configured values
- ScanView: unknown beacon type now tries KBeacon→DXSmart→BlueCharm
fallback chain via new FallbackProvisioner
- DXSmartProvisioner: added readFrame2() for post-write verification
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 17:25:55 +00:00
6832a8ad53
feat: add QR scanner view + 7 missing API endpoints
...
- QRScannerView: AVFoundation camera + barcode/QR detection with
flashlight toggle, viewfinder overlay, MAC/UUID pattern recognition
- New API endpoints: deleteServicePoint, updateServicePoint,
listBeacons, decommissionBeacon, lookupByMac, getBeaconStatus, getProfile
- Wire QR scanner into ScanView with BLE Scan + QR Scan side-by-side
- MAC address lookup on scan to check if beacon already registered
- Updated Xcode project file with new source
2026-03-22 17:17:49 +00:00
cfa78679be
feat: complete rebuild of PayfritBeacon iOS from scratch
...
100% fresh codebase — no legacy code carried over. Built against
the Android beacon app as the behavioral spec.
Architecture:
- App: SwiftUI @main, AppState-driven navigation, Keychain storage
- Views: LoginView (OTP + biometric), BusinessListView, ScanView (provisioning hub)
- Models: Business, ServicePoint, BeaconConfig, BeaconType, DiscoveredBeacon
- Services: APIClient (actor, async/await), BLEManager (CoreBluetooth scanner)
- Provisioners: KBeacon, DXSmart (2-step auth + flashing), BlueCharm
- Utils: UUIDFormatting, BeaconBanList, BeaconShardPool (64 shards)
Matches Android feature parity:
- 4-screen flow: Login → Business Select → Scan/Provision
- 3 beacon types with correct GATT protocols and timeouts
- Namespace allocation via beacon-sharding API
- Smart service point naming (Table N auto-increment)
- DXSmart special flow (connect → flash → user confirms → write)
- Biometric auth, dev/prod build configs, DEV banner overlay
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 17:13:36 +00:00