SIGN IN SIGN UP

Deliver third-party data logging to companion apps over PebbleKit 2 (#378)

* Deliver third-party data logging to companion apps over PebbleKit 2

Data logging sessions of third-party watchapps were dropped after the
protocol-level ACK. Datalogging now emits them as flows: thirdPartyData
(batches) and thirdPartyFinished (session end). The session timestamp
and the watch serial go with each record.

On Android, PebbleKit2Datalogging collects the flows and calls
sendOnDataLogReceived / sendOnDataLogSessionFinished (PebbleKit 2
1.3.0). One worker per session sends the batches in sequence and sends
the finish event after the companion app acknowledged all batches.
Nack, Unknown, null or a binder failure causes a limited number of
retries; then the worker discards the rest of the session. Delivery is
not tied to a running watchapp, because spooled data can arrive on
reconnect while no watchapp is open. The companion package comes from
the watchapp appinfo.json (companionApp.android.apps[].package).

* Resolve the companion package on Dispatchers.IO

The locker lookup and the PBW parse are blocking I/O.

---------

Co-authored-by: Steve Penna <steve@penna.org.uk>
N
neelts committed
2a6259121bdc8966939e710e78ccc86ade600fc0
Parent: 413c6af
Committed by GitHub <noreply@github.com> on 9/17/2026, 10:09:09 PM