A cute tiny piece of code implementing an IoT NAND device, demonstrating how to setup and advertise a cute GATT (NAND) service. The code has been tested on a Nordic nRF51822-DK.
Dependencies: BLE_API mbed nRF51822
Fork of BLE_HeartRate_IDB0XA1 by
Diff: bricks/service.h
- Revision:
- 23:2e73c391bb12
diff -r d467526abc4a -r 2e73c391bb12 bricks/service.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bricks/service.h Sun Jan 08 23:15:53 2017 +0000 @@ -0,0 +1,78 @@ +// service.h - declaring services and definitions +// +// Synopsis +// +// Example 1: A protocol might be declared as a class as follows +// +// Collection col; // collection used during setup +// +// Characteristic<ObjectId> id(col,0x2AC3,"rw","ID"); +// Characteristic<ObjectName> name(col,0x2ABE,"rw","Name"); +// Characteristic<Digital> presence(col,0x2A56,"r","Presence"); +// +// Service presenceDetection(col,0xA001); // instantiate service +// +// onSetup(Blob &blue) +// { +// blue.service(presenceDetection); // use service +// } +// +// Example 2: service definition by means of a service definition class +// +// class PresenceDetector +// { +// public: +// Collection col; // collection used during setup +// +// Characteristic<ObjectId> id; // ID of presence detector +// Characteristic<ObjectName> name; // name of presence detector +// Characteristic<Digital> presence; // digital presence value +// Characteristic<DateTime> timestamp; // last detection change's time +// Characteristic<ObjectName> layout; // name of model railway layout +// +// Service presenceDetection; // the service +// +// public: +// PresenceDetector(Blob &blue, cost UUID uuid) : +// list; // init service list +// id(list,0x2AC3,"rw","ID"), // instantiate characteristic +// name(list,0x2ABE,"rw","Name"), // instantiate characteristic +// presence(list,0x2A56,"r","Presence"),// instantiate characteristic +// timestamp(list,0x2A08,"r","Timestamp"),// instantiate characteristic +// layout(list,0x2ABE,"rw","Layout"), // instantiate characteristic +// presenceDetection(list,uuid) // instantiate service +// { +// Blob blue; +// blue.service(presenceDetection); // use service +// } +// }; +// +#ifndef _SERVICE_H_ +#define _SERVICE_H_ + +#include "ble/BLE.h" +#include "ble/Gap.h" +#include "bricks/blob.h" +#include "bricks/collection.h" + + class Service + { + public: // public properties + Collection collection; // collection of characteristics + uint16_t uuid; // UUID of service + const char *name; // name of service + + public: // public methods + Service(uint16_t _uuid, const char* _name = NULL) : collection() + { + uuid = _uuid; + name = _name; + } + + void add(GattCharacteristic *pChr) // add a characteristic to collection + { + collection.add(pChr); + } + }; + +#endif // _SERVICE_H_ \ No newline at end of file