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

AXP517 GPIO module (REG 0x11). More...

#include <AXP517Gpio.hpp>

Inheritance diagram for AXP517Gpio:
[legend]

Public Types

enum class  OutputSource : uint8_t { ByReg11 = 0 , PdIrq = 1 }
 Hardware source selected for the GPIO output path. More...
 
- 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...
 

Public Member Functions

 AXP517Gpio (AXP517Core &core)
 Construct an AXP517 GPIO driver.
 
 ~AXP517Gpio ()=default
 
uint8_t getPinCount () const override
 Get number of GPIO pins (1)
 
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 input level.
 
Status write (uint8_t pin, Level level) override
 Set output level.
 
bool setOutputSource (uint8_t pin, OutputSource src)
 Select GPIO output source.
 
OutputSource getOutputSource (uint8_t pin)
 Get current GPIO output source.
 
int readRaw ()
 Read raw REG11 for debug.
 
- 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 setFunction (uint8_t pin, uint8_t func)
 Set GPIO pin function mode (chip-specific multiplexing)
 
virtual uint8_t getFunction (uint8_t pin)
 Get current GPIO pin function mode.
 
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

- Static Public Member Functions inherited from PmicGpioBase
static constexpr bool isOk (Status s)
 

Detailed Description

AXP517 GPIO module (REG 0x11).

From manual:

  • bit7: OD function configure: 0 floating, 1 open drain output
  • bit6: OD output configure: 0 hiz, 1 low
  • bit5: reserved (RO)
  • bit4: GPIO function: 0 input, 1 output
  • bit3:2: GPIO output source select: 0: by reg11H[1:0] 1: PD_IRQ
  • bit1: GPIO input status (RO): 0 low, 1 high
  • bit1:0: GPIO output configure: 00: hiz 01: low 10: high 11: reserved

Notes:

  • AXP517 has only 1 GPIO pin. Pin parameter must be 0.
  • When output source is PD_IRQ, manual output config bits are ignored by HW.
  • When OD mode enabled (bit7=1), OD output uses bit6 (hiz/low). "high" is not driven.

Definition at line 60 of file AXP517Gpio.hpp.

Member Enumeration Documentation

◆ OutputSource

enum class AXP517Gpio::OutputSource : uint8_t
strong

Hardware source selected for the GPIO output path.

Enumerator
ByReg11 

by reg11[1:0]

PdIrq 

PD_IRQ.

Definition at line 67 of file AXP517Gpio.hpp.

Constructor & Destructor Documentation

◆ AXP517Gpio()

AXP517Gpio::AXP517Gpio ( AXP517Core core)
explicit

Construct an AXP517 GPIO driver.

Parameters
coreShared AXP517 register transport.

Definition at line 8 of file AXP517Gpio.cpp.

◆ ~AXP517Gpio()

AXP517Gpio::~AXP517Gpio ( )
default

Member Function Documentation

◆ getDirection()

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

Get GPIO pin direction.

Parameters
pinGPIO pin number (must be 0)
Returns
Current direction setting, or Direction::Input on error.

Implements PmicGpioBase.

Definition at line 30 of file AXP517Gpio.cpp.

References PmicGpioBase::Input, PmicGpioBase::Output, and readRaw().

Referenced by write().

◆ getDrive()

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

Get GPIO pin drive type.

Parameters
pinGPIO pin number (must be 0)
Returns
Current drive type setting, or DriveType::PushPull on error.

Implements PmicGpioBase.

Definition at line 45 of file AXP517Gpio.cpp.

References PmicGpioBase::OpenDrain, PmicGpioBase::PushPull, and readRaw().

Referenced by write().

◆ getOutputSource()

AXP517Gpio::OutputSource AXP517Gpio::getOutputSource ( uint8_t  pin)

Get current GPIO output source.

Parameters
pinGPIO pin number (must be 0)
Returns
Current OutputSource value, or OutputSource::ByReg11 on error.
See also
setOutputSource()

Definition at line 61 of file AXP517Gpio.cpp.

References ByReg11, PdIrq, and readRaw().

