SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
Loading...
Searching...
No Matches
AXP202Gpio Class Reference

AXP202 GPIO pin control. More...

#include <AXP202Gpio.hpp>

Inheritance diagram for AXP202Gpio:
[legend]

Public Member Functions

 AXP202Gpio (AXP202Core &core)
 Construct AXP202 GPIO interface.
 
 ~AXP202Gpio ()=default
 
uint8_t getPinCount () const override
 Get number of GPIO pins (4: GPIO0-GPIO3)
 
Status setDirection (uint8_t pin, Direction dir) override
 Set GPIO pin direction.
 
Direction getDirection (uint8_t pin) override
 Get GPIO pin direction.
 
Status setDrive (uint8_t pin, DriveType drive) override
 Set GPIO pin drive type.
 
DriveType getDrive (uint8_t pin) override
 Get GPIO pin drive type.
 
Status read (uint8_t pin, bool &high) override
 Read digital level from a GPIO pin.
 
Status write (uint8_t pin, Level level) override
 Write digital level to a GPIO pin.
 
Status setFunction (uint8_t pin, uint8_t func) override
 Set GPIO pin function mode.
 
uint8_t getFunction (uint8_t pin) override
 Get current GPIO pin function mode.
 
- Public Member Functions inherited from PmicGpioBase
virtual ~PmicGpioBase ()=default
 Virtual destructor.
 
Status pinMode (uint8_t pin, Direction dir, DriveType drive=DriveType::Keep, Pull pull=Pull::Keep, uint8_t func=0xFF)
 Configure a pin with a single high-level call.
 
virtual Status setPull (uint8_t pin, Pull pull)
 Set internal pull resistor.
 
virtual Pull getPull (uint8_t pin)
 Get current internal pull resistor setting.
 

Additional Inherited Members

- Public Types inherited from PmicGpioBase
enum class  Direction : uint8_t { Input = 0 , Output = 1 }
 GPIO pin direction. More...
 
enum class  DriveType : uint8_t { PushPull = 0 , OpenDrain = 1 , Keep = 0xFF }
 GPIO drive type. More...
 
enum class  Level : uint8_t { Low = 0 , HiZ = 1 , High = 2 }
 Output level control. More...
 
enum class  Pull : uint8_t { None = 0 , Down = 1 , Up = 2 , Keep = 0xFF }
 Internal pull resistor configuration. More...
 
enum class  Status : uint8_t { Ok = 0 , InvalidPin = 1 , Failed = 2 }
 GPIO operation status code. More...
 
- Static Public Member Functions inherited from PmicGpioBase
static constexpr bool isOk (Status s)
 

Detailed Description

AXP202 GPIO pin control.

Implements the PmicGpioBase interface to manage GPIO direction, drive current, and digital level for the AXP202's four GPIO pins.

GPIO0-2 Function Select Values (REG 90H/92H/93H [2:0])

  • 0x00: Output low
  • 0x01: Output high (3.3V)
  • 0x02: Input
  • 0x03: Low-noise LDO
  • 0x04: ADC input
  • 0x06/0x07: Floating (high-impedance)

GPIO3 (REG 95H)

  • bit2: 0=NMOS open-drain, 1=input
  • bit1: output: 0=low NMOS on, 1=floating NMOS off
  • bit0: input status (R): 0=high, 1=low (active-low!)
Note
GPIO3 does not support function multiplexing or push-pull output. Level::High on GPIO3 returns Status::Failed (not supported by hardware).

Definition at line 72 of file AXP202Gpio.hpp.

Constructor & Destructor Documentation

◆ AXP202Gpio()

AXP202Gpio::AXP202Gpio ( AXP202Core core)
explicit

Construct AXP202 GPIO interface.

Parameters
coreReference to AXP202 core communication

Definition at line 8 of file AXP202Gpio.cpp.

◆ ~AXP202Gpio()

AXP202Gpio::~AXP202Gpio ( )
default

Member Function Documentation

◆ getDirection()

PmicGpioBase::Direction AXP202Gpio::getDirection ( uint8_t  pin)
overridevirtual

Get GPIO pin direction.

Parameters
pinPin number (0-3)
Returns
Current Direction enum value

Implements PmicGpioBase.

Definition at line 60 of file AXP202Gpio.cpp.

References PmicGpioBase::Input, PmicGpioBase::Output, and SensorCommWrapper::readReg().

◆ getDrive()

PmicGpioBase::DriveType AXP202Gpio::getDrive ( uint8_t  pin)
overridevirtual

Get GPIO pin drive type.

Parameters
pinPin number (0-3)
Returns
PushPull for GPIO0-2, OpenDrain for GPIO3

Implements PmicGpioBase.

