Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed BLE_API nRF51822
bleservices/ServicePower.h
- Committer:
- suhamera
- Date:
- 2015-10-21
- Revision:
- 0:81f1818af032
- Child:
- 1:0932324a41f7
File content as of revision 0:81f1818af032:
#ifndef __BLE_SERVICE_POWER_H__
#define __BLE_SERVICE_POWER_H__
#include "BLE.h"
#include "PowerSwitch.h"
#include "Light.h"
#include "FlashStore.h"
class ServicePower {
public:
ServicePower(BLE &_ble, Serial &_Serial, PowerSwitch &_Power, Light &_dayLight, FlashStore &_Store) :
ble(_ble),
Power(_Power),
Tserial(_Serial),
dayLight(_dayLight),
Store(_Store),
valueCharacteristic(GattCharacteristic::UUID_USER_CONTROL_HUMIDITY, &powerValue, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY),
stateCharacteristic(GattCharacteristic::UUID_USER_CONTROL_POINT, &powerState)
{
setupService();
}
virtual void onDataWritten(const GattWriteCallbackParams *params) {
if (params->handle == stateCharacteristic.getValueAttribute().getHandle() && (params->len == sizeof(powerState))) {
powerState = *(params->data);
powerState ? Power.doSwitch(true,2.0) : Power.doSwitch(false, 2.0);
Tserial.printf("Power: %s\n", powerState ? "on" : "off");
}
}
protected:
void setupService(void) {
GattCharacteristic *characteristics[] = {&stateCharacteristic, &valueCharacteristic};
GattService powerService(GattService::UUID_SCAN_PARAMETERS_SERVICE, characteristics, sizeof(characteristics) / sizeof(GattCharacteristic *));
powerState = false;
powerValue = 0.0;
ble.addService(powerService);
ble.onDataWritten(this, &ServicePower::onDataWritten);
updatePowerValue();
measurePeriod.attach(this, &ServicePower::updatePowerValue, 1.0);
}
void updatePowerValue(void) {
powerValue = dayLight.getLightValue();
ble.updateCharacteristicValue(valueCharacteristic.getValueAttribute().getHandle(), (uint8_t *)&powerValue, sizeof(powerValue));
Tserial.printf("updatePowerValue: %f \n", powerValue);
}
protected:
BLE &ble;
PowerSwitch &Power;
Light &dayLight;
FlashStore &Store;
Ticker measurePeriod;
bool powerState;
float powerValue;
ReadWriteGattCharacteristic<bool> stateCharacteristic;
ReadOnlyGattCharacteristic<float> valueCharacteristic;
Serial &Tserial; // tx, rx
};
#endif /* #ifndef __BLE_SERVICE_POWER_H__*/