libgpiod  2.1.3
Enumerations | Functions
gpiod.h File Reference
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
Include dependency graph for gpiod.h:

Go to the source code of this file.

Enumerations

enum  gpiod_line_value { GPIOD_LINE_VALUE_ERROR = -1 , GPIOD_LINE_VALUE_INACTIVE = 0 , GPIOD_LINE_VALUE_ACTIVE = 1 }
 Logical line state. More...
 
enum  gpiod_line_direction { GPIOD_LINE_DIRECTION_AS_IS = 1 , GPIOD_LINE_DIRECTION_INPUT , GPIOD_LINE_DIRECTION_OUTPUT }
 Direction settings. More...
 
enum  gpiod_line_edge { GPIOD_LINE_EDGE_NONE = 1 , GPIOD_LINE_EDGE_RISING , GPIOD_LINE_EDGE_FALLING , GPIOD_LINE_EDGE_BOTH }
 Edge detection settings. More...
 
enum  gpiod_line_bias {
  GPIOD_LINE_BIAS_AS_IS = 1 , GPIOD_LINE_BIAS_UNKNOWN , GPIOD_LINE_BIAS_DISABLED , GPIOD_LINE_BIAS_PULL_UP ,
  GPIOD_LINE_BIAS_PULL_DOWN
}
 Internal bias settings. More...
 
enum  gpiod_line_drive { GPIOD_LINE_DRIVE_PUSH_PULL = 1 , GPIOD_LINE_DRIVE_OPEN_DRAIN , GPIOD_LINE_DRIVE_OPEN_SOURCE }
 Drive settings. More...
 
enum  gpiod_line_clock { GPIOD_LINE_CLOCK_MONOTONIC = 1 , GPIOD_LINE_CLOCK_REALTIME , GPIOD_LINE_CLOCK_HTE }
 Clock settings. More...
 
enum  gpiod_info_event_type { GPIOD_INFO_EVENT_LINE_REQUESTED = 1 , GPIOD_INFO_EVENT_LINE_RELEASED , GPIOD_INFO_EVENT_LINE_CONFIG_CHANGED }
 Line status change event types. More...
 
enum  gpiod_edge_event_type { GPIOD_EDGE_EVENT_RISING_EDGE = 1 , GPIOD_EDGE_EVENT_FALLING_EDGE }
 Event types. More...
 

Functions

struct gpiod_chipgpiod_chip_open (const char *path)
 Open a chip by path. More...
 
void gpiod_chip_close (struct gpiod_chip *chip)
 Close the chip and release all associated resources. More...
 
struct gpiod_chip_infogpiod_chip_get_info (struct gpiod_chip *chip)
 Get information about the chip. More...
 
const char * gpiod_chip_get_path (struct gpiod_chip *chip)
 Get the path used to open the chip. More...
 
struct gpiod_line_infogpiod_chip_get_line_info (struct gpiod_chip *chip, unsigned int offset)
 Get a snapshot of information about a line. More...
 
struct gpiod_line_infogpiod_chip_watch_line_info (struct gpiod_chip *chip, unsigned int offset)
 Get a snapshot of the status of a line and start watching it for future changes. More...
 
int gpiod_chip_unwatch_line_info (struct gpiod_chip *chip, unsigned int offset)
 Stop watching a line for status changes. More...
 
int gpiod_chip_get_fd (struct gpiod_chip *chip)
 Get the file descriptor associated with the chip. More...
 
int gpiod_chip_wait_info_event (struct gpiod_chip *chip, int64_t timeout_ns)
 Wait for line status change events on any of the watched lines on the chip. More...
 
struct gpiod_info_eventgpiod_chip_read_info_event (struct gpiod_chip *chip)
 Read a single line status change event from the chip. More...
 
int gpiod_chip_get_line_offset_from_name (struct gpiod_chip *chip, const char *name)
 Map a line's name to its offset within the chip. More...
 
struct gpiod_line_requestgpiod_chip_request_lines (struct gpiod_chip *chip, struct gpiod_request_config *req_cfg, struct gpiod_line_config *line_cfg)
 Request a set of lines for exclusive usage. More...
 
