Dependencies:   AccelSensor BLE_API mbed nRF51822

Committer:
fjaviercifuentes
Date:
Fri Jan 19 02:38:38 2018 +0000
Revision:
0:027b7829b46a

        

Who changed what in which revision?

UserRevisionLine numberNew 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__ */