Я использую драйверы IIO из пользовательского пространства, чтобы прочитать значение АЦП (AD7924). У меня есть все шаги, чтобы получить работу с запущенным приобретением (создать триггер, назначить его, включить каналы АЦП, установить размер буфера и включить его). Вот код для этого:IIO Linux: как узнать, когда буфер заполнен?
// Create IIO trigger
system("echo 0 > /sys/devices/iio_sysfs_trigger/add_trigger");
// Assign IIO trigger "sysfstrig0" to IIO AD7923 driver
system("echo sysfstrig0 > /sys/bus/iio/devices/iio:device0/trigger/current_trigger");
// Enable scan of the first 3 channels for AD7924
system("echo 1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage0_en");
system("echo 1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage1_en");
system("echo 1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage2_en");
system("echo 0 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage3_en");
// Dim IIO buffer and enable it
sprintf(CommandeADC, "echo %d > /sys/bus/iio/devices/iio:device0/buffer/length", NB_ECH);
system(CommandeADC);
system("echo 1 > /sys/bus/iio/devices/iio:device0/buffer/enable");
//Launch acquisition...
system("echo 1 > /sys/bus/iio/devices/trigger0/trigger_now");
Система, сконфигурированная таким образом, будет обрабатывать получение и заполнять полный буфер. Как только он станет полным, процесс прекращается.
Мой вопрос: как я могу узнать, когда буфер заполнен полностью? Я попытался использовать функцию опроса или выбора в файле iio: device0, расположенный в /dev/, чтобы проверить изменения в файловом дескрипторе, но я смог узнать только, когда началось приобретение (путем проверки события POLLIN).