Bluetooth Low Energy for Smart Plug
Dependencies: BLE_API mbed nRF51822
Fork of SmartPlugBLE by
Diff: Services/SmartPlugService.cpp
- Revision:
- 1:e036e77762fa
- Parent:
- 0:25ad6eba7916
- Child:
- 2:6db5c9a2894c
diff -r 25ad6eba7916 -r e036e77762fa Services/SmartPlugService.cpp --- a/Services/SmartPlugService.cpp Tue Jul 07 04:02:14 2015 +0000 +++ b/Services/SmartPlugService.cpp Tue Jul 07 04:58:28 2015 +0000 @@ -6,12 +6,15 @@ SmartPlugService::SmartPlugService(BLE &_ble, SmartPlugBLE &sys): ble(_ble), system(sys), - voltageChar(SPS_UUID_VOLTAGE_CHAR,voltage), - currentChar(SPS_UUID_CURERNT_CHAR,current), - powerChar(SPS_UUID_POWER_CHAR,power), - powerFactorChar(SPS_UUID_POWER_FACTOR_CHAR,powerFactor), - energyChar(SPS_UUID_ENERGY_CHAR,energy), - relayChar(SPS_UUID_RELAY_CHAR,relayValue), + voltageChar(SPS_UUID_VOLTAGE_CHAR,&voltage,GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY), + currentChar(SPS_UUID_CURERNT_CHAR,¤t,GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY), + powerChar(SPS_UUID_POWER_CHAR,&power,GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY), + powerFactorChar(SPS_UUID_POWER_FACTOR_CHAR,&powerFactor,GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY), + energyChar(SPS_UUID_ENERGY_CHAR,&energy,GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY), + relayChar(SPS_UUID_RELAY_CHAR, relayValue.getDataPointer(), + relayValue.getLenBytes(), RelayValueBytes::MAX_SIZE_BYTES, + GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY | + GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ), updateChar(SPS_UUID_UPDATE_CHAR,NULL) { (&system)->addObserver(*this); @@ -41,11 +44,8 @@ { if (ble.getGapState().connected) { - voltage[0] = v>>24; - voltage[1] = (v&0x00FFFFFF)>>16; - voltage[2] = (v&0x0000FFFF)>>8; - voltage[3] = v&0x000000FF; - ble.updateCharacteristicValue(voltageChar.getValueHandle(),voltage,4); + voltage = v; + ble.updateCharacteristicValue(voltageChar.getValueHandle(),&voltage,4); } } @@ -53,11 +53,8 @@ { if (ble.getGapState().connected) { - current[0] = c>>24; - current[1] = (c&0x00FFFFFF)>>16; - current[2] = (c&0x0000FFFF)>>8; - current[3] = c&0x000000FF; - ble.updateCharacteristicValue(currentChar.getValueHandle(),voltage,4); + current = c; + ble.updateCharacteristicValue(currentChar.getValueHandle(),¤t,4); } } @@ -65,23 +62,27 @@ { if (ble.getGapState().connected) { - power[0] = p>>24; - power[1] = (p&0x00FFFFFF)>>16; - power[2] = (p&0x0000FFFF)>>8; - power[3] = p&0x000000FF; - ble.updateCharacteristicValue(powerChar.getValueHandle(),voltage,4); + power = p; + ble.updateCharacteristicValue(powerChar.getValueHandle(),&power,4); } } void SmartPlugService::updatePowerFactor(unsigned long pf) { if (ble.getGapState().connected) - { - powerFactor[0] = pf>>24; - powerFactor[1] = (pf&0x00FFFFFF)>>16; - powerFactor[2] = (pf&0x0000FFFF)>>8; - powerFactor[3] = pf&0x000000FF; - ble.updateCharacteristicValue(powerFactorChar.getValueHandle(),voltage,4); + { + powerFactor = pf; + ble.updateCharacteristicValue(powerFactorChar.getValueHandle(),&powerFactor,4); + } +} + +void SmartPlugService::updateRelay(Relay* relay) +{ + if (ble.getGapState().connected) + { + relayValue.updateData(relay); + ble.updateCharacteristicValue(relayChar.getValueHandle(),relayValue.getDataPointer(), + relayValue.getLenBytes()); } }