Bluetooth Low Energy for Smart Plug

Dependencies:   BLE_API mbed nRF51822

Fork of SmartPlugBLE by Pavit Noinongyao

SmartPlugBLE.h

Committer:
Slepnir
Date:
2015-07-07
Revision:
0:25ad6eba7916
Child:
2:6db5c9a2894c

File content as of revision 0:25ad6eba7916:

#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