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