diff options
author | Jonathan Cameron <jic23@cam.ac.uk> | 2011-02-11 13:09:12 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-02-18 13:22:51 -0800 |
commit | 30268a3da9325a2267cfc99efae7c192fa88199f (patch) | |
tree | 60a4e75a8838854eca1e3a538c11c4e89c360b7b | |
parent | b949793b2c319b9ea3c2594aab203664caf2923e (diff) | |
download | op-kernel-dev-30268a3da9325a2267cfc99efae7c192fa88199f.zip op-kernel-dev-30268a3da9325a2267cfc99efae7c192fa88199f.tar.gz |
staging:iio: update example to handle case with no ring events
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Tested-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/staging/iio/Documentation/generic_buffer.c | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/drivers/staging/iio/Documentation/generic_buffer.c b/drivers/staging/iio/Documentation/generic_buffer.c index df23aeb..0befcb8 100644 --- a/drivers/staging/iio/Documentation/generic_buffer.c +++ b/drivers/staging/iio/Documentation/generic_buffer.c @@ -26,6 +26,7 @@ #include <sys/stat.h> #include <sys/dir.h> #include <linux/types.h> +#include <string.h> #include "iio_utils.h" const int buf_len = 128; @@ -134,10 +135,11 @@ int main(int argc, char **argv) int dev_num, trig_num; char *buffer_access, *buffer_event; int scan_size; + int noevents = 0; struct iio_channel_info *infoarray; - while ((c = getopt(argc, argv, "t:n:")) != -1) { + while ((c = getopt(argc, argv, "et:n:")) != -1) { switch (c) { case 'n': device_name = optarg; @@ -146,6 +148,9 @@ int main(int argc, char **argv) trigger_name = optarg; datardytrigger = 0; break; + case 'e': + noevents = 1; + break; case '?': return -1; } @@ -260,22 +265,30 @@ int main(int argc, char **argv) /* Wait for events 10 times */ for (j = 0; j < num_loops; j++) { - read_size = fread(&dat, 1, sizeof(struct iio_event_data), - fp_ev); - switch (dat.id) { - case IIO_EVENT_CODE_RING_100_FULL: - toread = buf_len; - break; - case IIO_EVENT_CODE_RING_75_FULL: - toread = buf_len*3/4; - break; - case IIO_EVENT_CODE_RING_50_FULL: - toread = buf_len/2; - break; - default: - printf("Unexpecteded event code\n"); - continue; + if (!noevents) { + read_size = fread(&dat, + 1, + sizeof(struct iio_event_data), + fp_ev); + switch (dat.id) { + case IIO_EVENT_CODE_RING_100_FULL: + toread = buf_len; + break; + case IIO_EVENT_CODE_RING_75_FULL: + toread = buf_len*3/4; + break; + case IIO_EVENT_CODE_RING_50_FULL: + toread = buf_len/2; + break; + default: + printf("Unexpecteded event code\n"); + continue; + } + } else { + usleep(1000); + toread = 64; } + read_size = read(fp, data, toread*scan_size); |