Referenced by write().

◆ getPinCount()

uint8_t AXP517Gpio::getPinCount ( ) const
overridevirtual

Get number of GPIO pins (1)

Returns
1

Implements PmicGpioBase.

Definition at line 13 of file AXP517Gpio.cpp.

◆ read()

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

Read input level.

Parameters
pinGPIO pin number (must be 0)
highReference to store the read level (true = high, false = low)
Returns
Status::Ok on success, Status::InvalidPin for invalid pin, Status::Failed on register access failure.
Note
Pin must be configured as Input direction first

Implements PmicGpioBase.

Definition at line 71 of file AXP517Gpio.cpp.

References PmicGpioBase::Failed, PmicGpioBase::InvalidPin, PmicGpioBase::Ok, and readRaw().

◆ readRaw()

int AXP517Gpio::readRaw ( )

Read raw REG11 for debug.

Returns
Raw register value, or a negative value on I2C failure.

Definition at line 18 of file AXP517Gpio.cpp.

References axp517_regs::ctrl::GPIO_CFG, and SensorCommWrapper::readReg().

Referenced by getDirection(), getDrive(), getOutputSource(), and read().

◆ setDirection()

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

Set GPIO pin direction.

Parameters
pinGPIO pin number (must be 0)
dirDirection (Input or Output)
Returns
Status::Ok on success, Status::InvalidPin for invalid pin, Status::Failed on register access failure.

Implements PmicGpioBase.

Definition at line 23 of file AXP517Gpio.cpp.

References PmicGpioBase::Failed, axp517_regs::ctrl::GPIO_CFG, PmicGpioBase::InvalidPin, PmicGpioBase::Ok, PmicGpioBase::Output, and SensorCommWrapper::updateBits().

◆ setDrive()

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

Set GPIO pin drive type.

Parameters
pinGPIO pin number (must be 0)
driveDrive type (PushPull or OpenDrain)
Returns
Status::Ok on success, Status::InvalidPin for invalid pin, Status::Failed on register access failure.

Implements PmicGpioBase.

Definition at line 38 of file AXP517Gpio.cpp.

References PmicGpioBase::Failed, axp517_regs::ctrl::GPIO_CFG, PmicGpioBase::InvalidPin, PmicGpioBase::Ok, PmicGpioBase::OpenDrain, and SensorCommWrapper::updateBits().

◆ setOutputSource()

bool AXP517Gpio::setOutputSource ( uint8_t  pin,
OutputSource  src 
)

Select GPIO output source.

Parameters
pinGPIO pin number (must be 0)
srcOutput source: OutputSource::ByReg11 - output controlled by write() OutputSource::PdIrq - output follows PD_IRQ hardware signal
Return values
trueon success, false if pin != 0 or on register access failure.
Note
When source is PdIrq, manual write() is ignored by hardware.
See also
getOutputSource()

Definition at line 53 of file AXP517Gpio.cpp.

References axp517_regs::ctrl::GPIO_CFG, PdIrq, and SensorCommWrapper::updateBits().

Referenced by configurePdIrqOutput().

◆ write()

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

Set output level.

Parameters
pinGPIO pin number (must be 0)
levelLevel to set (HiZ, Low, or High)
Returns
Status::Ok on success, Status::InvalidPin for invalid pin, Status::Failed if output source is PD_IRQ, direction not output, or on register access failure.
Note
Only meaningful if pin is configured as Output direction
When output source is PD_IRQ, manual write is ignored by hardware
See also
setDirection()

Implements PmicGpioBase.

Definition at line 82 of file AXP517Gpio.cpp.

References PmicGpioBase::Failed, getDirection(), getDrive(), getOutputSource(), axp517_regs::ctrl::GPIO_CFG, PmicGpioBase::High, PmicGpioBase::HiZ, PmicGpioBase::InvalidPin, level, PmicGpioBase::Low, PmicGpioBase::Ok, PmicGpioBase::OpenDrain, PmicGpioBase::Output, PdIrq, and SensorCommWrapper::updateBits().


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