Являются ли функции ctxless хуже или лучше использовать в libgpiod - PullRequest
2 голосов
/ 14 марта 2019

Есть ли кто-нибудь, знакомый с 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);

Когда бы вы использовали один над другим?

1 Ответ

1 голос
/ 16 марта 2019

Функция ctxless отлично подходит для быстрой установки или получения значения GPIO. Тем не менее, я бы оставил его на одноразовое использование в течение жизненного цикла вашей программы.

Причина в том, что при использовании функций ctxless libgpiod всегда должен будет повторять одну и ту же настройку (открывать gpiochip, запрашивать линию, устанавливать ее направление), а затем получать или устанавливать значение.

Если вы читаете или устанавливаете значение несколько раз в своей программе, вам, вероятно, не следует использовать функции ctxless.

Более того, сохранение строки, запрошенной для жизни вашей программы, безусловно, является хорошей вещью, поскольку это не позволит любой другой программе использовать этот GPIO.

...