ble nano hid over gatt

Dependencies:   BLE_API mbed-dev nRF51822

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ScanParametersService.h Source File

ScanParametersService.h

00001 #ifndef __BLE_SCAN_PARAMETERS_SERVICE_H__
00002 #define __BLE_SCAN_PARAMETERS_SERVICE_H__
00003 
00004 #include "ble/BLE.h"
00005 
00006 #pragma pack(push, 1)
00007 typedef struct {
00008     uint16_t LE_Scan_Interval;
00009     uint16_t LE_Scan_Window;
00010 } ScanIntervalWindow_t;
00011 #pragma pack(pop)
00012 
00013 class ScanParametersService {
00014 public:
00015     ScanParametersService(
00016         BLE &_ble
00017     ) :
00018         ble(_ble),
00019         scanIntervalWindowCharacteristic(
00020             GattCharacteristic::UUID_SCAN_INTERVAL_WINDOW_CHAR,
00021             (uint8_t*)&scanIntervalWindowData,
00022             sizeof(scanIntervalWindowData),
00023             sizeof(scanIntervalWindowData),
00024             GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE
00025         ),
00026         scanRefreshCharacteristic(
00027             GattCharacteristic::UUID_SCAN_REFRESH_CHAR,
00028             &scanRefreshData,
00029             sizeof(scanIntervalWindowData),
00030             sizeof(scanIntervalWindowData),
00031             GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY
00032         )
00033     {
00034         GattCharacteristic *charTable[] = {
00035             &scanIntervalWindowCharacteristic,
00036             &scanRefreshCharacteristic
00037         };
00038 
00039         GattService scanParametersService(
00040             GattService::UUID_SCAN_PARAMETERS_SERVICE,
00041             charTable,
00042             sizeof(charTable) / sizeof(GattCharacteristic *)
00043         );
00044 
00045         ble.addService(scanParametersService);
00046         ble.gattServer().onDataWritten(this, &ScanParametersService::onDataWritten);
00047     }
00048 
00049 protected:
00050     BLE& ble;
00051 
00052     ScanIntervalWindow_t scanIntervalWindowData;
00053     uint8_t scanRefreshData;
00054 
00055     GattCharacteristic scanIntervalWindowCharacteristic;
00056     GattCharacteristic scanRefreshCharacteristic;
00057 
00058     void onDataWritten(const GattWriteCallbackParams *params) {
00059         if (params->handle == scanIntervalWindowCharacteristic.getValueHandle()) {
00060             DEBUG_PRINTF_BLE_INTERRUPT("onDataWritten: scanIntervalWindow %d bytes\r\n", params->len);
00061         }
00062     }
00063 };
00064 
00065 #endif