Matthew Lister / X_NUCLEO_IDB0XA1

Files at this revision

API Documentation at this revision

Comitter:
Andrea Palmieri
Date:
Wed Nov 04 10:12:19 2015 +0100
Parent:
166:63060ad4abd5
Child:
168:ad1dff5dca1f
Commit message:
Synch with BLE API 2.0.3

Signed-off-by: Andrea Palmieri <andrea.palmieri@st.com>

Changed in this revision

source/BlueNRGDevice.cpp Show annotated file Show diff for this revision Revisions of this file
x-nucleo-idb0xa1/BlueNRGDevice.h Show annotated file Show diff for this revision Revisions of this file
--- a/source/BlueNRGDevice.cpp	Fri Oct 30 16:47:42 2015 +0100
+++ b/source/BlueNRGDevice.cpp	Wed Nov 04 10:12:19 2015 +0100
@@ -126,17 +126,33 @@
     @param[in] void
     @returns    ble_error_t
 */
-ble_error_t BlueNRGDevice::init(void)
+ble_error_t BlueNRGDevice::init(BLE::InstanceID_t instanceID, FunctionPointerWithContext<BLE::InitializationCompleteCallbackContext *> callback)
 {
+	if (isInitialized) {
+        	BLE::InitializationCompleteCallbackContext context = {
+        	    BLE::Instance(instanceID),
+        	    BLE_ERROR_ALREADY_INITIALIZED
+        	};
+        	callback.call(&context);
+        	return BLE_ERROR_ALREADY_INITIALIZED;
+    	}
+
 	// Set the interrupt handler for the device
 	irq_.mode(PullNone); // betzw: set irq mode
 	irq_.rise(&HCI_Isr);
 
+	instanceID = instanceID;
+
 	/* ToDo: Clear memory contents, reset the SD, etc. */
 	// By default, we set the device GAP role to PERIPHERAL
 	btle_init(BlueNRGGap::getInstance().getIsSetAddress(), GAP_PERIPHERAL_ROLE_IDB04A1);
 	
 	isInitialized = true;
+	BLE::InitializationCompleteCallbackContext context = {
+	        BLE::Instance(instanceID),
+	        BLE_ERROR_NONE
+	};
+	callback.call(&context);
     
 	return BLE_ERROR_NONE;
 }
@@ -166,8 +182,6 @@
     return BLE_ERROR_NONE;
 }
 
-// ANDREA: mbedOS
-// betzw: really?
 /*!
   @brief  Wait for any BLE Event like BLE Connection, Read Request etc.    
   @param[in] void
@@ -206,18 +220,6 @@
 
 /**************************************************************************/
 /*!
-    @brief  get init state
-    @param[in] void
-    @returns    bool  
-*/
-/**************************************************************************/
-bool BlueNRGDevice::getIsInitialized(void)
-{
-    return isInitialized;
-}
-
-/**************************************************************************/
-/*!
     @brief  get reference to GAP object
     @param[in] void
     @returns    Gap&      
--- a/x-nucleo-idb0xa1/BlueNRGDevice.h	Fri Oct 30 16:47:42 2015 +0100
+++ b/x-nucleo-idb0xa1/BlueNRGDevice.h	Wed Nov 04 10:12:19 2015 +0100
@@ -42,6 +42,7 @@
 
 #include "mbed-drivers/mbed.h"
 #include "ble/blecommon.h"
+#include "ble/BLEInstanceBase.h"
 #include "ble/BLE.h"
 #include "BlueNRGGap.h"
 #include "BlueNRGGattServer.h"
@@ -55,7 +56,7 @@
     BlueNRGDevice(PinName mosi, PinName miso, PinName sck, PinName cs, PinName rst, PinName irq);
     virtual ~BlueNRGDevice(void);
 
-    virtual ble_error_t init(void);
+    virtual ble_error_t init(BLE::InstanceID_t instanceID, FunctionPointerWithContext<BLE::InitializationCompleteCallbackContext *> callback);
     virtual ble_error_t shutdown(void);   
     virtual const char *getVersion(void);
     virtual Gap&        getGap();
@@ -76,7 +77,9 @@
         return *sm;
     }
     ble_error_t reset(void);
-    bool getIsInitialized(void);
+    virtual bool hasInitialized(void) const {
+        return isInitialized;
+    }
 
     bool dataPresent();
     int32_t spiRead(uint8_t *buffer, uint8_t buff_size);
@@ -86,6 +89,7 @@
     
 private:
     bool isInitialized;
+    BLE::InstanceID_t instanceID;
 
     SPI         spi_;
     DigitalOut  nCS_;