Changes:
- BondingUtil: Use PebbleHardware.isBleOnly() for accurate BLE detection
- PebbleIoThread: Detect BLE-only devices using hardware revision/model
- PebblePairingActivity: Use manufacturer data for device identification,
refresh device list on pairing complete
- PebbleGATTClient: Fixed connection handling when pairing with new
pebble watches based on open source PebbleOS
New status and pairing codes which match PebbleOS implementation.
- ConnectivityStatus: BLE connectivity state enum
- PairingErrorCode: Pairing error codes for better debugging
Create PebbleHardware.java as the single source of truth for all
Pebble hardware definitions and for determining what model and features
a watch has. The goal of this commit is to better unify the pebble watch
model definitions into a single source of truth to make adding new
models easier, as well as to bring all the relevant model specific logic
about what a watch is capable of, or which watch model to use into a
single file versus being spread out among multiple files making it
easier to fail to fix logic bugs.
The PebbleHardware class now has all the definitions for the following
information in one place:
- Platform enum with capabilities (BLE-only, hasHealth, hasHRM)
- Hardware revision registry mapping hardware IDs to codenames
- BLE-only device detection methods
- Platform name lookup for watchface installation
This cleans up PebbleUtils to only contain non-hardware utilities.
(maybe should move into the pebble directory away from the utils folder
in another commit?)