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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers BlynkHandlers.h Source File

BlynkHandlers.h

Go to the documentation of this file.
00001 /**
00002  * @file       BlynkHandlers.h
00003  * @author     Volodymyr Shymanskyy
00004  * @license    This project is released under the MIT License (MIT)
00005  * @copyright  Copyright (c) 2015 Volodymyr Shymanskyy
00006  * @date       Jan 2015
00007  * @brief      Handlers for virtual pin operations
00008  *
00009  */
00010 
00011 #ifndef BlynkHandlers_h
00012 #define BlynkHandlers_h
00013 
00014 #include <Blynk/BlynkConfig.h>
00015 #include <Blynk/BlynkParam.h>
00016 
00017 // Helper macro
00018 
00019 #define V0  0
00020 #define V1  1
00021 #define V2  2
00022 #define V3  3
00023 #define V4  4
00024 #define V5  5
00025 #define V6  6
00026 #define V7  7
00027 #define V8  8
00028 #define V9  9
00029 #define V10 10
00030 #define V11 11
00031 #define V12 12
00032 #define V13 13
00033 #define V14 14
00034 #define V15 15
00035 #define V16 16
00036 #define V17 17
00037 #define V18 18
00038 #define V19 19
00039 #define V20 20
00040 #define V21 21
00041 #define V22 22
00042 #define V23 23
00043 #define V24 24
00044 #define V25 25
00045 #define V26 26
00046 #define V27 27
00047 #define V28 28
00048 #define V29 29
00049 #define V30 30
00050 #define V31 31
00051 #ifdef BLYNK_USE_128_VPINS
00052   #define V32 32
00053   #define V33 33
00054   #define V34 34
00055   #define V35 35
00056   #define V36 36
00057   #define V37 37
00058   #define V38 38
00059   #define V39 39
00060   #define V40 40
00061   #define V41 41
00062   #define V42 42
00063   #define V43 43
00064   #define V44 44
00065   #define V45 45
00066   #define V46 46
00067   #define V47 47
00068   #define V48 48
00069   #define V49 49
00070   #define V50 50
00071   #define V51 51
00072   #define V52 52
00073   #define V53 53
00074   #define V54 54
00075   #define V55 55
00076   #define V56 56
00077   #define V57 57
00078   #define V58 58
00079   #define V59 59
00080   #define V60 60
00081   #define V61 61
00082   #define V62 62
00083   #define V63 63
00084   #define V64 64
00085   #define V65 65
00086   #define V66 66
00087   #define V67 67
00088   #define V68 68
00089   #define V69 69
00090   #define V70 70
00091   #define V71 71
00092   #define V72 72
00093   #define V73 73
00094   #define V74 74
00095   #define V75 75
00096   #define V76 76
00097   #define V77 77
00098   #define V78 78
00099   #define V79 79
00100   #define V80 80
00101   #define V81 81
00102   #define V82 82
00103   #define V83 83
00104   #define V84 84
00105   #define V85 85
00106   #define V86 86
00107   #define V87 87
00108   #define V88 88
00109   #define V89 89
00110   #define V90 90
00111   #define V91 91
00112   #define V92 92
00113   #define V93 93
00114   #define V94 94
00115   #define V95 95
00116   #define V96 96
00117   #define V97 97
00118   #define V98 98
00119   #define V99 99
00120   #define V100 100
00121   #define V101 101
00122   #define V102 102
00123   #define V103 103
00124   #define V104 104
00125   #define V105 105
00126   #define V106 106
00127   #define V107 107
00128   #define V108 108
00129   #define V109 109
00130   #define V110 110
00131   #define V111 111
00132   #define V112 112
00133   #define V113 113
00134   #define V114 114
00135   #define V115 115
00136   #define V116 116
00137   #define V117 117
00138   #define V118 118
00139   #define V119 119
00140   #define V120 120
00141   #define V121 121
00142   #define V122 122
00143   #define V123 123
00144   #define V124 124
00145   #define V125 125
00146   #define V126 126
00147   #define V127 127
00148 #endif
00149 
00150 // Initial syntax:
00151 #define BLYNK_WRITE_2(pin) \
00152     void BlynkWidgetWrite ## pin (BlynkReq BLYNK_UNUSED &request, const BlynkParam BLYNK_UNUSED &param)
00153 
00154 #define BLYNK_READ_2(pin)  \
00155     void BlynkWidgetRead ## pin  (BlynkReq BLYNK_UNUSED &request)
00156 
00157 #define BLYNK_WRITE_DEFAULT() BLYNK_WRITE_2(Default)
00158 #define BLYNK_READ_DEFAULT()  BLYNK_READ_2(Default)
00159 
00160 #define BLYNK_WRITE(pin)      BLYNK_WRITE_2(pin)
00161 #define BLYNK_READ(pin)       BLYNK_READ_2(pin)
00162 
00163 // New, more readable syntax:
00164 #define BLYNK_IN_2(pin)  \
00165     void BlynkWidgetWrite ## pin (BlynkReq BLYNK_UNUSED &request, const BlynkParam BLYNK_UNUSED &getValue)
00166 
00167 #define BLYNK_OUT_2(pin) \
00168     void BlynkWidgetRead ## pin  (BlynkReq BLYNK_UNUSED &request)
00169 
00170 #define BLYNK_INPUT_DEFAULT()   BLYNK_IN_2(Default)
00171 #define BLYNK_OUTPUT_DEFAULT()  BLYNK_OUT_2(Default)
00172 
00173 #define BLYNK_INPUT(pin)        BLYNK_IN_2(pin)
00174 #define BLYNK_OUTPUT(pin)       BLYNK_OUT_2(pin)
00175 
00176 // Additional handlers
00177 #define BLYNK_CONNECTED()    void BlynkOnConnected()
00178 #define BLYNK_DISCONNECTED() void BlynkOnDisconnected()
00179 
00180 // Advanced functions
00181 
00182 #define BLYNK_VAR_INT(name, pin) \
00183     int name;  \
00184     BLYNK_WRITE(pin) { name = param.asInt(); } \
00185     BLYNK_READ(pin)  { Blynk.virtualWrite(pin, name); }
00186 
00187 #define BLYNK_VAR_LONG(name, pin) \
00188     long name;  \
00189     BLYNK_WRITE(pin) { name = param.asLong(); } \
00190     BLYNK_READ(pin)  { Blynk.virtualWrite(pin, name); }
00191 
00192 #ifndef BLYNK_NO_FLOAT
00193 #define BLYNK_VAR_DOUBLE(name, pin) \
00194     double name;  \
00195     BLYNK_WRITE(pin) { name = param.asDouble(); } \
00196     BLYNK_READ(pin)  { Blynk.virtualWrite(pin, name); }
00197 #endif
00198 
00199 #ifdef ARDUINO
00200 #define BLYNK_VAR_STRING(name, pin) \
00201     String name;  \
00202     BLYNK_WRITE(pin) { name = param.asStr(); } \
00203     BLYNK_READ(pin)  { Blynk.virtualWrite(pin, name); }
00204 #endif
00205 
00206 // Default read/write handlers (you can redefine them in your code)
00207 #ifdef __cplusplus
00208 extern "C" {
00209 #endif
00210 
00211 struct BlynkReq
00212 {
00213     uint8_t pin;
00214 };
00215 
00216 typedef void (*WidgetReadHandler)(BlynkReq BLYNK_UNUSED &request);
00217 typedef void (*WidgetWriteHandler)(BlynkReq BLYNK_UNUSED &request, const BlynkParam BLYNK_UNUSED &param);
00218 
00219 WidgetReadHandler GetReadHandler(uint8_t pin);
00220 WidgetWriteHandler GetWriteHandler(uint8_t pin);
00221 
00222 // Declare placeholders
00223 BLYNK_READ();
00224 BLYNK_WRITE();
00225 void BlynkNoOpCbk();
00226 
00227 // Declare all pin handlers (you can redefine them in your code)
00228 BLYNK_CONNECTED();
00229 BLYNK_DISCONNECTED();
00230 
00231 // Internal Virtual Pins
00232 BLYNK_WRITE(InternalPinACON);
00233 BLYNK_WRITE(InternalPinADIS);
00234 BLYNK_WRITE(InternalPinRTC);
00235 BLYNK_WRITE(InternalPinOTA);
00236 
00237 // Aliases
00238 #define BLYNK_APP_CONNECTED()    BLYNK_WRITE(InternalPinACON)
00239 #define BLYNK_APP_DISCONNECTED() BLYNK_WRITE(InternalPinADIS)
00240 
00241 // Regular Virtual Pins
00242 BLYNK_READ_DEFAULT();
00243 BLYNK_WRITE_DEFAULT();
00244 
00245 BLYNK_READ(0 );
00246 BLYNK_READ(1 );
00247 BLYNK_READ(2 );
00248 BLYNK_READ(3 );
00249 BLYNK_READ(4 );
00250 BLYNK_READ(5 );
00251 BLYNK_READ(6 );
00252 BLYNK_READ(7 );
00253 BLYNK_READ(8 );
00254 BLYNK_READ(9 );
00255 BLYNK_READ(10);
00256 BLYNK_READ(11);
00257 BLYNK_READ(12);
00258 BLYNK_READ(13);
00259 BLYNK_READ(14);
00260 BLYNK_READ(15);
00261 BLYNK_READ(16);
00262 BLYNK_READ(17);
00263 BLYNK_READ(18);
00264 BLYNK_READ(19);
00265 BLYNK_READ(20);
00266 BLYNK_READ(21);
00267 BLYNK_READ(22);
00268 BLYNK_READ(23);
00269 BLYNK_READ(24);
00270 BLYNK_READ(25);
00271 BLYNK_READ(26);
00272 BLYNK_READ(27);
00273 BLYNK_READ(28);
00274 BLYNK_READ(29);
00275 BLYNK_READ(30);
00276 BLYNK_READ(31);
00277 #ifdef BLYNK_USE_128_VPINS
00278   BLYNK_READ(32);
00279   BLYNK_READ(33);
00280   BLYNK_READ(34);
00281   BLYNK_READ(35);
00282   BLYNK_READ(36);
00283   BLYNK_READ(37);
00284   BLYNK_READ(38);
00285   BLYNK_READ(39);
00286   BLYNK_READ(40);
00287   BLYNK_READ(41);
00288   BLYNK_READ(42);
00289   BLYNK_READ(43);
00290   BLYNK_READ(44);
00291   BLYNK_READ(45);
00292   BLYNK_READ(46);
00293   BLYNK_READ(47);
00294   BLYNK_READ(48);
00295   BLYNK_READ(49);
00296   BLYNK_READ(50);
00297   BLYNK_READ(51);
00298   BLYNK_READ(52);
00299   BLYNK_READ(53);
00300   BLYNK_READ(54);
00301   BLYNK_READ(55);
00302   BLYNK_READ(56);
00303   BLYNK_READ(57);
00304   BLYNK_READ(58);
00305   BLYNK_READ(59);
00306   BLYNK_READ(60);
00307   BLYNK_READ(61);
00308   BLYNK_READ(62);
00309   BLYNK_READ(63);
00310   BLYNK_READ(64);
00311   BLYNK_READ(65);
00312   BLYNK_READ(66);
00313   BLYNK_READ(67);
00314   BLYNK_READ(68);
00315   BLYNK_READ(69);
00316   BLYNK_READ(70);
00317   BLYNK_READ(71);
00318   BLYNK_READ(72);
00319   BLYNK_READ(73);
00320   BLYNK_READ(74);
00321   BLYNK_READ(75);
00322   BLYNK_READ(76);
00323   BLYNK_READ(77);
00324   BLYNK_READ(78);
00325   BLYNK_READ(79);
00326   BLYNK_READ(80);
00327   BLYNK_READ(81);
00328   BLYNK_READ(82);
00329   BLYNK_READ(83);
00330   BLYNK_READ(84);
00331   BLYNK_READ(85);
00332   BLYNK_READ(86);
00333   BLYNK_READ(87);
00334   BLYNK_READ(88);
00335   BLYNK_READ(89);
00336   BLYNK_READ(90);
00337   BLYNK_READ(91);
00338   BLYNK_READ(92);
00339   BLYNK_READ(93);
00340   BLYNK_READ(94);
00341   BLYNK_READ(95);
00342   BLYNK_READ(96);
00343   BLYNK_READ(97);
00344   BLYNK_READ(98);
00345   BLYNK_READ(99);
00346   BLYNK_READ(100);
00347   BLYNK_READ(101);
00348   BLYNK_READ(102);
00349   BLYNK_READ(103);
00350   BLYNK_READ(104);
00351   BLYNK_READ(105);
00352   BLYNK_READ(106);
00353   BLYNK_READ(107);
00354   BLYNK_READ(108);
00355   BLYNK_READ(109);
00356   BLYNK_READ(110);
00357   BLYNK_READ(111);
00358   BLYNK_READ(112);
00359   BLYNK_READ(113);
00360   BLYNK_READ(114);
00361   BLYNK_READ(115);
00362   BLYNK_READ(116);
00363   BLYNK_READ(117);
00364   BLYNK_READ(118);
00365   BLYNK_READ(119);
00366   BLYNK_READ(120);
00367   BLYNK_READ(121);
00368   BLYNK_READ(122);
00369   BLYNK_READ(123);
00370   BLYNK_READ(124);
00371   BLYNK_READ(125);
00372   BLYNK_READ(126);
00373   BLYNK_READ(127);
00374 #endif
00375 
00376 BLYNK_WRITE(0 );
00377 BLYNK_WRITE(1 );
00378 BLYNK_WRITE(2 );
00379 BLYNK_WRITE(3 );
00380 BLYNK_WRITE(4 );
00381 BLYNK_WRITE(5 );
00382 BLYNK_WRITE(6 );
00383 BLYNK_WRITE(7 );
00384 BLYNK_WRITE(8 );
00385 BLYNK_WRITE(9 );
00386 BLYNK_WRITE(10);
00387 BLYNK_WRITE(11);
00388 BLYNK_WRITE(12);
00389 BLYNK_WRITE(13);
00390 BLYNK_WRITE(14);
00391 BLYNK_WRITE(15);
00392 BLYNK_WRITE(16);
00393 BLYNK_WRITE(17);
00394 BLYNK_WRITE(18);
00395 BLYNK_WRITE(19);
00396 BLYNK_WRITE(20);
00397 BLYNK_WRITE(21);
00398 BLYNK_WRITE(22);
00399 BLYNK_WRITE(23);
00400 BLYNK_WRITE(24);
00401 BLYNK_WRITE(25);
00402 BLYNK_WRITE(26);
00403 BLYNK_WRITE(27);
00404 BLYNK_WRITE(28);
00405 BLYNK_WRITE(29);
00406 BLYNK_WRITE(30);
00407 BLYNK_WRITE(31);
00408 #ifdef BLYNK_USE_128_VPINS
00409   BLYNK_WRITE(32);
00410   BLYNK_WRITE(33);
00411   BLYNK_WRITE(34);
00412   BLYNK_WRITE(35);
00413   BLYNK_WRITE(36);
00414   BLYNK_WRITE(37);
00415   BLYNK_WRITE(38);
00416   BLYNK_WRITE(39);
00417   BLYNK_WRITE(40);
00418   BLYNK_WRITE(41);
00419   BLYNK_WRITE(42);
00420   BLYNK_WRITE(43);
00421   BLYNK_WRITE(44);
00422   BLYNK_WRITE(45);
00423   BLYNK_WRITE(46);
00424   BLYNK_WRITE(47);
00425   BLYNK_WRITE(48);
00426   BLYNK_WRITE(49);
00427   BLYNK_WRITE(50);
00428   BLYNK_WRITE(51);
00429   BLYNK_WRITE(52);
00430   BLYNK_WRITE(53);
00431   BLYNK_WRITE(54);
00432   BLYNK_WRITE(55);
00433   BLYNK_WRITE(56);
00434   BLYNK_WRITE(57);
00435   BLYNK_WRITE(58);
00436   BLYNK_WRITE(59);
00437   BLYNK_WRITE(60);
00438   BLYNK_WRITE(61);
00439   BLYNK_WRITE(62);
00440   BLYNK_WRITE(63);
00441   BLYNK_WRITE(64);
00442   BLYNK_WRITE(65);
00443   BLYNK_WRITE(66);
00444   BLYNK_WRITE(67);
00445   BLYNK_WRITE(68);
00446   BLYNK_WRITE(69);
00447   BLYNK_WRITE(70);
00448   BLYNK_WRITE(71);
00449   BLYNK_WRITE(72);
00450   BLYNK_WRITE(73);
00451   BLYNK_WRITE(74);
00452   BLYNK_WRITE(75);
00453   BLYNK_WRITE(76);
00454   BLYNK_WRITE(77);
00455   BLYNK_WRITE(78);
00456   BLYNK_WRITE(79);
00457   BLYNK_WRITE(80);
00458   BLYNK_WRITE(81);
00459   BLYNK_WRITE(82);
00460   BLYNK_WRITE(83);
00461   BLYNK_WRITE(84);
00462   BLYNK_WRITE(85);
00463   BLYNK_WRITE(86);
00464   BLYNK_WRITE(87);
00465   BLYNK_WRITE(88);
00466   BLYNK_WRITE(89);
00467   BLYNK_WRITE(90);
00468   BLYNK_WRITE(91);
00469   BLYNK_WRITE(92);
00470   BLYNK_WRITE(93);
00471   BLYNK_WRITE(94);
00472   BLYNK_WRITE(95);
00473   BLYNK_WRITE(96);
00474   BLYNK_WRITE(97);
00475   BLYNK_WRITE(98);
00476   BLYNK_WRITE(99);
00477   BLYNK_WRITE(100);
00478   BLYNK_WRITE(101);
00479   BLYNK_WRITE(102);
00480   BLYNK_WRITE(103);
00481   BLYNK_WRITE(104);
00482   BLYNK_WRITE(105);
00483   BLYNK_WRITE(106);
00484   BLYNK_WRITE(107);
00485   BLYNK_WRITE(108);
00486   BLYNK_WRITE(109);
00487   BLYNK_WRITE(110);
00488   BLYNK_WRITE(111);
00489   BLYNK_WRITE(112);
00490   BLYNK_WRITE(113);
00491   BLYNK_WRITE(114);
00492   BLYNK_WRITE(115);
00493   BLYNK_WRITE(116);
00494   BLYNK_WRITE(117);
00495   BLYNK_WRITE(118);
00496   BLYNK_WRITE(119);
00497   BLYNK_WRITE(120);
00498   BLYNK_WRITE(121);
00499   BLYNK_WRITE(122);
00500   BLYNK_WRITE(123);
00501   BLYNK_WRITE(124);
00502   BLYNK_WRITE(125);
00503   BLYNK_WRITE(126);
00504   BLYNK_WRITE(127);
00505 #endif
00506 
00507 #ifdef __cplusplus
00508 }
00509 #endif
00510 
00511 #endif