DUDS
Distributed Update of Data from Something
duds::hardware::interface::linux::GpioDevPort Class Reference

A GPIO implementation using the Linux kernel's GPIO character devices. More...

#include <GpioDevPort.hpp>

Inheritance diagram for duds::hardware::interface::linux::GpioDevPort:
Collaboration diagram for duds::hardware::interface::linux::GpioDevPort:

Public Member Functions

 GpioDevPort (const std::string &path="/dev/gpiochip0", unsigned int firstid=0, const std::string &username="DUDS")
 Make a GpioDevPort object with all the pins available to the device. More...
 
 GpioDevPort (const std::vector< unsigned int > &ids, const std::string &path="/dev/gpiochip0", unsigned int firstid=0, const std::string &username="DUDS")
 Make a GpioDevPort object with the given pins. More...
 
virtual ~GpioDevPort ()
 
virtual bool simultaneousOperations () const
 Simultaneous operations are supported; returns true. More...
 
- Public Member Functions inherited from duds::hardware::interface::DigitalPortIndependentPins
virtual bool independentConfig () const
 Always true. More...
 
virtual bool independentConfig (unsigned int, const DigitalPinConfig &, const DigitalPinConfig &) const
 Always true. More...
 
- Public Member Functions inherited from duds::hardware::interface::DigitalPort
virtual ~DigitalPort ()
 Derived classes should call shutdown() early in their destructors. More...
 
void access (const unsigned int *pins, const unsigned int len, std::unique_ptr< DigitalPinAccess > *acc)
 Obtain access objects to use a set of pins. More...
 
template<std::size_t Len>
void access (const unsigned int pins[Len], std::unique_ptr< DigitalPinAccess > acc[Len])
 
std::unique_ptr< DigitalPinAccessaccess (const unsigned int pin)
 
void access (const unsigned int *pins, const unsigned int len, DigitalPinAccess *acc)
 Obtain access objects to use a set of pins. More...
 
void access (const std::vector< unsigned int > &pins, DigitalPinAccess *acc)
 
template<std::size_t alen, std::size_t plen>
void access (const unsigned int pins[plen], DigitalPinAccess acc[alen])
 This is a nice idea that may fail at compile time. More...
 
void access (const unsigned int *pins, const unsigned int len, DigitalPinSetAccess &acc)
 Obtain access objects to use a set of pins. More...
 
void access (const unsigned int *begin, const unsigned int *end, DigitalPinSetAccess &acc)
 
void access (const std::vector< unsigned int > &pins, DigitalPinSetAccess &acc)
 
std::unique_ptr< DigitalPinSetAccessaccess (const std::vector< unsigned int > &pins)
 
template<class InputIter >
void access (const InputIter &begin, const InputIter &end, DigitalPinSetAccess &acc)
 
DigitalPinCap capabilities (unsigned int globalPinId) const
 Returns the capabilities of a pin. More...
 
std::vector< DigitalPinCapcapabilities () const
 Returns the capabilities of all pins in the port. More...
 
std::vector< DigitalPinCapcapabilities (const std::vector< unsigned int > &pvec) const
 Returns the capabilities of all the pins requested by global ID. More...
 
std::vector< DigitalPinCapcapabilitiesLocalIds (const std::vector< unsigned int > &pvec) const
 Returns the capabilities of all the pins requested by local ID. More...
 
DigitalPinConfig configuration (unsigned int globalPinId) const
 Returns the current configuration of a pin. More...
 
std::vector< DigitalPinConfigconfiguration () const
 Returns the configuration of all pins in the port. More...
 
std::vector< DigitalPinConfigconfiguration (const std::vector< unsigned int > &pvec) const
 Returns the configuration of all the pins requested by global ID. More...
 
std::vector< DigitalPinConfigconfigurationLocalIds (const std::vector< unsigned int > &pvec) const
 Returns the configuration of all the pins requested by local ID. More...
 
bool exists (unsigned int gid) const
 Returns true if the pin exists in this port. More...
 
unsigned int globalId (unsigned int localId) const
 Returns the global ID for a pin given the local ID. More...
 
std::vector< unsigned int > globalIds (const std::vector< unsigned int > &localIds) const
 Converts the provided local pin IDs to global pin IDs. More...
 
unsigned int localId (unsigned int globalId) const
 Returns the local ID for a pin given the global ID. More...
 
