simple project to control mirrorless camera

Dependencies:   mbed BLE_API nRF51822

Committer:
vilesovds
Date:
Wed Oct 21 21:43:58 2015 +0000
Revision:
1:0932324a41f7
Parent:
0:81f1818af032
Child:
2:ed001667a2b6
attempt to compile project failed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suhamera 0:81f1818af032 1 #ifndef __BLE_SERVICE_POWER_H__
suhamera 0:81f1818af032 2 #define __BLE_SERVICE_POWER_H__
suhamera 0:81f1818af032 3
suhamera 0:81f1818af032 4 #include "BLE.h"
suhamera 0:81f1818af032 5 #include "PowerSwitch.h"
suhamera 0:81f1818af032 6 #include "Light.h"
suhamera 0:81f1818af032 7 #include "FlashStore.h"
suhamera 0:81f1818af032 8
suhamera 0:81f1818af032 9 class ServicePower {
suhamera 0:81f1818af032 10
suhamera 0:81f1818af032 11 public:
suhamera 0:81f1818af032 12 ServicePower(BLE &_ble, Serial &_Serial, PowerSwitch &_Power, Light &_dayLight, FlashStore &_Store) :
suhamera 0:81f1818af032 13 ble(_ble),
vilesovds 1:0932324a41f7 14 Tserial(_Serial),
suhamera 0:81f1818af032 15 Power(_Power),
suhamera 0:81f1818af032 16 dayLight(_dayLight),
suhamera 0:81f1818af032 17 Store(_Store),
suhamera 0:81f1818af032 18 valueCharacteristic(GattCharacteristic::UUID_USER_CONTROL_HUMIDITY, &powerValue, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY),
suhamera 0:81f1818af032 19 stateCharacteristic(GattCharacteristic::UUID_USER_CONTROL_POINT, &powerState)
suhamera 0:81f1818af032 20 {
suhamera 0:81f1818af032 21 setupService();
suhamera 0:81f1818af032 22 }
suhamera 0:81f1818af032 23
suhamera 0:81f1818af032 24
suhamera 0:81f1818af032 25 virtual void onDataWritten(const GattWriteCallbackParams *params) {
suhamera 0:81f1818af032 26 if (params->handle == stateCharacteristic.getValueAttribute().getHandle() && (params->len == sizeof(powerState))) {
suhamera 0:81f1818af032 27 powerState = *(params->data);
suhamera 0:81f1818af032 28
suhamera 0:81f1818af032 29 powerState ? Power.doSwitch(true,2.0) : Power.doSwitch(false, 2.0);
suhamera 0:81f1818af032 30 Tserial.printf("Power: %s\n", powerState ? "on" : "off");
suhamera 0:81f1818af032 31
suhamera 0:81f1818af032 32 }
suhamera 0:81f1818af032 33 }
suhamera 0:81f1818af032 34
suhamera 0:81f1818af032 35 protected:
suhamera 0:81f1818af032 36 void setupService(void) {
suhamera 0:81f1818af032 37 GattCharacteristic *characteristics[] = {&stateCharacteristic, &valueCharacteristic};
suhamera 0:81f1818af032 38 GattService powerService(GattService::UUID_SCAN_PARAMETERS_SERVICE, characteristics, sizeof(characteristics) / sizeof(GattCharacteristic *));
suhamera 0:81f1818af032 39
suhamera 0:81f1818af032 40 powerState = false;
suhamera 0:81f1818af032 41 powerValue = 0.0;
suhamera 0:81f1818af032 42
suhamera 0:81f1818af032 43 ble.addService(powerService);
suhamera 0:81f1818af032 44 ble.onDataWritten(this, &ServicePower::onDataWritten);
suhamera 0:81f1818af032 45
suhamera 0:81f1818af032 46 updatePowerValue();
suhamera 0:81f1818af032 47 measurePeriod.attach(this, &ServicePower::updatePowerValue, 1.0);
suhamera 0:81f1818af032 48
suhamera 0:81f1818af032 49
suhamera 0:81f1818af032 50 }
suhamera 0:81f1818af032 51
suhamera 0:81f1818af032 52 void updatePowerValue(void) {
suhamera 0:81f1818af032 53
suhamera 0:81f1818af032 54 powerValue = dayLight.getLightValue();
suhamera 0:81f1818af032 55 ble.updateCharacteristicValue(valueCharacteristic.getValueAttribute().getHandle(), (uint8_t *)&powerValue, sizeof(powerValue));
suhamera 0:81f1818af032 56 Tserial.printf("updatePowerValue: %f \n", powerValue);
suhamera 0:81f1818af032 57
suhamera 0:81f1818af032 58 }
suhamera 0:81f1818af032 59
suhamera 0:81f1818af032 60
suhamera 0:81f1818af032 61 protected:
suhamera 0:81f1818af032 62 BLE &ble;
suhamera 0:81f1818af032 63 PowerSwitch &Power;
suhamera 0:81f1818af032 64 Light &dayLight;
suhamera 0:81f1818af032 65 FlashStore &Store;
suhamera 0:81f1818af032 66
suhamera 0:81f1818af032 67 Ticker measurePeriod;
suhamera 0:81f1818af032 68
suhamera 0:81f1818af032 69 bool powerState;
suhamera 0:81f1818af032 70 float powerValue;
suhamera 0:81f1818af032 71
suhamera 0:81f1818af032 72 ReadWriteGattCharacteristic<bool> stateCharacteristic;
suhamera 0:81f1818af032 73 ReadOnlyGattCharacteristic<float> valueCharacteristic;
suhamera 0:81f1818af032 74
suhamera 0:81f1818af032 75 Serial &Tserial; // tx, rx
suhamera 0:81f1818af032 76
suhamera 0:81f1818af032 77 };
suhamera 0:81f1818af032 78
suhamera 0:81f1818af032 79 #endif /* #ifndef __BLE_SERVICE_POWER_H__*/