Hi BlueZ Maintainers, This is a patch series that introduces Battery Provider API, a means for external clients to feed battery reporting to BlueZ if they can decode it from a profile/protocol. A sample use case would be for HFP handlers (e.g. pulseaudio commonly in Linux system or CRAS in Chrome OS) that has the battery information reported via HFP extensions. This patch series also refactors the existing battery API to be split into internal API rather than GATT BAS specific. This way internal plugins can also make use of convenient functions to reliable register battery objects. The battery information is then exposed via the existing Battery1 API. Many UI components already consume this so they will be able to display many Bluetooth peripherals' battery information via a unified BlueZ API. Sonny Sasaka (7): battery: Add the internal Battery API profiles/battery: Refactor to use battery library battery: Add Source property to Battery API doc: Add Battery Provider API doc test: Add test app for Battery Provider API adapter: Add a public function to find a device by path battery: Implement Battery Provider API Makefile.am | 3 +- doc/battery-api.txt | 55 ++++ profiles/battery/battery.c | 52 +-- src/adapter.c | 44 ++- src/adapter.h | 2 + src/battery.c | 580 ++++++++++++++++++++++++++++++++++ src/battery.h | 22 ++ test/example-battery-provider | 230 ++++++++++++++ 8 files changed, 942 insertions(+), 46 deletions(-) create mode 100644 src/battery.c create mode 100644 src/battery.h create mode 100755 test/example-battery-provider -- 2.26.2