void gpiod_chip_info_free (struct gpiod_chip_info *info)
 Free a chip info object and release all associated resources. More...
 
const char * gpiod_chip_info_get_name (struct gpiod_chip_info *info)
 Get the name of the chip as represented in the kernel. More...
 
const char * gpiod_chip_info_get_label (struct gpiod_chip_info *info)
 Get the label of the chip as represented in the kernel. More...
 
size_t gpiod_chip_info_get_num_lines (struct gpiod_chip_info *info)
 Get the number of lines exposed by the chip. More...
 
void gpiod_line_info_free (struct gpiod_line_info *info)
 Free a line info object and release all associated resources. More...
 
struct gpiod_line_infogpiod_line_info_copy (struct gpiod_line_info *info)
 Copy a line info object. More...
 
unsigned int gpiod_line_info_get_offset (struct gpiod_line_info *info)
 Get the offset of the line. More...
 
const char * gpiod_line_info_get_name (struct gpiod_line_info *info)
 Get the name of the line. More...
 
bool gpiod_line_info_is_used (struct gpiod_line_info *info)
 Check if the line is in use. More...
 
const char * gpiod_line_info_get_consumer (struct gpiod_line_info *info)
 Get the name of the consumer of the line. More...
 
enum gpiod_line_direction gpiod_line_info_get_direction (struct gpiod_line_info *info)
 Get the direction setting of the line. More...
 
enum gpiod_line_edge gpiod_line_info_get_edge_detection (struct gpiod_line_info *info)
 Get the edge detection setting of the line. More...
 
enum gpiod_line_bias gpiod_line_info_get_bias (struct gpiod_line_info *info)
 Get the bias setting of the line. More...
 
enum gpiod_line_drive gpiod_line_info_get_drive (struct gpiod_line_info *info)
 Get the drive setting of the line. More...
 
bool gpiod_line_info_is_active_low (struct gpiod_line_info *info)
 Check if the logical value of the line is inverted compared to the physical. More...
 
bool gpiod_line_info_is_debounced (struct gpiod_line_info *info)
 Check if the line is debounced (either by hardware or by the kernel software debouncer). More...
 
unsigned long gpiod_line_info_get_debounce_period_us (struct gpiod_line_info *info)
 Get the debounce period of the line, in microseconds. More...
 
enum gpiod_line_clock gpiod_line_info_get_event_clock (struct gpiod_line_info *info)
 Get the event clock setting used for edge event timestamps for the line. More...
 
void gpiod_info_event_free (struct gpiod_info_event *event)
 Free the info event object and release all associated resources. More...
 
enum gpiod_info_event_type gpiod_info_event_get_event_type (struct gpiod_info_event *event)
 Get the event type of the status change event. More...
 
uint64_t gpiod_info_event_get_timestamp_ns (struct gpiod_info_event *event)
 Get the timestamp of the event. More...
 
struct gpiod_line_infogpiod_info_event_get_line_info (struct gpiod_info_event *event)
 Get the snapshot of line-info associated with the event. More...
 
struct gpiod_line_settingsgpiod_line_settings_new (void)
 Create a new line settings object. More...
 
void gpiod_line_settings_free (struct gpiod_line_settings *settings)
 Free the line settings object and release all associated resources. More...
 
void gpiod_line_settings_reset (struct gpiod_line_settings *settings)
 Reset the line settings object to its default values. More...
 
struct gpiod_line_settingsgpiod_line_settings_copy (struct gpiod_line_settings *settings)
 Copy the line settings object. More...
 
int gpiod_line_settings_set_direction (struct gpiod_line_settings *settings, enum gpiod_line_direction direction)
 Set direction. More...
 
enum gpiod_line_direction gpiod_line_settings_get_direction (struct gpiod_line_settings *settings)
 Get direction. More...
 
int gpiod_line_settings_set_edge_detection (struct gpiod_line_settings *settings, enum gpiod_line_edge edge)
 Set edge detection. More...
 
