Bluetooth Low Energy for Smart Plug
Dependencies: BLE_API mbed nRF51822
Diff: SmartPlugBLE.h
- Revision:
- 0:25ad6eba7916
- Child:
- 2:6db5c9a2894c
diff -r 000000000000 -r 25ad6eba7916 SmartPlugBLE.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SmartPlugBLE.h Tue Jul 07 04:02:14 2015 +0000 @@ -0,0 +1,66 @@ +#ifndef SMART_PLUG_BLE_H +#define SMART_PLUG_BLE_H + +#include "SmartPlug.h" +#include "MVC.h" +#include "mbed.h" +#include "SPCommunication.h" +#include <vector> + + +class SmartPlugBLE: public Observable +{ + public: + SmartPlugBLE() + { + ticker.attach(this,&SmartPlugBLE::periodicCallback, 1); // blink LED every second + } + + void onRelayWrite(uint8_t *data) + { + updateRelay(data); + notifyObservers(); + } + + void updateRelay(const uint8_t *data) + { + smartPlug.setRelay(data); + } + + void notifyObservers() + { + for(int i=0;i<observers.size();i++) + { + observers[i].update((void*)&smartPlug); + } + } + + void addObserver(Observer o) + { + observers.push_back(o); + } + + void periodicCallback(void) + { + //led1 = !led1; /* Do blinky on LED1 while we're waiting for BLE events */ + } + + void updateData(void) + { + smartPlug.setVoltage(smartPlug.getVoltage()+1);//(spComm.getVoltage()); + smartPlug.setCurrent(smartPlug.getCurrent()+1);//(spComm.getCurrent()); + smartPlug.setPower(smartPlug.getPower()+1);//(spComm.getPower()); + smartPlug.setPowerFactor(smartPlug.getPowerFactor()+1);//(spComm.getPowerFactor()); + notifyObservers(); + } + + private: + SmartPlug smartPlug; + Ticker ticker; + //DigitalOut led1; + SPCommunication spComm; + //BLECommunication bleComm; + vector<Observer> observers; +}; + +#endif \ No newline at end of file