Bluetooth Low Energy for Smart Plug

Dependencies:   BLE_API mbed nRF51822

Committer:
Slepnir
Date:
Wed Jul 08 07:25:11 2015 +0000
Revision:
2:6db5c9a2894c
Parent:
0:25ad6eba7916
Child:
3:aaa92c61931a
Beta version:; - Everything works, have not tested the timer function

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Slepnir 0:25ad6eba7916 1 #ifndef SMART_PLUG_BLE_H
Slepnir 0:25ad6eba7916 2 #define SMART_PLUG_BLE_H
Slepnir 0:25ad6eba7916 3
Slepnir 0:25ad6eba7916 4 #include "SmartPlug.h"
Slepnir 0:25ad6eba7916 5 #include "MVC.h"
Slepnir 0:25ad6eba7916 6 #include "mbed.h"
Slepnir 0:25ad6eba7916 7 #include "SPCommunication.h"
Slepnir 0:25ad6eba7916 8 #include <vector>
Slepnir 0:25ad6eba7916 9
Slepnir 0:25ad6eba7916 10
Slepnir 0:25ad6eba7916 11 class SmartPlugBLE: public Observable
Slepnir 0:25ad6eba7916 12 {
Slepnir 0:25ad6eba7916 13 public:
Slepnir 0:25ad6eba7916 14 SmartPlugBLE()
Slepnir 0:25ad6eba7916 15 {
Slepnir 0:25ad6eba7916 16 ticker.attach(this,&SmartPlugBLE::periodicCallback, 1); // blink LED every second
Slepnir 0:25ad6eba7916 17 }
Slepnir 0:25ad6eba7916 18
Slepnir 2:6db5c9a2894c 19 void onRelayWrite(const uint8_t *data)
Slepnir 0:25ad6eba7916 20 {
Slepnir 0:25ad6eba7916 21 updateRelay(data);
Slepnir 0:25ad6eba7916 22 notifyObservers();
Slepnir 0:25ad6eba7916 23 }
Slepnir 0:25ad6eba7916 24
Slepnir 0:25ad6eba7916 25 void updateRelay(const uint8_t *data)
Slepnir 0:25ad6eba7916 26 {
Slepnir 0:25ad6eba7916 27 smartPlug.setRelay(data);
Slepnir 0:25ad6eba7916 28 }
Slepnir 0:25ad6eba7916 29
Slepnir 0:25ad6eba7916 30 void notifyObservers()
Slepnir 0:25ad6eba7916 31 {
Slepnir 0:25ad6eba7916 32 for(int i=0;i<observers.size();i++)
Slepnir 0:25ad6eba7916 33 {
Slepnir 2:6db5c9a2894c 34 observers[i]->updateObserver((void*)&smartPlug);
Slepnir 0:25ad6eba7916 35 }
Slepnir 0:25ad6eba7916 36 }
Slepnir 0:25ad6eba7916 37
Slepnir 2:6db5c9a2894c 38 void addObserver(Observer* o)
Slepnir 0:25ad6eba7916 39 {
Slepnir 0:25ad6eba7916 40 observers.push_back(o);
Slepnir 0:25ad6eba7916 41 }
Slepnir 0:25ad6eba7916 42
Slepnir 0:25ad6eba7916 43 void periodicCallback(void)
Slepnir 0:25ad6eba7916 44 {
Slepnir 0:25ad6eba7916 45 //led1 = !led1; /* Do blinky on LED1 while we're waiting for BLE events */
Slepnir 0:25ad6eba7916 46 }
Slepnir 0:25ad6eba7916 47
Slepnir 0:25ad6eba7916 48 void updateData(void)
Slepnir 0:25ad6eba7916 49 {
Slepnir 0:25ad6eba7916 50 smartPlug.setVoltage(smartPlug.getVoltage()+1);//(spComm.getVoltage());
Slepnir 0:25ad6eba7916 51 smartPlug.setCurrent(smartPlug.getCurrent()+1);//(spComm.getCurrent());
Slepnir 0:25ad6eba7916 52 smartPlug.setPower(smartPlug.getPower()+1);//(spComm.getPower());
Slepnir 0:25ad6eba7916 53 smartPlug.setPowerFactor(smartPlug.getPowerFactor()+1);//(spComm.getPowerFactor());
Slepnir 2:6db5c9a2894c 54 smartPlug.setEnergy(smartPlug.getEnergy()+1);
Slepnir 0:25ad6eba7916 55 notifyObservers();
Slepnir 0:25ad6eba7916 56 }
Slepnir 0:25ad6eba7916 57
Slepnir 0:25ad6eba7916 58 private:
Slepnir 0:25ad6eba7916 59 SmartPlug smartPlug;
Slepnir 0:25ad6eba7916 60 Ticker ticker;
Slepnir 0:25ad6eba7916 61 //DigitalOut led1;
Slepnir 0:25ad6eba7916 62 SPCommunication spComm;
Slepnir 0:25ad6eba7916 63 //BLECommunication bleComm;
Slepnir 2:6db5c9a2894c 64 vector<Observer*> observers;
Slepnir 0:25ad6eba7916 65 };
Slepnir 0:25ad6eba7916 66
Slepnir 0:25ad6eba7916 67 #endif