enum gpiod_line_edge gpiod_line_settings_get_edge_detection (struct gpiod_line_settings *settings)
 Get edge detection. More...
 
int gpiod_line_settings_set_bias (struct gpiod_line_settings *settings, enum gpiod_line_bias bias)
 Set bias. More...
 
enum gpiod_line_bias gpiod_line_settings_get_bias (struct gpiod_line_settings *settings)
 Get bias. More...
 
int gpiod_line_settings_set_drive (struct gpiod_line_settings *settings, enum gpiod_line_drive drive)
 Set drive. More...
 
enum gpiod_line_drive gpiod_line_settings_get_drive (struct gpiod_line_settings *settings)
 Get drive. More...
 
void gpiod_line_settings_set_active_low (struct gpiod_line_settings *settings, bool active_low)
 Set active-low setting. More...
 
bool gpiod_line_settings_get_active_low (struct gpiod_line_settings *settings)
 Get active-low setting. More...
 
void gpiod_line_settings_set_debounce_period_us (struct gpiod_line_settings *settings, unsigned long period)
 Set debounce period. More...
 
unsigned long gpiod_line_settings_get_debounce_period_us (struct gpiod_line_settings *settings)
 Get debounce period. More...
 
int gpiod_line_settings_set_event_clock (struct gpiod_line_settings *settings, enum gpiod_line_clock event_clock)
 Set event clock. More...
 
enum gpiod_line_clock gpiod_line_settings_get_event_clock (struct gpiod_line_settings *settings)
 Get event clock setting. More...
 
int gpiod_line_settings_set_output_value (struct gpiod_line_settings *settings, enum gpiod_line_value value)
 Set the output value. More...
 
enum gpiod_line_value gpiod_line_settings_get_output_value (struct gpiod_line_settings *settings)
 Get the output value. More...
 
struct gpiod_line_configgpiod_line_config_new (void)
 Create a new line config object. More...
 
void gpiod_line_config_free (struct gpiod_line_config *config)
 Free the line config object and release all associated resources. More...
 
void gpiod_line_config_reset (struct gpiod_line_config *config)
 Reset the line config object. More...
 
int gpiod_line_config_add_line_settings (struct gpiod_line_config *config, const unsigned int *offsets, size_t num_offsets, struct gpiod_line_settings *settings)
 Add line settings for a set of offsets. More...
 
struct gpiod_line_settingsgpiod_line_config_get_line_settings (struct gpiod_line_config *config, unsigned int offset)
 Get line settings for offset. More...
 
int gpiod_line_config_set_output_values (struct gpiod_line_config *config, const enum gpiod_line_value *values, size_t num_values)
 Set output values for a number of lines. More...
 
size_t gpiod_line_config_get_num_configured_offsets (struct gpiod_line_config *config)
 Get the number of configured line offsets. More...
 
size_t gpiod_line_config_get_configured_offsets (struct gpiod_line_config *config, unsigned int *offsets, size_t max_offsets)
 Get configured offsets. More...
 
struct gpiod_request_configgpiod_request_config_new (void)
 Create a new request config object. More...
 
void gpiod_request_config_free (struct gpiod_request_config *config)
 Free the request config object and release all associated resources. More...
 
void gpiod_request_config_set_consumer (struct gpiod_request_config *config, const char *consumer)
 Set the consumer name for the request. More...
 
const char * gpiod_request_config_get_consumer (struct gpiod_request_config *config)
 Get the consumer name configured in the request config. More...
 
void gpiod_request_config_set_event_buffer_size (struct gpiod_request_config *config, size_t event_buffer_size)
 Set the size of the kernel event buffer for the request. More...
 
size_t gpiod_request_config_get_event_buffer_size (struct gpiod_request_config *config)
 Get the edge event buffer size for the request config. More...
 
void gpiod_line_request_release (struct gpiod_line_request *request)
 Release the requested lines and free all associated resources. More...
 
const char * gpiod_line_request_get_chip_name (struct gpiod_line_request *request)
 Get the name of the chip this request was made on. More...
 
