init: allow init to be called multiple times
authorBrendan Le Foll <brendan.le.foll@intel.com>
Tue, 6 May 2014 09:42:06 +0000 (10:42 +0100)
committerBrendan Le Foll <brendan.le.foll@intel.com>
Tue, 6 May 2014 09:42:06 +0000 (10:42 +0100)
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
api/maa.h
src/intel_galileo_rev_d.c
src/maa.c

index ecadb51..e2e01c0 100644 (file)
--- a/api/maa.h
+++ b/api/maa.h
@@ -50,6 +50,7 @@ typedef enum {
     MAA_ERROR_NO_DATA_AVAILABLE              =  9, /**< No data available */
     MAA_ERROR_INVALID_PLATFORM               = 10, /**< Platform not recognised */
     MAA_ERROR_PLATFORM_NOT_INITIALISED       = 11, /**< Board information not initialised */
+    MAA_ERROR_PLATFORM_ALREADY_INITIALISED   = 12, /**< Board is already initialised
 
     MAA_ERROR_UNSPECIFIED                    = 99 /**< Unknown Error */
 } maa_result_t;
index 316c33f..ef7aa86 100644 (file)
@@ -31,7 +31,7 @@ maa_board_t*
 maa_intel_galileo_rev_d()
 {
     maa_board_t* b = (maa_board_t*) malloc(sizeof(maa_board_t));
-    if(b == NULL)
+    if (b == NULL)
         return NULL;
 
     b->phy_pin_count = 20;
index 971c239..31e3f95 100644 (file)
--- a/src/maa.c
+++ b/src/maa.c
@@ -31,7 +31,7 @@
 #include "version.h"
 
 static maa_pininfo_t* pindata;
-static maa_board_t* plat;
+static maa_board_t* plat = NULL;
 
 const char *
 maa_get_version()
@@ -45,6 +45,9 @@ maa_init()
     /** Once more board definitions have been added,
      *  A method for detecting them will need to be devised.
      */
+    if (plat != NULL) {
+        return MAA_ERROR_PLATFORM_ALREADY_INITIALISED;
+    }
     plat = maa_intel_galileo_rev_d();
     return MAA_SUCCESS;
 }