Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of BLE_API by
Revision 852:f0de1349300c, committed 2015-11-02
- Comitter:
- rgrover1
- Date:
- Mon Nov 02 09:09:06 2015 +0000
- Parent:
- 851:802f445cc195
- Child:
- 853:2e829bcda785
- Commit message:
- Synchronized with git rev da3d9f81
Author: Andres Amaya Garcia
Fixed include problem in HealthThermometer header
Modified the HealthThermometer header file to include BLE.h from
ble/BLE.h.
Changed in this revision
--- a/ble/BLE.h Mon Nov 02 09:09:05 2015 +0000 +++ b/ble/BLE.h Mon Nov 02 09:09:06 2015 +0000 @@ -23,11 +23,7 @@ #include "GattClient.h" #include "BLEInstanceBase.h" -#ifdef YOTTA_CFG_MBED_OS -#include "mbed-drivers/mbed_error.h" -#else #include "mbed_error.h" -#endif /** * The base class used to abstract away BLE capable radio transceivers or SOCs,
--- a/ble/BLEInstanceBase.h Mon Nov 02 09:09:05 2015 +0000 +++ b/ble/BLEInstanceBase.h Mon Nov 02 09:09:06 2015 +0000 @@ -18,7 +18,6 @@ #define __BLE_DEVICE_INSTANCE_BASE__ #include "Gap.h" -#include "ble/SecurityManager.h" /* forward declarations */ class GattServer;
--- a/ble/FunctionPointerWithContext.h Mon Nov 02 09:09:05 2015 +0000
+++ b/ble/FunctionPointerWithContext.h Mon Nov 02 09:09:06 2015 +0000
@@ -20,7 +20,6 @@
#include <string.h>
-
/** A class for storing and calling a pointer to a static or member void function
* which takes a context.
*/
@@ -35,7 +34,7 @@
* @param function The void static function to attach (default is none)
*/
FunctionPointerWithContext(void (*function)(ContextType context) = NULL) :
- _function(NULL), _caller(NULL), _next(NULL) {
+ _function(NULL), _object(NULL), _member(), _membercaller(NULL), _next(NULL) {
attach(function);
}
@@ -46,7 +45,7 @@
*/
template<typename T>
FunctionPointerWithContext(T *object, void (T::*member)(ContextType context)) :
- _memberFunctionAndPointer(), _caller(NULL), _next(NULL) {
+ _function(NULL), _object(NULL), _member(), _membercaller(NULL), _next(NULL) {
attach(object, member);
}
@@ -56,7 +55,6 @@
*/
void attach(void (*function)(ContextType context) = NULL) {
_function = function;
- _caller = functioncaller;
}
/** Attach a member function
@@ -66,9 +64,9 @@
*/
template<typename T>
void attach(T *object, void (T::*member)(ContextType context)) {
- _memberFunctionAndPointer._object = static_cast<void *>(object);
- memcpy(_memberFunctionAndPointer._memberFunction, (char*) &member, sizeof(member));
- _caller = &FunctionPointerWithContext::membercaller<T>;
+ _object = static_cast<void *>(object);
+ memcpy(_member, (char *)&member, sizeof(member));
+ _membercaller = &FunctionPointerWithContext::membercaller<T>;
}
/** Call the attached static or member function; and if there are chained
@@ -76,7 +74,11 @@
* @Note: all chained callbacks stack up; so hopefully there won't be too
* many FunctionPointers in a chain. */
void call(ContextType context) {
- _caller(this, context);
+ if (_function) {
+ _function(context);
+ } else if (_object && _membercaller) {
+ _membercaller(_object, _member, context);
+ }
/* Propagate the call to next in the chain. */
if (_next) {
@@ -105,49 +107,19 @@
private:
template<typename T>
- static void membercaller(pFunctionPointerWithContext_t self, ContextType context) {
- if (self->_memberFunctionAndPointer._object) {
- T *o = static_cast<T *>(self->_memberFunctionAndPointer._object);
- void (T::*m)(ContextType);
- memcpy((char*) &m, self->_memberFunctionAndPointer._memberFunction, sizeof(m));
- (o->*m)(context);
- }
- }
-
- static void functioncaller(pFunctionPointerWithContext_t self, ContextType context) {
- if (self->_function) {
- self->_function(context);
- }
+ static void membercaller(void *object, char *member, ContextType context) {
+ T *o = static_cast<T *>(object);
+ void (T::*m)(ContextType);
+ memcpy((char *)&m, member, sizeof(m));
+ (o->*m)(context);
}
- struct MemberFunctionAndPtr {
- /*
- * forward declaration of a class and a member function to this class.
- * Because the compiler doesn't know anything about the forwarded member
- * function, it will always use the biggest size and the biggest alignment
- * that a member function can take for objects of type UndefinedMemberFunction.
- */
- class UndefinedClass;
- typedef void (UndefinedClass::*UndefinedMemberFunction)(ContextType);
-
- void* _object;
- union {
- char _memberFunction[sizeof(UndefinedMemberFunction)];
- UndefinedMemberFunction _alignment;
- };
- };
-
- union {
- pvoidfcontext_t _function; /**< static function pointer - NULL if none attached */
- /**
- * object this pointer and pointer to member -
- * _memberFunctionAndPointer._object will be NULL if none attached
- */
- MemberFunctionAndPtr _memberFunctionAndPointer;
- };
-
- void (*_caller)(FunctionPointerWithContext*, ContextType);
-
+ void (*_function)(ContextType context); /**< static function pointer - NULL if none attached */
+ void *_object; /**< object this pointer - NULL if none attached */
+ char _member[16]; /**< raw member function pointer storage - converted back by
+ * registered _membercaller */
+ void (*_membercaller)(void *, char *, ContextType); /**< registered membercaller function to convert back and call
+ * _member on _object passing the context. */
pFunctionPointerWithContext_t _next; /**< Optional link to make a chain out of functionPointers; this
* allows chaining function pointers without requiring
* external memory to manage the chain. Also refer to
--- a/ble/UUID.h Mon Nov 02 09:09:05 2015 +0000
+++ b/ble/UUID.h Mon Nov 02 09:09:06 2015 +0000
@@ -74,7 +74,7 @@
*
* @note we don't yet support 32-bit shortened UUIDs.
*/
- UUID(ShortUUIDBytes_t _shortUUID) : type(UUID_TYPE_SHORT), baseUUID(), shortUUID(_shortUUID) {
+ UUID(ShortUUIDBytes_t shortUUID) : type(UUID_TYPE_SHORT), baseUUID(), shortUUID(shortUUID) {
/* empty */
}
--- a/ble/services/HealthThermometerService.h Mon Nov 02 09:09:05 2015 +0000 +++ b/ble/services/HealthThermometerService.h Mon Nov 02 09:09:06 2015 +0000 @@ -17,7 +17,7 @@ #ifndef __BLE_HEALTH_THERMOMETER_SERVICE_H__ #define __BLE_HEALTH_THERMOMETER_SERVICE_H__ -#include "BLE.h" +#include "ble/BLE.h" /** * @class HealthThermometerService
--- a/ble/services/UARTService.h Mon Nov 02 09:09:05 2015 +0000 +++ b/ble/services/UARTService.h Mon Nov 02 09:09:06 2015 +0000 @@ -17,13 +17,8 @@ #ifndef __BLE_UART_SERVICE_H__ #define __BLE_UART_SERVICE_H__ -#ifdef YOTTA_CFG_MBED_OS -#include "mbed-drivers/mbed.h" -#include "mbed-drivers/Stream.h" -#else #include "mbed.h" #include "Stream.h" -#endif #include "ble/UUID.h" #include "ble/BLE.h"
--- a/ble/services/URIBeaconConfigService.h Mon Nov 02 09:09:05 2015 +0000 +++ b/ble/services/URIBeaconConfigService.h Mon Nov 02 09:09:06 2015 +0000 @@ -18,12 +18,7 @@ #define SERVICES_URIBEACONCONFIGSERVICE_H_ #include "ble/BLE.h" - -#ifdef YOTTA_CFG_MBED_OS -#include "mbed-drivers/mbed.h" -#else #include "mbed.h" -#endif extern const uint8_t UUID_URI_BEACON_SERVICE[UUID::LENGTH_OF_LONG_UUID]; extern const uint8_t UUID_LOCK_STATE_CHAR[UUID::LENGTH_OF_LONG_UUID];
--- a/module.json Mon Nov 02 09:09:05 2015 +0000
+++ b/module.json Mon Nov 02 09:09:06 2015 +0000
@@ -1,12 +1,10 @@
{
"name": "ble",
- "version": "1.0.0",
+ "version": "0.4.8",
"description": "The BLE module offers a high level abstraction for using Bluetooth Low Energy on multiple platforms.",
"keywords": [
"Bluetooth",
- "BLE",
- "mbed",
- "mbed-official"
+ "BLE"
],
"author": "Rohit Grover",
"repository": {
@@ -22,14 +20,8 @@
],
"dependencies": {},
"targetDependencies": {
- "st-ble-shield": {
- "x-nucleo-idb0xa1": "ARMmbed/ble-x-nucleo-idb0xa1"
- },
"nrf51822": {
- "ble-nrf51822": "^1.0.0"
- },
- "cordio": {
- "ble-wicentric": "~0.0.0"
+ "ble-nrf51822": "~0.4.7"
},
"mbed-classic": {
"mbed-classic": "~0.0.1"
