|
CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
|
Public Member Functions | |
| BQ25895Power ()=default | |
IService implementation | |
| bool | init () override |
| Initializes charger hardware and applies safe boot defaults. | |
| bool | start () override |
| Starts power manager service state. | |
| void | stop () override |
| Stops power manager service state. | |
| core::ServiceState | getState () const override |
| const char * | getName () const override |
IPowerManager implementation | |
| uint16_t | getBatteryVoltage () const override |
| Returns measured battery voltage in millivolts. | |
| uint8_t | getBatteryPercent () const override |
| Estimates battery percentage from measured voltage. | |
| bool | isUsbConnected () const override |
| Returns cached USB power presence. | |
| PowerSource | getPowerSource () const override |
| Returns current active power source. | |
| ChargeStatus | getChargeStatus () const override |
| Returns cached charge-state machine value. | |
| bool | isBatteryLow () const override |
| Indicates low-battery threshold state. | |
| bool | isBatteryCritical () const override |
| Indicates critical-battery threshold state. | |
| bool | isBatteryPresent () const override |
| Returns whether a battery is considered present. | |
| void | setChargingEnabled (bool enabled) override |
| Enables or effectively disables charging current. | |
| void | enterShipMode () override |
| Requests battery ship mode via BATFET disconnect. | |
| void | setPreShipModeCallback (PreShipModeCallback cb) override |
| void | update () override |
| Periodic power-manager update handling watchdog and IRQ-driven refresh. | |
| void | refresh () override |
| Forces a synchronous re-read of charger status registers. | |
| void | prepareForSleep () override |
| Disables the charger IRQ before light sleep. | |
| void | recoverFromSleep () override |
| Restores charger IRQ handling and refreshes status after wakeup. | |
| Public Member Functions inherited from cdc::hal::IPowerManager | |
| virtual | ~IPowerManager ()=default |
| Public Member Functions inherited from cdc::core::IService | |
| virtual | ~IService ()=default |
Additional Inherited Members | |
| Public Types inherited from cdc::hal::IPowerManager | |
| using | PreShipModeCallback = void (*)() |
BQ25895 Power Manager Implementation
Definition at line 86 of file BQ25895Power.cpp.
|
default |
Referenced by getBatteryVoltage().
|
overridevirtual |
Requests battery ship mode via BATFET disconnect.
Implements cdc::hal::IPowerManager.
Definition at line 564 of file BQ25895Power.cpp.
References cdc::hal::BQ_REG_MISC, LOG_E, LOG_I, and TAG.
Referenced by update().
|
overridevirtual |
Estimates battery percentage from measured voltage.
Implements cdc::hal::IPowerManager.
Definition at line 486 of file BQ25895Power.cpp.
References cdc::hal::BATTERY_EMPTY_MV, cdc::hal::BATTERY_FULL_MV, and getBatteryVoltage().
Referenced by isBatteryCritical(), and isBatteryLow().
|
overridevirtual |
Returns measured battery voltage in millivolts.
Implements cdc::hal::IPowerManager.
Definition at line 463 of file BQ25895Power.cpp.
References BQ25895Power(), cdc::hal::BQ_REG_ADC_CTRL, and cdc::hal::BQ_REG_BATV.
Referenced by getBatteryPercent().
|
overridevirtual |
Returns cached charge-state machine value.
Implements cdc::hal::IPowerManager.
Definition at line 519 of file BQ25895Power.cpp.
|
inlineoverridevirtual |
Get service name (for logging/debugging)
Implements cdc::core::IService.
Definition at line 98 of file BQ25895Power.cpp.
|
overridevirtual |
Returns current active power source.
Implements cdc::hal::IPowerManager.
Definition at line 511 of file BQ25895Power.cpp.
References cdc::hal::BATTERY, and cdc::hal::USB.
|
inlineoverridevirtual |
Get current service state
Implements cdc::core::IService.
Definition at line 97 of file BQ25895Power.cpp.
|
overridevirtual |
Initializes charger hardware and applies safe boot defaults.
Implements cdc::core::IService.
Definition at line 221 of file BQ25895Power.cpp.
References BQ25895_ADDR, cdc::hal::BQ_REG_ADC_CTRL, cdc::hal::BQ_REG_CHG_CTRL, cdc::hal::BQ_REG_INPUT_CTRL, cdc::hal::BQ_REG_VENDOR, cdc::hal::BQ_SYS_MIN_MV, cdc::hal::CHARGE_CURRENT_SLOW, cdc::hal::charger_isr(), CHG_IRQ_PIN, cdc::core::ERROR, FLASH_BTN_PIN, cdc::hal::getI2cBus0(), cdc::core::INITIALIZED, LOG_E, LOG_I, cdc::core::STARTED, TAG, and cdc::core::UNINITIALIZED.
|
overridevirtual |
Indicates critical-battery threshold state.
Implements cdc::hal::IPowerManager.
Definition at line 535 of file BQ25895Power.cpp.
References getBatteryPercent().
|
overridevirtual |
Indicates low-battery threshold state.
Implements cdc::hal::IPowerManager.
Definition at line 527 of file BQ25895Power.cpp.
References getBatteryPercent().
|
overridevirtual |
Returns whether a battery is considered present.
Implements cdc::hal::IPowerManager.
Definition at line 543 of file BQ25895Power.cpp.
|
overridevirtual |
Returns cached USB power presence.
Implements cdc::hal::IPowerManager.
Definition at line 502 of file BQ25895Power.cpp.
|
overridevirtual |
Disables the charger IRQ before light sleep.
The sleep controller arms a level-triggered wakeup on the same pin; the edge-triggered active-mode interrupt is disabled here to mirror the keypad.
Implements cdc::hal::IPowerManager.
Definition at line 644 of file BQ25895Power.cpp.
References CHG_IRQ_PIN.
|
overridevirtual |
Restores charger IRQ handling and refreshes status after wakeup.
Drops any stale IRQ flag, re-reads charger status (so cached USB presence is current and an expired watchdog gets kicked), and re-arms the edge trigger.
Implements cdc::hal::IPowerManager.
Definition at line 654 of file BQ25895Power.cpp.
References cdc::hal::charger_irq_pending, and CHG_IRQ_PIN.
|
overridevirtual |
Forces a synchronous re-read of charger status registers.
Implements cdc::hal::IPowerManager.
Definition at line 634 of file BQ25895Power.cpp.
|
overridevirtual |
Enables or effectively disables charging current.
| enabled | Desired charging enable state. |
Implements cdc::hal::IPowerManager.
Definition at line 551 of file BQ25895Power.cpp.
References cdc::hal::CHARGE_CURRENT_FAST, cdc::hal::CHARGE_CURRENT_MIN, cdc::hal::CHARGE_CURRENT_SLOW, LOG_I, and TAG.
|
inlineoverridevirtual |
Register a callback run immediately before ship mode disconnects the battery. Pass nullptr to clear.
Implements cdc::hal::IPowerManager.
Definition at line 115 of file BQ25895Power.cpp.
|
overridevirtual |
Starts power manager service state.
Implements cdc::core::IService.
Definition at line 329 of file BQ25895Power.cpp.
References cdc::core::INITIALIZED, cdc::core::STARTED, and cdc::core::STOPPED.
|
overridevirtual |
Stops power manager service state.
Implements cdc::core::IService.
Definition at line 341 of file BQ25895Power.cpp.
References cdc::core::STARTED, and cdc::core::STOPPED.
|
overridevirtual |
Periodic power-manager update handling watchdog and IRQ-driven refresh.
Implements cdc::hal::IPowerManager.
Definition at line 602 of file BQ25895Power.cpp.
References cdc::hal::charger_irq_pending, enterShipMode(), FLASH_BTN_PIN, cdc::hal::kPowerButtonLongPressMs, LOG_W, and TAG.