Blynk library for embedded hardware. Works with Arduino, ESP8266, Raspberry Pi, Intel Edison/Galileo, LinkIt ONE, Particle Core/Photon, Energia, ARM mbed, etc. http://www.blynk.cc/
Dependents: Blynk_RBL_BLE_Nano Blynk_MicroBit Blynk_Serial Blynk_RBL_BLE_Nano
Diff: Blynk/BlynkApi.h
- Revision:
- 9:7369ec77a3ea
- Parent:
- 7:8879692d4e6c
- Child:
- 10:c241e4227173
--- a/Blynk/BlynkApi.h Wed Oct 12 10:38:37 2016 +0300 +++ b/Blynk/BlynkApi.h Thu Jan 05 14:55:36 2017 +0200 @@ -68,49 +68,13 @@ * @param pin Virtual Pin number * @param data Value to be sent */ - template <typename T> - void virtualWrite(int pin, const T& data) { - char mem[BLYNK_MAX_SENDBYTES]; - BlynkParam cmd(mem, 0, sizeof(mem)); - cmd.add("vw"); - cmd.add(pin); - cmd.add(data); - static_cast<Proto*>(this)->sendCmd(BLYNK_CMD_HARDWARE, 0, cmd.getBuffer(), cmd.getLength()-1); - } - - template <typename T1, typename T2> - void virtualWrite(int pin, const T1& data1, const T2& data2) { + template <typename... Args> + void virtualWrite(int pin, Args... values) { char mem[BLYNK_MAX_SENDBYTES]; BlynkParam cmd(mem, 0, sizeof(mem)); cmd.add("vw"); cmd.add(pin); - cmd.add(data1); - cmd.add(data2); - static_cast<Proto*>(this)->sendCmd(BLYNK_CMD_HARDWARE, 0, cmd.getBuffer(), cmd.getLength()-1); - } - - template <typename T1, typename T2, typename T3> - void virtualWrite(int pin, const T1& data1, const T2& data2, const T3& data3) { - char mem[BLYNK_MAX_SENDBYTES]; - BlynkParam cmd(mem, 0, sizeof(mem)); - cmd.add("vw"); - cmd.add(pin); - cmd.add(data1); - cmd.add(data2); - cmd.add(data3); - static_cast<Proto*>(this)->sendCmd(BLYNK_CMD_HARDWARE, 0, cmd.getBuffer(), cmd.getLength()-1); - } - - template <typename T1, typename T2, typename T3, typename T4> - void virtualWrite(int pin, const T1& data1, const T2& data2, const T3& data3, const T4& data4) { - char mem[BLYNK_MAX_SENDBYTES]; - BlynkParam cmd(mem, 0, sizeof(mem)); - cmd.add("vw"); - cmd.add(pin); - cmd.add(data1); - cmd.add(data2); - cmd.add(data3); - cmd.add(data4); + cmd.add_multi(values...); static_cast<Proto*>(this)->sendCmd(BLYNK_CMD_HARDWARE, 0, cmd.getBuffer(), cmd.getLength()-1); } @@ -139,6 +103,10 @@ virtualWriteBinary(pin, param.getBuffer(), param.getLength()); } + void virtualWrite(int pin, const BlynkParamAllocated& param) { + virtualWriteBinary(pin, param.getBuffer(), param.getLength()); + } + /** * Requests Server to re-send current values for all widgets. */ @@ -152,11 +120,12 @@ * * @param pin Virtual Pin number */ - void syncVirtual(int pin) { - char mem[8]; + template <typename... Args> + void syncVirtual(Args... pins) { + char mem[BLYNK_MAX_SENDBYTES]; BlynkParam cmd(mem, 0, sizeof(mem)); cmd.add("vr"); - cmd.add(pin); + cmd.add_multi(pins...); static_cast<Proto*>(this)->sendCmd(BLYNK_CMD_HARDWARE_SYNC, 0, cmd.getBuffer(), cmd.getLength()-1); } @@ -240,49 +209,13 @@ * @param property Property name ("label", "labels", "color", ...) * @param value Property value */ - template <typename T, typename T1> - void setProperty(int pin, const T& property, const T1& value) { - char mem[BLYNK_MAX_SENDBYTES]; - BlynkParam cmd(mem, 0, sizeof(mem)); - cmd.add(pin); - cmd.add(property); - cmd.add(value); - static_cast<Proto*>(this)->sendCmd(BLYNK_CMD_PROPERTY, 0, cmd.getBuffer(), cmd.getLength()-1); - } - - template <typename T, typename T1, typename T2> - void setProperty(int pin, const T& property, const T1& value1, const T2& value2) { + template <typename T, typename... Args> + void setProperty(int pin, const T& property, Args... values) { char mem[BLYNK_MAX_SENDBYTES]; BlynkParam cmd(mem, 0, sizeof(mem)); cmd.add(pin); cmd.add(property); - cmd.add(value1); - cmd.add(value2); - static_cast<Proto*>(this)->sendCmd(BLYNK_CMD_PROPERTY, 0, cmd.getBuffer(), cmd.getLength()-1); - } - - template <typename T, typename T1, typename T2, typename T3> - void setProperty(int pin, const T& property, const T1& value1, const T2& value2, const T3& value3) { - char mem[BLYNK_MAX_SENDBYTES]; - BlynkParam cmd(mem, 0, sizeof(mem)); - cmd.add(pin); - cmd.add(property); - cmd.add(value1); - cmd.add(value2); - cmd.add(value3); - static_cast<Proto*>(this)->sendCmd(BLYNK_CMD_PROPERTY, 0, cmd.getBuffer(), cmd.getLength()-1); - } - - template <typename T, typename T1, typename T2, typename T3, typename T4> - void setProperty(int pin, const T& property, const T1& value1, const T2& value2, const T3& value3, const T4& value4) { - char mem[BLYNK_MAX_SENDBYTES]; - BlynkParam cmd(mem, 0, sizeof(mem)); - cmd.add(pin); - cmd.add(property); - cmd.add(value1); - cmd.add(value2); - cmd.add(value3); - cmd.add(value4); + cmd.add_multi(values...); static_cast<Proto*>(this)->sendCmd(BLYNK_CMD_PROPERTY, 0, cmd.getBuffer(), cmd.getLength()-1); } @@ -352,7 +285,6 @@ static millis_time_t getMillis(); void processCmd(const void* buff, size_t len); void sendInfo(); - };