mraa.c: cache platform_name on mraa_init
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
37
src/mraa.c
37
src/mraa.c
@@ -45,13 +45,12 @@
|
|||||||
#include "gpio.h"
|
#include "gpio.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
#define MAX_PLATFORM_NAME_LENGTH 128
|
|
||||||
#define IIO_DEVICE_WILDCARD "iio:device*"
|
#define IIO_DEVICE_WILDCARD "iio:device*"
|
||||||
mraa_board_t* plat = NULL;
|
mraa_board_t* plat = NULL;
|
||||||
mraa_iio_info_t* plat_iio = NULL;
|
mraa_iio_info_t* plat_iio = NULL;
|
||||||
|
|
||||||
static char* platform_name;
|
static char* platform_name = NULL;
|
||||||
static char* platform_long_name;
|
static char* platform_long_name = NULL;
|
||||||
|
|
||||||
static int num_i2c_devices = 0;
|
static int num_i2c_devices = 0;
|
||||||
static int num_iio_devices = 0;
|
static int num_iio_devices = 0;
|
||||||
@@ -117,8 +116,11 @@ mraa_init()
|
|||||||
#error mraa_ARCH NOTHING
|
#error mraa_ARCH NOTHING
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (plat != NULL)
|
if (plat != NULL) {
|
||||||
plat->platform_type = platform_type;
|
plat->platform_type = platform_type;
|
||||||
|
} else {
|
||||||
|
platform_name = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(USBPLAT)
|
#if defined(USBPLAT)
|
||||||
// This is a platform extender so create null base platform if one doesn't already exist
|
// This is a platform extender so create null base platform if one doesn't already exist
|
||||||
@@ -147,6 +149,19 @@ mraa_init()
|
|||||||
// Look for IIO devices
|
// Look for IIO devices
|
||||||
mraa_iio_detect();
|
mraa_iio_detect();
|
||||||
|
|
||||||
|
if (plat != NULL) {
|
||||||
|
int length = strlen(plat->platform_name) + 1;
|
||||||
|
if (mraa_has_sub_platform()) {
|
||||||
|
length += strlen(plat->sub_platform->platform_name);
|
||||||
|
}
|
||||||
|
platform_name = calloc(length, sizeof(char));
|
||||||
|
if (mraa_has_sub_platform()) {
|
||||||
|
snprintf(platform_name, length, "%s + %s", plat->platform_name, plat->sub_platform->platform_name);
|
||||||
|
} else {
|
||||||
|
strncpy(platform_name, plat->platform_name, length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
syslog(LOG_NOTICE, "libmraa initialised for platform '%s' of type %d", mraa_get_platform_name(), mraa_get_platform_type());
|
syslog(LOG_NOTICE, "libmraa initialised for platform '%s' of type %d", mraa_get_platform_name(), mraa_get_platform_type());
|
||||||
return MRAA_SUCCESS;
|
return MRAA_SUCCESS;
|
||||||
}
|
}
|
||||||
@@ -461,20 +476,6 @@ mraa_get_platform_adc_supported_bits(int platform_offset)
|
|||||||
const char*
|
const char*
|
||||||
mraa_get_platform_name()
|
mraa_get_platform_name()
|
||||||
{
|
{
|
||||||
if (plat == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
int length = strlen(plat->platform_name) + 1;
|
|
||||||
if (mraa_has_sub_platform()) {
|
|
||||||
length += strlen(plat->sub_platform->platform_name);
|
|
||||||
}
|
|
||||||
platform_name = calloc(length, sizeof(char));
|
|
||||||
if (mraa_has_sub_platform()) {
|
|
||||||
snprintf(platform_name, length, "%s + %s", plat->platform_name, plat->sub_platform->platform_name);
|
|
||||||
} else {
|
|
||||||
strncpy(platform_name, plat->platform_name, length);
|
|
||||||
}
|
|
||||||
|
|
||||||
return platform_name;
|
return platform_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user