simple project to control mirrorless camera

Dependencies:   mbed BLE_API nRF51822

Committer:
vilesovds
Date:
Fri Aug 02 08:22:18 2019 +0000
Revision:
4:adfb32273577
Parent:
3:38ec35b54db8
Simple project to control mirrorless camera

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