有没有一个熟悉libgpiod的人可以回答这个问题:
使用 ctxless 函数而不是调用单个函数来操纵芯片行是否有缺点?例如,要打开一条线,我可能会这样写:
struct gpiod_chip* chip = gpiod_chip_open_by_name("gpiochip2");
struct gpiod_line* line = gpiod_chip_get_line(chip, 10);
gpiod_line_request_output(line, "foo", 0);
gpiod_chip_close(chip);
或者我可以只使用一个电话:
gpiod_ctxless_set_value("gpiochip2", 10, 1, false, "foo", NULL, NULL);
您何时会使用另一个?
答案 0 :(得分:1)
无ctxless函数非常适合快速设置或获取GPIO的值。但是,我会在程序的整个生命周期中将其保留一次。
原因是,使用ctxless函数时,libgpiod必须始终重做相同的设置(打开gpiochip,请求行,设置其方向),然后获取或设置值。
如果要在程序中多次读取或设置该值,则可能不应该使用ctxless函数。
此外,绝对要在程序寿命期内保留请求的行,因为这样做会阻止其他任何程序使用该GPIO。