SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
Loading...
Searching...
No Matches
AXP517Irq.hpp
Go to the documentation of this file.
1
31#pragma once
32
33#include "../../PmicIrqBase.hpp"
34#include "AXP517Core.hpp"
35
44class AXP517Irq : public PmicIrqBase
45{
46public:
56 static constexpr uint64_t IRQ_SOC_WARNING_LEVEL = (1ULL << 31);
57 static constexpr uint64_t IRQ_SOC_SHUTDOWN_LEVEL = (1ULL << 30);
58 static constexpr uint64_t IRQ_GAUGE_NEW_SOC = (1ULL << 28);
59 static constexpr uint64_t IRQ_CHARGE_TO_NORMAL = (1ULL << 27);
60 static constexpr uint64_t IRQ_BOOST_OVER_VOLTAGE = (1ULL << 26);
61 static constexpr uint64_t IRQ_VBUS_OVER_VOLTAGE = (1ULL << 25);
62 static constexpr uint64_t IRQ_VBUS_FAULT = (1ULL << 24);
64
67 static constexpr uint64_t IRQ_VBUS_INSERT = (1ULL << 23);
68 static constexpr uint64_t IRQ_VBUS_REMOVE = (1ULL << 22);
69 static constexpr uint64_t IRQ_BATTERY_INSERT = (1ULL << 21);
70 static constexpr uint64_t IRQ_BATTERY_REMOVE = (1ULL << 20);
71 static constexpr uint64_t IRQ_PWR_ON_SHORT_PRESS = (1ULL << 19);
72 static constexpr uint64_t IRQ_PWR_ON_LONG_PRESS = (1ULL << 18);
73 static constexpr uint64_t IRQ_PWR_ON_NEGATIVE_EDGE = (1ULL << 17);
74 static constexpr uint64_t IRQ_PWR_ON_POSITIVE_EDGE = (1ULL << 16);
76
79 static constexpr uint64_t IRQ_WATCHDOG_EXPIRE = (1ULL << 15);
80 static constexpr uint64_t IRQ_BAT_FET_OCP = (1ULL << 13);
81 static constexpr uint64_t IRQ_CHARGE_DONE = (1ULL << 12);
82 static constexpr uint64_t IRQ_CHARGE_START = (1ULL << 11);
83 static constexpr uint64_t IRQ_DIE_OVER_TEMP_LEVEL1 = (1ULL << 10);
84 static constexpr uint64_t IRQ_CHG_SAFETY_TIMER = (1ULL << 9);
85 static constexpr uint64_t IRQ_BAT_OVER_VOLTAGE = (1ULL << 8);
87
90 static constexpr uint64_t IRQ_BC12_DETECT_FINISHED = (1ULL << 7);
91 static constexpr uint64_t IRQ_BC12_DETECT_CHANGE = (1ULL << 6);
92 static constexpr uint64_t IRQ_BAT_OVER_TEMP_QUIT_CHG = (1ULL << 4);
93 static constexpr uint64_t IRQ_BAT_OVER_TEMP_CHG = (1ULL << 3);
94 static constexpr uint64_t IRQ_BAT_UNDER_TEMP_CHG = (1ULL << 2);
95 static constexpr uint64_t IRQ_BAT_OVER_TEMP_WORK = (1ULL << 1);
96 static constexpr uint64_t IRQ_BAT_UNDER_TEMP_WORK = (1ULL << 0);
97
98 static constexpr uint64_t IRQ_ALL_MASK = 0xffffffffULL;
99 static constexpr uint64_t IRQ_RESERVED_MASK = (1ULL << 29) | (1ULL << 14) | (1ULL << 5);
101
102 // *INDENT-OFF*
109 static bool inline isIrqSet(uint64_t irqMask, uint64_t status) { return (status & irqMask) != 0; }
110
113 static bool inline isSocWarningLevel(uint64_t mask) { return isIrqSet(IRQ_SOC_WARNING_LEVEL, mask); }
114 static bool inline isSocShutdownLevel(uint64_t mask) { return isIrqSet(IRQ_SOC_SHUTDOWN_LEVEL, mask); }
115 static bool inline isGaugeNewSoc(uint64_t mask) { return isIrqSet(IRQ_GAUGE_NEW_SOC, mask); }
116 static bool inline isChargeToNormal(uint64_t mask) { return isIrqSet(IRQ_CHARGE_TO_NORMAL, mask); }
117 static bool inline isBoostOverVoltage(uint64_t mask) { return isIrqSet(IRQ_BOOST_OVER_VOLTAGE, mask); }
118 static bool inline isVbusOverVoltage(uint64_t mask) { return isIrqSet(IRQ_VBUS_OVER_VOLTAGE, mask); }
119 static bool inline isVbusFault(uint64_t mask) { return isIrqSet(IRQ_VBUS_FAULT, mask); }
121
124 static bool inline isVbusInsert(uint64_t mask) { return isIrqSet(IRQ_VBUS_INSERT, mask); }
125 static bool inline isVbusRemove(uint64_t mask) { return isIrqSet(IRQ_VBUS_REMOVE, mask); }
126 static bool inline isBatteryInsert(uint64_t mask) { return isIrqSet(IRQ_BATTERY_INSERT, mask); }
127 static bool inline isBatteryRemove(uint64_t mask) { return isIrqSet(IRQ_BATTERY_REMOVE, mask); }
128 static bool inline isPwrOnShortPress(uint64_t mask) { return isIrqSet(IRQ_PWR_ON_SHORT_PRESS, mask); }
129 static bool inline isPwrOnLongPress(uint64_t mask) { return isIrqSet(IRQ_PWR_ON_LONG_PRESS, mask); }
130 static bool inline isPwrOnNegativeEdge(uint64_t mask) { return isIrqSet(IRQ_PWR_ON_NEGATIVE_EDGE, mask); }
131 static bool inline isPwrOnPositiveEdge(uint64_t mask) { return isIrqSet(IRQ_PWR_ON_POSITIVE_EDGE, mask); }
133
136 static bool inline isWatchdogExpire(uint64_t mask) { return isIrqSet(IRQ_WATCHDOG_EXPIRE, mask); }
137 static bool inline isBatFetOcp(uint64_t mask) { return isIrqSet(IRQ_BAT_FET_OCP, mask); }
138 static bool inline isChargeDone(uint64_t mask) { return isIrqSet(IRQ_CHARGE_DONE, mask); }
139 static bool inline isChargeStart(uint64_t mask) { return isIrqSet(IRQ_CHARGE_START, mask); }
140 static bool inline isDieOverTempLevel1(uint64_t mask) { return isIrqSet(IRQ_DIE_OVER_TEMP_LEVEL1, mask); }
141 static bool inline isChgSafetyTimer(uint64_t mask) { return isIrqSet(IRQ_CHG_SAFETY_TIMER, mask); }
142 static bool inline isBatOverVoltage(uint64_t mask) { return isIrqSet(IRQ_BAT_OVER_VOLTAGE, mask); }
144
147 static bool inline isBc12DetectFinished(uint64_t mask) { return isIrqSet(IRQ_BC12_DETECT_FINISHED, mask); }
148 static bool inline isBc12DetectChange(uint64_t mask) { return isIrqSet(IRQ_BC12_DETECT_CHANGE, mask); }
149 static bool inline isBatOverTempQuitChg(uint64_t mask) { return isIrqSet(IRQ_BAT_OVER_TEMP_QUIT_CHG, mask); }
150 static bool inline isBatOverTempChg(uint64_t mask) { return isIrqSet(IRQ_BAT_OVER_TEMP_CHG, mask); }
151 static bool inline isBatUnderTempChg(uint64_t mask) { return isIrqSet(IRQ_BAT_UNDER_TEMP_CHG, mask); }
152 static bool inline isBatOverTempWork(uint64_t mask) { return isIrqSet(IRQ_BAT_OVER_TEMP_WORK, mask); }
153 static bool inline isBatUnderTempWork(uint64_t mask) { return isIrqSet(IRQ_BAT_UNDER_TEMP_WORK, mask); }
155 // *INDENT-ON*
156
161 explicit AXP517Irq(AXP517Core &core);
162
163 ~AXP517Irq() = default;
164
170 bool enable(uint64_t mask) override;
171
179 bool disable(uint64_t mask) override;
180
187 uint64_t readStatus(bool clear = true) override;
188
193 bool clearStatus() override;
194
195private:
196 AXP517Core &_core;
197};
@license MIT License
AXP517 low-level core driver.
AXP517 interrupt controller helper.
Definition AXP517Irq.hpp:45
static constexpr uint64_t IRQ_CHARGE_START
Battery charge start.
Definition AXP517Irq.hpp:82
static bool isChargeToNormal(uint64_t mask)
static bool isBc12DetectFinished(uint64_t mask)
static constexpr uint64_t IRQ_RESERVED_MASK
Reserved IRQ bits.
Definition AXP517Irq.hpp:99
bool enable(uint64_t mask) override
Enable one or more PMIC IRQ sources.
Definition AXP517Irq.cpp:41
static bool isPwrOnShortPress(uint64_t mask)
static constexpr uint64_t IRQ_VBUS_FAULT
VBUS Fault.
Definition AXP517Irq.hpp:62
static constexpr uint64_t IRQ_BAT_UNDER_TEMP_CHG
Battery Under Temperature in Charge mode.
Definition AXP517Irq.hpp:94
static constexpr uint64_t IRQ_CHG_SAFETY_TIMER
Charger Safety Timer1/2 expire.
Definition AXP517Irq.hpp:84
static bool isBatteryRemove(uint64_t mask)
static bool isBatFetOcp(uint64_t mask)
static bool isBatOverTempWork(uint64_t mask)
static constexpr uint64_t IRQ_VBUS_REMOVE
VBUS Remove.
Definition AXP517Irq.hpp:68
static constexpr uint64_t IRQ_DIE_OVER_TEMP_LEVEL1
DIE Over Temperature level1.
Definition AXP517Irq.hpp:83
~AXP517Irq()=default
static bool isWatchdogExpire(uint64_t mask)
static bool isDieOverTempLevel1(uint64_t mask)
static bool isIrqSet(uint64_t irqMask, uint64_t status)
Check whether a combined IRQ status contains a specific IRQ source.
static constexpr uint64_t IRQ_VBUS_INSERT
VBUS Insert.
Definition AXP517Irq.hpp:67
static constexpr uint64_t IRQ_BATTERY_INSERT
Battery Insert.
Definition AXP517Irq.hpp:69
static constexpr uint64_t IRQ_BAT_FET_OCP
BAT FET Over Current Protection.
Definition AXP517Irq.hpp:80
static constexpr uint64_t IRQ_GAUGE_NEW_SOC
Gauge New SOC.
Definition AXP517Irq.hpp:58
static bool isSocShutdownLevel(uint64_t mask)
static bool isBatteryInsert(uint64_t mask)
static bool isBatOverTempQuitChg(uint64_t mask)
static constexpr uint64_t IRQ_CHARGE_DONE
Battery charge done.
Definition AXP517Irq.hpp:81
static constexpr uint64_t IRQ_PWR_ON_NEGATIVE_EDGE
PWR_ON pin Negative Edge.
Definition AXP517Irq.hpp:73
static bool isVbusFault(uint64_t mask)
static constexpr uint64_t IRQ_BC12_DETECT_FINISHED
BC1.2 detect finished.
Definition AXP517Irq.hpp:90
static constexpr uint64_t IRQ_BATTERY_REMOVE
Battery Remove.
Definition AXP517Irq.hpp:70
static bool isChgSafetyTimer(uint64_t mask)
static bool isBatUnderTempWork(uint64_t mask)
static constexpr uint64_t IRQ_CHARGE_TO_NORMAL
Charge to normal.
Definition AXP517Irq.hpp:59
static constexpr uint64_t IRQ_WATCHDOG_EXPIRE
Watchdog Expire.
Definition AXP517Irq.hpp:79
static constexpr uint64_t IRQ_PWR_ON_SHORT_PRESS
PWR_ON pin Short PRESS.
Definition AXP517Irq.hpp:71
bool disable(uint64_t mask) override
Disable one or more PMIC IRQ sources.
Definition AXP517Irq.cpp:67
static bool isBatUnderTempChg(uint64_t mask)
static bool isChargeDone(uint64_t mask)
static bool isSocWarningLevel(uint64_t mask)
static bool isVbusInsert(uint64_t mask)
static constexpr uint64_t IRQ_BAT_OVER_TEMP_CHG
Battery Over Temperature in Charge mode.
Definition AXP517Irq.hpp:93
uint64_t readStatus(bool clear=true) override
Read the current IRQ status.
Definition AXP517Irq.cpp:93
static constexpr uint64_t IRQ_VBUS_OVER_VOLTAGE
VBUS Over Voltage.
Definition AXP517Irq.hpp:61
static constexpr uint64_t IRQ_ALL_MASK
Mask for all valid IRQ bits.
Definition AXP517Irq.hpp:98
static bool isVbusOverVoltage(uint64_t mask)
static bool isGaugeNewSoc(uint64_t mask)
static constexpr uint64_t IRQ_PWR_ON_LONG_PRESS
PWR_ON pin Long PRESS.
Definition AXP517Irq.hpp:72
static constexpr uint64_t IRQ_BC12_DETECT_CHANGE
BC1.2 detect result change.
Definition AXP517Irq.hpp:91
static constexpr uint64_t IRQ_BAT_OVER_VOLTAGE
Battery Over Voltage Protection.
Definition AXP517Irq.hpp:85
static bool isPwrOnPositiveEdge(uint64_t mask)
static constexpr uint64_t IRQ_BAT_UNDER_TEMP_WORK
Battery Under Temperature in Work mode.
Definition AXP517Irq.hpp:96
static bool isBc12DetectChange(uint64_t mask)
bool clearStatus() override
Clear all pending PMIC IRQ and TCPC alert status bits.
static bool isBatOverVoltage(uint64_t mask)
static bool isChargeStart(uint64_t mask)
static bool isVbusRemove(uint64_t mask)
static constexpr uint64_t IRQ_BAT_OVER_TEMP_QUIT_CHG
Battery Over Temperature Quit in Charge mode.
Definition AXP517Irq.hpp:92
static constexpr uint64_t IRQ_SOC_SHUTDOWN_LEVEL
SOC drop to Shutdown Level.
Definition AXP517Irq.hpp:57
static bool isPwrOnLongPress(uint64_t mask)
static bool isBatOverTempChg(uint64_t mask)
static bool isPwrOnNegativeEdge(uint64_t mask)
static constexpr uint64_t IRQ_SOC_WARNING_LEVEL
SOC drop to Warning Level.
Definition AXP517Irq.hpp:56
static constexpr uint64_t IRQ_BAT_OVER_TEMP_WORK
Battery Over Temperature in Work mode.
Definition AXP517Irq.hpp:95
static bool isBoostOverVoltage(uint64_t mask)
static constexpr uint64_t IRQ_PWR_ON_POSITIVE_EDGE
PWR_ON pin Positive Edge.
Definition AXP517Irq.hpp:74
static constexpr uint64_t IRQ_BOOST_OVER_VOLTAGE
BOOST Over Voltage.
Definition AXP517Irq.hpp:60