Just a quick custom service
CountdownService.h@1:79a62e074c35, 2019-02-15 (annotated)
- Committer:
- gaggenwaschke
- Date:
- Fri Feb 15 11:27:45 2019 +0000
- Revision:
- 1:79a62e074c35
- Parent:
- 0:bc6cd13ebbdb
Changed to speed test;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gaggenwaschke | 0:bc6cd13ebbdb | 1 | /* code is property of aconno.de */ |
gaggenwaschke | 0:bc6cd13ebbdb | 2 | |
gaggenwaschke | 0:bc6cd13ebbdb | 3 | |
gaggenwaschke | 0:bc6cd13ebbdb | 4 | #ifndef COUNTDOWN_SERVICE |
gaggenwaschke | 0:bc6cd13ebbdb | 5 | #define COUNTDOWN_SERVICE |
gaggenwaschke | 0:bc6cd13ebbdb | 6 | |
gaggenwaschke | 0:bc6cd13ebbdb | 7 | #include <stdbool.h> |
gaggenwaschke | 0:bc6cd13ebbdb | 8 | #include "mbed.h" |
gaggenwaschke | 0:bc6cd13ebbdb | 9 | #include <events/mbed_events.h> |
gaggenwaschke | 0:bc6cd13ebbdb | 10 | #include "ble/BLE.h" |
gaggenwaschke | 0:bc6cd13ebbdb | 11 | |
gaggenwaschke | 0:bc6cd13ebbdb | 12 | |
gaggenwaschke | 1:79a62e074c35 | 13 | /** definitions for UUID's */ |
gaggenwaschke | 1:79a62e074c35 | 14 | static const char* UUID_COUNTDOWN_SERVICE = "8ca81a4b-6182-4b04-ba9c-e4002a4a7a8b"; // UUID of the contdown service |
gaggenwaschke | 1:79a62e074c35 | 15 | static const char* UUID_W_CHARACTERISTIC = "6a9e371d-a3fc-4a34-bd21-ad887188532c"; // UUID of the time characteristic |
gaggenwaschke | 1:79a62e074c35 | 16 | static UUID UUID_Service(UUID_COUNTDOWN_SERVICE); |
gaggenwaschke | 1:79a62e074c35 | 17 | static UUID UUID_WCharacteristic(UUID_W_CHARACTERISTIC); |
gaggenwaschke | 1:79a62e074c35 | 18 | |
gaggenwaschke | 1:79a62e074c35 | 19 | typedef struct Buffer { |
gaggenwaschke | 1:79a62e074c35 | 20 | uint8_t data[512]; |
gaggenwaschke | 1:79a62e074c35 | 21 | } Buffer; |
gaggenwaschke | 1:79a62e074c35 | 22 | |
gaggenwaschke | 0:bc6cd13ebbdb | 23 | class CountdownService { |
gaggenwaschke | 0:bc6cd13ebbdb | 24 | typedef CountdownService Self; |
gaggenwaschke | 1:79a62e074c35 | 25 | public: |
gaggenwaschke | 1:79a62e074c35 | 26 | CountdownService(GattServer &server, Callback<void(uint8_t*, uint16_t)> w_changed_callback): |
gaggenwaschke | 0:bc6cd13ebbdb | 27 | server(server), |
gaggenwaschke | 1:79a62e074c35 | 28 | wChar(UUID_WCharacteristic, NULL), |
gaggenwaschke | 1:79a62e074c35 | 29 | onWCharWritten(w_changed_callback) { |
gaggenwaschke | 0:bc6cd13ebbdb | 30 | |
gaggenwaschke | 1:79a62e074c35 | 31 | GattCharacteristic *charTable[] = {&wChar}; |
gaggenwaschke | 0:bc6cd13ebbdb | 32 | GattService service(UUID_Service, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); |
gaggenwaschke | 0:bc6cd13ebbdb | 33 | |
gaggenwaschke | 0:bc6cd13ebbdb | 34 | server.addService(service); |
gaggenwaschke | 0:bc6cd13ebbdb | 35 | server.onDataWritten(this, &CountdownService::onDataWritten); |
gaggenwaschke | 0:bc6cd13ebbdb | 36 | } |
gaggenwaschke | 0:bc6cd13ebbdb | 37 | |
gaggenwaschke | 1:79a62e074c35 | 38 | void GetWCharValue(uint8_t *data, uint16_t *length) { |
gaggenwaschke | 1:79a62e074c35 | 39 | server.read(wChar.getValueHandle(), data, length); |
gaggenwaschke | 0:bc6cd13ebbdb | 40 | } |
gaggenwaschke | 0:bc6cd13ebbdb | 41 | |
gaggenwaschke | 0:bc6cd13ebbdb | 42 | private: |
gaggenwaschke | 0:bc6cd13ebbdb | 43 | void onDataWritten(const GattWriteCallbackParams *params) { |
gaggenwaschke | 1:79a62e074c35 | 44 | if (params->handle == wChar.getValueHandle()) { |
gaggenwaschke | 1:79a62e074c35 | 45 | uint16_t length; |
gaggenwaschke | 1:79a62e074c35 | 46 | uint8_t data[512]; |
gaggenwaschke | 1:79a62e074c35 | 47 | GetWCharValue(data, &length); |
gaggenwaschke | 1:79a62e074c35 | 48 | onWCharWritten(data, length); |
gaggenwaschke | 0:bc6cd13ebbdb | 49 | } |
gaggenwaschke | 0:bc6cd13ebbdb | 50 | } |
gaggenwaschke | 0:bc6cd13ebbdb | 51 | |
gaggenwaschke | 0:bc6cd13ebbdb | 52 | private: |
gaggenwaschke | 0:bc6cd13ebbdb | 53 | GattServer &server; |
gaggenwaschke | 1:79a62e074c35 | 54 | WriteOnlyGattCharacteristic<Buffer> wChar; |
gaggenwaschke | 1:79a62e074c35 | 55 | Callback<void(uint8_t, 512)> onWCharWritten; |
gaggenwaschke | 0:bc6cd13ebbdb | 56 | }; |
gaggenwaschke | 0:bc6cd13ebbdb | 57 | #endif |