Commit 025327b0 authored by Anders Blomdell's avatar Anders Blomdell
Browse files

Only allow access to I/O that exists

parent d57cfb63
...@@ -367,6 +367,28 @@ static int channel_down(struct moberg_channel *channel) ...@@ -367,6 +367,28 @@ static int channel_down(struct moberg_channel *channel)
static struct moberg_status channel_open(struct moberg_channel *channel) static struct moberg_status channel_open(struct moberg_channel *channel)
{ {
struct moberg_status result = device_open(channel->context->device); struct moberg_status result = device_open(channel->context->device);
int count = 0;
switch (channel->kind) {
case chan_ANALOGIN:
count = channel->context->device->analog_in.count;
break;
case chan_ANALOGOUT:
count = channel->context->device->analog_out.count;
break;
case chan_DIGITALIN:
count = channel->context->device->digital_in.count;
break;
case chan_DIGITALOUT:
count = channel->context->device->digital_out.count;
break;
case chan_ENCODERIN:
count = channel->context->device->encoder_in.count;
break;
}
if (channel->context->index >= count) {
device_close(channel->context->device);
result = MOBERG_ERRNO(ENODEV);
}
return result; return result;
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment