BLE Library with custom services for the tortuga bike
Fork of BLE_API by
ble/services/BikeService.h
- Committer:
- ptuytsch
- Date:
- 2016-04-30
- Revision:
- 1202:a31d51d9fba8
- Parent:
- 1131:5cc818415e2b
- Child:
- 1203:3bc52a68543f
- Child:
- 1204:c87f50212c84
File content as of revision 1202:a31d51d9fba8:
#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; const static uint16_t BIKE_START_CHARACTERISTIC_UUID = 0x696D; uint8_t *start; //CONSTRUCTOR BikeService(BLE &_ble, uint8_t *startBool, 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), bikeStartChar(BIKE_START_CHARACTERISTIC_UUID, startBool, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY) { GattCharacteristic *charTable[] = {&bikeDistanceChar, &bikeAverageChar, &bikePulseChar, &bikeStartChar}; GattService bikeService(BikeService::BIKE_SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); ble.gattServer().addService(bikeService); ble.onDataWritten(this, &BikeService::onDataWrittenCallback); start = startBool; } void onDataWrittenCallback(const GattWriteCallbackParams *writeParams) { if (writeParams->handle == bikeStartChar.getValueHandle()) { *start = *(writeParams->data); } } 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; ReadWriteGattCharacteristic<uint8_t> bikeStartChar; }; #endif