Bluetooth Low Energy for Smart Plug

Dependencies:   BLE_API mbed nRF51822

Services/SmartPlugService.h

Committer:
Slepnir
Date:
2015-07-07
Revision:
0:25ad6eba7916
Child:
1:e036e77762fa

File content as of revision 0:25ad6eba7916:

#ifndef SP_SERVICE_H
#define SP_SERVICE_H

#include "ble/BLE.h"
#include "MVC.h"
#include "mbed.h"
#include "SmartPlugBLE.h"


#define FULL_UUID(uuid_16) {        \
    0x9B,0x3F,uuid_16>>16,uuid_16&0xFF,0x65,0x80,0x47,0x51, \
    0xB0,0x2F,0xA7,0xB5,0x19,0x4C,0x7F,0x23     \
    }

static const uint16_t SPS_UUID_SERVICE = 0x1522;
static const uint16_t SPS_UUID_VOLTAGE_CHAR = 0x1523;
static const uint16_t SPS_UUID_CURERNT_CHAR = 0x1524;
static const uint16_t SPS_UUID_POWER_CHAR = 0x1525;
static const uint16_t SPS_UUID_POWER_FACTOR_CHAR = 0x1526;
static const uint16_t SPS_UUID_ENERGY_CHAR = 0x1527;
static const uint16_t SPS_UUID_RELAY_CHAR = 0x1528;
static const uint16_t SPS_UUID_UPDATE_CHAR = 0x1529;

static const uint8_t SPS_UUID_SERVICE_FULL[] = FULL_UUID(SPS_UUID_SERVICE);
static const uint8_t SPS_UUID_VOLTAGE_CHAR_FULL[] = FULL_UUID(SPS_UUID_VOLTAGE_CHAR);
static const uint8_t SPS_UUID_CURERNT_CHAR_FULL[] = FULL_UUID(SPS_UUID_CURERNT_CHAR);
static const uint8_t SPS_UUID_POWER_CHAR_FULL[] = FULL_UUID(SPS_UUID_POWER_CHAR);
static const uint8_t SPS_UUID_POWER_FACTOR_CHAR_FULL[] = FULL_UUID(SPS_UUID_POWER_FACTOR_CHAR);
static const uint8_t SPS_UUID_ENERGY_CHAR_FULL[] = FULL_UUID(SPS_UUID_ENERGY_CHAR);
static const uint8_t SPS_UUID_RELAY_CHAR_FULL[] = FULL_UUID(SPS_UUID_RELAY_CHAR);
static const uint8_t SPS_UUID_UPDATE_CHAR_FULL[] = FULL_UUID(SPS_UUID_UPDATE_CHAR);


class SmartPlugService: public Observer
{
public:
    SmartPlugService(BLE &_ble, SmartPlugBLE &sys);
    
    void updateVoltage(unsigned long value);
    void updateCurrent(unsigned long value);
    void updatePower(unsigned long value);
    void updatePowerFactor(unsigned long value); 
    void onDataWritten(const GattWriteCallbackParams *params);
    void update(void* data);    
    void updateData(SmartPlug* data);
    void setupService(void);
private:
    BLE ble;
    
    uint8_t voltage[4];
    uint8_t current[4];
    uint8_t power[4];
    uint8_t powerFactor[4];
    uint8_t energy[4];
    uint8_t relayValue[3];
    //uint8_t updateValue;
    SmartPlugBLE& system;
    
    ReadOnlyGattCharacteristic<uint8_t> voltageChar;
    ReadOnlyGattCharacteristic<uint8_t> currentChar;
    ReadOnlyGattCharacteristic<uint8_t> powerChar;
    ReadOnlyGattCharacteristic<uint8_t> powerFactorChar;
    ReadOnlyGattCharacteristic<uint8_t> energyChar;
    ReadWriteGattCharacteristic<uint8_t> relayChar;
    WriteOnlyGattCharacteristic<uint8_t> updateChar;
};

#endif