demo/cmd: 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.
This commit is contained in:
Ian Abbott 2016-11-08 14:15:35 +00:00
parent b7cb7f2331
commit c2cf7c8018

View file

@ -96,6 +96,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);
}
// Print numbers for clipped inputs
comedi_set_global_oor_behavior(COMEDI_OOR_NUMBER);