libgpiod2.0版本函数解析

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);






























评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值