std::vector< unsigned int > localIds (const std::vector< unsigned int > &globalIds) const
 Converts the provided global pin IDs to local pin IDs. More...
 
unsigned int offset () const
 Returns the offset for the port's pins. More...
 
void poll ()
 
void pollInput ()
 
void pollSignal ()
 
DigitalPinRejectedConfiguration::Reason proposeConfig (unsigned int gid, DigitalPinConfig &pconf, DigitalPinConfig &iconf) const
 Proposes a configuration change for a single pin. More...
 
DigitalPinRejectedConfiguration::Reason proposeConfig (unsigned int gid, DigitalPinConfig &pconf) const
 Proposes a configuration change for a single pin from the port's current configuration. More...
 
bool proposeConfig (const std::vector< unsigned int > &globalPinIds, std::vector< DigitalPinConfig > &propConf, std::vector< DigitalPinConfig > &initConf, std::function< void(DigitalPinRejectedConfiguration::Reason)> insertReason=std::function< void(DigitalPinRejectedConfiguration::Reason)>()) const
 
bool proposeConfig (const std::vector< unsigned int > &pins, std::vector< DigitalPinConfig > &propConf, std::function< void(DigitalPinRejectedConfiguration::Reason)> insertReason=std::function< void(DigitalPinRejectedConfiguration::Reason)>()) const
 
bool proposeConfigLocalIds (const std::vector< unsigned int > &localPinIds, std::vector< DigitalPinConfig > &propConf, std::vector< DigitalPinConfig > &initConf, std::function< void(DigitalPinRejectedConfiguration::Reason)> insertReason=std::function< void(DigitalPinRejectedConfiguration::Reason)>()) const
 
bool proposeConfigLocalIds (const std::vector< unsigned int > &pins, std::vector< DigitalPinConfig > &propConf, std::function< void(DigitalPinRejectedConfiguration::Reason)> insertReason=std::function< void(DigitalPinRejectedConfiguration::Reason)>()) const
 
bool proposeFullConfig (std::vector< DigitalPinConfig > &propConf, std::vector< DigitalPinConfig > &initConf, std::function< void(DigitalPinRejectedConfiguration::Reason)> insertReason=std::function< void(DigitalPinRejectedConfiguration::Reason)>()) const
 
unsigned int size () const
 The maximum number of pins on the port. More...
 

Static Public Member Functions

static std::shared_ptr< GpioDevPortmakeConfiguredPort (PinConfiguration &pc, const std::string &name="default", const std::string &defaultPath="/dev/gpiochip0", bool forceDefault=false)
 Make a GpioDevPort object according to the given configuration, and attach to the configuration. More...
 

Protected Member Functions

virtual void configurePort (unsigned int localPinId, const DigitalPinConfig &cfg, DigitalPinAccessBase::PortData *pdata)
 Changes the hardware configuration for a single pin. More...
 
virtual bool inputImpl (unsigned int gid, DigitalPinAccessBase::PortData *pdata)
 Reads input from the given pin. More...
 
virtual std::vector< bool > inputImpl (const std::vector< unsigned int > &pvec, DigitalPinAccessBase::PortData *pdata)
 Reads input from the requested pins. More...
 
virtual void madeAccess (DigitalPinAccess &acc)
 Called after a new access object is made to allow a port implementation to take further action. More...
 
virtual void madeAccess (DigitalPinSetAccess &acc)
 Called after a new access object is made to allow a port implementation to take further action. More...
 
virtual void outputImpl (unsigned int lid, bool state, DigitalPinAccessBase::PortData *pdata)
 Changes the output state of the given pin. More...
 
virtual void outputImpl (const std::vector< unsigned int > &pvec, const std::vector< bool > &state, DigitalPinAccessBase::PortData *pdata)
 Changes the outputs of several pins. More...
 
virtual void retiredAccess (const DigitalPinAccess &acc) noexcept
 Called just before an access object is retired to allow a port implementation to take further action. More...
 
virtual void retiredAccess (const DigitalPinSetAccess &acc) noexcept
 Called just before an access object is retired to allow a port implementation to take further action. More...
 
- Protected Member Functions inherited from duds::hardware::interface::DigitalPortIndependentPins
 DigitalPortIndependentPins (unsigned int numpins, unsigned int firstid)
 
virtual void configurePort (const std::vector< DigitalPinConfig > &cfgs, DigitalPinAccessBase::PortData *pdata)
 Changes the hardware configuration for the whole port by calling configurePort(const DigitalPinConfig &, unsigned int, DigitalPinAccessBase::PortData *) for each pin. More...
 
