
BLE GATT-service implementation for high quantity sensor data from a MPU6050-accelerator/gyroscope
Dependencies: BLE_API mbed nRF51822 MPU6050_lib
PowerService.h@13:496c0f5e8a61, 2015-09-22 (annotated)
- Committer:
- fruediger
- Date:
- Tue Sep 22 10:50:59 2015 +0000
- Revision:
- 13:496c0f5e8a61
- Parent:
- 9:6a28d9c0e486
last commit before making this a public repository
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fruediger | 9:6a28d9c0e486 | 1 | #pragma once |
fruediger | 9:6a28d9c0e486 | 2 | #ifndef __POWER_SERVICE_H__ |
fruediger | 9:6a28d9c0e486 | 3 | #define __POWER_SERVICE_H__ |
fruediger | 9:6a28d9c0e486 | 4 | |
fruediger | 9:6a28d9c0e486 | 5 | #include "BLE.h" |
fruediger | 9:6a28d9c0e486 | 6 | |
fruediger | 9:6a28d9c0e486 | 7 | class PowerService |
fruediger | 9:6a28d9c0e486 | 8 | { |
fruediger | 9:6a28d9c0e486 | 9 | public: |
fruediger | 9:6a28d9c0e486 | 10 | enum |
fruediger | 9:6a28d9c0e486 | 11 | { |
fruediger | 9:6a28d9c0e486 | 12 | UUID_POWER_SERVICE = 0xA300, |
fruediger | 9:6a28d9c0e486 | 13 | UUID_POWER_VOLTAGE_CHAR = 0xA301, |
fruediger | 9:6a28d9c0e486 | 14 | UUID_POWER_CURRENT_CHAR = 0xA302, |
fruediger | 9:6a28d9c0e486 | 15 | UUID_POWER_DISCHARGE_CHAR = 0xA303 |
fruediger | 9:6a28d9c0e486 | 16 | }; |
fruediger | 9:6a28d9c0e486 | 17 | |
fruediger | 9:6a28d9c0e486 | 18 | PowerService |
fruediger | 9:6a28d9c0e486 | 19 | ( |
fruediger | 9:6a28d9c0e486 | 20 | BLE &ble, |
fruediger | 9:6a28d9c0e486 | 21 | float initialVoltage = 0.0f, |
fruediger | 9:6a28d9c0e486 | 22 | float initialCurrent = 0.0f, |
fruediger | 9:6a28d9c0e486 | 23 | float initialDischarge = 0.0f |
fruediger | 9:6a28d9c0e486 | 24 | ) : |
fruediger | 9:6a28d9c0e486 | 25 | gattServer(ble.gattServer()), |
fruediger | 9:6a28d9c0e486 | 26 | voltageCharacteristic |
fruediger | 9:6a28d9c0e486 | 27 | ( |
fruediger | 9:6a28d9c0e486 | 28 | UUID_POWER_VOLTAGE_CHAR, |
fruediger | 9:6a28d9c0e486 | 29 | (float*)&initialVoltage, |
fruediger | 9:6a28d9c0e486 | 30 | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY |
fruediger | 9:6a28d9c0e486 | 31 | ), |
fruediger | 9:6a28d9c0e486 | 32 | currentCharacteristic |
fruediger | 9:6a28d9c0e486 | 33 | ( |
fruediger | 9:6a28d9c0e486 | 34 | UUID_POWER_CURRENT_CHAR, |
fruediger | 9:6a28d9c0e486 | 35 | (float*)&initialCurrent, |
fruediger | 9:6a28d9c0e486 | 36 | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY |
fruediger | 9:6a28d9c0e486 | 37 | ), |
fruediger | 9:6a28d9c0e486 | 38 | dischargeCharacteristic |
fruediger | 9:6a28d9c0e486 | 39 | ( |
fruediger | 9:6a28d9c0e486 | 40 | UUID_POWER_DISCHARGE_CHAR, |
fruediger | 9:6a28d9c0e486 | 41 | (float*)&initialDischarge, |
fruediger | 9:6a28d9c0e486 | 42 | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY |
fruediger | 9:6a28d9c0e486 | 43 | ) |
fruediger | 9:6a28d9c0e486 | 44 | { |
fruediger | 9:6a28d9c0e486 | 45 | static bool serviceAdded = false; |
fruediger | 9:6a28d9c0e486 | 46 | if (serviceAdded) |
fruediger | 9:6a28d9c0e486 | 47 | return; |
fruediger | 9:6a28d9c0e486 | 48 | |
fruediger | 9:6a28d9c0e486 | 49 | GattCharacteristic *charTable[] = |
fruediger | 9:6a28d9c0e486 | 50 | { |
fruediger | 9:6a28d9c0e486 | 51 | &voltageCharacteristic, |
fruediger | 9:6a28d9c0e486 | 52 | ¤tCharacteristic, |
fruediger | 9:6a28d9c0e486 | 53 | &dischargeCharacteristic |
fruediger | 9:6a28d9c0e486 | 54 | }; |
fruediger | 9:6a28d9c0e486 | 55 | |
fruediger | 9:6a28d9c0e486 | 56 | GattService powerService(UUID_POWER_SERVICE, charTable, sizeof(charTable) / sizeof(GattCharacteristic*)); |
fruediger | 9:6a28d9c0e486 | 57 | |
fruediger | 9:6a28d9c0e486 | 58 | gattServer.addService(powerService); |
fruediger | 9:6a28d9c0e486 | 59 | |
fruediger | 9:6a28d9c0e486 | 60 | serviceAdded = true; |
fruediger | 9:6a28d9c0e486 | 61 | } |
fruediger | 9:6a28d9c0e486 | 62 | |
fruediger | 9:6a28d9c0e486 | 63 | void updateVoltage(float voltage) |
fruediger | 9:6a28d9c0e486 | 64 | { |
fruediger | 9:6a28d9c0e486 | 65 | gattServer.write(voltageCharacteristic.getValueHandle(), (uint8_t*)&voltage, sizeof(float)); |
fruediger | 9:6a28d9c0e486 | 66 | } |
fruediger | 9:6a28d9c0e486 | 67 | |
fruediger | 9:6a28d9c0e486 | 68 | void updateCurrent(float current) |
fruediger | 9:6a28d9c0e486 | 69 | { |
fruediger | 9:6a28d9c0e486 | 70 | gattServer.write(currentCharacteristic.getValueHandle(), (uint8_t*)¤t, sizeof(float)); |
fruediger | 9:6a28d9c0e486 | 71 | } |
fruediger | 9:6a28d9c0e486 | 72 | |
fruediger | 9:6a28d9c0e486 | 73 | void updateDischarge(float discharge) |
fruediger | 9:6a28d9c0e486 | 74 | { |
fruediger | 9:6a28d9c0e486 | 75 | gattServer.write(dischargeCharacteristic.getValueHandle(), (uint8_t*)&discharge, sizeof(float)); |
fruediger | 9:6a28d9c0e486 | 76 | } |
fruediger | 9:6a28d9c0e486 | 77 | |
fruediger | 9:6a28d9c0e486 | 78 | private: |
fruediger | 9:6a28d9c0e486 | 79 | GattServer &gattServer; |
fruediger | 9:6a28d9c0e486 | 80 | ReadOnlyGattCharacteristic<float> voltageCharacteristic; |
fruediger | 9:6a28d9c0e486 | 81 | ReadOnlyGattCharacteristic<float> currentCharacteristic; |
fruediger | 9:6a28d9c0e486 | 82 | ReadOnlyGattCharacteristic<float> dischargeCharacteristic; |
fruediger | 9:6a28d9c0e486 | 83 | }; |
fruediger | 9:6a28d9c0e486 | 84 | |
fruediger | 9:6a28d9c0e486 | 85 | #endif |