BLE Library with custom services for the tortuga bike
Fork of BLE_API by
Diff: ble/services/BikeService.h
- Revision:
- 1131:5cc818415e2b
- Child:
- 1202:a31d51d9fba8
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ble/services/BikeService.h Sat Apr 16 14:55:58 2016 +0000 @@ -0,0 +1,52 @@ +#ifndef __BLE_BIKE_SERVICE_H__ +#define __BLE_BIKE_SERVICE_H__ + +class BikeService { +public: + const static uint16_t BIKE_SERVICE_UUID = 0x6969; + const static uint16_t BIKE_DISTANCE_CHARACTERISTIC_UUID = 0x696A; + const static uint16_t BIKE_AVERAGE_CHARACTERISTIC_UUID = 0x696B; + const static uint16_t BIKE_PULSE_CHARACTERISTIC_UUID = 0x696C; + + BikeService(BLE &_ble, + uint32_t initialDistance = 0, + uint32_t initialAverage = 0) : + ble(_ble), + bikeDistance(initialDistance), + bikeAverage(initialAverage), + bikeDistanceChar(BIKE_DISTANCE_CHARACTERISTIC_UUID, 0, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY), + bikeAverageChar(BIKE_AVERAGE_CHARACTERISTIC_UUID, 0, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY), + bikePulseChar(BIKE_PULSE_CHARACTERISTIC_UUID, 0, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY) + { + GattCharacteristic *charTable[] = {&bikeDistanceChar, &bikeAverageChar, &bikePulseChar}; + GattService bikeService(BikeService::BIKE_SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); + ble.gattServer().addService(bikeService); + } + + + void updateBikeDistance(float newDistance) { + bikeDistance = newDistance*100; + ble.gattServer().write(bikeDistanceChar.getValueHandle(), (uint8_t *)&bikeDistance, sizeof(uint32_t)); + } + + void updateBikeAverage(float newAverage) { + bikeAverage = newAverage*100; + ble.gattServer().write(bikeAverageChar.getValueHandle(), (uint8_t *)&bikeAverage, sizeof(uint32_t)); + } + + void updateBikePulse(uint32_t newPulse) { + bikePulse = newPulse; + ble.gattServer().write(bikePulseChar.getValueHandle(), (uint8_t *)&bikePulse, sizeof(uint32_t)); + } + +private: + BLE &ble; + uint32_t bikeDistance; + uint32_t bikeAverage; + uint32_t bikePulse; + ReadOnlyGattCharacteristic<uint32_t> bikePulseChar; + ReadOnlyGattCharacteristic<uint32_t> bikeDistanceChar; + ReadOnlyGattCharacteristic<uint32_t> bikeAverageChar; +}; + +#endif /* #ifndef __BLE_BUTTON_SERVICE_H__ */ \ No newline at end of file