31#include "../../../SensorBuildOpt.h"
32#if !SENSORLIB_EXCLUDE_PMIC_AXP2101
44 for (uint8_t
i = 0;
i < 3; ++
i) {
45 const uint8_t byte_mask =
static_cast<uint8_t
>((mask >> (
i * 8)) & 0xFF);
46 if (byte_mask == 0)
continue;
49 if (current < 0)
return false;
51 const uint8_t next =
static_cast<uint8_t
>(current) | byte_mask;
52 if (next !=
static_cast<uint8_t
>(current) &&
62 for (uint8_t
i = 0;
i < 3; ++
i) {
63 const uint8_t byte_mask =
static_cast<uint8_t
>((mask >> (
i * 8)) & 0xFF);
64 if (byte_mask == 0)
continue;
67 if (current < 0)
return false;
69 const uint8_t next =
static_cast<uint8_t
>(current) & ~byte_mask;
70 if (next !=
static_cast<uint8_t
>(current) &&
81 for (uint8_t
i = 0;
i < 3; ++
i) {
83 if (value < 0)
return 0;
84 buffer[
i] =
static_cast<uint8_t
>(value);
86 uint64_t mask = (
static_cast<uint64_t
>(buffer[2]) << 16) |
87 (
static_cast<uint64_t
>(buffer[1]) << 8) |
88 (
static_cast<uint64_t
>(buffer[0]));
89 if (clear && mask != 0) {
92 for (uint8_t
i = 0;
i < 3; ++
i) {
103 for (uint8_t
i = 0;
i < 3; ++
i) {
Core I2C communication layer for the AXP2101 PMIC.
bool enable(uint64_t mask) override
Enable one or more interrupt sources.
uint64_t readStatus(bool clear=true) override
Read the current interrupt status.
bool disable(uint64_t mask) override
Disable one or more interrupt sources.
bool clearStatus() override
Clear all pending interrupt status registers.
AXP2101Irq(AXP2101Core &core)
int readReg(uint8_t reg) const
int writeReg(uint8_t reg, uint8_t val)
static constexpr uint8_t ENABLE1
static constexpr uint8_t STATUS1