* 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.
Diff: source/bike_service.h
- Revision:
- 2:65ed7cd0480c
- Parent:
- 1:8db3d642a94f
- Child:
- 3:d6fbd4f3a3d4
--- a/source/bike_service.h Thu Nov 02 17:44:51 2017 +0000 +++ b/source/bike_service.h Thu Nov 02 18:38:02 2017 +0000 @@ -12,41 +12,66 @@ const static uint16_t BIKE_SERVICE_UUID = 0xA580; const static uint16_t SWITCH_CONTROL_UUID = 0xA581; const static uint16_t TEMPERATURE_MEASURE_UUID = 0xA582; + const static uint16_t HUMIDITY_MEASURE_UUID = 0xA583; + const static uint16_t AIR_QUALITY_MEASURE_UUID = 0xA584; -// void updateTemperatureState(uint16_t newTemperature); /** * @param[in] _ble BLE object for the underlying controller. * @param[in] currentTemperature The temperature measured from the sensor. */ - bikeService(BLEDevice &_ble, bool initialSwitchState) : + bikeService(BLE &_ble, bool initialSwitchState, int16_t currentTemperature, uint8_t currentHumidity, uint16_t airQuality) : ble(_ble), - switchState(SWITCH_CONTROL_UUID, &initialSwitchState) -// temperatureState(TEMPERATURE_MEASURE_UUID, ¤tTemperature) + switchState(SWITCH_CONTROL_UUID, &initialSwitchState), + temperatureCharacteristic(GattCharacteristic::UUID_TEMPERATURE_CHAR, ¤tTemperature, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY), + humidityCharacteristic(GattCharacteristic::UUID_HUMIDITY_CHAR, ¤tHumidity, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY), + airQualityCharacteristic(AIR_QUALITY_MEASURE_UUID, &airQuality, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY) { /* Create and add the service */ - GattCharacteristic *charTable[] = {&switchState}; + GattCharacteristic *charTable[] = {&switchState, &temperatureCharacteristic, &humidityCharacteristic, &airQualityCharacteristic}; GattService bikeService(BIKE_SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); - ble.addService(bikeService); + ble.gattServer().addService(bikeService); } GattAttribute::Handle_t getValueHandle() const { return switchState.getValueHandle(); } - void updateTemperatureState(uint16_t newTemperature) { + void updateTemperatureCharacteristic(int16_t newTemperature) { + currentTemperature = newTemperature; + ble.gattServer().write(temperatureCharacteristic.getValueHandle(), (uint8_t *) ¤tTemperature, sizeof(int16_t)); + } + + void updateAirQualityCharacteristic(uint8_t newHumidity) { + currentHumidity = newHumidity; + ble.gattServer().write(humidityCharacteristic.getValueHandle(), (uint8_t *) ¤tHumidity, sizeof(uint8_t)); + } + + void updateTemperatureCharacteristic(uint16_t newAirQuality) { + airQuality = newAirQuality; + ble.gattServer().write(airQualityCharacteristic.getValueHandle(), (uint8_t *) &airQuality, sizeof(uint16_t)); + } + + void updateAllCharacteristics(int16_t newTemperature, uint8_t newHumidity, uint16_t newAirQuality) { currentTemperature = newTemperature; + currentHumidity = newHumidity; + airQuality = newAirQuality; - /* An error occured here, need to create a new GattServer class? */ -// ble.gattServer().write(temperatureState.getValueHandle(), (uint16_t *) ¤tTemperature, sizeof(uint16_t)); + ble.gattServer().write(temperatureCharacteristic.getValueHandle(), (uint8_t *) ¤tTemperature, sizeof(int16_t)); + ble.gattServer().write(humidityCharacteristic.getValueHandle(), (uint8_t *) ¤tHumidity, sizeof(uint8_t)); + ble.gattServer().write(airQualityCharacteristic.getValueHandle(), (uint8_t *) &airQuality, sizeof(uint16_t)); } private: int16_t currentTemperature; + uint8_t currentHumidity; + uint16_t airQuality; - BLEDevice &ble; + BLE &ble; ReadWriteGattCharacteristic<bool> switchState; -// ReadOnlyGattCharacteristic<int16_t> temperatureState; + ReadOnlyGattCharacteristic<int16_t> temperatureCharacteristic; + ReadOnlyGattCharacteristic<uint8_t> humidityCharacteristic; + ReadOnlyGattCharacteristic<uint16_t> airQualityCharacteristic; }; #endif /* __BLE_BIKE_SERVICE_H__ */