-
Notifications
You must be signed in to change notification settings - Fork 4
Home
Matteo Tullo edited this page Feb 4, 2025
·
5 revisions
This library is a set of traits designed to standardize interactions with battery systems in portable electronics. It follows the Smart Battery System specification to define generic functions that all battery chargers and all smart batteries (AKA fuel gauge, gas gauge) must implement to enforce a standard interface.
classDiagram
Application Level Task --> ChargerDriver: non-std calls (ex. MFG)
Application Level Task --> SmartBatteryDriver: non-std calls (ex. MFG)
Application Level Task: -> charging FSMs
Application Level Task: -> monitoring state of charge
Application Level Task: -> calls std and non-std fn's
Application Level Task: +DoStartup()
Application Level Task: +EnableAutocharging()
Application Level Task: +GetCellVoltages()
Application Level Task: +...()
Application Level Task --> embedded-batteries-charger: std calls
Application Level Task --> embedded-batteries-smart-battery: std calls
embedded-batteries-smart-battery <|-- SmartBatteryDriver: implements
embedded-batteries-charger <|-- ChargerDriver: implements
embedded-batteries-charger: -> Platform/HW agnostic charger fn's
embedded-batteries-charger: -> Conforms to SBS spec
embedded-batteries-charger: +ChargingCurrent()
embedded-batteries-charger: +ChargingVoltage()
embedded-batteries-smart-battery: -> Platform/HW agnostic fuel gauge fn's
embedded-batteries-smart-battery: -> Conforms to SBS spec
embedded-batteries-smart-battery: +Voltage()
embedded-batteries-smart-battery: +Current()
embedded-batteries-smart-battery: +BatteryStatus()
embedded-batteries-smart-battery: +Temperature()
embedded-batteries-smart-battery: +CycleCount()
embedded-batteries-smart-battery: +...()
<<interface>> embedded-batteries-charger
<<interface>> embedded-batteries-smart-battery
ChargerDriver --> platform-specific-hal
ChargerDriver: -> Specific to charging chip
ChargerDriver: -> Conforms to chip datasheet
ChargerDriver: -> has non-std MFG specific fn's
ChargerDriver: +[std] ChargingCurrent()
ChargerDriver: +[std] ChargingVoltage()
ChargerDriver: +[non-std] AutoCharge()
ChargerDriver: +[non-std] ...()
SmartBatteryDriver --> platform-specific-hal
SmartBatteryDriver: -> Specific to charging chip
SmartBatteryDriver: -> Conforms to chip datasheet
SmartBatteryDriver: -> has non-std MFG specific fn's
SmartBatteryDriver: +[std] Voltage()
SmartBatteryDriver: +[std] Current()
SmartBatteryDriver: +[std] BatteryStatus()
SmartBatteryDriver: +[std] ...()
SmartBatteryDriver: +[non-std] Unseal()
SmartBatteryDriver: +[non-std] ...()
class platform-specific-hal["platform-specific-hal comm system"]
platform-specific-hal: -> communication system agnostic
platform-specific-hal: -> can be uC, kernel driver, etc.
platform-specific-hal: +readWord()
platform-specific-hal: +writeWord()
platform-specific-hal: +...()
- App level task: battery-service
- Charger driver: BQ25773
- Smart Battery driver: BQ40Z50
- Platform driver: embassy-imxrt
classDiagram
class battery-service["battery-service"]
click battery-service href "https://github.com/OpenDevicePartnership/embedded-services"
battery-service --> BQ25773: non-std calls (ex. MFG)
battery-service --> BQ40Z50: non-std calls (ex. MFG)
battery-service: +DoStartup()
battery-service: +EnableAutocharging()
battery-service: +GetCellVoltages()
battery-service: +...()
battery-service --> embedded-batteries-charger: std calls
battery-service --> embedded-batteries-smart-battery: std calls
embedded-batteries-smart-battery <|-- BQ40Z50: implements
embedded-batteries-charger <|-- BQ25773: implements
embedded-batteries-charger: +ChargingCurrent()
embedded-batteries-charger: +ChargingVoltage()
embedded-batteries-smart-battery: +Voltage()
embedded-batteries-smart-battery: +Current()
embedded-batteries-smart-battery: +BatteryStatus()
embedded-batteries-smart-battery: +Temperature()
embedded-batteries-smart-battery: +CycleCount()
embedded-batteries-smart-battery: +...()
<<interface>> embedded-batteries-charger
<<interface>> embedded-batteries-smart-battery
class BQ25773["BQ25773"]
click BQ25773 href "https://github.com/OpenDevicePartnership/bq25773"
BQ25773 --> platform-specific-hal
BQ25773: +[std] ChargingCurrent()
BQ25773: +[std] ChargingVoltage()
BQ25773: +[non-std] AutoCharge()
BQ25773: +[non-std] ...()
class BQ40Z50["BQ40Z50"]
click BQ40Z50 href "https://github.com/OpenDevicePartnership/bq40z50"
BQ40Z50 --> platform-specific-hal
BQ40Z50: +[std] Voltage()
BQ40Z50: +[std] Current()
BQ40Z50: +[std] BatteryStatus()
BQ40Z50: +[std] ...()
BQ40Z50: +[non-std] Unseal()
BQ40Z50: +[non-std] ...()
class platform-specific-hal["embassy-imxrt I2C driver"]
click platform-specific-hal href "https://github.com/OpenDevicePartnership/embassy-imxrt"
platform-specific-hal: +read()
platform-specific-hal: +write()