size_t gpiod_line_request_get_num_requested_lines (struct gpiod_line_request *request)
 Get the number of lines in the request. More...
 
size_t gpiod_line_request_get_requested_offsets (struct gpiod_line_request *request, unsigned int *offsets, size_t max_offsets)
 Get the offsets of the lines in the request. More...
 
enum gpiod_line_value gpiod_line_request_get_value (struct gpiod_line_request *request, unsigned int offset)
 Get the value of a single requested line. More...
 
int gpiod_line_request_get_values_subset (struct gpiod_line_request *request, size_t num_values, const unsigned int *offsets, enum gpiod_line_value *values)
 Get the values of a subset of requested lines. More...
 
int gpiod_line_request_get_values (struct gpiod_line_request *request, enum gpiod_line_value *values)
 Get the values of all requested lines. More...
 
int gpiod_line_request_set_value (struct gpiod_line_request *request, unsigned int offset, enum gpiod_line_value value)
 Set the value of a single requested line. More...
 
int gpiod_line_request_set_values_subset (struct gpiod_line_request *request, size_t num_values, const unsigned int *offsets, const enum gpiod_line_value *values)
 Set the values of a subset of requested lines. More...
 
int gpiod_line_request_set_values (struct gpiod_line_request *request, const enum gpiod_line_value *values)
 Set the values of all lines associated with a request. More...
 
int gpiod_line_request_reconfigure_lines (struct gpiod_line_request *request, struct gpiod_line_config *config)
 Update the configuration of lines associated with a line request. More...
 
int gpiod_line_request_get_fd (struct gpiod_line_request *request)
 Get the file descriptor associated with a line request. More...
 
int gpiod_line_request_wait_edge_events (struct gpiod_line_request *request, int64_t timeout_ns)
 Wait for edge events on any of the requested lines. More...
 
int gpiod_line_request_read_edge_events (struct gpiod_line_request *request, struct gpiod_edge_event_buffer *buffer, size_t max_events)
 Read a number of edge events from a line request. More...
 
void gpiod_edge_event_free (struct gpiod_edge_event *event)
 Free the edge event object. More...
 
struct gpiod_edge_eventgpiod_edge_event_copy (struct gpiod_edge_event *event)
 Copy the edge event object. More...
 
enum gpiod_edge_event_type gpiod_edge_event_get_event_type (struct gpiod_edge_event *event)
 Get the event type. More...
 
uint64_t gpiod_edge_event_get_timestamp_ns (struct gpiod_edge_event *event)
 Get the timestamp of the event. More...
 
unsigned int gpiod_edge_event_get_line_offset (struct gpiod_edge_event *event)
 Get the offset of the line which triggered the event. More...
 
unsigned long gpiod_edge_event_get_global_seqno (struct gpiod_edge_event *event)
 Get the global sequence number of the event. More...
 
unsigned long gpiod_edge_event_get_line_seqno (struct gpiod_edge_event *event)
 Get the event sequence number specific to the line. More...
 
struct gpiod_edge_event_buffergpiod_edge_event_buffer_new (size_t capacity)
 Create a new edge event buffer. More...
 
size_t gpiod_edge_event_buffer_get_capacity (struct gpiod_edge_event_buffer *buffer)
 Get the capacity (the max number of events that can be stored) of the event buffer. More...
 
void gpiod_edge_event_buffer_free (struct gpiod_edge_event_buffer *buffer)
 Free the edge event buffer and release all associated resources. More...
 
struct gpiod_edge_eventgpiod_edge_event_buffer_get_event (struct gpiod_edge_event_buffer *buffer, unsigned long index)
 Get an event stored in the buffer. More...
 
size_t gpiod_edge_event_buffer_get_num_events (struct gpiod_edge_event_buffer *buffer)
 Get the number of events a buffer has stored. More...
 
bool gpiod_is_gpiochip_device (const char *path)
 Check if the file pointed to by path is a GPIO chip character device. More...
 
const char * gpiod_api_version (void)
 Get the API version of the library as a human-readable string. More...