No changes

Dependencies:   BLE_API mbed nRF51822

Fork of SDP_Version3_Abdul by Michael Galis

Revision:
4:caab577334f0
diff -r 7dc284221369 -r caab577334f0 AcclerationService.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AcclerationService.h	Sun Feb 26 02:33:32 2017 +0000
@@ -0,0 +1,102 @@
+/* Senior Project Bluetooth bicycle speedometer
+Author: Michael Galis
+This header file describes the Acceleration Service that I created to be able
+to send the x, y, and z accelerations as the bicycle is moving. These 
+accelerations will be used by the phone to calculate the speed of the bicycle.
+*/
+
+#ifndef __BLE_SERVICE_H__
+#define __BLE_SERVICE_H__
+
+class AccelerationService {
+public:
+    const static uint16_t ACCELERATION_SERVICE_UUID = 0xA010;
+    const static uint16_t X_CHARACTERISTIC_UUID     = 0xA011;
+    const static uint16_t Y_CHARACTERISTIC_UUID     = 0xA012;
+    const static uint16_t Z_CHARACTERISTIC_UUID     = 0xA013;
+    const static uint16_t ALL_CHARACTERISTIC_UUID   = 0x0014;
+
+    AccelerationService(BLE &_ble) :
+        ble(_ble), 
+        xData(X_CHARACTERISTIC_UUID, 0, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY),
+        yData(Y_CHARACTERISTIC_UUID, 0, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY),
+        zData(Z_CHARACTERISTIC_UUID, 0, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY),
+        allState(ALL_CHARACTERISTIC_UUID, 0, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY)
+    {
+        GattCharacteristic *charTable[] = {&xData,&yData, &zData, &allState};
+        GattService         accelerationService(AccelerationService::ACCELERATION_SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *));
+        ble.gattServer().addService(accelerationService);
+    }
+
+    void updateXData(float newData) 
+    {
+        int length = sizeof(float);
+        uint8_t bytes[sizeof(float)]; 
+        for(int i = 0; i < length; i++)
+        {
+            bytes[i] = ((uint8_t*)&newData)[i];
+        }
+        int n = sizeof(bytes); 
+        ble.gattServer().write(xData.getValueHandle(), (uint8_t *)&bytes, n);
+        //int n = sizeof(uint8_t); 
+        //ble.gattServer().write(xData.getValueHandle(), (uint8_t *)&newData, n); 
+    }
+    
+    void updateYData(float newData)
+    {
+        int length = sizeof(float);
+        uint8_t bytes[sizeof(float)];
+        for(int i = 0; i < length; i++)
+        {
+            bytes[i] = ((uint8_t*)&newData)[i];
+        } 
+        int n = sizeof(bytes);
+        ble.gattServer().write(yData.getValueHandle(), (uint8_t *)&bytes, n); 
+    }
+    
+    void updateZData(float newData) 
+    {
+        int length = sizeof(float);
+        uint8_t bytes[sizeof(float)];
+        for(int i = 0; i < length; i++)
+        {
+            bytes[i] = ((uint8_t*)&newData)[i];
+        }
+        int n = sizeof(bytes);
+        ble.gattServer().write(zData.getValueHandle(), (uint8_t *)&bytes, n); 
+    }
+    
+    void updateALLState(float newState,float newStatey,float newStatez) 
+    {
+        
+        int length = 14;
+        uint8_t bytes[length]; 
+        
+        bytes[0] = ((uint8_t*)&newState)[0];
+        bytes[1] = ((uint8_t*)&newState)[1];
+        bytes[2] = ((uint8_t*)&newState)[2];
+        bytes[3] = ((uint8_t*)&newState)[3];
+        bytes[4] = 0xff;
+        bytes[5] = ((uint8_t*)&newStatey)[0];
+        bytes[6] = ((uint8_t*)&newStatey)[1];
+        bytes[7] = ((uint8_t*)&newStatey)[2];
+        bytes[8] = ((uint8_t*)&newStatey)[3];
+        bytes[9] = 0xff;
+        bytes[10] = ((uint8_t*)&newStatez)[0];
+        bytes[11] = ((uint8_t*)&newStatez)[1];
+        bytes[12] = ((uint8_t*)&newStatez)[2];
+        bytes[13] = ((uint8_t*)&newStatez)[3];
+             
+        uint16_t n = sizeof(bytes) / sizeof(bytes[0]);
+        ble.gattServer().write(allState.getValueHandle(), (uint8_t *)&bytes, n); //zapisanie danych do charakterystyki
+    }
+
+private:
+    BLE                              &ble;
+    ReadOnlyGattCharacteristic<float>  xData;
+    ReadOnlyGattCharacteristic<float>  yData;
+    ReadOnlyGattCharacteristic<float>  zData;
+    ReadOnlyArrayGattCharacteristic<uint8_t, 14> allState;
+};
+
+#endif /* #ifndef __BLE_BUTTON_SERVICE_H__ */