imob
Dependencies: mbedtls mbed BLE_API nRF51822 AccelSensor
ALARMService.h@0:5284859bb3e8, 2018-03-20 (annotated)
- Committer:
- osilvam
- Date:
- Tue Mar 20 14:31:59 2018 +0000
- Revision:
- 0:5284859bb3e8
imob
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
osilvam | 0:5284859bb3e8 | 1 | #ifndef __BLE_ALARM_SERVICE_H__ |
osilvam | 0:5284859bb3e8 | 2 | #define __BLE_ALARM_SERVICE_H__ |
osilvam | 0:5284859bb3e8 | 3 | |
osilvam | 0:5284859bb3e8 | 4 | #include "mbed.h" |
osilvam | 0:5284859bb3e8 | 5 | #include "ble/BLE.h" |
osilvam | 0:5284859bb3e8 | 6 | #include "ble/Gap.h" |
osilvam | 0:5284859bb3e8 | 7 | #include "ImobStateService.h" |
osilvam | 0:5284859bb3e8 | 8 | |
osilvam | 0:5284859bb3e8 | 9 | class ALARMService { |
osilvam | 0:5284859bb3e8 | 10 | public: |
osilvam | 0:5284859bb3e8 | 11 | const static uint16_t ALARM_SERVICE_UUID = 0xE000; |
osilvam | 0:5284859bb3e8 | 12 | const static uint16_t ALARM_STATE_CHARACTERISTIC_UUID = 0xE001; |
osilvam | 0:5284859bb3e8 | 13 | |
osilvam | 0:5284859bb3e8 | 14 | ALARMService(BLEDevice &_ble) : |
osilvam | 0:5284859bb3e8 | 15 | ble(_ble), |
osilvam | 0:5284859bb3e8 | 16 | alarmState(0), |
osilvam | 0:5284859bb3e8 | 17 | AlarmCharacteristic(ALARM_STATE_CHARACTERISTIC_UUID, &alarmState, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY) |
osilvam | 0:5284859bb3e8 | 18 | { |
osilvam | 0:5284859bb3e8 | 19 | GattCharacteristic *charTable[] = {&AlarmCharacteristic}; |
osilvam | 0:5284859bb3e8 | 20 | GattService alarmService(ALARM_SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); |
osilvam | 0:5284859bb3e8 | 21 | |
osilvam | 0:5284859bb3e8 | 22 | ble.addService(alarmService); |
osilvam | 0:5284859bb3e8 | 23 | |
osilvam | 0:5284859bb3e8 | 24 | ble.gattServer().onDataWritten(this, &ALARMService::onDataWritten); |
osilvam | 0:5284859bb3e8 | 25 | } |
osilvam | 0:5284859bb3e8 | 26 | |
osilvam | 0:5284859bb3e8 | 27 | GattAttribute::Handle_t getValueHandle() const |
osilvam | 0:5284859bb3e8 | 28 | { |
osilvam | 0:5284859bb3e8 | 29 | return AlarmCharacteristic.getValueHandle(); |
osilvam | 0:5284859bb3e8 | 30 | } |
osilvam | 0:5284859bb3e8 | 31 | |
osilvam | 0:5284859bb3e8 | 32 | void updateAlarmState(uint8_t newAlarmState) { |
osilvam | 0:5284859bb3e8 | 33 | alarmState = newAlarmState; |
osilvam | 0:5284859bb3e8 | 34 | ble.gattServer().write(AlarmCharacteristic.getValueHandle(), &alarmState, 1); |
osilvam | 0:5284859bb3e8 | 35 | } |
osilvam | 0:5284859bb3e8 | 36 | |
osilvam | 0:5284859bb3e8 | 37 | protected: |
osilvam | 0:5284859bb3e8 | 38 | |
osilvam | 0:5284859bb3e8 | 39 | virtual void onDataWritten(const GattWriteCallbackParams *params) |
osilvam | 0:5284859bb3e8 | 40 | { |
osilvam | 0:5284859bb3e8 | 41 | if ((params->handle == AlarmCharacteristic.getValueHandle()) && (params->len == 1) && authenticated) |
osilvam | 0:5284859bb3e8 | 42 | { |
osilvam | 0:5284859bb3e8 | 43 | updateAlarmState(*(params->data)); |
osilvam | 0:5284859bb3e8 | 44 | } |
osilvam | 0:5284859bb3e8 | 45 | else |
osilvam | 0:5284859bb3e8 | 46 | updateAlarmState(0); |
osilvam | 0:5284859bb3e8 | 47 | } |
osilvam | 0:5284859bb3e8 | 48 | |
osilvam | 0:5284859bb3e8 | 49 | private: |
osilvam | 0:5284859bb3e8 | 50 | |
osilvam | 0:5284859bb3e8 | 51 | BLEDevice &ble; |
osilvam | 0:5284859bb3e8 | 52 | uint8_t alarmState; |
osilvam | 0:5284859bb3e8 | 53 | |
osilvam | 0:5284859bb3e8 | 54 | ReadWriteGattCharacteristic<uint8_t> AlarmCharacteristic; |
osilvam | 0:5284859bb3e8 | 55 | }; |
osilvam | 0:5284859bb3e8 | 56 | |
osilvam | 0:5284859bb3e8 | 57 | #endif /* #ifndef __BLE_RELAY_SERVICE_H__ */ |