Bluetooth Low Energy for Smart Plug

Dependencies:   BLE_API mbed nRF51822

Revision:
0:25ad6eba7916
Child:
1:e036e77762fa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Services/SmartPlugService.h	Tue Jul 07 04:02:14 2015 +0000
@@ -0,0 +1,68 @@
+#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
\ No newline at end of file