Skip to content

Support for active data retrieval via direct connections with paired devices #68

@d4rken

Description

@d4rken

Currently CAPod obtains data passively.
Supported devices (e.g. AirPods) regularly broadcast BLE advertisements.
CAPod receives these ScanRecords's and data with contains the information we display.
This does not require any pairing.

Most non-apple headphones only offer data via BLE characteristics which can be read if the headphones are paired and connected.

To support devices that only expose information via BLE characteristics, CAPod needs a new mechanism that obtains data from connected devices.

Some brainstorming:

  • Already have active worker if device is connected.
    • Flag devices that require active connection
    • Automatically launch worker for these devices (for Apple devices it can stay optional)
  • For connected devices establish a connection within CAPod, query services and characteristics
    • Map scan speed to intervals at which we query the device
      • Devices could have BLE notifications enabled, so in addition to manual refresh intervals, code should be reactive.
    • Some sort of caching?
    • Device modeling (interfaces) should work for this too.
    • Some kind of factory pattern that is created depending on the device type
  • Combine data from current BLE data provider with the new one
    • PodMonitor combines the current flow with broadcast data, and the new one
    • Extra connection based monitor lives app wide, worker just keeps it alive?
  • Adjust some texts/branding due to upcoming support for non apple devices
  • Make this a pro feature?
  • With a connection we can write data too
    • Extra settings for devices that support this? Maybe an action button shows in each card that supports this

TBC

Metadata

Metadata

Assignees

No one assigned

    Labels

    Blocked: Requires L2CAPNeeds Google to fix the Bluetooth Stack https://issuetracker.google.com/issues/371713238enhancementAdd a new feature of improve an existing feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions