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