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_ACCEL_SENSOR_SERVICE_H__
osilvam 0:5284859bb3e8 2 #define __BLE_ACCEL_SENSOR_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 "AccelSensor/AccelSensor.h"
osilvam 0:5284859bb3e8 8
osilvam 1:471d502617fe 9 #define ACCEL_DETECTION_THRESHOLD 110
osilvam 0:5284859bb3e8 10
osilvam 0:5284859bb3e8 11 class AccelSensorService {
osilvam 0:5284859bb3e8 12 public:
osilvam 0:5284859bb3e8 13 const static uint16_t ACCEL_SENSOR_SERVICE_UUID = 0xD000;
osilvam 0:5284859bb3e8 14 const static uint16_t ACCEL_DETECTION_UUID = 0xD001;
osilvam 0:5284859bb3e8 15
osilvam 0:5284859bb3e8 16 AccelSensorService(BLEDevice &_ble) :
osilvam 0:5284859bb3e8 17 ble(_ble),
osilvam 0:5284859bb3e8 18 accelerometer(P0_22, P0_20),// waveshare //accelerometer(P0_24, P0_21),// nuevo
osilvam 0:5284859bb3e8 19 accelDetection(0),
osilvam 0:5284859bb3e8 20 AccelDetectionCharacteristic(ACCEL_DETECTION_UUID, &accelDetection, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY)
osilvam 0:5284859bb3e8 21 {
osilvam 0:5284859bb3e8 22 GattCharacteristic *charTable[] = {&AccelDetectionCharacteristic};
osilvam 0:5284859bb3e8 23 GattService accelSensorService(ACCEL_SENSOR_SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *));
osilvam 0:5284859bb3e8 24
osilvam 0:5284859bb3e8 25 ble.addService(accelSensorService);
osilvam 0:5284859bb3e8 26
osilvam 0:5284859bb3e8 27 accelerometer.init();
osilvam 0:5284859bb3e8 28 updateAccel();
osilvam 0:5284859bb3e8 29 }
osilvam 0:5284859bb3e8 30
osilvam 0:5284859bb3e8 31 void updateAccel() {
osilvam 0:5284859bb3e8 32 int aux_accel[3];
osilvam 0:5284859bb3e8 33 accelerometer.readData(aux_accel);
osilvam 0:5284859bb3e8 34
osilvam 0:5284859bb3e8 35 for(int i = 0; i < 3; i++)
osilvam 0:5284859bb3e8 36 accel[i] = (uint8_t)aux_accel[i];
osilvam 0:5284859bb3e8 37 }
osilvam 0:5284859bb3e8 38
osilvam 0:5284859bb3e8 39 bool updateAccelDetection() {
osilvam 0:5284859bb3e8 40 uint8_t passAccel[3] = {accel[0], accel[1], accel[2]};
osilvam 0:5284859bb3e8 41 updateAccel();
osilvam 0:5284859bb3e8 42 if( abs(accel[0] - passAccel[0]) > ACCEL_DETECTION_THRESHOLD || abs(accel[1] - passAccel[1]) > ACCEL_DETECTION_THRESHOLD || abs(accel[2] - passAccel[2]) > ACCEL_DETECTION_THRESHOLD )
osilvam 0:5284859bb3e8 43 {
osilvam 0:5284859bb3e8 44 accelDetection = 1;
osilvam 0:5284859bb3e8 45 ble.gattServer().write(AccelDetectionCharacteristic.getValueHandle(), &accelDetection, 1);
osilvam 0:5284859bb3e8 46 }
osilvam 0:5284859bb3e8 47 else
osilvam 0:5284859bb3e8 48 {
osilvam 0:5284859bb3e8 49 accelDetection = 0;
osilvam 0:5284859bb3e8 50 ble.gattServer().write(AccelDetectionCharacteristic.getValueHandle(), &accelDetection, 1);
osilvam 0:5284859bb3e8 51 }
osilvam 0:5284859bb3e8 52
osilvam 0:5284859bb3e8 53 return ((accelDetection > 0) ? true: false);
osilvam 0:5284859bb3e8 54 }
osilvam 0:5284859bb3e8 55
osilvam 0:5284859bb3e8 56 private:
osilvam 0:5284859bb3e8 57 BLEDevice &ble;
osilvam 0:5284859bb3e8 58
osilvam 0:5284859bb3e8 59 AccelSensor accelerometer;
osilvam 0:5284859bb3e8 60
osilvam 0:5284859bb3e8 61 uint8_t accel[3];
osilvam 0:5284859bb3e8 62 uint8_t accelDetection;
osilvam 0:5284859bb3e8 63
osilvam 0:5284859bb3e8 64 ReadOnlyGattCharacteristic < uint8_t > AccelDetectionCharacteristic;
osilvam 0:5284859bb3e8 65 };
osilvam 0:5284859bb3e8 66
osilvam 0:5284859bb3e8 67 #endif /* #ifndef __BLE_ACCEL_SENSOR_SERVICE_H__ */