#ifndef LINUX_GPIO_GPIODEFINITIONS_H_ #define LINUX_GPIO_GPIODEFINITIONS_H_ #include #include 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(): chipname(), lineNum(0), consumer(), direction(gpio::Direction::OUT), initValue(0) {}; 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; using GpioMapIter = GpioMap::iterator; #endif /* LINUX_GPIO_GPIODEFINITIONS_H_ */