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
Blynk/BlynkHandlers.h@0:58b20b438383, 2016-05-07 (annotated)
- Committer:
- vshymanskyy
- Date:
- Sat May 07 08:02:50 2016 +0000
- Revision:
- 0:58b20b438383
- Child:
- 3:31e4b850b126
First commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vshymanskyy | 0:58b20b438383 | 1 | /** |
vshymanskyy | 0:58b20b438383 | 2 | * @file BlynkHandlers.h |
vshymanskyy | 0:58b20b438383 | 3 | * @author Volodymyr Shymanskyy |
vshymanskyy | 0:58b20b438383 | 4 | * @license This project is released under the MIT License (MIT) |
vshymanskyy | 0:58b20b438383 | 5 | * @copyright Copyright (c) 2015 Volodymyr Shymanskyy |
vshymanskyy | 0:58b20b438383 | 6 | * @date Jan 2015 |
vshymanskyy | 0:58b20b438383 | 7 | * @brief Handlers for virtual pin operations |
vshymanskyy | 0:58b20b438383 | 8 | * |
vshymanskyy | 0:58b20b438383 | 9 | */ |
vshymanskyy | 0:58b20b438383 | 10 | |
vshymanskyy | 0:58b20b438383 | 11 | #ifndef BlynkHandlers_h |
vshymanskyy | 0:58b20b438383 | 12 | #define BlynkHandlers_h |
vshymanskyy | 0:58b20b438383 | 13 | |
vshymanskyy | 0:58b20b438383 | 14 | #include <Blynk/BlynkConfig.h> |
vshymanskyy | 0:58b20b438383 | 15 | #include <Blynk/BlynkParam.h> |
vshymanskyy | 0:58b20b438383 | 16 | |
vshymanskyy | 0:58b20b438383 | 17 | // Helper macro |
vshymanskyy | 0:58b20b438383 | 18 | |
vshymanskyy | 0:58b20b438383 | 19 | #define V0 0 |
vshymanskyy | 0:58b20b438383 | 20 | #define V1 1 |
vshymanskyy | 0:58b20b438383 | 21 | #define V2 2 |
vshymanskyy | 0:58b20b438383 | 22 | #define V3 3 |
vshymanskyy | 0:58b20b438383 | 23 | #define V4 4 |
vshymanskyy | 0:58b20b438383 | 24 | #define V5 5 |
vshymanskyy | 0:58b20b438383 | 25 | #define V6 6 |
vshymanskyy | 0:58b20b438383 | 26 | #define V7 7 |
vshymanskyy | 0:58b20b438383 | 27 | #define V8 8 |
vshymanskyy | 0:58b20b438383 | 28 | #define V9 9 |
vshymanskyy | 0:58b20b438383 | 29 | #define V10 10 |
vshymanskyy | 0:58b20b438383 | 30 | #define V11 11 |
vshymanskyy | 0:58b20b438383 | 31 | #define V12 12 |
vshymanskyy | 0:58b20b438383 | 32 | #define V13 13 |
vshymanskyy | 0:58b20b438383 | 33 | #define V14 14 |
vshymanskyy | 0:58b20b438383 | 34 | #define V15 15 |
vshymanskyy | 0:58b20b438383 | 35 | #define V16 16 |
vshymanskyy | 0:58b20b438383 | 36 | #define V17 17 |
vshymanskyy | 0:58b20b438383 | 37 | #define V18 18 |
vshymanskyy | 0:58b20b438383 | 38 | #define V19 19 |
vshymanskyy | 0:58b20b438383 | 39 | #define V20 20 |
vshymanskyy | 0:58b20b438383 | 40 | #define V21 21 |
vshymanskyy | 0:58b20b438383 | 41 | #define V22 22 |
vshymanskyy | 0:58b20b438383 | 42 | #define V23 23 |
vshymanskyy | 0:58b20b438383 | 43 | #define V24 24 |
vshymanskyy | 0:58b20b438383 | 44 | #define V25 25 |
vshymanskyy | 0:58b20b438383 | 45 | #define V26 26 |
vshymanskyy | 0:58b20b438383 | 46 | #define V27 27 |
vshymanskyy | 0:58b20b438383 | 47 | #define V28 28 |
vshymanskyy | 0:58b20b438383 | 48 | #define V29 29 |
vshymanskyy | 0:58b20b438383 | 49 | #define V30 30 |
vshymanskyy | 0:58b20b438383 | 50 | #define V31 31 |
vshymanskyy | 0:58b20b438383 | 51 | |
vshymanskyy | 0:58b20b438383 | 52 | #define BLYNK_CONCAT(a, b) a ## b |
vshymanskyy | 0:58b20b438383 | 53 | #define BLYNK_CONCAT2(a, b) BLYNK_CONCAT(a, b) |
vshymanskyy | 0:58b20b438383 | 54 | |
vshymanskyy | 0:58b20b438383 | 55 | // Initial syntax: |
vshymanskyy | 0:58b20b438383 | 56 | #define BLYNK_WRITE_2(pin) \ |
vshymanskyy | 0:58b20b438383 | 57 | void BlynkWidgetWrite ## pin (BlynkReq& request, const BlynkParam& param) |
vshymanskyy | 0:58b20b438383 | 58 | |
vshymanskyy | 0:58b20b438383 | 59 | #define BLYNK_READ_2(pin) \ |
vshymanskyy | 0:58b20b438383 | 60 | void BlynkWidgetRead ## pin (BlynkReq& request) |
vshymanskyy | 0:58b20b438383 | 61 | |
vshymanskyy | 0:58b20b438383 | 62 | #define BLYNK_WRITE_DEFAULT() BLYNK_WRITE_2(Default) |
vshymanskyy | 0:58b20b438383 | 63 | #define BLYNK_READ_DEFAULT() BLYNK_READ_2(Default) |
vshymanskyy | 0:58b20b438383 | 64 | |
vshymanskyy | 0:58b20b438383 | 65 | #define BLYNK_WRITE(pin) BLYNK_WRITE_2(pin) |
vshymanskyy | 0:58b20b438383 | 66 | #define BLYNK_READ(pin) BLYNK_READ_2(pin) |
vshymanskyy | 0:58b20b438383 | 67 | |
vshymanskyy | 0:58b20b438383 | 68 | // New, more readable syntax: |
vshymanskyy | 0:58b20b438383 | 69 | #define BLYNK_IN_2(pin) \ |
vshymanskyy | 0:58b20b438383 | 70 | void BlynkWidgetWrite ## pin (BlynkReq& request, const BlynkParam& getValue) |
vshymanskyy | 0:58b20b438383 | 71 | |
vshymanskyy | 0:58b20b438383 | 72 | #define BLYNK_OUT_2(pin) \ |
vshymanskyy | 0:58b20b438383 | 73 | void BlynkWidgetRead ## pin (BlynkReq& request) |
vshymanskyy | 0:58b20b438383 | 74 | |
vshymanskyy | 0:58b20b438383 | 75 | #define BLYNK_IN_DEFAULT() BLYNK_IN_2(Default) |
vshymanskyy | 0:58b20b438383 | 76 | #define BLYNK_OUT_DEFAULT() BLYNK_OUT_2(Default) |
vshymanskyy | 0:58b20b438383 | 77 | |
vshymanskyy | 0:58b20b438383 | 78 | #define BLYNK_IN(pin) BLYNK_IN_2(pin) |
vshymanskyy | 0:58b20b438383 | 79 | #define BLYNK_OUT(pin) BLYNK_OUT_2(pin) |
vshymanskyy | 0:58b20b438383 | 80 | |
vshymanskyy | 0:58b20b438383 | 81 | // Additional handlers |
vshymanskyy | 0:58b20b438383 | 82 | #define BLYNK_CONNECTED() void BlynkOnConnected() |
vshymanskyy | 0:58b20b438383 | 83 | #define BLYNK_DISCONNECTED() void BlynkOnDisconnected() |
vshymanskyy | 0:58b20b438383 | 84 | |
vshymanskyy | 0:58b20b438383 | 85 | // Advanced functions |
vshymanskyy | 0:58b20b438383 | 86 | |
vshymanskyy | 0:58b20b438383 | 87 | class BlynkAttachWidgetHelper { |
vshymanskyy | 0:58b20b438383 | 88 | public: |
vshymanskyy | 0:58b20b438383 | 89 | template<typename T> |
vshymanskyy | 0:58b20b438383 | 90 | explicit BlynkAttachWidgetHelper(T& widget, uint8_t vPin) { |
vshymanskyy | 0:58b20b438383 | 91 | widget.setVPin(vPin); |
vshymanskyy | 0:58b20b438383 | 92 | } |
vshymanskyy | 0:58b20b438383 | 93 | }; |
vshymanskyy | 0:58b20b438383 | 94 | |
vshymanskyy | 0:58b20b438383 | 95 | // Could use __attribute__ ((constructor)), but hope for better portability |
vshymanskyy | 0:58b20b438383 | 96 | #define BLYNK_ATTACH_WIDGET(widget, pin) \ |
vshymanskyy | 0:58b20b438383 | 97 | static BlynkAttachWidgetHelper BLYNK_CONCAT2(blnk_widget_helper_, __COUNTER__)((widget), (pin)); \ |
vshymanskyy | 0:58b20b438383 | 98 | BLYNK_WRITE(pin) { (widget).onWrite(request, param); } |
vshymanskyy | 0:58b20b438383 | 99 | |
vshymanskyy | 0:58b20b438383 | 100 | #define BLYNK_VAR_INT(name, pin) int name; \ |
vshymanskyy | 0:58b20b438383 | 101 | BLYNK_WRITE(pin) { name = param.asInt(); } \ |
vshymanskyy | 0:58b20b438383 | 102 | BLYNK_READ(pin) { Blynk.virtualWrite(pin, name); } |
vshymanskyy | 0:58b20b438383 | 103 | |
vshymanskyy | 0:58b20b438383 | 104 | #define BLYNK_VAR_LONG(name, pin) long name; \ |
vshymanskyy | 0:58b20b438383 | 105 | BLYNK_WRITE(pin) { name = param.asLong(); } \ |
vshymanskyy | 0:58b20b438383 | 106 | BLYNK_READ(pin) { Blynk.virtualWrite(pin, name); } |
vshymanskyy | 0:58b20b438383 | 107 | |
vshymanskyy | 0:58b20b438383 | 108 | #ifndef BLYNK_NO_FLOAT |
vshymanskyy | 0:58b20b438383 | 109 | #define BLYNK_VAR_DOUBLE(name, pin) double name; \ |
vshymanskyy | 0:58b20b438383 | 110 | BLYNK_WRITE(pin) { name = param.asDouble(); } \ |
vshymanskyy | 0:58b20b438383 | 111 | BLYNK_READ(pin) { Blynk.virtualWrite(pin, name); } |
vshymanskyy | 0:58b20b438383 | 112 | #endif |
vshymanskyy | 0:58b20b438383 | 113 | |
vshymanskyy | 0:58b20b438383 | 114 | #ifdef ARDUINO |
vshymanskyy | 0:58b20b438383 | 115 | #define BLYNK_VAR_STRING(name, pin) String name; \ |
vshymanskyy | 0:58b20b438383 | 116 | BLYNK_WRITE(pin) { name = param.asStr(); } \ |
vshymanskyy | 0:58b20b438383 | 117 | BLYNK_READ(pin) { Blynk.virtualWrite(pin, name); } |
vshymanskyy | 0:58b20b438383 | 118 | #endif |
vshymanskyy | 0:58b20b438383 | 119 | |
vshymanskyy | 0:58b20b438383 | 120 | // Default read/write handlers (you can redefine them in your code) |
vshymanskyy | 0:58b20b438383 | 121 | #ifdef __cplusplus |
vshymanskyy | 0:58b20b438383 | 122 | extern "C" { |
vshymanskyy | 0:58b20b438383 | 123 | #endif |
vshymanskyy | 0:58b20b438383 | 124 | |
vshymanskyy | 0:58b20b438383 | 125 | struct BlynkReq |
vshymanskyy | 0:58b20b438383 | 126 | { |
vshymanskyy | 0:58b20b438383 | 127 | uint8_t pin; |
vshymanskyy | 0:58b20b438383 | 128 | }; |
vshymanskyy | 0:58b20b438383 | 129 | |
vshymanskyy | 0:58b20b438383 | 130 | typedef void (*WidgetReadHandler)(BlynkReq& request); |
vshymanskyy | 0:58b20b438383 | 131 | typedef void (*WidgetWriteHandler)(BlynkReq& request, const BlynkParam& param); |
vshymanskyy | 0:58b20b438383 | 132 | |
vshymanskyy | 0:58b20b438383 | 133 | WidgetReadHandler GetReadHandler(uint8_t pin); |
vshymanskyy | 0:58b20b438383 | 134 | WidgetWriteHandler GetWriteHandler(uint8_t pin); |
vshymanskyy | 0:58b20b438383 | 135 | |
vshymanskyy | 0:58b20b438383 | 136 | // Declare placeholders |
vshymanskyy | 0:58b20b438383 | 137 | BLYNK_READ(); |
vshymanskyy | 0:58b20b438383 | 138 | BLYNK_WRITE(); |
vshymanskyy | 0:58b20b438383 | 139 | void BlynkNoOpCbk(); |
vshymanskyy | 0:58b20b438383 | 140 | |
vshymanskyy | 0:58b20b438383 | 141 | // Declare all pin handlers (you can redefine them in your code) |
vshymanskyy | 0:58b20b438383 | 142 | BLYNK_CONNECTED(); |
vshymanskyy | 0:58b20b438383 | 143 | BLYNK_DISCONNECTED(); |
vshymanskyy | 0:58b20b438383 | 144 | |
vshymanskyy | 0:58b20b438383 | 145 | BLYNK_READ_DEFAULT(); |
vshymanskyy | 0:58b20b438383 | 146 | BLYNK_WRITE_DEFAULT(); |
vshymanskyy | 0:58b20b438383 | 147 | |
vshymanskyy | 0:58b20b438383 | 148 | BLYNK_READ(0 ); |
vshymanskyy | 0:58b20b438383 | 149 | BLYNK_READ(1 ); |
vshymanskyy | 0:58b20b438383 | 150 | BLYNK_READ(2 ); |
vshymanskyy | 0:58b20b438383 | 151 | BLYNK_READ(3 ); |
vshymanskyy | 0:58b20b438383 | 152 | BLYNK_READ(4 ); |
vshymanskyy | 0:58b20b438383 | 153 | BLYNK_READ(5 ); |
vshymanskyy | 0:58b20b438383 | 154 | BLYNK_READ(6 ); |
vshymanskyy | 0:58b20b438383 | 155 | BLYNK_READ(7 ); |
vshymanskyy | 0:58b20b438383 | 156 | BLYNK_READ(8 ); |
vshymanskyy | 0:58b20b438383 | 157 | BLYNK_READ(9 ); |
vshymanskyy | 0:58b20b438383 | 158 | BLYNK_READ(10); |
vshymanskyy | 0:58b20b438383 | 159 | BLYNK_READ(11); |
vshymanskyy | 0:58b20b438383 | 160 | BLYNK_READ(12); |
vshymanskyy | 0:58b20b438383 | 161 | BLYNK_READ(13); |
vshymanskyy | 0:58b20b438383 | 162 | BLYNK_READ(14); |
vshymanskyy | 0:58b20b438383 | 163 | BLYNK_READ(15); |
vshymanskyy | 0:58b20b438383 | 164 | BLYNK_READ(16); |
vshymanskyy | 0:58b20b438383 | 165 | BLYNK_READ(17); |
vshymanskyy | 0:58b20b438383 | 166 | BLYNK_READ(18); |
vshymanskyy | 0:58b20b438383 | 167 | BLYNK_READ(19); |
vshymanskyy | 0:58b20b438383 | 168 | BLYNK_READ(20); |
vshymanskyy | 0:58b20b438383 | 169 | BLYNK_READ(21); |
vshymanskyy | 0:58b20b438383 | 170 | BLYNK_READ(22); |
vshymanskyy | 0:58b20b438383 | 171 | BLYNK_READ(23); |
vshymanskyy | 0:58b20b438383 | 172 | BLYNK_READ(24); |
vshymanskyy | 0:58b20b438383 | 173 | BLYNK_READ(25); |
vshymanskyy | 0:58b20b438383 | 174 | BLYNK_READ(26); |
vshymanskyy | 0:58b20b438383 | 175 | BLYNK_READ(27); |
vshymanskyy | 0:58b20b438383 | 176 | BLYNK_READ(28); |
vshymanskyy | 0:58b20b438383 | 177 | BLYNK_READ(29); |
vshymanskyy | 0:58b20b438383 | 178 | BLYNK_READ(30); |
vshymanskyy | 0:58b20b438383 | 179 | BLYNK_READ(31); |
vshymanskyy | 0:58b20b438383 | 180 | |
vshymanskyy | 0:58b20b438383 | 181 | BLYNK_WRITE(0 ); |
vshymanskyy | 0:58b20b438383 | 182 | BLYNK_WRITE(1 ); |
vshymanskyy | 0:58b20b438383 | 183 | BLYNK_WRITE(2 ); |
vshymanskyy | 0:58b20b438383 | 184 | BLYNK_WRITE(3 ); |
vshymanskyy | 0:58b20b438383 | 185 | BLYNK_WRITE(4 ); |
vshymanskyy | 0:58b20b438383 | 186 | BLYNK_WRITE(5 ); |
vshymanskyy | 0:58b20b438383 | 187 | BLYNK_WRITE(6 ); |
vshymanskyy | 0:58b20b438383 | 188 | BLYNK_WRITE(7 ); |
vshymanskyy | 0:58b20b438383 | 189 | BLYNK_WRITE(8 ); |
vshymanskyy | 0:58b20b438383 | 190 | BLYNK_WRITE(9 ); |
vshymanskyy | 0:58b20b438383 | 191 | BLYNK_WRITE(10); |
vshymanskyy | 0:58b20b438383 | 192 | BLYNK_WRITE(11); |
vshymanskyy | 0:58b20b438383 | 193 | BLYNK_WRITE(12); |
vshymanskyy | 0:58b20b438383 | 194 | BLYNK_WRITE(13); |
vshymanskyy | 0:58b20b438383 | 195 | BLYNK_WRITE(14); |
vshymanskyy | 0:58b20b438383 | 196 | BLYNK_WRITE(15); |
vshymanskyy | 0:58b20b438383 | 197 | BLYNK_WRITE(16); |
vshymanskyy | 0:58b20b438383 | 198 | BLYNK_WRITE(17); |
vshymanskyy | 0:58b20b438383 | 199 | BLYNK_WRITE(18); |
vshymanskyy | 0:58b20b438383 | 200 | BLYNK_WRITE(19); |
vshymanskyy | 0:58b20b438383 | 201 | BLYNK_WRITE(20); |
vshymanskyy | 0:58b20b438383 | 202 | BLYNK_WRITE(21); |
vshymanskyy | 0:58b20b438383 | 203 | BLYNK_WRITE(22); |
vshymanskyy | 0:58b20b438383 | 204 | BLYNK_WRITE(23); |
vshymanskyy | 0:58b20b438383 | 205 | BLYNK_WRITE(24); |
vshymanskyy | 0:58b20b438383 | 206 | BLYNK_WRITE(25); |
vshymanskyy | 0:58b20b438383 | 207 | BLYNK_WRITE(26); |
vshymanskyy | 0:58b20b438383 | 208 | BLYNK_WRITE(27); |
vshymanskyy | 0:58b20b438383 | 209 | BLYNK_WRITE(28); |
vshymanskyy | 0:58b20b438383 | 210 | BLYNK_WRITE(29); |
vshymanskyy | 0:58b20b438383 | 211 | BLYNK_WRITE(30); |
vshymanskyy | 0:58b20b438383 | 212 | BLYNK_WRITE(31); |
vshymanskyy | 0:58b20b438383 | 213 | |
vshymanskyy | 0:58b20b438383 | 214 | #ifdef __cplusplus |
vshymanskyy | 0:58b20b438383 | 215 | } |
vshymanskyy | 0:58b20b438383 | 216 | #endif |
vshymanskyy | 0:58b20b438383 | 217 | |
vshymanskyy | 0:58b20b438383 | 218 | #endif |