ユーザー空間から IIO ドライバーを使用して、ADC (AD7924) の値を読み取ります。トリガーされた取得を機能させるためのすべての手順があります (トリガーを作成し、割り当て、ADC チャネルを有効にし、バッファーのサイズを設定し、有効にします)。このコードは次のとおりです。
// 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");
このように構成されたシステムは、取得を処理し、完全なバッファーを埋めます。いっぱいになると、取得は停止します。
私の質問は次のとおりです。バッファが完全にいっぱいになったことをどのように知ることができますか? /dev/にあるファイルiio:device0で poll または select 関数を使用してファイル記述子の変更を確認しようとしましたが、取得がいつ開始されたかを知ることしかできませんでした (POLLIN イベントを確認することによって)。