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

Committer:
vshymanskyy
Date:
Fri Jan 26 22:18:19 2018 +0000
Revision:
22:e1d3971fd902
Parent:
9:7369ec77a3ea
Fix BlynkSystemInit for MBED

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Volodymyr Shymanskyy 9:7369ec77a3ea 1 /**
Volodymyr Shymanskyy 9:7369ec77a3ea 2 * @file BlynkWidgetBase.h
Volodymyr Shymanskyy 9:7369ec77a3ea 3 * @author Volodymyr Shymanskyy
Volodymyr Shymanskyy 9:7369ec77a3ea 4 * @license This project is released under the MIT License (MIT)
Volodymyr Shymanskyy 9:7369ec77a3ea 5 * @copyright Copyright (c) 2016 Volodymyr Shymanskyy
Volodymyr Shymanskyy 9:7369ec77a3ea 6 * @date Nov 2016
Volodymyr Shymanskyy 9:7369ec77a3ea 7 * @brief
Volodymyr Shymanskyy 9:7369ec77a3ea 8 */
Volodymyr Shymanskyy 9:7369ec77a3ea 9
Volodymyr Shymanskyy 9:7369ec77a3ea 10 #ifndef BlynkWidgetBase_h
Volodymyr Shymanskyy 9:7369ec77a3ea 11 #define BlynkWidgetBase_h
Volodymyr Shymanskyy 9:7369ec77a3ea 12
Volodymyr Shymanskyy 9:7369ec77a3ea 13 #include <Blynk/BlynkApi.h>
Volodymyr Shymanskyy 9:7369ec77a3ea 14
Volodymyr Shymanskyy 9:7369ec77a3ea 15 class BlynkWidgetBase
Volodymyr Shymanskyy 9:7369ec77a3ea 16 {
Volodymyr Shymanskyy 9:7369ec77a3ea 17 public:
Volodymyr Shymanskyy 9:7369ec77a3ea 18 BlynkWidgetBase(uint8_t vPin) : mPin(vPin) {}
Volodymyr Shymanskyy 9:7369ec77a3ea 19 void setVPin(uint8_t vPin) { mPin = vPin; }
Volodymyr Shymanskyy 9:7369ec77a3ea 20
Volodymyr Shymanskyy 9:7369ec77a3ea 21 void onWrite(BlynkReq BLYNK_UNUSED &request, const BlynkParam BLYNK_UNUSED &param) {
Volodymyr Shymanskyy 9:7369ec77a3ea 22 BLYNK_LOG1(BLYNK_F("BlynkWidgetBase::onWrite should not be called"));
Volodymyr Shymanskyy 9:7369ec77a3ea 23 }
Volodymyr Shymanskyy 9:7369ec77a3ea 24
Volodymyr Shymanskyy 9:7369ec77a3ea 25 template<typename... Args>
Volodymyr Shymanskyy 9:7369ec77a3ea 26 void setLabel(Args... args) {
Volodymyr Shymanskyy 9:7369ec77a3ea 27 Blynk.setProperty(mPin, "label", args...);
Volodymyr Shymanskyy 9:7369ec77a3ea 28 }
Volodymyr Shymanskyy 9:7369ec77a3ea 29
Volodymyr Shymanskyy 9:7369ec77a3ea 30 template<typename... Args>
Volodymyr Shymanskyy 9:7369ec77a3ea 31 void setColor(Args... args) {
Volodymyr Shymanskyy 9:7369ec77a3ea 32 Blynk.setProperty(mPin, "color", args...);
Volodymyr Shymanskyy 9:7369ec77a3ea 33 }
Volodymyr Shymanskyy 9:7369ec77a3ea 34
Volodymyr Shymanskyy 9:7369ec77a3ea 35 protected:
Volodymyr Shymanskyy 9:7369ec77a3ea 36 uint8_t mPin;
Volodymyr Shymanskyy 9:7369ec77a3ea 37 };
Volodymyr Shymanskyy 9:7369ec77a3ea 38
Volodymyr Shymanskyy 9:7369ec77a3ea 39 class BlynkAttachWidgetHelper {
Volodymyr Shymanskyy 9:7369ec77a3ea 40 public:
Volodymyr Shymanskyy 9:7369ec77a3ea 41 template<typename T>
Volodymyr Shymanskyy 9:7369ec77a3ea 42 explicit BlynkAttachWidgetHelper(T& widget, uint8_t vPin) {
Volodymyr Shymanskyy 9:7369ec77a3ea 43 widget.setVPin(vPin);
Volodymyr Shymanskyy 9:7369ec77a3ea 44 }
Volodymyr Shymanskyy 9:7369ec77a3ea 45 };
Volodymyr Shymanskyy 9:7369ec77a3ea 46
Volodymyr Shymanskyy 9:7369ec77a3ea 47 // Could use __attribute__ ((constructor)), but hope for better portability
Volodymyr Shymanskyy 9:7369ec77a3ea 48 #define BLYNK_ATTACH_WIDGET(widget, pin) \
Volodymyr Shymanskyy 9:7369ec77a3ea 49 BlynkAttachWidgetHelper BLYNK_CONCAT2(blnk_widget_helper_, __COUNTER__)((widget), (pin)); \
Volodymyr Shymanskyy 9:7369ec77a3ea 50 BLYNK_WRITE(pin) { (widget).onWrite(request, param); }
Volodymyr Shymanskyy 9:7369ec77a3ea 51
Volodymyr Shymanskyy 9:7369ec77a3ea 52 #endif