ble nano hid over gatt
Dependencies: BLE_API mbed-dev nRF51822
Diff: ScanParametersService.h
- Revision:
- 85:e526a89a0674
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ScanParametersService.h Thu Sep 15 08:48:57 2016 +0900 @@ -0,0 +1,65 @@ +#ifndef __BLE_SCAN_PARAMETERS_SERVICE_H__ +#define __BLE_SCAN_PARAMETERS_SERVICE_H__ + +#include "ble/BLE.h" + +#pragma pack(push, 1) +typedef struct { + uint16_t LE_Scan_Interval; + uint16_t LE_Scan_Window; +} ScanIntervalWindow_t; +#pragma pack(pop) + +class ScanParametersService { +public: + ScanParametersService( + BLE &_ble + ) : + ble(_ble), + scanIntervalWindowCharacteristic( + GattCharacteristic::UUID_SCAN_INTERVAL_WINDOW_CHAR, + (uint8_t*)&scanIntervalWindowData, + sizeof(scanIntervalWindowData), + sizeof(scanIntervalWindowData), + GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE + ), + scanRefreshCharacteristic( + GattCharacteristic::UUID_SCAN_REFRESH_CHAR, + &scanRefreshData, + sizeof(scanIntervalWindowData), + sizeof(scanIntervalWindowData), + GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY + ) + { + GattCharacteristic *charTable[] = { + &scanIntervalWindowCharacteristic, + &scanRefreshCharacteristic + }; + + GattService scanParametersService( + GattService::UUID_SCAN_PARAMETERS_SERVICE, + charTable, + sizeof(charTable) / sizeof(GattCharacteristic *) + ); + + ble.addService(scanParametersService); + ble.gattServer().onDataWritten(this, &ScanParametersService::onDataWritten); + } + +protected: + BLE& ble; + + ScanIntervalWindow_t scanIntervalWindowData; + uint8_t scanRefreshData; + + GattCharacteristic scanIntervalWindowCharacteristic; + GattCharacteristic scanRefreshCharacteristic; + + void onDataWritten(const GattWriteCallbackParams *params) { + if (params->handle == scanIntervalWindowCharacteristic.getValueHandle()) { + DEBUG_PRINTF_BLE_INTERRUPT("onDataWritten: scanIntervalWindow %d bytes\r\n", params->len); + } + } +}; + +#endif