Commit Graph
16 Commits
Author SHA1 Message Date
Benjamin Temple a7f512356c Pebble: Specify Transport as LE when connecting via BLE 2026-06-02 11:29:48 -07:00
Benjamin Temple ad08874466 Pebble: Don't sleep for 100ms when doing firmware installs
originally the 100ms sleep after writes was introduced to fix a bug where sending an appmessage right after ACKing a previous appmessage cuased the outgoing packet to be NACK'd by the 3.0+ firmware. 4fe498efc
Keeping because 100ms for most situations doesn't matter, but definitely worth avoiding when uploading new firmware to the watch.
2026-05-17 08:06:18 -07:00
Benjamin Temple 1f36e541e3 Pebble: Ensure that we always try to install on the inactive firmware slot for dual slot firmware watches 2026-05-17 08:06:17 -07:00
Benjamin Temple 309dffbe61 Pebble: Display active firmware slot (for 2 slot watches) in watch details 2026-05-17 08:06:15 -07:00
Benjamin Temple 9d46ba6bc9 Pebble: Keep mmSequence in 5-bit range and don't overflow into the command bits 2026-05-17 08:06:14 -07:00
Benjamin Temple 5cd9c40436 Pebble: Update firmware install protocol to better match rebble.
1. We should upload all of the firmware before starting the install process. Otherwise this can cause issues with the install sometimes failing
2. Updates the encoding of the upload start. There are different upload start packet structures
3. Encode the install firmwareStart packet correctly to include how big it will be so that the watch can pre-erase the flash region.
4. Send the firmware then resouces to match the order that the pebble app sends the files.
5. remove arbitrary 100ms sleep in the main loop, the state machine blocks on readWithException already.
2026-05-17 08:06:13 -07:00
Benjamin Temple 045787fa93 Pebble: Fix blocking for 1s after writing every chunk to the watch
vastly speeds up transfer speeds
2026-05-17 08:06:11 -07:00
Benjamin Temple c29064a36c Pebble: Add support for dual slot firmware 2026-05-17 08:06:10 -07:00
Benjamin Temple f920968deb Pebble: Fix not being able to install firmware since firmware util was comparing the wrong model string 2026-05-17 08:06:04 -07:00
Benjamin Temple f95273100e Pebble: Fix pebble time 2 and core 2 duo not immediately showing up in device list 2026-05-16 12:02:09 -07:00
Benjamin Temple 12db34cf90 Pebble: Include battery read in pull-to-refresh update 2026-05-14 15:38:02 -07:00
Benjamin Temple 552547ec9e Pebble: Add support for pull to refresh for pebble health data
Only signalActivityDataFinish on error as datalog will invoke once health sync data finishes syncing
2026-05-13 23:24:41 -07:00
Benjamin Temple 1a59ceed19 Pebble: Added support for pebble-findmygadgetbridge (findmyphone pebble app) 2026-04-12 09:37:13 -07:00
Benjamin Temple 536d68875f Pebble: Rewrite pairing flow to be more cleanly structured 2026-04-12 09:36:31 -07:00
Benjamin Temple 58f0676c0e Pebble: Fix Pebble [Core 2 Duo / Time 2 / 2 Round] BLE pairing
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
2026-04-12 09:36:25 -07:00
Benjamin TempleandJosé Rebelo c595e69ef2 Pebble: Unify Pebble hardware definitions into PebbleHardware class
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?)
2026-04-07 00:22:44 +02:00