Private
Public Access
2
0

mraa.c: Add mraa_get_platform_version call

Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
Brendan Le Foll
2016-01-20 15:58:06 +00:00
parent caebb8b1fb
commit bdb5ef66e9
8 changed files with 55 additions and 9 deletions

View File

@@ -142,6 +142,16 @@ mraa_result_t mraa_set_log_level(int level);
*/
char* mraa_get_platform_name();
/**
* Return the platform's versioning info, the information given depends per
* platform and can be NULL. platform_offset has to be given. Do not modify
* this pointer
*
* @param specified platform offset; 0 for main platform, 1 for sub platform
* @return platform's versioning string
*/
const char* mraa_get_platform_version(int platform_offset);
/**
* This function attempts to set the mraa process to a given priority and the
* scheduler to SCHED_RR. Highest * priority is typically 99 and minimum is 0.

View File

@@ -154,6 +154,19 @@ getPlatformName()
return ret_val;
}
/**
* Return platform versioning info. Returns NULL if no info present.
*
* @param optional subplatform identifier
* @return platform versioning info
*/
inline std::string
getPlatformVersion(int platform_offset=MRAA_MAIN_PLATFORM_OFFSET)
{
std::string ret_val(mraa_get_platform_version(platform_offset));
return ret_val;
}
/**
* Return count of physical pins on the running platform
*

View File

@@ -285,6 +285,7 @@ typedef struct _board_t {
int pwm_min_period; /**< Minimum period in us */
mraa_platform_t platform_type; /**< Platform type */
const char* platform_name; /**< Platform Name pointer */
const char* platform_version; /**< Platform versioning info */
mraa_pininfo_t* pins; /**< Pointer to pin array */
mraa_adv_func_t* adv_func; /**< Pointer to advanced function disptach table */
struct _board_t* sub_platform; /**< Pointer to sub platform */

View File

@@ -34,7 +34,7 @@ extern "C" {
#define MRAA_INTEL_MINNOW_MAX_PINCOUNT (26 + 1)
mraa_board_t*
mraa_intel_minnowboard_byt_compatible();
mraa_intel_minnowboard_byt_compatible(mraa_boolean_t);
#ifdef __cplusplus
}

View File

@@ -1,7 +1,7 @@
/*
* Author: Brendan Le Foll <brendan.le.foll@intel.com>
* Author: Thomas Ingleby <thomas.c.ingleby@intel.com>
* Copyright (c) 2014 Intel Corporation.
* Copyright (c) 2014-2016 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@@ -51,6 +51,7 @@ mraa_board_t* plat = NULL;
mraa_iio_info_t* plat_iio = NULL;
static char platform_name[MAX_PLATFORM_NAME_LENGTH];
static char* platform_long_name;
static int num_i2c_devices = 0;
static int num_iio_devices = 0;
@@ -473,6 +474,19 @@ mraa_get_platform_name()
return platform_name;
}
const char*
mraa_get_platform_version(int platform_offset)
{
if (plat == NULL) {
return NULL;
}
if (platform_offset == MRAA_MAIN_PLATFORM_OFFSET) {
return plat->platform_version;
} else {
return plat->sub_platform->platform_version;
}
}
int
mraa_get_i2c_bus_count()
{

View File

@@ -1,6 +1,7 @@
/*
* Author: Thomas Ingleby <thomas.c.ingleby@intel.com>
* Copyright (c) 2014 Intel Corporation.
* Brendan Le Foll <brendan.le.foll@intel.com>
* Copyright (c) 2014-2016 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@@ -1173,6 +1174,7 @@ mraa_intel_edison_fab_c()
b->phy_pin_count = 20;
b->gpio_count = 14;
b->aio_count = 6;
b->platform_version = "arduino";
b->adv_func = (mraa_adv_func_t*) calloc(1, sizeof(mraa_adv_func_t));
if (b->adv_func == NULL) {

View File

@@ -84,7 +84,7 @@ mraa_get_pin_index(mraa_board_t* board, char* name, int* pin_index)
}
mraa_board_t*
mraa_intel_minnowboard_byt_compatible()
mraa_intel_minnowboard_byt_compatible(mraa_boolean_t turbot)
{
mraa_board_t* b = (mraa_board_t*) calloc(1, sizeof(mraa_board_t));
@@ -96,6 +96,11 @@ mraa_intel_minnowboard_byt_compatible()
}
b->platform_name = PLATFORM_NAME;
if (turbot) {
b->platform_version = "Turbot";
} else {
b->platform_version = "Ax";
}
b->phy_pin_count = MRAA_INTEL_MINNOW_MAX_PINCOUNT;
b->gpio_count = MRAA_INTEL_MINNOW_MAX_PINCOUNT;

View File

@@ -1,6 +1,7 @@
/*
* Author: Thomas Ingleby <thomas.c.ingleby@intel.com>
* Copyright (c) 2014 Intel Corporation.
* Brendan Le Foll <brendan.le.foll@intel.com>
* Copyright (c) 2014-2016 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
@@ -64,19 +65,19 @@ mraa_x86_platform()
plat = mraa_intel_nuc5();
} else if (strncmp(line, "NOTEBOOK", 8) == 0) {
platform_type = MRAA_INTEL_MINNOWBOARD_MAX;
plat = mraa_intel_minnowboard_byt_compatible();
plat = mraa_intel_minnowboard_byt_compatible(0);
} else if (strncasecmp(line, "MinnowBoard MAX", 15) == 0) {
platform_type = MRAA_INTEL_MINNOWBOARD_MAX;
plat = mraa_intel_minnowboard_byt_compatible();
plat = mraa_intel_minnowboard_byt_compatible(0);
} else if (strncasecmp(line, "Galileo", 7) == 0) {
platform_type = MRAA_INTEL_GALILEO_GEN1;
plat = mraa_intel_galileo_rev_d();
} else if (strncasecmp(line, "MinnowBoard Compatible", 22) == 0) {
platform_type = MRAA_INTEL_MINNOWBOARD_MAX;
plat = mraa_intel_minnowboard_byt_compatible();
plat = mraa_intel_minnowboard_byt_compatible(1);
} else if (strncasecmp(line, "MinnowBoard Turbot", 18) == 0) {
platform_type = MRAA_INTEL_MINNOWBOARD_MAX;
plat = mraa_intel_minnowboard_byt_compatible();
plat = mraa_intel_minnowboard_byt_compatible(1);
} else {
syslog(LOG_ERR, "Platform not supported, not initialising");
platform_type = MRAA_UNKNOWN_PLATFORM;