* This is the code for "BLE Device for motorbike". The device is attached on any bike at will. * User can control 2 switches and these switches can control anything that user wants ie: turn on * the bike, turn on the alarm system of the bike, turn on the light... * Temperature sensor is also included in the device. User can view the temperature when he/she gets * near the bike. * For the next version, humidity and air quality sensor are also added.
source/bike_service.h@0:ee08053aaf57, 2017-11-02 (annotated)
- Committer:
- DuyLionTran
- Date:
- Thu Nov 02 16:13:17 2017 +0000
- Revision:
- 0:ee08053aaf57
- Child:
- 1:8db3d642a94f
Version 0.7.1 Temperature added
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DuyLionTran | 0:ee08053aaf57 | 1 | #ifndef __BLE_BIKE_SERVICE_H__ |
DuyLionTran | 0:ee08053aaf57 | 2 | #define __BLE_BIKE_SERVICE_H__ |
DuyLionTran | 0:ee08053aaf57 | 3 | |
DuyLionTran | 0:ee08053aaf57 | 4 | #include "ble/BLE.h" |
DuyLionTran | 0:ee08053aaf57 | 5 | |
DuyLionTran | 0:ee08053aaf57 | 6 | /** |
DuyLionTran | 0:ee08053aaf57 | 7 | * @class bikeService |
DuyLionTran | 0:ee08053aaf57 | 8 | * @brief This is a customized service for a device controlling the bike via BLE |
DuyLionTran | 0:ee08053aaf57 | 9 | */ |
DuyLionTran | 0:ee08053aaf57 | 10 | class bikeService { |
DuyLionTran | 0:ee08053aaf57 | 11 | public: |
DuyLionTran | 0:ee08053aaf57 | 12 | const static uint16_t BIKE_SERVICE_UUID = 0xA580; |
DuyLionTran | 0:ee08053aaf57 | 13 | const static uint16_t SWITCH_CONTROL_UUID = 0xA581; |
DuyLionTran | 0:ee08053aaf57 | 14 | |
DuyLionTran | 0:ee08053aaf57 | 15 | /** |
DuyLionTran | 0:ee08053aaf57 | 16 | * @param[in] _ble BLE object for the underlying controller. |
DuyLionTran | 0:ee08053aaf57 | 17 | * @param[in] currentTemperature The temperature measured from the sensor. |
DuyLionTran | 0:ee08053aaf57 | 18 | */ |
DuyLionTran | 0:ee08053aaf57 | 19 | |
DuyLionTran | 0:ee08053aaf57 | 20 | bikeService(BLEDevice &_ble, bool initialSwitchState, uint16_t temperature) : |
DuyLionTran | 0:ee08053aaf57 | 21 | ble(_ble), |
DuyLionTran | 0:ee08053aaf57 | 22 | switchCharacteristic(SWITCH_CONTROL_UUID, &initialSwitchState), |
DuyLionTran | 0:ee08053aaf57 | 23 | temperatureCharacteristic(GattCharacteristic::UUID_TEMPERATURE_MEASUREMENT_CHAR, &temperature, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY) |
DuyLionTran | 0:ee08053aaf57 | 24 | { |
DuyLionTran | 0:ee08053aaf57 | 25 | /* Create and add the service */ |
DuyLionTran | 0:ee08053aaf57 | 26 | GattCharacteristic *charTable[] = {&switchCharacteristic, &temperatureCharacteristic}; |
DuyLionTran | 0:ee08053aaf57 | 27 | GattService bikeService(BIKE_SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); |
DuyLionTran | 0:ee08053aaf57 | 28 | ble.gattServer().addService(bikeService); |
DuyLionTran | 0:ee08053aaf57 | 29 | } |
DuyLionTran | 0:ee08053aaf57 | 30 | |
DuyLionTran | 0:ee08053aaf57 | 31 | GattAttribute::Handle_t getValueHandle() const { |
DuyLionTran | 0:ee08053aaf57 | 32 | return switchCharacteristic.getValueHandle(); |
DuyLionTran | 0:ee08053aaf57 | 33 | } |
DuyLionTran | 0:ee08053aaf57 | 34 | |
DuyLionTran | 0:ee08053aaf57 | 35 | |
DuyLionTran | 0:ee08053aaf57 | 36 | void updateTemperatureCharacteristic(uint16_t newTemperatureVal) |
DuyLionTran | 0:ee08053aaf57 | 37 | { |
DuyLionTran | 0:ee08053aaf57 | 38 | temperature = newTemperatureVal; |
DuyLionTran | 0:ee08053aaf57 | 39 | ble.gattServer().write(temperatureCharacteristic.getValueHandle(), (uint8_t *) &temperature, sizeof(uint16_t)); |
DuyLionTran | 0:ee08053aaf57 | 40 | } |
DuyLionTran | 0:ee08053aaf57 | 41 | |
DuyLionTran | 0:ee08053aaf57 | 42 | private: |
DuyLionTran | 0:ee08053aaf57 | 43 | uint16_t temperature; |
DuyLionTran | 0:ee08053aaf57 | 44 | |
DuyLionTran | 0:ee08053aaf57 | 45 | BLE &ble; |
DuyLionTran | 0:ee08053aaf57 | 46 | ReadWriteGattCharacteristic<bool> switchCharacteristic; |
DuyLionTran | 0:ee08053aaf57 | 47 | ReadOnlyGattCharacteristic<uint16_t> temperatureCharacteristic; |
DuyLionTran | 0:ee08053aaf57 | 48 | }; |
DuyLionTran | 0:ee08053aaf57 | 49 | |
DuyLionTran | 0:ee08053aaf57 | 50 | #endif /* __BLE_BIKE_SERVICE_H__ */ |