imob

Dependencies:   mbedtls mbed BLE_API nRF51822 AccelSensor

Committer:
osilvam
Date:
Sat Mar 20 19:09:06 2021 +0000
Revision:
1:471d502617fe
Parent:
0:5284859bb3e8
last version

Who changed what in which revision?

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