From facb713cd82cfd5f4a39d9b1334c2b0f1c834e88 Mon Sep 17 00:00:00 2001 From: Ian Abbott Date: Tue, 8 Nov 2016 14:29:58 +0000 Subject: [PATCH] demo/mmap: check subdevice exists and supports 'read' commands Check the subdevice actually exists and that it claims to support 'read' commands (SDF_CMD_READ subdevice flag set), bailing out early if not. --- demo/mmap.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/demo/mmap.c b/demo/mmap.c index bc40d18..39be7da 100644 --- a/demo/mmap.c +++ b/demo/mmap.c @@ -70,6 +70,20 @@ int main(int argc, char *argv[]) fprintf(stderr, "defaulted to subdevice %d\n", options.subdevice); } + /* Check subdevice exists. */ + ret = comedi_get_n_subdevices(dev); + if(ret <= options.subdevice){ + fprintf(stderr, "subdevice %d does not exist\n", options.subdevice); + exit(1); + } + + /* Check subdevice supports 'read' commands. */ + ret = comedi_get_subdevice_flags(dev, options.subdevice); + if(ret < 0 || !(ret & SDF_CMD_READ)) { + fprintf(stderr, "subdevice %d does not support 'read' commands\n", options.subdevice); + exit(1); + } + ret = comedi_get_buffer_size(dev, options.subdevice); if(ret < 0){ comedi_perror("comedi_get_buffer_size");