imob

Dependencies:   mbedtls mbed BLE_API nRF51822 AccelSensor

Revision:
0:5284859bb3e8
Child:
1:471d502617fe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AccelSensorService.h	Tue Mar 20 14:31:59 2018 +0000
@@ -0,0 +1,67 @@
+#ifndef __BLE_ACCEL_SENSOR_SERVICE_H__
+#define __BLE_ACCEL_SENSOR_SERVICE_H__
+
+#include "mbed.h"
+#include "ble/BLE.h"
+#include "ble/Gap.h"
+#include "AccelSensor/AccelSensor.h"
+
+#define ACCEL_DETECTION_THRESHOLD 85
+
+class AccelSensorService {
+public:
+    const static uint16_t ACCEL_SENSOR_SERVICE_UUID = 0xD000;
+    const static uint16_t ACCEL_DETECTION_UUID = 0xD001;
+
+    AccelSensorService(BLEDevice &_ble) : 
+        ble(_ble), 
+        accelerometer(P0_22, P0_20),// waveshare //accelerometer(P0_24, P0_21),// nuevo
+        accelDetection(0),
+        AccelDetectionCharacteristic(ACCEL_DETECTION_UUID, &accelDetection, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY)
+    {
+        GattCharacteristic *charTable[] = {&AccelDetectionCharacteristic};
+        GattService accelSensorService(ACCEL_SENSOR_SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *));
+
+        ble.addService(accelSensorService);
+        
+        accelerometer.init();
+        updateAccel();       
+    }
+            
+    void updateAccel() {
+        int aux_accel[3];
+        accelerometer.readData(aux_accel);
+        
+        for(int i = 0; i < 3; i++)
+            accel[i] = (uint8_t)aux_accel[i];
+    }
+    
+    bool updateAccelDetection() {
+        uint8_t passAccel[3] = {accel[0], accel[1], accel[2]};      
+        updateAccel();
+        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 )
+        {
+            accelDetection = 1;
+            ble.gattServer().write(AccelDetectionCharacteristic.getValueHandle(), &accelDetection, 1);            
+        }
+        else
+        {
+            accelDetection = 0;
+            ble.gattServer().write(AccelDetectionCharacteristic.getValueHandle(), &accelDetection, 1);        
+        }
+        
+        return ((accelDetection > 0) ? true: false);
+    }
+
+private:
+    BLEDevice &ble;
+    
+    AccelSensor accelerometer;
+    
+    uint8_t accel[3];
+    uint8_t accelDetection;
+    
+    ReadOnlyGattCharacteristic < uint8_t > AccelDetectionCharacteristic;    
+};
+
+#endif /* #ifndef __BLE_ACCEL_SENSOR_SERVICE_H__ */
\ No newline at end of file