47 lines
1.7 KiB
C
47 lines
1.7 KiB
C
|
#ifndef LINUX_GPIO_GPIODEFINITIONS_H_
|
||
|
#define LINUX_GPIO_GPIODEFINITIONS_H_
|
||
|
|
||
|
#include <string>
|
||
|
#include <unordered_map>
|
||
|
|
||
|
using gpioId_t = uint16_t;
|
||
|
|
||
|
namespace gpio {
|
||
|
enum Direction {
|
||
|
IN = 0,
|
||
|
OUT = 1
|
||
|
};
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @brief Struct containing information about the GPIO to use. This is
|
||
|
* required by the libgpiod to access and drive a GPIO.
|
||
|
* @param chipname String of the chipname specifying the group which contains the GPIO to
|
||
|
* access. E.g. gpiochip0. To detect names of GPIO groups run gpiodetect on
|
||
|
* the linux command line.
|
||
|
* @param lineNum The offset of the GPIO within the GPIO group.
|
||
|
* @param consumer Name of the consumer. Simply a description of the GPIO configuration.
|
||
|
* @param direction Specifies whether the GPIO should be used as in- or output.
|
||
|
* @param initValue Defines the initial state of the GPIO when configured as output.
|
||
|
* Only required for output GPIOs.
|
||
|
* @param lineHandle The handle returned by gpiod_chip_get_line will be later written to this
|
||
|
* pointer.
|
||
|
*/
|
||
|
typedef struct GpioConfig {
|
||
|
GpioConfig(std::string chipname_, int lineNum_, std::string consumer_,
|
||
|
gpio::Direction direction_, int initValue_):
|
||
|
chipname(chipname_), lineNum(lineNum_), consumer(consumer_),
|
||
|
direction(direction_), initValue(initValue_) {}
|
||
|
std::string chipname;
|
||
|
int lineNum;
|
||
|
std::string consumer;
|
||
|
gpio::Direction direction;
|
||
|
int initValue;
|
||
|
struct gpiod_line* lineHandle = nullptr;
|
||
|
} GpioConfig_t;
|
||
|
|
||
|
using GpioMap = std::unordered_map<gpioId_t, GpioConfig_t>;
|
||
|
using GpioMapIter = GpioMap::iterator;
|
||
|
|
||
|
#endif /* LINUX_GPIO_GPIODEFINITIONS_H_ */
|