No changes

Dependencies:   BLE_API mbed

Fork of SDP_Version3 by Michael Galis

Committer:
galism
Date:
Sun Feb 26 02:33:32 2017 +0000
Revision:
4:caab577334f0
No changes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
galism 4:caab577334f0 1 /* Senior Project Bluetooth bicycle speedometer
galism 4:caab577334f0 2 Author: Michael Galis
galism 4:caab577334f0 3 This header file describes the Acceleration Service that I created to be able
galism 4:caab577334f0 4 to send the x, y, and z accelerations as the bicycle is moving. These
galism 4:caab577334f0 5 accelerations will be used by the phone to calculate the speed of the bicycle.
galism 4:caab577334f0 6 */
galism 4:caab577334f0 7
galism 4:caab577334f0 8 #ifndef __BLE_SERVICE_H__
galism 4:caab577334f0 9 #define __BLE_SERVICE_H__
galism 4:caab577334f0 10
galism 4:caab577334f0 11 class AccelerationService {
galism 4:caab577334f0 12 public:
galism 4:caab577334f0 13 const static uint16_t ACCELERATION_SERVICE_UUID = 0xA010;
galism 4:caab577334f0 14 const static uint16_t X_CHARACTERISTIC_UUID = 0xA011;
galism 4:caab577334f0 15 const static uint16_t Y_CHARACTERISTIC_UUID = 0xA012;
galism 4:caab577334f0 16 const static uint16_t Z_CHARACTERISTIC_UUID = 0xA013;
galism 4:caab577334f0 17 const static uint16_t ALL_CHARACTERISTIC_UUID = 0x0014;
galism 4:caab577334f0 18
galism 4:caab577334f0 19 AccelerationService(BLE &_ble) :
galism 4:caab577334f0 20 ble(_ble),
galism 4:caab577334f0 21 xData(X_CHARACTERISTIC_UUID, 0, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY),
galism 4:caab577334f0 22 yData(Y_CHARACTERISTIC_UUID, 0, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY),
galism 4:caab577334f0 23 zData(Z_CHARACTERISTIC_UUID, 0, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY),
galism 4:caab577334f0 24 allState(ALL_CHARACTERISTIC_UUID, 0, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY)
galism 4:caab577334f0 25 {
galism 4:caab577334f0 26 GattCharacteristic *charTable[] = {&xData,&yData, &zData, &allState};
galism 4:caab577334f0 27 GattService accelerationService(AccelerationService::ACCELERATION_SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *));
galism 4:caab577334f0 28 ble.gattServer().addService(accelerationService);
galism 4:caab577334f0 29 }
galism 4:caab577334f0 30
galism 4:caab577334f0 31 void updateXData(float newData)
galism 4:caab577334f0 32 {
galism 4:caab577334f0 33 int length = sizeof(float);
galism 4:caab577334f0 34 uint8_t bytes[sizeof(float)];
galism 4:caab577334f0 35 for(int i = 0; i < length; i++)
galism 4:caab577334f0 36 {
galism 4:caab577334f0 37 bytes[i] = ((uint8_t*)&newData)[i];
galism 4:caab577334f0 38 }
galism 4:caab577334f0 39 int n = sizeof(bytes);
galism 4:caab577334f0 40 ble.gattServer().write(xData.getValueHandle(), (uint8_t *)&bytes, n);
galism 4:caab577334f0 41 //int n = sizeof(uint8_t);
galism 4:caab577334f0 42 //ble.gattServer().write(xData.getValueHandle(), (uint8_t *)&newData, n);
galism 4:caab577334f0 43 }
galism 4:caab577334f0 44
galism 4:caab577334f0 45 void updateYData(float newData)
galism 4:caab577334f0 46 {
galism 4:caab577334f0 47 int length = sizeof(float);
galism 4:caab577334f0 48 uint8_t bytes[sizeof(float)];
galism 4:caab577334f0 49 for(int i = 0; i < length; i++)
galism 4:caab577334f0 50 {
galism 4:caab577334f0 51 bytes[i] = ((uint8_t*)&newData)[i];
galism 4:caab577334f0 52 }
galism 4:caab577334f0 53 int n = sizeof(bytes);
galism 4:caab577334f0 54 ble.gattServer().write(yData.getValueHandle(), (uint8_t *)&bytes, n);
galism 4:caab577334f0 55 }
galism 4:caab577334f0 56
galism 4:caab577334f0 57 void updateZData(float newData)
galism 4:caab577334f0 58 {
galism 4:caab577334f0 59 int length = sizeof(float);
galism 4:caab577334f0 60 uint8_t bytes[sizeof(float)];
galism 4:caab577334f0 61 for(int i = 0; i < length; i++)
galism 4:caab577334f0 62 {
galism 4:caab577334f0 63 bytes[i] = ((uint8_t*)&newData)[i];
galism 4:caab577334f0 64 }
galism 4:caab577334f0 65 int n = sizeof(bytes);
galism 4:caab577334f0 66 ble.gattServer().write(zData.getValueHandle(), (uint8_t *)&bytes, n);
galism 4:caab577334f0 67 }
galism 4:caab577334f0 68
galism 4:caab577334f0 69 void updateALLState(float newState,float newStatey,float newStatez)
galism 4:caab577334f0 70 {
galism 4:caab577334f0 71
galism 4:caab577334f0 72 int length = 14;
galism 4:caab577334f0 73 uint8_t bytes[length];
galism 4:caab577334f0 74
galism 4:caab577334f0 75 bytes[0] = ((uint8_t*)&newState)[0];
galism 4:caab577334f0 76 bytes[1] = ((uint8_t*)&newState)[1];
galism 4:caab577334f0 77 bytes[2] = ((uint8_t*)&newState)[2];
galism 4:caab577334f0 78 bytes[3] = ((uint8_t*)&newState)[3];
galism 4:caab577334f0 79 bytes[4] = 0xff;
galism 4:caab577334f0 80 bytes[5] = ((uint8_t*)&newStatey)[0];
galism 4:caab577334f0 81 bytes[6] = ((uint8_t*)&newStatey)[1];
galism 4:caab577334f0 82 bytes[7] = ((uint8_t*)&newStatey)[2];
galism 4:caab577334f0 83 bytes[8] = ((uint8_t*)&newStatey)[3];
galism 4:caab577334f0 84 bytes[9] = 0xff;
galism 4:caab577334f0 85 bytes[10] = ((uint8_t*)&newStatez)[0];
galism 4:caab577334f0 86 bytes[11] = ((uint8_t*)&newStatez)[1];
galism 4:caab577334f0 87 bytes[12] = ((uint8_t*)&newStatez)[2];
galism 4:caab577334f0 88 bytes[13] = ((uint8_t*)&newStatez)[3];
galism 4:caab577334f0 89
galism 4:caab577334f0 90 uint16_t n = sizeof(bytes) / sizeof(bytes[0]);
galism 4:caab577334f0 91 ble.gattServer().write(allState.getValueHandle(), (uint8_t *)&bytes, n); //zapisanie danych do charakterystyki
galism 4:caab577334f0 92 }
galism 4:caab577334f0 93
galism 4:caab577334f0 94 private:
galism 4:caab577334f0 95 BLE &ble;
galism 4:caab577334f0 96 ReadOnlyGattCharacteristic<float> xData;
galism 4:caab577334f0 97 ReadOnlyGattCharacteristic<float> yData;
galism 4:caab577334f0 98 ReadOnlyGattCharacteristic<float> zData;
galism 4:caab577334f0 99 ReadOnlyArrayGattCharacteristic<uint8_t, 14> allState;
galism 4:caab577334f0 100 };
galism 4:caab577334f0 101
galism 4:caab577334f0 102 #endif /* #ifndef __BLE_BUTTON_SERVICE_H__ */