#embedded-linux #gpio #iio
#встроенный-linux #gpio #iio
Вопрос:
Есть ли кто-нибудь, знакомый с 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:
Функция без ctx отлично подходит для быстрой установки или получения значения GPIO. Однако я бы сохранил это для одноразового использования в течение жизненного цикла вашей программы.
Причина в том, что, используя функции без ctx, libgpiod придется всегда повторять одну и ту же настройку (открытие gpiochip, запрос строки, установка ее направления), а затем получать или устанавливать значение.
Если вы читаете или устанавливаете значение несколько раз в своей программе, вам, вероятно, не следует использовать функции без ctx.
Более того, сохранение запрошенной строки в течение срока службы вашей программы, безусловно, хорошо, это помешает любой другой программе использовать этот GPIO.