From: Henry Bruce Date: Wed, 2 Dec 2015 22:39:17 +0000 (-0800) Subject: mraa.c: Moved iio detection code into a function X-Git-Tag: v0.9.0~27 X-Git-Url: http://review.tizen.org/git/?p=contrib%2Fmraa.git;a=commitdiff_plain;h=131021a629761c925678be59385eda3695e5bc27 mraa.c: Moved iio detection code into a function Signed-off-by: Henry Bruce --- diff --git a/src/mraa.c b/src/mraa.c index d115030..01d6d1d 100644 --- a/src/mraa.c +++ b/src/mraa.c @@ -152,38 +152,10 @@ mraa_init() } #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; } @@ -226,6 +198,46 @@ mraa_set_priority(const unsigned int priority) 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) {