8 #ifndef __LIBGPIOD_GPIOD_H__
9 #define __LIBGPIOD_GPIOD_H__
44 struct gpiod_chip_iter;
45 struct gpiod_line_iter;
58 #define GPIOD_API __attribute__((visibility("default")))
63 #define GPIOD_UNUSED __attribute__((unused))
70 #define GPIOD_BIT(nr) (1UL << (nr))
75 #define GPIOD_DEPRECATED __attribute__((deprecated))
112 bool active_low,
const char *consumer)
GPIOD_API;
124 bool active_low,
const char *consumer,
138 const unsigned int *offsets,
int *values,
154 const unsigned int *offsets,
156 bool active_low,
const char *consumer,
178 bool active_low,
const char *consumer,
197 int value,
bool active_low,
198 const char *consumer,
216 const unsigned int *offsets,
217 const int *values,
unsigned int num_lines,
218 bool active_low,
const char *consumer,
237 const unsigned int *offsets,
241 const char *consumer,
254 GPIOD_CTXLESS_EVENT_BOTH_EDGES,
293 const struct timespec *,
void *);
334 const struct timespec *,
void *);
352 bool active_low,
const char *consumer,
353 const struct timespec *timeout,
387 const unsigned int *offsets,
388 unsigned int num_lines,
bool active_low,
389 const char *consumer,
390 const struct timespec *timeout,
412 unsigned int offset,
bool active_low,
413 const char *consumer,
414 const struct timespec *timeout,
437 unsigned int offset,
bool active_low,
438 const char *consumer,
439 const struct timespec *timeout,
475 const char *device,
int event_type,
476 const unsigned int *offsets,
477 unsigned int num_lines,
bool active_low,
478 const char *consumer,
const struct timespec *timeout,
515 const char *device,
int event_type,
516 const unsigned int *offsets,
517 unsigned int num_lines,
bool active_low,
518 const char *consumer,
const struct timespec *timeout,
536 size_t chipname_size,
639 unsigned int *offsets,
unsigned int num_offsets,
691 #define GPIOD_LINE_BULK_MAX_LINES 64
712 #define GPIOD_LINE_BULK_INITIALIZER { { NULL }, 0 }
731 struct gpiod_line *line)
742 static inline struct gpiod_line *
745 return bulk->
lines[offset];
753 static inline unsigned int
766 #define gpiod_line_bulk_foreach_line(bulk, line, lineptr) \
767 for ((lineptr) = (bulk)->lines, (line) = *(lineptr); \
768 (lineptr) <= (bulk)->lines + ((bulk)->num_lines - 1); \
769 (lineptr)++, (line) = *(lineptr))
784 #define gpiod_line_bulk_foreach_line_off(bulk, line, offset) \
785 for ((offset) = 0, (line) = (bulk)->lines[0]; \
786 (offset) < (bulk)->num_lines; \
787 (offset)++, (line) = (bulk)->lines[(offset)])
1020 const char *consumer,
int default_val)
GPIOD_API;
1057 const char *consumer,
int flags)
GPIOD_API;
1068 const char *consumer,
int flags,
1079 const char *consumer,
1090 const char *consumer,
1101 const char *consumer,
1138 const char *consumer,
1176 const char *consumer,
1188 const char *consumer,
int flags,
1200 const char *consumer,
1212 const char *consumer,
1224 const char *consumer,
1351 int direction,
int flags,
1457 const struct timespec *timeout)
GPIOD_API;
1469 const struct timespec *timeout,
1651 #define gpiod_foreach_chip(iter, chip) \
1652 for ((chip) = gpiod_chip_iter_next(iter); \
1654 (chip) = gpiod_chip_iter_next(iter))
1666 #define gpiod_foreach_chip_noclose(iter, chip) \
1667 for ((chip) = gpiod_chip_iter_next_noclose(iter); \
1669 (chip) = gpiod_chip_iter_next_noclose(iter))
1677 struct gpiod_line_iter *
1701 #define gpiod_foreach_line(iter, line) \
1702 for ((line) = gpiod_line_iter_next(iter); \
1704 (line) = gpiod_line_iter_next(iter))
int gpiod_ctxless_event_monitor_multiple_ext(const char *device, int event_type, const unsigned int *offsets, unsigned int num_lines, bool active_low, const char *consumer, const struct timespec *timeout, gpiod_ctxless_event_poll_cb poll_cb, gpiod_ctxless_event_handle_cb event_cb, void *data, int flags) GPIOD_API
Wait for events on multiple GPIO lines.
int gpiod_ctxless_event_loop_multiple(const char *device, const unsigned int *offsets, unsigned int num_lines, bool active_low, const char *consumer, const struct timespec *timeout, gpiod_ctxless_event_poll_cb poll_cb, gpiod_ctxless_event_handle_cb event_cb, void *data) GPIOD_API GPIOD_DEPRECATED
Wait for events on multiple GPIO lines.
const char * gpiod_chip_name(struct gpiod_chip *chip) GPIOD_API
Get the GPIO chip name as represented in the kernel.
@ GPIOD_LINE_BIAS_PULL_UP
The internal pull-up bias is enabled.
unsigned int gpiod_chip_num_lines(struct gpiod_chip *chip) GPIOD_API
Get the number of GPIO lines exposed by this chip.
@ GPIOD_LINE_EVENT_RISING_EDGE
Rising edge event.
int gpiod_line_request_bulk_output_flags(struct gpiod_line_bulk *bulk, const char *consumer, int flags, const int *default_vals) GPIOD_API
Reserve a set of GPIO lines, set the direction to output.
struct gpiod_line * gpiod_chip_find_line(struct gpiod_chip *chip, const char *name) GPIOD_API
Find a GPIO line by name among lines associated with given GPIO chip.
void gpiod_chip_iter_free(struct gpiod_chip_iter *iter) GPIOD_API
Release all resources allocated for the gpiochip iterator and close the most recently opened gpiochip...
@ GPIOD_CTXLESS_EVENT_FALLING_EDGE
Wait for both types of events.
bool gpiod_line_needs_update(struct gpiod_line *line) GPIOD_API GPIOD_DEPRECATED
Check if the line info needs to be updated.
bool gpiod_line_is_requested(struct gpiod_line *line) GPIOD_API
Check if the calling user has ownership of this line.
static void gpiod_line_bulk_init(struct gpiod_line_bulk *bulk)
Initialize a GPIO bulk object.
int gpiod_line_bias(struct gpiod_line *line) GPIOD_API
Read the GPIO line bias setting.
int gpiod_line_event_read_fd(int fd, struct gpiod_line_event *event) GPIOD_API
Read the last GPIO event directly from a file descriptor.
int gpiod_ctxless_get_value_multiple_ext(const char *device, const unsigned int *offsets, int *values, unsigned int num_lines, bool active_low, const char *consumer, int flags) GPIOD_API
Read current values from a set of GPIO lines.
@ GPIOD_LINE_REQUEST_FLAG_OPEN_DRAIN
The line is an open-drain port.
Helper structure for storing a set of GPIO line objects.
int gpiod_ctxless_get_value_ext(const char *device, unsigned int offset, bool active_low, const char *consumer, int flags) GPIOD_API
Read current value from a single GPIO line.
int gpiod_line_direction(struct gpiod_line *line) GPIOD_API
Read the GPIO line direction setting.
int gpiod_ctxless_get_value(const char *device, unsigned int offset, bool active_low, const char *consumer) GPIOD_API
Read current value from a single GPIO line.
int gpiod_line_set_direction_input(struct gpiod_line *line) GPIOD_API
Set the direction of a single GPIO line to input.
struct gpiod_line * lines[GPIOD_LINE_BULK_MAX_LINES]
Buffer for line pointers.
@ GPIOD_LINE_BIAS_DISABLE
The internal bias is disabled.
struct timespec ts
Best estimate of time of event occurrence.
@ GPIOD_CTXLESS_EVENT_CB_FALLING_EDGE
Falling edge event occured.
@ GPIOD_CTXLESS_FLAG_BIAS_PULL_DOWN
The line has pull-down resistor enabled.
Helper structure for the ctxless event loop poll callback.
int gpiod_line_set_config(struct gpiod_line *line, int direction, int flags, int value) GPIOD_API
Update the configuration of a single GPIO line.
void(* gpiod_ctxless_set_value_cb)(void *)
Simple set value callback signature.
bool event
Indicates whether an event occurred on this file descriptor.
int gpiod_line_request_input(struct gpiod_line *line, const char *consumer) GPIOD_API
Reserve a single line, set the direction to input.
int gpiod_line_request_rising_edge_events_flags(struct gpiod_line *line, const char *consumer, int flags) GPIOD_API
Request rising edge event notifications on a single line.
@ GPIOD_CTXLESS_EVENT_RISING_EDGE
Wait for rising edge events only.
struct gpiod_chip * gpiod_chip_open_by_label(const char *label) GPIOD_API
Open a gpiochip by label.
int gpiod_ctxless_set_value_ext(const char *device, unsigned int offset, int value, bool active_low, const char *consumer, gpiod_ctxless_set_value_cb cb, void *data, int flags) GPIOD_API
Set value of a single GPIO line.
@ GPIOD_CTXLESS_EVENT_CB_RET_ERR
Stop processing events and indicate an error.
@ GPIOD_CTXLESS_EVENT_POLL_RET_ERR
Polling error occurred (the polling function should set errno).
Structure holding configuration of a line request.
struct gpiod_line * gpiod_line_get(const char *device, unsigned int offset) GPIOD_API
Get a GPIO line handle by GPIO chip description and offset.
struct gpiod_chip * gpiod_chip_open_lookup(const char *descr) GPIOD_API
Open a gpiochip based on the best guess what the path is.
void gpiod_line_close_chip(struct gpiod_line *line) GPIOD_API
Close a GPIO chip owning this line and release all resources.
int gpiod_line_set_value_bulk(struct gpiod_line_bulk *bulk, const int *values) GPIOD_API
Set the values of a set of GPIO lines.
struct gpiod_line * gpiod_line_find(const char *name) GPIOD_API
Find a GPIO line by its name.
@ GPIOD_LINE_REQUEST_EVENT_FALLING_EDGE
Monitor both types of events.
int gpiod_line_request_input_flags(struct gpiod_line *line, const char *consumer, int flags) GPIOD_API
Reserve a single line, set the direction to input.
bool gpiod_line_is_free(struct gpiod_line *line) GPIOD_API
Check if the calling user has neither requested ownership of this line nor configured any event notif...
@ GPIOD_CTXLESS_FLAG_OPEN_SOURCE
The line is an open-source port.
@ GPIOD_LINE_REQUEST_DIRECTION_OUTPUT
Request the line(s) for setting the GPIO line state.
struct gpiod_chip * gpiod_chip_open_by_name(const char *name) GPIOD_API
Open a gpiochip by name.
struct gpiod_chip * gpiod_line_get_chip(struct gpiod_line *line) GPIOD_API
Get the handle to the GPIO chip controlling this line.
@ GPIOD_LINE_DIRECTION_INPUT
Direction is input - we're reading the state of a GPIO line.
static unsigned int gpiod_line_bulk_num_lines(struct gpiod_line_bulk *bulk)
Retrieve the number of GPIO lines held by this line bulk object.
#define GPIOD_API
Makes symbol visible.
struct gpiod_line_iter * gpiod_line_iter_new(struct gpiod_chip *chip) GPIOD_API
Create a new line iterator.
int(* gpiod_ctxless_event_poll_cb)(unsigned int, struct gpiod_ctxless_event_poll_fd *, const struct timespec *, void *)
Simple event poll callback signature.
int gpiod_ctxless_event_monitor_ext(const char *device, int event_type, unsigned int offset, bool active_low, const char *consumer, const struct timespec *timeout, gpiod_ctxless_event_poll_cb poll_cb, gpiod_ctxless_event_handle_cb event_cb, void *data, int flags) GPIOD_API
Wait for events on a single GPIO line.
@ GPIOD_LINE_REQUEST_EVENT_RISING_EDGE
Only watch rising edge events.
int gpiod_line_request_output_flags(struct gpiod_line *line, const char *consumer, int flags, int default_val) GPIOD_API
Reserve a single line, set the direction to output.
void gpiod_line_release_bulk(struct gpiod_line_bulk *bulk) GPIOD_API
Release a set of previously reserved lines.
int gpiod_chip_get_all_lines(struct gpiod_chip *chip, struct gpiod_line_bulk *bulk) GPIOD_API
Retrieve all lines exposed by a chip and store them in a bulk object.
int gpiod_line_request_both_edges_events_flags(struct gpiod_line *line, const char *consumer, int flags) GPIOD_API
Request all event type notifications on a single line.
const char * gpiod_line_consumer(struct gpiod_line *line) GPIOD_API
Read the GPIO line consumer name.
int gpiod_line_request_output(struct gpiod_line *line, const char *consumer, int default_val) GPIOD_API
Reserve a single line, set the direction to output.
const char * gpiod_line_name(struct gpiod_line *line) GPIOD_API
Read the GPIO line name.
int gpiod_chip_get_lines(struct gpiod_chip *chip, unsigned int *offsets, unsigned int num_offsets, struct gpiod_line_bulk *bulk) GPIOD_API
Retrieve a set of lines and store them in a line bulk object.
@ GPIOD_CTXLESS_FLAG_BIAS_DISABLE
The line has neither either pull-up nor pull-down resistor.
int gpiod_line_request_bulk_falling_edge_events(struct gpiod_line_bulk *bulk, const char *consumer) GPIOD_API
Request falling edge event notifications on a set of lines.
void gpiod_line_iter_free(struct gpiod_line_iter *iter) GPIOD_API
Free all resources associated with a GPIO line iterator.
@ GPIOD_LINE_REQUEST_FLAG_OPEN_SOURCE
The line is an open-source port.
int gpiod_line_set_config_bulk(struct gpiod_line_bulk *bulk, int direction, int flags, const int *values) GPIOD_API
Update the configuration of a set of GPIO lines.
@ GPIOD_LINE_REQUEST_DIRECTION_AS_IS
Request the line(s), but don't change current direction.
@ GPIOD_LINE_REQUEST_FLAG_ACTIVE_LOW
The active state of the line is low (high is the default).
int gpiod_ctxless_event_loop(const char *device, unsigned int offset, bool active_low, const char *consumer, const struct timespec *timeout, gpiod_ctxless_event_poll_cb poll_cb, gpiod_ctxless_event_handle_cb event_cb, void *data) GPIOD_API GPIOD_DEPRECATED
Wait for events on a single GPIO line.
int gpiod_line_request_bulk(struct gpiod_line_bulk *bulk, const struct gpiod_line_request_config *config, const int *default_vals) GPIOD_API
Reserve a set of GPIO lines.
int gpiod_line_request_bulk_input_flags(struct gpiod_line_bulk *bulk, const char *consumer, int flags) GPIOD_API
Reserve a set of GPIO lines, set the direction to input.
const char * gpiod_chip_label(struct gpiod_chip *chip) GPIOD_API
Get the GPIO chip label as represented in the kernel.
int gpiod_line_set_direction_output_bulk(struct gpiod_line_bulk *bulk, const int *values) GPIOD_API
Set the direction of a set of GPIO lines to output.
@ GPIOD_CTXLESS_FLAG_OPEN_DRAIN
The line is an open-drain port.
@ GPIOD_LINE_BIAS_AS_IS
The internal bias state is unknown.
struct gpiod_chip * gpiod_chip_open(const char *path) GPIOD_API
Open a gpiochip by path.
int gpiod_line_request_bulk_both_edges_events(struct gpiod_line_bulk *bulk, const char *consumer) GPIOD_API
Request all event type notifications on a set of lines.
@ GPIOD_CTXLESS_FLAG_BIAS_PULL_UP
The line has pull-up resistor enabled.
int gpiod_line_request_falling_edge_events_flags(struct gpiod_line *line, const char *consumer, int flags) GPIOD_API
Request falling edge event notifications on a single line.
int event_type
Type of the event that occurred.
@ GPIOD_LINE_REQUEST_EVENT_BOTH_EDGES
Only watch falling edge events.
int request_type
Request type.
@ GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_UP
The line has pull-up resistor enabled.
int gpiod_line_update(struct gpiod_line *line) GPIOD_API
Re-read the line info.
int gpiod_line_request(struct gpiod_line *line, const struct gpiod_line_request_config *config, int default_val) GPIOD_API
Reserve a single line.
struct gpiod_line * gpiod_line_iter_next(struct gpiod_line_iter *iter) GPIOD_API
Get the next GPIO line handle.
int fd
File descriptor number.
#define GPIOD_BIT(nr)
Shift 1 by given offset.
int gpiod_ctxless_event_monitor(const char *device, int event_type, unsigned int offset, bool active_low, const char *consumer, const struct timespec *timeout, gpiod_ctxless_event_poll_cb poll_cb, gpiod_ctxless_event_handle_cb event_cb, void *data) GPIOD_API
Wait for events on a single GPIO line.
@ GPIOD_CTXLESS_EVENT_CB_RISING_EDGE
Rising edge event occured.
struct gpiod_chip_iter * gpiod_chip_iter_new(void) GPIOD_API
Create a new gpiochip iterator.
int flags
Other configuration flags.
int gpiod_line_event_read_fd_multiple(int fd, struct gpiod_line_event *events, unsigned int num_events) GPIOD_API
Read up to a certain number of events directly from a file descriptor.
int gpiod_line_request_falling_edge_events(struct gpiod_line *line, const char *consumer) GPIOD_API
Request falling edge event notifications on a single line.
struct gpiod_chip * gpiod_chip_iter_next(struct gpiod_chip_iter *iter) GPIOD_API
Get the next gpiochip handle.
#define GPIOD_DEPRECATED
Marks a public function as deprecated.
int gpiod_line_request_both_edges_events(struct gpiod_line *line, const char *consumer) GPIOD_API
Request all event type notifications on a single line.
int gpiod_line_request_bulk_rising_edge_events(struct gpiod_line_bulk *bulk, const char *consumer) GPIOD_API
Request rising edge event notifications on a set of lines.
unsigned int num_lines
Number of lines currently held in this structure.
bool gpiod_line_is_used(struct gpiod_line *line) GPIOD_API
Check if the line is currently in use.
const char * gpiod_version_string(void) GPIOD_API
Get the API version of the library as a human-readable string.
bool gpiod_line_is_open_source(struct gpiod_line *line) GPIOD_API
Check if the line is an open-source GPIO.
int gpiod_line_request_bulk_output(struct gpiod_line_bulk *bulk, const char *consumer, const int *default_vals) GPIOD_API
Reserve a set of GPIO lines, set the direction to output.
int(* gpiod_ctxless_event_handle_cb)(int, unsigned int, const struct timespec *, void *)
Simple event callback signature.
int gpiod_line_request_bulk_falling_edge_events_flags(struct gpiod_line_bulk *bulk, const char *consumer, int flags) GPIOD_API
Request falling edge event notifications on a set of lines.
const char * consumer
Name of the consumer.
int gpiod_line_event_get_fd(struct gpiod_line *line) GPIOD_API
Get the event file descriptor.
#define GPIOD_LINE_BULK_MAX_LINES
Maximum number of GPIO lines that can be requested at once.
unsigned int gpiod_line_offset(struct gpiod_line *line) GPIOD_API
Read the GPIO line offset.
@ GPIOD_LINE_REQUEST_FLAG_BIAS_DISABLE
The line has neither either pull-up nor pull-down resistor.
@ GPIOD_CTXLESS_EVENT_CB_TIMEOUT
Waiting for events timed out.
static void gpiod_line_bulk_add(struct gpiod_line_bulk *bulk, struct gpiod_line *line)
Add a single line to a GPIO bulk object.
@ GPIOD_CTXLESS_EVENT_POLL_RET_TIMEOUT
Poll timed out.
Structure holding event info.
bool gpiod_line_is_open_drain(struct gpiod_line *line) GPIOD_API
Check if the line is an open-drain GPIO.
int gpiod_ctxless_get_value_multiple(const char *device, const unsigned int *offsets, int *values, unsigned int num_lines, bool active_low, const char *consumer) GPIOD_API
Read current values from a set of GPIO lines.
void gpiod_line_release(struct gpiod_line *line) GPIOD_API
Release a previously reserved line.
int gpiod_line_set_flags(struct gpiod_line *line, int flags) GPIOD_API
Update the configuration flags of a single GPIO line.
int gpiod_line_set_flags_bulk(struct gpiod_line_bulk *bulk, int flags) GPIOD_API
Update the configuration flags of a set of GPIO lines.
int gpiod_line_active_state(struct gpiod_line *line) GPIOD_API
Read the GPIO line active state setting.
int gpiod_line_request_bulk_input(struct gpiod_line_bulk *bulk, const char *consumer) GPIOD_API
Reserve a set of GPIO lines, set the direction to input.
int gpiod_chip_find_lines(struct gpiod_chip *chip, const char **names, struct gpiod_line_bulk *bulk) GPIOD_API
Find a set of GPIO lines by names among lines exposed by this chip.
@ GPIOD_LINE_BIAS_PULL_DOWN
The internal pull-down bias is enabled.
void gpiod_chip_iter_free_noclose(struct gpiod_chip_iter *iter) GPIOD_API
Release all resources allocated for the gpiochip iterator but don't close the most recently opened gp...
int gpiod_line_request_bulk_both_edges_events_flags(struct gpiod_line_bulk *bulk, const char *consumer, int flags) GPIOD_API
Request all event type notifications on a set of lines.
int gpiod_ctxless_set_value(const char *device, unsigned int offset, int value, bool active_low, const char *consumer, gpiod_ctxless_set_value_cb cb, void *data) GPIOD_API
Set value of a single GPIO line.
int gpiod_ctxless_set_value_multiple_ext(const char *device, const unsigned int *offsets, const int *values, unsigned int num_lines, bool active_low, const char *consumer, gpiod_ctxless_set_value_cb cb, void *data, int flags) GPIOD_API
Set values of multiple GPIO lines.
int gpiod_line_get_value(struct gpiod_line *line) GPIOD_API
Read current value of a single GPIO line.
int gpiod_line_event_read_multiple(struct gpiod_line *line, struct gpiod_line_event *events, unsigned int num_events) GPIOD_API
Read up to a certain number of events from the GPIO line.
int gpiod_ctxless_event_monitor_multiple(const char *device, int event_type, const unsigned int *offsets, unsigned int num_lines, bool active_low, const char *consumer, const struct timespec *timeout, gpiod_ctxless_event_poll_cb poll_cb, gpiod_ctxless_event_handle_cb event_cb, void *data) GPIOD_API
Wait for events on multiple GPIO lines.
int gpiod_line_event_wait(struct gpiod_line *line, const struct timespec *timeout) GPIOD_API
Wait for an event on a single line.
@ GPIOD_LINE_ACTIVE_STATE_LOW
The active state of a GPIO is active-low.
int gpiod_line_event_read(struct gpiod_line *line, struct gpiod_line_event *event) GPIOD_API
Read the last event from the GPIO line.
@ GPIOD_LINE_REQUEST_DIRECTION_INPUT
Request the line(s) for reading the GPIO line state.
@ GPIOD_CTXLESS_EVENT_CB_RET_OK
Continue processing events.
struct gpiod_chip * gpiod_chip_iter_next_noclose(struct gpiod_chip_iter *iter) GPIOD_API
Get the next gpiochip handle without closing the previous one.
int gpiod_line_request_bulk_rising_edge_events_flags(struct gpiod_line_bulk *bulk, const char *consumer, int flags) GPIOD_API
Request rising edge event notifications on a set of lines.
int gpiod_line_get_value_bulk(struct gpiod_line_bulk *bulk, int *values) GPIOD_API
Read current values of a set of GPIO lines.
@ GPIOD_LINE_EVENT_FALLING_EDGE
Falling edge event.
int gpiod_line_event_wait_bulk(struct gpiod_line_bulk *bulk, const struct timespec *timeout, struct gpiod_line_bulk *event_bulk) GPIOD_API
Wait for events on a set of lines.
int gpiod_line_request_rising_edge_events(struct gpiod_line *line, const char *consumer) GPIOD_API
Request rising edge event notifications on a single line.
@ GPIOD_CTXLESS_EVENT_CB_RET_STOP
Stop processing events.
void gpiod_chip_close(struct gpiod_chip *chip) GPIOD_API
Close a GPIO chip handle and release all allocated resources.
struct gpiod_chip * gpiod_chip_open_by_number(unsigned int num) GPIOD_API
Open a gpiochip by number.
static struct gpiod_line * gpiod_line_bulk_get_line(struct gpiod_line_bulk *bulk, unsigned int offset)
Retrieve the line handle from a line bulk object at given offset.
@ GPIOD_LINE_ACTIVE_STATE_HIGH
The active state of a GPIO is active-high.
int gpiod_line_set_value(struct gpiod_line *line, int value) GPIOD_API
Set the value of a single GPIO line.
int gpiod_ctxless_find_line(const char *name, char *chipname, size_t chipname_size, unsigned int *offset) GPIOD_API
Determine the chip name and line offset of a line with given name.
int gpiod_ctxless_set_value_multiple(const char *device, const unsigned int *offsets, const int *values, unsigned int num_lines, bool active_low, const char *consumer, gpiod_ctxless_set_value_cb cb, void *data) GPIOD_API
Set values of multiple GPIO lines.
int gpiod_line_set_direction_output(struct gpiod_line *line, int value) GPIOD_API
Set the direction of a single GPIO line to output.
@ GPIOD_LINE_DIRECTION_OUTPUT
Direction is output - we're driving the GPIO line.
@ GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_DOWN
The line has pull-down resistor enabled.
@ GPIOD_CTXLESS_EVENT_POLL_RET_STOP
The event loop should stop processing events.
int gpiod_line_set_direction_input_bulk(struct gpiod_line_bulk *bulk) GPIOD_API
Set the direction of a set of GPIO lines to input.
struct gpiod_line * gpiod_chip_get_line(struct gpiod_chip *chip, unsigned int offset) GPIOD_API
Get the handle to the GPIO line at given offset.