libgpiod2.0库相比于之前函数有些变化
//根据路径打开一个GPIO_CHIP,返回一个gpiod_chip型的结构体指针
struct gpiod_chip *gpiod_chip_open(const char *path)
//关闭一个GPIO_CHIP
void gpiod_chip_close(struct gpiod_chip *chip);
//获取GPIO_CHIP的信息。若成功则返回gpiod_chip_info *指针类型,失败返回NULL,使用过后必须用gpiod_chip_info_free进行释放。
struct gpiod_chip_info *gpiod_chip_get_info(struct gpiod_chip *chip);
//获取GPIO_CHIP的路径
const char *gpiod_chip_get_path(struct gpiod_chip *chip);
//返回CHIP下LINE的简介信息,失败返回NULL,使用后需要使用gpiod_line_info_free函数释放该line
struct gpiod_line_info *gpiod_chip_get_line_info(struct gpiod_chip *chip,
unsigned int offset);
//获取该线的状态且对其将来的变化进行观察,失败返回空。使用后需要用gpiod_line_info_free进行释放
//获取到的线状态不包括线的值,要对线的值进行监控,则必须将线设置为边缘检测的输入
struct gpiod_line_info *gpiod_chip_watch_line_info(struct gpiod_chip *chip,
unsigned int offset);
//停止对线的观测,成功返回0,失败返回-1
int gpiod_chip_unwatch_line_info(struct gpiod_chip *chip, unsigned int offset);
//获取CHIP的文件描述符。这个函数不会失败,用户不能自己关闭此文件描述符,只能通过gpiod_chip_close函数关闭
int gpiod_chip_get_fd(struct gpiod_chip *chip);
//等待芯片上任何被监视线路上的线路状态更改事件。返回值为0表示超时,-1表示出错,1表示时间发生
//timeout_ns 等待时间限制(以纳秒为单位)。如果设置为 0,则该函数将立即返回。如果设置为负数,则该函数将无限期阻止,直到事件变为
可用。
int gpiod_chip_wait_info_event(struct gpiod_chip *chip, int64_t timeout_ns);
//从芯片读取单行状态更改事件。
//获取最新导致状态改变的事件,出错为NULL,需使用gpiod_info_event_free函数对事件进行释放
//struct gpiod_info_event *gpiod_chip_read_info_event(struct gpiod_chip *chip);
//给一条线赋名
int gpiod_chip_get_line_offset_from_name(struct gpiod_chip *chip,
const char *name);
//请求一条独自使用的线
//第二个参数为请求配置对象,默认可以为NULL。第三个参数为line_cfg Line 配置对象。
//失败返回NULL,函数需由gpiod_line_request_release进行释放
struct gpiod_line_request *
gpiod_chip_request_lines(struct gpiod_chip *chip,
struct gpiod_request_config *req_cfg,
struct gpiod_line_config *line_cfg);
//释放一个CHIP
void gpiod_chip_info_free(struct gpiod_chip_info *info);
//获取内核中CHIP的名字
const char *gpiod_chip_info_get_name(struct gpiod_chip_info *info);
//获取内核中表示芯片的标签
const char *gpiod_chip_info_get_label(struct gpiod_chip_info *info)
//获取CHIP上lINE的个数
size_t gpiod_chip_info_get_num_lines(struct gpiod_chip_info *info);
线;
//释放行
void gpiod_line_info_free(struct gpiod_line_info *info);
//复制行的信息对象并返回
struct gpiod_line_info *gpiod_line_info_copy(struct gpiod_line_info *info);
//获取线的偏移量
unsigned int gpiod_line_info_get_offset(struct gpiod_line_info *info);
//获取线的名称
const char *gpiod_line_info_get_name(struct gpiod_line_info *info);
//检查线是否在使用,返回TRUE表示在使用,FALSE表示不在使用
bool gpiod_line_info_is_used(struct gpiod_line_info *info);
//获取线的使用者的名称
const char *gpiod_line_info_get_consumer(struct gpiod_line_info *info);
//获取线的方向,返回GPIOD_LINE_DIRECTION_INPUT or GPIOD_LINE_DIRECTION_OUTPUT.
enum gpiod_line_direction
gpiod_line_info_get_direction(struct gpiod_line_info *info);
//获取线的边沿设置,GPIOD_LINE_EDGE_NONE, ::GPIOD_LINE_EDGE_RISING, :GPIOD_LINE_EDGE_FALLING or ::GPIOD_LINE_EDGE_BOTH.
enum gpiod_line_edge
gpiod_line_info_get_edge_detection(struct gpiod_line_info *info);
//获取线的偏置设置,返回GPIOD_LINE_BIAS_PULL_UP, ::GPIOD_LINE_BIAS_PULL_DOWN,
GPIOD_LINE_BIAS_DISABLED or ::GPIOD_LINE_BIAS_UNKNOWN
enum gpiod_line_bias
gpiod_line_info_get_bias(struct gpiod_line_info *info);
//获取线的驱动器设置,返回GPIOD_LINE_DRIVE_PUSH_PULL, ::GPIOD_LINE_DRIVE_OPEN_DRAIN
GPIOD_LINE_DRIVE_OPEN_SOURCE.
enum gpiod_line_drive
gpiod_line_info_get_drive(struct gpiod_line_info *info);
//检查线的逻辑值与物理值是否相反
bool gpiod_line_info_is_active_low(struct gpiod_line_info *info);
//检查线是否去抖动
bool gpiod_line_info_is_debounced(struct gpiod_line_info *info);
//获取线的抖动周期,单位毫秒
unsigned long
gpiod_line_info_get_debounce_period_us(struct gpiod_line_info *info);
//获取用于线路的边缘事件时间戳的事件时钟设置。
enum gpiod_line_clock
gpiod_line_info_get_event_clock(struct gpiod_line_info *info);
//释放 info 事件对象并释放所有关联的资源。
void gpiod_info_event_free(struct gpiod_info_event *event);
//获取状态更改事件的事件类型。
enum gpiod_info_event_type
gpiod_info_event_get_event_type(struct gpiod_info_event *event);
//获取事件的时间戳
uint64_t gpiod_info_event_get_timestamp_ns(struct gpiod_info_event *event);
//获取与事件关联的行信息的简介
struct gpiod_line_info *
gpiod_info_event_get_line_info(struct gpiod_info_event *event);
线设置对象:
//创建新的行设置对象。
struct gpiod_line_settings *gpiod_line_settings_new(void);
//释放线设置对象跟所有关联资源
void gpiod_line_settings_free(struct gpiod_line_settings *settings);
//将行对象设置为默认值
void gpiod_line_settings_reset(struct gpiod_line_settings *settings);
//复制线设置对象
struct gpiod_line_settings *
gpiod_line_settings_copy(struct gpiod_line_settings *settings);
//设置线的方向,0表示设置成功,-1表示设置失败
int gpiod_line_settings_set_direction(struct gpiod_line_settings *settings,
enum gpiod_line_direction direction);
//获取线的方向
enum gpiod_line_direction
gpiod_line_settings_get_direction(struct gpiod_line_settings *settings);
//设置边缘检测
int gpiod_line_settings_set_edge_detection(struct gpiod_line_settings *settings,
enum gpiod_line_edge edge);
//获取边缘检测设置
enum gpiod_line_edge
gpiod_line_settings_get_edge_detection(struct gpiod_line_settings *settings);
//设置偏置
int gpiod_line_settings_set_bias(struct gpiod_line_settings *settings,
enum gpiod_line_bias bias);
//获取偏置
enum gpiod_line_bias
gpiod_line_settings_get_bias(struct gpiod_line_settings *settings);
//设置驱动
int gpiod_line_settings_set_drive(struct gpiod_line_settings *settings,
enum gpiod_line_drive drive);
//获取驱动
enum gpiod_line_drive
gpiod_line_settings_get_drive(struct gpiod_line_settings *settings);
//检测是否有低电平设置
bool gpiod_line_settings_get_active_low(struct gpiod_line_settings *settings);
//设置抖动周期
void
gpiod_line_settings_set_debounce_period_us(struct gpiod_line_settings *settings,
unsigned long period);
//获取抖动周期
unsigned long
gpiod_line_settings_get_debounce_period_us(
struct gpiod_line_settings *settings);
//设置事件时钟
int gpiod_line_settings_set_event_clock(struct gpiod_line_settings *settings,
enum gpiod_line_clock event_clock);
//获取事件时钟设置
enum gpiod_line_clock
gpiod_line_settings_get_event_clock(struct gpiod_line_settings *settings);
//设置输出值,0表示设置成功,-1表示失败
int gpiod_line_settings_set_output_value(struct gpiod_line_settings *settings,
enum gpiod_line_value value);
//获取输出值
enum gpiod_line_value
gpiod_line_settings_get_output_value(struct gpiod_line_settings *settings);
//创建新的线配置对象,成功返回其对象,失败为0 ,使用后需使用gpiod_line_config_free函数进行释放
struct gpiod_line_config *gpiod_line_config_new(void)
//释放线配置对象及所有关联资源
void gpiod_line_config_free(struct gpiod_line_config *config);
//重置线配置对象
void gpiod_line_config_reset(struct gpiod_line_config *config);
//增加线设置
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);
//获取线的偏置
struct gpiod_line_settings *
gpiod_line_config_get_line_settings(struct gpiod_line_config *config,
unsigned int offset);
//设置一组输出值
int gpiod_line_config_set_output_values(struct gpiod_line_config *config,
const enum gpiod_line_value *values,
size_t num_values);
//获取已经配置偏置的线个数
size_t
gpiod_line_config_get_num_configured_offsets(struct gpiod_line_config *config);
//获取线配置的偏置
size_t
gpiod_line_config_get_configured_offsets(struct gpiod_line_config *config,
unsigned int *offsets,
size_t max_offsets);
//创建新的请求配置对象,使用后需要gpiod_request_config_free函数释放
struct gpiod_request_config *gpiod_request_config_new(void)
//释放请求配置对象及所有关联资源
void gpiod_request_config_free(struct gpiod_request_config *config);
//设置使用请求设置对象的名字
const char *
gpiod_request_config_get_consumer(struct gpiod_request_config *config);
//设置请求的内核事件缓冲区的大小
void
gpiod_request_config_set_event_buffer_size(struct gpiod_request_config *config,
size_t event_buffer_size);
//获取请求配置的边缘事件缓冲区大小
size_t
gpiod_request_config_get_event_buffer_size(struct gpiod_request_config *config)
//释放请求的线路跟关联的资源
void gpiod_line_request_release(struct gpiod_line_request *request);
//获取请求的线路数量
size_t
gpiod_line_request_get_num_requested_lines(struct gpiod_line_request *request);
//获取请求线的偏置
size_t
gpiod_line_request_get_requested_offsets(struct gpiod_line_request *request,
unsigned int *offsets,
size_t max_offsets);
//获取一个请求线路的值
enum gpiod_line_value
gpiod_line_request_get_value(struct gpiod_line_request *request,
unsigned int offset);
//获取所有请求线路的值
int gpiod_line_request_get_values(struct gpiod_line_request *request,
enum gpiod_line_value *values);
//设置一条请求线路的值
int gpiod_line_request_set_value(struct gpiod_line_request *request,
unsigned int offset,
enum gpiod_line_value value);
//设置一组请求线路的值
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);
//设置所有请求线路的值
int gpiod_line_request_set_values(struct gpiod_line_request *request,
const enum gpiod_line_value *values);
//更新与线路请求关联的线路的配置
int gpiod_line_request_reconfigure_lines(struct gpiod_line_request *request,
struct gpiod_line_config *config);
//获取线路请求的文件描述符
int gpiod_line_request_get_fd(struct gpiod_line_request *request);
//等待任何请求线路上的边缘事件
int gpiod_line_request_wait_edge_events(struct gpiod_line_request *request,
int64_t timeout_ns);
//从线路请求中读取多个边缘事件
int gpiod_line_request_read_edge_events(struct gpiod_line_request *request,
struct gpiod_edge_event_buffer *buffer,
size_t max_events);
//释放边缘事件对象
void gpiod_edge_event_free(struct gpiod_edge_event *event);
//复制边缘事件对象
struct gpiod_edge_event *gpiod_edge_event_copy(struct gpiod_edge_event *event);
//获取事件类型
enum gpiod_edge_event_type
gpiod_edge_event_get_event_type(struct gpiod_edge_event *event);
//获取事件的时间戳
uint64_t gpiod_edge_event_get_timestamp_ns(struct gpiod_edge_event *event);
//获取触发事件的线的偏移量
unsigned int gpiod_edge_event_get_line_offset(struct gpiod_edge_event *event);
//获取事件的全局序列号
unsigned long gpiod_edge_event_get_global_seqno(struct gpiod_edge_event *event);
//获取特定于该行的事件序列号
unsigned long gpiod_edge_event_get_line_seqno(struct gpiod_edge_event *event);
//创建新的事件BUFFER
struct gpiod_edge_event_buffer *
gpiod_edge_event_buffer_new(size_t capacity);
//获取事件缓冲区的容量(可存储的最大事件数)。
size_t
gpiod_edge_event_buffer_get_capacity(struct gpiod_edge_event_buffer *buffer);
//释放边缘事件BUFFER
void gpiod_edge_event_buffer_free(struct gpiod_edge_event_buffer *buffer);
//获取存储在缓冲区中的事件
struct gpiod_edge_event *
gpiod_edge_event_buffer_get_event(struct gpiod_edge_event_buffer *buffer,
unsigned long index);
//获取缓冲区存储的事件数。
size_t
gpiod_edge_event_buffer_get_num_events(struct gpiod_edge_event_buffer *buffer);
//检查路径指向的文件是否为GPIO芯片字符设备
bool gpiod_is_gpiochip_device(const char *path);
//将库的 API 版本获取为人类可读的字符串
const char *gpiod_api_version(void);