virtual DigitalPinRejectedConfiguration::Reason proposeConfigImpl (unsigned int gid, DigitalPinConfig &pconf, DigitalPinConfig &iconf) const
 Considers the proposed configuration for one pin. More...
 
virtual bool proposeConfigImpl (const std::vector< unsigned int > &localPinIds, std::vector< DigitalPinConfig > &propConf, std::vector< DigitalPinConfig > &initConf, std::function< void(DigitalPinRejectedConfiguration::Reason)> insertReason=std::function< void(DigitalPinRejectedConfiguration::Reason)>()) const
 Considers the proposed configuration one pin at a time in the order specified in pins. More...
 
virtual bool proposeFullConfigImpl (std::vector< DigitalPinConfig > &propConf, std::vector< DigitalPinConfig > &initConf, std::function< void(DigitalPinRejectedConfiguration::Reason)> insertReason=std::function< void(DigitalPinRejectedConfiguration::Reason)>()) const
 Considers the proposed configuration one pin at a time for all pins in the port. More...
 
- Protected Member Functions inherited from duds::hardware::interface::DigitalPort
 DigitalPort (unsigned int numpins, unsigned int firstid)
 Initializes internal data. More...
 
std::vector< DigitalPinCapcapabilities (const std::vector< unsigned int > &pvec, bool global) const
 
const DigitalPinConfigconfigRef (unsigned int localPinId) const
 Returns a reference to a pin's configuration on behalf of an access object. More...
 
std::vector< DigitalPinConfigconfiguration (const std::vector< unsigned int > &pvec, bool global) const
 
std::vector< DigitalPinConfigconfigurationImpl () const
 Returns the configuration of all pins in the port. More...
 
bool input (unsigned int gid, DigitalPinAccessBase::PortData *pdata)
 Does error checking in advance of calling inputImpl(unsigned int) to read the input of the given pin. More...
 
std::vector< bool > input (const std::vector< unsigned int > &pvec, DigitalPinAccessBase::PortData *pdata)
 Does error checking in advance of calling inputImpl(const std::vector<unsigned int> &) to read the input of a set of pins. More...
 
DigitalPinConfig modifyConfig (unsigned int globalPinId, const DigitalPinConfig &cfg, DigitalPinAccessBase::PortData *pdata)
 Modifies the configuration of a single pin with an independent configuration. More...
 
void modifyConfig (std::vector< DigitalPinConfig > &cfgs, DigitalPinAccessBase::PortData *pdata)
 Modifies the configuration of multiple pins. More...
 
void modifyConfig (const std::vector< unsigned int > &pvec, std::vector< DigitalPinConfig > &cfgs, DigitalPinAccessBase::PortData *pdata)
 
void modifyFullConfig (std::vector< DigitalPinConfig > &propConf, std::vector< DigitalPinConfig > &initConf, DigitalPinAccessBase::PortData *pdata)
 Does the work of the modifyConfig() functions in the case that the whole port configuration must be considered for possible changes. More...
 
void output (unsigned int gid, bool state, DigitalPinAccessBase::PortData *pdata)
 Does error checking in advance of calling outputImpl(unsigned int, bool) to change the output of the given pin. More...
 
void output (const std::vector< unsigned int > &pvec, const std::vector< bool > &state, DigitalPinAccessBase::PortData *pdata)
 Does error checking in advance of calling outputImpl(const std::vector<unsigned int> &,const std::vector<bool> &) to change the output of a set of pins. More...
 
void shutdown ()
 Waits for access to all pins so that any user of access objects may finish with their operation, then destroys all pin data and awakens threads waiting on access, but they will not receive access. More...
 

Private Member Functions

void initPin (std::uint32_t offset, unsigned int pid)
 Initializes a PinEntry with data on a GPIO line. More...
 

Private Attributes

int chipFd
 File descriptor for GPIO chip device file. More...
 
std::string consumer
 The consumer name given to the kernel when requesting the use of GPIO lines. More...
 
std::string devpath
 The path of the device file; retained only for error reporting purposes. More...
 
std::string name
 The reported name of the GPIO chip device. More...
 

Additional Inherited Members

- Protected Types inherited from duds::hardware::interface::DigitalPort
typedef std::vector< PinEntryPinVector
 
