mraa_iio_read_float(mraa_iio_context dev, const char* attr_name, float* data)
{
char buf[MAX_SIZE];
- mraa_result_t result = mraa_iio_read_string(dev, attr_name, buf);
+ mraa_result_t result = mraa_iio_read_string(dev, attr_name, buf, MAX_SIZE-1);
if (result != MRAA_SUCCESS)
return result;
int status = sscanf(buf, "%f", data);
mraa_result_t
-mraa_iio_read_integer(mraa_iio_context dev, const char* attr_name, int* data)
+mraa_iio_read_int(mraa_iio_context dev, const char* attr_name, int* data)
{
char buf[MAX_SIZE];
- mraa_result_t result = mraa_iio_read_string(dev, attr_name, buf);
+ mraa_result_t result = mraa_iio_read_string(dev, attr_name, buf, MAX_SIZE-1);
if (result != MRAA_SUCCESS)
return result;
int status = sscanf(buf, "%d", data);
}
mraa_result_t
-mraa_iio_read_string(mraa_iio_context dev, const char* attr_name, char* data)
+mraa_iio_read_string(mraa_iio_context dev, const char* attr_name, char* data, int max_len)
{
char buf[MAX_SIZE];
mraa_result_t result = MRAA_ERROR_UNSPECIFIED;
snprintf(buf, MAX_SIZE, IIO_SYSFS_DEVICE "%d/%s", dev->num, attr_name);
int fd = open(buf, O_RDONLY);
if (fd != -1) {
- ssize_t len = read(fd, data, MAX_SIZE);
+ ssize_t len = read(fd, data, max_len);
if (len > 0)
result = MRAA_SUCCESS;
close(fd);
}
mraa_result_t
-mraa_iio_write_integer(mraa_iio_context dev, const char* attr_name, const int data)
+mraa_iio_write_int(mraa_iio_context dev, const char* attr_name, const int data)
{
char buf[MAX_SIZE];
snprintf(buf, MAX_SIZE, "%d", data);
for (;;) {
if (mraa_iio_event_poll_nonblock(dev->fp_event, &data) == MRAA_SUCCESS) {
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
- dev->isr_event(&data);
+ dev->isr_event(&data, dev->isr_args);
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
} else {
// we must have got an error code so die nicely
}
mraa_result_t
-mraa_iio_event_setup_callback(mraa_iio_context dev, void (*fptr)(struct iio_event_data* data), void* args)
+mraa_iio_event_setup_callback(mraa_iio_context dev, void (*fptr)(struct iio_event_data* data, void* args), void* args)
{
int ret;
char bu[MAX_SIZE];
}
dev->isr_event = fptr;
+ dev->isr_args = args;
pthread_create(&dev->thread_id, NULL, mraa_iio_event_handler, (void*) dev);
return MRAA_SUCCESS;
}
mraa_result_t
-mraa_iio_stop(mraa_iio_context dev)
+mraa_iio_close(mraa_iio_context dev)
{
free(dev->channels);
return MRAA_SUCCESS;