*/
#include <stdlib.h>
+#include <string.h>
#include "mraa_internal.h"
+
#include "x86/intel_galileo_rev_d.h"
#include "x86/intel_galileo_rev_g.h"
#include "x86/intel_edison_fab_c.h"
#include "x86/intel_de3815.h"
-#include "x86/intel_minnow_max.h"
+#include "x86/intel_nuc5.h"
+#include "x86/intel_minnow_byt_compatible.h"
mraa_platform_t
mraa_x86_platform()
{
+#ifndef MRAA_PLATFORM_FORCE
mraa_platform_t platform_type = MRAA_UNKNOWN_PLATFORM;
- char *line = NULL;
+
+ char* line = NULL;
// let getline allocate memory for *line
size_t len = 0;
- FILE *fh = fopen("/sys/devices/virtual/dmi/id/board_name", "r");
+ FILE* fh = fopen("/sys/devices/virtual/dmi/id/board_name", "r");
if (fh != NULL) {
if (getline(&line, &len, fh) != -1) {
if (strncmp(line, "GalileoGen2", 11) == 0) {
platform_type = MRAA_INTEL_GALILEO_GEN2;
+ plat = mraa_intel_galileo_gen2();
} else if (strncmp(line, "BODEGA BAY", 10) == 0) {
platform_type = MRAA_INTEL_EDISON_FAB_C;
+ plat = mraa_intel_edison_fab_c();
} else if (strncmp(line, "SALT BAY", 8) == 0) {
platform_type = MRAA_INTEL_EDISON_FAB_C;
+ plat = mraa_intel_edison_fab_c();
} else if (strncmp(line, "DE3815", 6) == 0) {
platform_type = MRAA_INTEL_DE3815;
+ plat = mraa_intel_de3815();
+ } else if (strncmp(line, "NUC5i5MYBE", 10) == 0 || strncmp(line, "NUC5i3MYBE", 10) == 0) {
+ platform_type = MRAA_INTEL_NUC5;
+ plat = mraa_intel_nuc5();
} else if (strncmp(line, "NOTEBOOK", 8) == 0) {
platform_type = MRAA_INTEL_MINNOWBOARD_MAX;
+ plat = mraa_intel_minnowboard_byt_compatible();
} else if (strncasecmp(line, "MinnowBoard MAX", 15) == 0) {
platform_type = MRAA_INTEL_MINNOWBOARD_MAX;
- } else {
+ plat = mraa_intel_minnowboard_byt_compatible();
+ } 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();
+ } else {
+ syslog(LOG_ERR, "Platform not supported, not initialising");
+ platform_type = MRAA_UNKNOWN_PLATFORM;
}
free(line);
}
fclose(fh);
}
- switch(platform_type) {
- case MRAA_INTEL_GALILEO_GEN2:
- plat = mraa_intel_galileo_gen2();
- break;
- case MRAA_INTEL_GALILEO_GEN1:
- plat = mraa_intel_galileo_rev_d();
- break;
- case MRAA_INTEL_EDISON_FAB_C:
- plat = mraa_intel_edison_fab_c();
- break;
- case MRAA_INTEL_DE3815:
- plat = mraa_intel_de3815();
- break;
- case MRAA_INTEL_MINNOWBOARD_MAX:
- plat = mraa_intel_minnow_max();
- break;
-
- default:
- plat = mraa_intel_galileo_rev_d();
- syslog(LOG_ERR, "Platform not supported, initialising as MRAA_INTEL_GALILEO_GEN1");
- }
return platform_type;
+#else
+ #if defined(xMRAA_INTEL_GALILEO_GEN2)
+ plat = mraa_intel_galileo_gen2();
+ #elif defined(xMRAA_INTEL_EDISON_FAB_C)
+ plat = mraa_intel_edison_fab_c();
+ #elif defined(xMRAA_INTEL_DE3815)
+ plat = mraa_intel_de3815();
+ #elif defined(xMRAA_INTEL_MINNOWBOARD_MAX)
+ plat = mraa_intel_minnowboard_byt_compatible();
+ #elif defined(xMRAA_INTEL_GALILEO_GEN1)
+ plat = mraa_intel_galileo_rev_d();
+ #elif defined(xMRAA_INTEL_NUC5)
+ plat = mraa_intel_nuc5();
+ #else
+ #error "Not using a valid platform value from mraa_platform_t - cannot compile"
+ #endif
+ return MRAA_PLATFORM_FORCE;
+#endif
}