SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
Loading...
Searching...
No Matches
PmicBase.hpp
Go to the documentation of this file.
1
45#pragma once
46
47#include "PmicPowerBase.hpp"
48#include "PmicChannelBase.hpp"
49#include "PmicChargerBase.hpp"
50#include "PmicAdcBase.hpp"
51#include "PmicGpioBase.hpp"
52#include "PmicLedBase.hpp"
53#include "PmicIrqBase.hpp"
54#include "../platform/SensorCommCustom.hpp"
55#include "../platform/SensorCommCustomHal.hpp"
56
64{
65enum class Capability : uint32_t {
66 PmicNone = 0,
67 PmicSupportCharger = (1 << 0),
68 PmicSupportPower = (1 << 1),
69 PmicSupportAdc = (1 << 2),
70 PmicSupportGpio = (1 << 3),
71 PmicSupportLed = (1 << 4),
72 PmicSupportIrq = (1 << 5),
73 PmicSupportBc12 = (1 << 6),
74 PmicSupportTypeC = (1 << 7),
75 PmicSupportPowerBtn = (1 << 8),
76 PmicSupportChannel = (1 << 9),
77};
78
86{
87 return static_cast<Capability>(static_cast<uint32_t>(a) | static_cast<uint32_t>(b));
88}
89
96constexpr bool operator&(Capability a, Capability b)
97{
98 return (static_cast<uint32_t>(a) & static_cast<uint32_t>(b)) != 0;
99}
100}
101
109 const char *chipName;
110 uint8_t i2cAddress;
111 uint8_t chipIdReg;
112 uint8_t chipIdValue;
113 uint8_t channelCount;
115
116 // --- Charging current limits (from datasheet ICHG register) ---
121};
122
130{
131public:
135 virtual ~PmicBase() = default;
136
137#if defined(ARDUINO)
146 virtual bool begin(TwoWire &wire, uint8_t addr, int sda = -1, int scl = -1) = 0;
147#elif defined(ESP_PLATFORM)
148#if defined(SENSORLIB_USE_I2C_LEGACY)
157 virtual bool begin(i2c_port_t port_num, uint8_t addr, int sda = -1, int scl = -1) = 0;
158#else
165 virtual bool begin(i2c_master_bus_handle_t handle, uint8_t addr) = 0;
166#endif
167#endif
168
177 SensorCommCustomHal::CustomHalCallback hal_cb, uint8_t addr) = 0;
178
182 virtual void end() = 0;
183
191
196 virtual const PmicConfig &getConfig() const = 0;
197
202 virtual PmicPowerBase &getPower() = 0;
203
212 {
213 return nullptr;
214 }
215
223 virtual PmicAdcBase &getAdc() = 0;
224
233 {
234 return nullptr;
235 }
236
244 virtual PmicLedBase &getLed() = 0;
245
254 {
255 return nullptr;
256 }
257
271 {
272 return nullptr;
273 }
274
279 virtual const char *getChipName() const = 0;
280};
@license MIT License
@license MIT License
@license MIT License
@license MIT License
@license MIT License
@license MIT License
@license MIT License
PMIC Base Abstract Class.
Definition PmicBase.hpp:130
virtual PmicChannelBase * getChannel()
Get power output channel interface.
Definition PmicBase.hpp:253
virtual PmicCapability::Capability getCapabilities() const =0
Get PMIC capabilities.
virtual PmicLedBase & getLed()=0
Get LED interface.
virtual ~PmicBase()=default
Virtual destructor.
virtual const PmicConfig & getConfig() const =0
Get static PMIC configuration.
virtual const char * getChipName() const =0
Get PMIC device name.
virtual void end()=0
Deinitialize PMIC and release resources.
virtual PmicChargerBase * getCharger()
Get charger interface.
Definition PmicBase.hpp:211
virtual bool begin(SensorCommCustom::CustomCallback callback, SensorCommCustomHal::CustomHalCallback hal_cb, uint8_t addr)=0
Initialize PMIC with custom communication callback.
virtual PmicAdcBase & getAdc()=0
Get ADC interface.
virtual PmicPowerBase & getPower()=0
Get power management interface.
virtual PmicGpioBase * getGpio()
Get GPIO interface.
Definition PmicBase.hpp:232
virtual PmicIrqBase * getIrq()
Get interrupt interface.
Definition PmicBase.hpp:270
PMIC power output channel base interface.
PMIC charger capability interface.
uint32_t(*)(Operation op, void *param1, void *param2) CustomHalCallback
bool(*)(uint8_t addr, uint8_t reg, uint8_t *buf, size_t len, bool writeReg, bool isWrite) CustomCallback
PMIC Capability Flags.
Definition PmicBase.hpp:64
constexpr Capability operator|(Capability a, Capability b)
Bitwise OR operator for PmicCapability::Capability.
Definition PmicBase.hpp:85
constexpr bool operator&(Capability a, Capability b)
Bitwise AND operator for PmicCapability::Capability.
Definition PmicBase.hpp:96
@ PmicSupportCharger
Battery charger support.
@ PmicSupportGpio
General purpose I/O support.
@ PmicSupportIrq
Interrupt handling support.
@ PmicSupportPower
Power management (input limits, boost, etc.)
@ PmicSupportAdc
Analog-to-Digital converter for monitoring.
@ PmicSupportChannel
Power output channel control (DCDC/LDO)
@ PmicSupportLed
LED driver support.
@ PmicSupportTypeC
USB Type-C support.
@ PmicSupportPowerBtn
Power-on/Power-off control support.
@ PmicSupportBc12
BC1.2 (USB Battery Charging) support.
@ PmicNone
No capabilities (should not occur)
PMIC static configuration data.
Definition PmicBase.hpp:108
uint8_t channelCount
Number of power output channels.
Definition PmicBase.hpp:113
PmicCapability::Capability capabilities
Supported feature flags.
Definition PmicBase.hpp:114
uint8_t chipIdReg
Chip ID register address.
Definition PmicBase.hpp:111
uint16_t chargeCurrentMin
Minimum configurable charge current (mA), 0 if charging can be disabled.
Definition PmicBase.hpp:117
uint16_t chargeCurrentMax
Maximum configurable charge current (mA)
Definition PmicBase.hpp:118
uint16_t chargeCurrentStep
Step size in mA; 0 if non-uniform (see datasheet)
Definition PmicBase.hpp:119
uint8_t i2cAddress
Default I2C address.
Definition PmicBase.hpp:110
uint8_t chargeCurrentSteps
Total number of discrete levels.
Definition PmicBase.hpp:120
uint8_t chipIdValue
Expected chip ID value.
Definition PmicBase.hpp:112
const char * chipName
e.g. "AXP2101"
Definition PmicBase.hpp:109