Kris Scholte Lubberink
/
SSS_Ble
Ble for smart sOlutions
source/ColorService.h@11:d6ed1437c2ee, 2019-06-20 (annotated)
- Committer:
- kris@kris-X682X
- Date:
- Thu Jun 20 13:20:24 2019 +0200
- Revision:
- 11:d6ed1437c2ee
- Parent:
- 10:d845189d146e
Refactored
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kris@kris-X682X | 6:ee9c86f06eae | 1 | #ifndef __BLE_COLOR_SERVICE_H__ |
krissl | 1:9fc54848a198 | 2 | #define __BLE_COLOR_SERVICE_H__ |
krissl | 1:9fc54848a198 | 3 | |
krissl | 1:9fc54848a198 | 4 | #include "ble/BLE.h" |
krissl | 1:9fc54848a198 | 5 | #include "CustomUUIDs.h" |
kris@kris-X682X | 10:d845189d146e | 6 | #include "MyStripSingleton.h" |
kris@kris-X682X | 9:92d861703f96 | 7 | |
krissl | 3:f594022fe519 | 8 | |
krissl | 1:9fc54848a198 | 9 | class ColorService { |
kris@kris-X682X | 6:ee9c86f06eae | 10 | public: |
krissl | 1:9fc54848a198 | 11 | /** |
krissl | 1:9fc54848a198 | 12 | * @brief ColorService constructor. |
krissl | 1:9fc54848a198 | 13 | * @param ble Reference to BLE device. |
krissl | 1:9fc54848a198 | 14 | */ |
kris@kris-X682X | 10:d845189d146e | 15 | typedef uint32_t ColorType_t; |
krissl | 1:9fc54848a198 | 16 | ColorService(BLE& _ble) : |
kris@kris-X682X | 10:d845189d146e | 17 | ble(_ble), |
kris@kris-X682X | 10:d845189d146e | 18 | colorCharacteristic((UUID)CustomUUIDs::UUID_COLOR_CHAR, &color) |
krissl | 1:9fc54848a198 | 19 | { |
krissl | 1:9fc54848a198 | 20 | static bool serviceAdded = false; /* We should only ever need to add the information service once. */ |
krissl | 1:9fc54848a198 | 21 | if (serviceAdded) { |
krissl | 1:9fc54848a198 | 22 | return; |
krissl | 1:9fc54848a198 | 23 | } |
kris@kris-X682X | 6:ee9c86f06eae | 24 | printf("[PERIPHERAL] Adding service.. \r\n"); |
krissl | 1:9fc54848a198 | 25 | GattCharacteristic *charTable[] = { &colorCharacteristic }; |
krissl | 1:9fc54848a198 | 26 | |
krissl | 3:f594022fe519 | 27 | GattService colorService( |
kris@kris-X682X | 10:d845189d146e | 28 | CustomUUIDs::UUID_COLOR_SERVICE, |
kris@kris-X682X | 10:d845189d146e | 29 | charTable, |
kris@kris-X682X | 10:d845189d146e | 30 | sizeof(charTable) / sizeof(GattCharacteristic *)); |
krissl | 3:f594022fe519 | 31 | ble.gattServer().addService(colorService); |
krissl | 1:9fc54848a198 | 32 | |
kris@kris-X682X | 6:ee9c86f06eae | 33 | ble.gattServer().onDataWritten(this, &ColorService::onDataWritten); |
krissl | 1:9fc54848a198 | 34 | } |
krissl | 1:9fc54848a198 | 35 | |
kris@kris-X682X | 6:ee9c86f06eae | 36 | virtual ~ColorService() { |
kris@kris-X682X | 6:ee9c86f06eae | 37 | printf("[PERIPHERAL]\t Destructing ColorService"); |
kris@kris-X682X | 6:ee9c86f06eae | 38 | } |
kris@kris-X682X | 6:ee9c86f06eae | 39 | |
krissl | 3:f594022fe519 | 40 | virtual void onDataWritten(const GattWriteCallbackParams *writeParams) { |
krissl | 3:f594022fe519 | 41 | uint16_t handle = writeParams->handle; |
kris@kris-X682X | 6:ee9c86f06eae | 42 | printf("You wrote some data... But for which char? \r\n"); |
kris@kris-X682X | 6:ee9c86f06eae | 43 | printf("%d == %d", handle, colorCharacteristic.getValueHandle());//colorCharacteristic.getValueHandle()); |
kris@kris-X682X | 10:d845189d146e | 44 | if(handle == colorCharacteristic.getValueHandle()){ |
kris@kris-X682X | 9:92d861703f96 | 45 | printf("[PERIPHERAL]\t You wrote a color! \r\n"); |
kris@kris-X682X | 10:d845189d146e | 46 | printf("[PERIPHERAL]\t The value should be an integer.\r\n"); |
kris@kris-X682X | 10:d845189d146e | 47 | color = (unsigned char)writeParams->data[0] << 16 | writeParams->data[1] << 8 | writeParams->data[2]; |
kris@kris-X682X | 10:d845189d146e | 48 | printf("[PERIPHERAL]\t Setting color %06X\n\r", color); |
kris@kris-X682X | 10:d845189d146e | 49 | |
kris@kris-X682X | 10:d845189d146e | 50 | MyStripSingleton::getInstance()->ambientColor = color; |
kris@kris-X682X | 10:d845189d146e | 51 | MyStripSingleton::getInstance()->solidColor(color); |
krissl | 3:f594022fe519 | 52 | } |
kris@kris-X682X | 9:92d861703f96 | 53 | printf("[PERIPHERAL]\t Did that work?\n\r"); |
krissl | 3:f594022fe519 | 54 | } |
krissl | 1:9fc54848a198 | 55 | private: |
krissl | 1:9fc54848a198 | 56 | BLE& ble; |
krissl | 1:9fc54848a198 | 57 | ColorType_t color; |
krissl | 1:9fc54848a198 | 58 | ReadWriteGattCharacteristic<ColorType_t> colorCharacteristic; |
krissl | 1:9fc54848a198 | 59 | }; |
krissl | 1:9fc54848a198 | 60 | #endif /* #ifndef __BLE_COLOR_SERVICE_H__*/ |