Definition at line 83 of file AXP202Gpio.cpp.

References PmicGpioBase::OpenDrain, and PmicGpioBase::PushPull.

◆ getFunction()

uint8_t AXP202Gpio::getFunction ( uint8_t  pin)
overridevirtual

Get current GPIO pin function mode.

Parameters
pinPin number (0-3)
Returns
Function mode value, or 0xFF on error or for GPIO3

Reimplemented from PmicGpioBase.

Definition at line 151 of file AXP202Gpio.cpp.

References SensorCommWrapper::readReg().

◆ getPinCount()

uint8_t AXP202Gpio::getPinCount ( ) const
overridevirtual

Get number of GPIO pins (4: GPIO0-GPIO3)

Returns
4

Implements PmicGpioBase.

Definition at line 12 of file AXP202Gpio.cpp.

Referenced by setDrive().

◆ read()

PmicGpioBase::Status AXP202Gpio::read ( uint8_t  pin,
bool &  high 
)
overridevirtual

Read digital level from a GPIO pin.

Parameters
pinPin number (0-3)
highReference set to true if pin is high, false if low
Returns
Status::Ok on success, Status::InvalidPin for invalid pin, Status::Failed on I2C/register error
Note
GPIO3 input is active-low per AXP202 datasheet (REG 95H bit0: 0=high, 1=low). This is handled transparently — high=true means pin is electrically high.

Implements PmicGpioBase.

Definition at line 90 of file AXP202Gpio.cpp.

References PmicGpioBase::Failed, axp202_regs::gpio::GPIO012_SIGNAL, PmicGpioBase::InvalidPin, PmicGpioBase::Ok, and SensorCommWrapper::readReg().

◆ setDirection()

PmicGpioBase::Status AXP202Gpio::setDirection ( uint8_t  pin,
Direction  dir 
)
overridevirtual

Set GPIO pin direction.

Parameters
pinPin number (0-3)
dirDirection (Input or Output)
Returns
Status::Ok on success, Status::InvalidPin for invalid pin, Status::Failed on I2C/register error

Implements PmicGpioBase.

Definition at line 28 of file AXP202Gpio.cpp.

References PmicGpioBase::Failed, PmicGpioBase::Input, PmicGpioBase::InvalidPin, PmicGpioBase::Ok, PmicGpioBase::Output, SensorCommWrapper::readReg(), SensorCommWrapper::updateBits(), and SensorCommWrapper::writeReg().

◆ setDrive()

PmicGpioBase::Status AXP202Gpio::setDrive ( uint8_t  pin,
DriveType  drive 
)
overridevirtual

Set GPIO pin drive type.

Parameters
pinPin number (0-3)
driveDrive type
Returns
Status::Failed for unsupported drive setting, Status::InvalidPin for invalid pin

Implements PmicGpioBase.

Definition at line 73 of file AXP202Gpio.cpp.

References PmicGpioBase::Failed, getPinCount(), and PmicGpioBase::InvalidPin.

◆ setFunction()

PmicGpioBase::Status AXP202Gpio::setFunction ( uint8_t  pin,
uint8_t  func 
)
overridevirtual

Set GPIO pin function mode.

Parameters
pinPin number (0-2 only; GPIO3 has no function multiplexing)
funcFunction mode value (see GPIO0-2 Function Select Values (REG 90H/92H/93H [2:0]) for valid values)
Returns
Status::Ok on success, Status::InvalidPin for invalid pin, Status::Failed if pin=3 or on I2C/register error

Reimplemented from PmicGpioBase.

Definition at line 140 of file AXP202Gpio.cpp.

References PmicGpioBase::Failed, PmicGpioBase::InvalidPin, PmicGpioBase::Ok, and SensorCommWrapper::updateBits().

◆ write()

PmicGpioBase::Status AXP202Gpio::write ( uint8_t  pin,
Level  level 
)
overridevirtual

Write digital level to a GPIO pin.

Parameters
pinPin number (0-3)
levelLevel to set (Low, High, or HiZ)
Returns
Status::Ok on success, Status::InvalidPin for invalid pin, Status::Failed on I2C/register error or unsupported level
Note
GPIO3 does not support Level::High (hardware limitation). GPIO3 supports Level::Low (NMOS on) and Level::HiZ (NMOS off/floating).

Implements PmicGpioBase.

Definition at line 109 of file AXP202Gpio.cpp.

References PmicGpioBase::Failed, PmicGpioBase::High, PmicGpioBase::HiZ, PmicGpioBase::InvalidPin, level, PmicGpioBase::Low, PmicGpioBase::Ok, SensorCommWrapper::readReg(), and SensorCommWrapper::writeReg().


The documentation for this class was generated from the following files: