diff --git a/api/mraa/common.h b/api/mraa/common.h index 116a586..0357f0c 100644 --- a/api/mraa/common.h +++ b/api/mraa/common.h @@ -140,7 +140,7 @@ mraa_result_t mraa_set_log_level(int level); * * @return platform name */ -char* mraa_get_platform_name(); +const char* mraa_get_platform_name(); /** * Return the platform's versioning info, the information given depends per diff --git a/examples/blink_onboard.c b/examples/blink_onboard.c index 6750ca1..b955e23 100644 --- a/examples/blink_onboard.c +++ b/examples/blink_onboard.c @@ -33,7 +33,7 @@ main(int argc, char** argv) { mraa_platform_t platform = mraa_get_platform_type(); mraa_gpio_context gpio, gpio_in = NULL; - char* board_name = mraa_get_platform_name(); + const char* board_name = mraa_get_platform_name(); int ledstate = 0; switch (platform) { diff --git a/examples/hellomraa.c b/examples/hellomraa.c index 3a7bc9a..62a1ea1 100644 --- a/examples/hellomraa.c +++ b/examples/hellomraa.c @@ -31,7 +31,7 @@ int main(int argc, char** argv) { - char* board_name = mraa_get_platform_name(); + const char* board_name = mraa_get_platform_name(); int i2c_bus, i, i2c_adapter; fprintf(stdout, "hello mraa\n Version: %s\n Running on %s\n", mraa_get_version(), board_name); diff --git a/src/mraa.c b/src/mraa.c index 9250c01..bc3777a 100644 --- a/src/mraa.c +++ b/src/mraa.c @@ -50,7 +50,7 @@ mraa_board_t* plat = NULL; mraa_iio_info_t* plat_iio = NULL; -static char platform_name[MAX_PLATFORM_NAME_LENGTH]; +static char* platform_name; static char* platform_long_name; static int num_i2c_devices = 0; @@ -458,17 +458,21 @@ mraa_get_platform_adc_supported_bits(int platform_offset) } } - -char* +const char* mraa_get_platform_name() { if (plat == NULL) { return NULL; } + int length = strlen(plat->platform_name) + 1; if (mraa_has_sub_platform()) { - snprintf(platform_name, MAX_PLATFORM_NAME_LENGTH, "%s + %s", plat->platform_name, plat->sub_platform->platform_name); + 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, MAX_PLATFORM_NAME_LENGTH-1); + strncpy(platform_name, plat->platform_name, length); } return platform_name;