- Static Protected Member Functions inherited from duds::hardware::interface::DigitalPort
static DigitalPinAccessBase::PortDataportData (const DigitalPinAccessBase &acc)
 Returns a reference to the port specific data in the given DigitalPinAccessBase object. More...
 
template<typename T >
static void portDataPtr (const DigitalPinAccessBase &acc, T **ptr)
 Provides a pointer to type T stored in the port specific data of the given DigitalPinAccessBase object. More...
 
- Protected Attributes inherited from duds::hardware::interface::DigitalPort
PinVector pins
 Data on each pin handled by the port. More...
 

Detailed Description

A GPIO implementation using the Linux kernel's GPIO character devices.

Limitations:

  • Input change events (interrupt-like response) are not yet supported.
  • Port resources are not allocated and kept for the lifespan of DigitalPinAccess and DigitalPinSetAccess objects. Changing pin configuration with the GPIO kernel device requires losing the resource and requesting it again in a non-atomic manner. Another process could hypothetically get the resource, which will result in an exception and a broken access object. I see no way to fully resolve this issue given the current kernel interface.
  • Kernel interface lacks ability to query pin capabilities.
    • This driver assumes all pins have input and output capability.
    • Open drain and open source support could be determined by attempting to reconfigure a pin, but this would require changing the state of the port, which may be bad for some hardware.
    • Currently the open drain and open source modes are not supported by this driver.
  • Cannot determine initial output state.
    • The driver assumes false (logic zero) is the initial output state. It does not alter the initial state.
    • Requesting state of pins cannot be done without first altering them.
      • A request for an output pin makes the pin an output and sets its output state. The kernel does not support maintaining a pin's output state.
    • Kernel interface provides no way to query a set output state of a pin configured as an input, and requires the software to provide a new initial output state when configuring a pin as an output.
  • Kernel interface lacks support for controllable pull-up and pull-down resistors.
  • Kernel interface offers no query or configuration of output current.

While some hardware may have some or all of these limitations, other hardware does not. Using the Linux kernel GPIO character device will impose these limitations on the system.

It is assumed that the process using this object for a given pin will be the only process on the host using the pin. This should be a fairly safe assumption since it should only be violated by bad behavior.

Author
Jeff Jackowski

Definition at line 92 of file GpioDevPort.hpp.

Constructor & Destructor Documentation

◆ GpioDevPort() [1/2]

duds::hardware::interface::linux::GpioDevPort::GpioDevPort ( const std::string &  path = "/dev/gpiochip0",
unsigned int  firstid = 0,
const std::string &  username = "DUDS" 
)

Make a GpioDevPort object with all the pins available to the device.

If the program will be using a known subset of the pins, the GpioDevPort(const std::vector<unsigned int> &, const std::string &, unsigned int) constructor should be used instead to prevent and find unintentional use of other pins.

Parameters
pathThe path to the GPIO device file.
firstidThe gloabl ID that will be assigned to the first pin (local ID zero) of this port.
usernameThe name provided to the GPIO device for the consumer.
Exceptions
DigitalPortDoesNotExistErrorThe device file could not be opened, or the request for information on the GPIO device ended in error.
DigitalPortLacksPinErrorA request for information on a pin ended in error.

Definition at line 450 of file GpioDevPort.cpp.

◆ GpioDevPort() [2/2]

duds::hardware::interface::linux::GpioDevPort::GpioDevPort ( const std::vector< unsigned int > &  ids,
const std::string &  path = "/dev/gpiochip0",
unsigned int  firstid = 0,
const std::string &  username = "DUDS" 
)

Make a GpioDevPort object with the given pins.

Todo:
The doc on ids is incorrect; copied from Sysfs. Fix that. Also, maybe change the behavior. Could just specify pins to use and ignore position of pin in the vector.
Parameters
idsThe pin numbers from the filesystem. The index of each inside ids will be the local pin ID used by this port. A value of -1 will create an unavailable pin and may be used multiple times. Other values must only be used once.
pathThe path to the GPIO device file.
firstidThe gloabl ID that will be assigned to the first pin (local ID zero) of this port.
usernameThe name provided to the GPIO device for the consumer.
Exceptions
DigitalPortDoesNotExistErrorThe device file could not be opened, or the request for information on the GPIO device ended in error.
DigitalPortLacksPinErrorA request for information on a pin ended in error.

Definition at line 477 of file GpioDevPort.cpp.

