}
#endif
- plat_iio = (mraa_iio_info_t*) calloc(1, sizeof(mraa_iio_info_t));
- // Now detect IIO devices, linux only
- // find how many iio devices we have if we haven't already
- if (num_iio_devices == 0) {
- if (nftw("/sys/bus/iio/devices", &mraa_count_iio_devices, 20, FTW_PHYS) == -1) {
- return MRAA_ERROR_UNSPECIFIED;
- }
- }
- char name[64], filepath[64];
- int fd, len, i;
- plat_iio->iio_device_count = num_iio_devices;
- plat_iio->iio_devices = calloc(num_iio_devices, sizeof(struct _iio));
- struct _iio* device;
- for (i=0; i < num_iio_devices; i++) {
- device = &plat_iio->iio_devices[i];
- device->num = i;
- snprintf(filepath, 64, "/sys/bus/iio/devices/iio:device%d/name", i);
- fd = open(filepath, O_RDONLY);
- if (fd > 0) {
- len = read(fd, &name, 64);
- if (len > 1) {
- // remove any trailing CR/LF symbols
- name[strcspn(name, "\r\n")] = '\0';
- len = strlen(name);
- // use strndup
- device->name = malloc((sizeof(char) * len) + sizeof(char));
- strncpy(device->name, name, len+1);
- }
- close(fd);
- }
- }
-
+ mraa_result_t iio_result = mraa_iio_detect();
+ if (iio_result != MRAA_SUCCESS)
+ return iio_result;
+
syslog(LOG_NOTICE, "libmraa initialised for platform '%s' of type %d", mraa_get_platform_name(), mraa_get_platform_type());
return MRAA_SUCCESS;
}
return sched_setscheduler(0, SCHED_RR, &sched_s);
}
+
+mraa_result_t
+mraa_iio_detect()
+{
+ plat_iio = (mraa_iio_info_t*) calloc(1, sizeof(mraa_iio_info_t));
+ plat_iio->iio_device_count = num_iio_devices;
+ // Now detect IIO devices, linux only
+ // find how many iio devices we have if we haven't already
+ if (num_iio_devices == 0) {
+ if (nftw("/sys/bus/iio/devices", &mraa_count_iio_devices, 20, FTW_PHYS) == -1) {
+ return MRAA_ERROR_UNSPECIFIED;
+ }
+ }
+ char name[64], filepath[64];
+ int fd, len, i;
+ plat_iio->iio_device_count = num_iio_devices;
+ plat_iio->iio_devices = calloc(num_iio_devices, sizeof(struct _iio));
+ struct _iio* device;
+ for (i=0; i < num_iio_devices; i++) {
+ device = &plat_iio->iio_devices[i];
+ device->num = i;
+ snprintf(filepath, 64, "/sys/bus/iio/devices/iio:device%d/name", i);
+ fd = open(filepath, O_RDONLY);
+ if (fd > 0) {
+ len = read(fd, &name, 64);
+ if (len > 1) {
+ // remove any trailing CR/LF symbols
+ name[strcspn(name, "\r\n")] = '\0';
+ len = strlen(name);
+ // use strndup
+ device->name = malloc((sizeof(char) * len) + sizeof(char));
+ strncpy(device->name, name, len+1);
+ }
+ close(fd);
+ }
+ }
+ return MRAA_SUCCESS;
+}
+
+
mraa_result_t
mraa_setup_mux_mapped(mraa_pin_t meta)
{