◆ ~GpioDevPort()

duds::hardware::interface::linux::GpioDevPort::~GpioDevPort ( )
virtual

Definition at line 555 of file GpioDevPort.cpp.

Member Function Documentation

◆ configurePort()

void duds::hardware::interface::linux::GpioDevPort::configurePort ( unsigned int  localPinId,
const DigitalPinConfig cfg,
DigitalPinAccessBase::PortData pdata 
)
protectedvirtual

Changes the hardware configuration for a single pin.

If this function does not throw, its caller will record the configuration change inside pins. It is only called after error checking is performed on its parameters.

Parameters
cfgThe new configuration.
localPinIdThe local ID for the pin to modify.
pdataA pointer to the port specific data stored in the corresponding access object for the pin.

Implements duds::hardware::interface::DigitalPortIndependentPins.

Definition at line 656 of file GpioDevPort.cpp.

◆ initPin()

void duds::hardware::interface::linux::GpioDevPort::initPin ( std::uint32_t  offset,
unsigned int  pid 
)
private

Initializes a PinEntry with data on a GPIO line.

Parameters
offsetThe line offset for the pin on the GPIO chip device.
pidThe assigned port specific pin ID.
Exceptions
DigitalPortLacksPinErrorThe attempt to obtain information on the GPIO line ended with an error.

Definition at line 560 of file GpioDevPort.cpp.

Referenced by GpioDevPort().

◆ inputImpl() [1/2]

bool duds::hardware::interface::linux::GpioDevPort::inputImpl ( unsigned int  gid,
DigitalPinAccessBase::PortData pdata 
)
protectedvirtual

Reads input from the given pin.

Precondition
The pin is configured as an input.
Parameters
gidThe global ID of the pin to read.
pdataA pointer to the port specific data stored in the corresponding access object for the pin.

Implements duds::hardware::interface::DigitalPort.

Definition at line 683 of file GpioDevPort.cpp.

◆ inputImpl() [2/2]

std::vector< bool > duds::hardware::interface::linux::GpioDevPort::inputImpl ( const std::vector< unsigned int > &  pvec,
DigitalPinAccessBase::PortData pdata 
)
protectedvirtual

Reads input from the requested pins.

The implementation in DigitalPort calls input(unsigned int). This only makes sense for ports that do not support simultaneous operations. An assertion exists to prevent such misuse.

Precondition
All the pins are configured as inputs.
Parameters
pvecThe global IDs of the pins to read.
pdataA pointer to the port specific data stored in the corresponding access object for the pins.
Returns
The input from the pins.

Reimplemented from duds::hardware::interface::DigitalPort.

Definition at line 697 of file GpioDevPort.cpp.

◆ madeAccess() [1/2]

void duds::hardware::interface::linux::GpioDevPort::madeAccess ( DigitalPinAccess acc)
protectedvirtual

Called after a new access object is made to allow a port implementation to take further action.

The call is made while there is a lock on block. The default implementation does nothing.

Parameters
accThe newly made access object.
Exceptions
exceptionAny thrown exception will cause the access object to be retired and then the exception will be rethrown.

Reimplemented from duds::hardware::interface::DigitalPort.

Definition at line 618 of file GpioDevPort.cpp.

◆ madeAccess() [2/2]

void duds::hardware::interface::linux::GpioDevPort::madeAccess ( DigitalPinSetAccess acc)
protectedvirtual

Called after a new access object is made to allow a port implementation to take further action.

The call is made while there is a lock on block. The default implementation does nothing.

Parameters
accThe newly made access object.
Exceptions
exceptionAny thrown exception will cause the access object to be retired and then the exception will be rethrown.

Reimplemented from duds::hardware::interface::DigitalPort.

Definition at line 622 of file GpioDevPort.cpp.

◆ makeConfiguredPort()

std::shared_ptr< GpioDevPort > duds::hardware::interface::linux::GpioDevPort::makeConfiguredPort ( PinConfiguration pc,
const std::string &  name = "default",
const std::string &  defaultPath = "/dev/gpiochip0",
bool  forceDefault = false 
)
static

Make a GpioDevPort object according to the given configuration, and attach to the configuration.

Parameters
pcThe object with the port configuration data.
nameThe name of the port in the configuration.
defaultPathThe default path to the port's device file. This will be used if not specified in the configuration.
forceDefaultIf true, the value in defaultPath will be used even if the device file is specified in the configuration.
Exceptions
PortDoesNotExistErrorThere is no port called name in the given configuration.
DigitalPortDoesNotExistErrorThe device file could not be opened, or the request for information on the GPIO device ended in error.
DigitalPortLacksPinErrorA request for information on a pin ended in error.
Examples:
bppmenu.cpp, clockLCD.cpp, rendertext.cpp, and st7920.cpp.

Definition at line 506 of file GpioDevPort.cpp.

◆ outputImpl() [1/2]

void duds::hardware::interface::linux::GpioDevPort::outputImpl ( unsigned int  lid,
bool  state,
DigitalPinAccessBase::PortData pdata 
)
protectedvirtual

Changes the output state of the given pin.

If the pin is not configured as an output, its configuration will not change. However, this new state will be the output state once the configuration is changed to output.

Precondition
The pin is capable of output.
Parameters
lidThe local ID of the pin to change.
stateThe new output state.
pdataA pointer to the port specific data stored in the corresponding access object for the pin.

Implements duds::hardware::interface::DigitalPort.

Definition at line 727 of file GpioDevPort.cpp.

◆ outputImpl() [2/2]

void duds::hardware::interface::linux::GpioDevPort::outputImpl ( const std::vector< unsigned int > &  pvec,
const std::vector< bool > &  state,
DigitalPinAccessBase::PortData pdata 
)
protectedvirtual

Changes the outputs of several pins.

If any of the pins are not configured as an output, thier configuration will not change. However, this new state will be the output state once the configuration is changed to output.

The implementation in DigitalPort calls output(unsigned int, bool). This only makes sense for ports that do not support simultaneous operations. An assertion exists to prevent such misuse.

Precondition
For all implementations: the vector parameters are the same size.
For all implementations: The pins are capable of output.
For this implementation only: simultaneous operations are not supported.
Parameters
pvecThe local ID of the pins to alter.
stateThe new output states.
pdataA pointer to the port specific data stored in the corresponding access object for the pins.

Reimplemented from duds::hardware::interface::DigitalPort.

Definition at line 748 of file GpioDevPort.cpp.

◆ retiredAccess() [1/2]

void duds::hardware::interface::linux::GpioDevPort::retiredAccess ( const DigitalPinAccess acc)
protectedvirtualnoexcept

Called just before an access object is retired to allow a port implementation to take further action.

The call is made while there is a lock on block. The default implementation does nothing.

Parameters
accThe access object that will be retired.

Reimplemented from duds::hardware::interface::DigitalPort.

Definition at line 644 of file GpioDevPort.cpp.

◆ retiredAccess() [2/2]

void duds::hardware::interface::linux::GpioDevPort::retiredAccess ( const DigitalPinSetAccess acc)
protectedvirtualnoexcept

Called just before an access object is retired to allow a port implementation to take further action.

The call is made while there is a lock on block. The default implementation does nothing.

Parameters
accThe access object that will be retired.

Reimplemented from duds::hardware::interface::DigitalPort.

Definition at line 650 of file GpioDevPort.cpp.

◆ simultaneousOperations()

bool duds::hardware::interface::linux::GpioDevPort::simultaneousOperations ( ) const
virtual

Simultaneous operations are supported; returns true.

Implements duds::hardware::interface::DigitalPort.

Definition at line 614 of file GpioDevPort.cpp.

Member Data Documentation

◆ chipFd

int duds::hardware::interface::linux::GpioDevPort::chipFd
private

File descriptor for GPIO chip device file.

Definition at line 109 of file GpioDevPort.hpp.

Referenced by configurePort(), GpioDevPort(), initPin(), inputImpl(), outputImpl(), and ~GpioDevPort().

◆ consumer

std::string duds::hardware::interface::linux::GpioDevPort::consumer
private

The consumer name given to the kernel when requesting the use of GPIO lines.

Definition at line 101 of file GpioDevPort.hpp.

Referenced by madeAccess().

◆ devpath

std::string duds::hardware::interface::linux::GpioDevPort::devpath
private

The path of the device file; retained only for error reporting purposes.

Definition at line 105 of file GpioDevPort.hpp.

Referenced by configurePort(), initPin(), inputImpl(), and outputImpl().

◆ name

std::string duds::hardware::interface::linux::GpioDevPort::name
private

The reported name of the GPIO chip device.

Definition at line 96 of file GpioDevPort.hpp.

Referenced by GpioDevPort().


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