* AM2321的取温度间隔得大于2s,否则,i2c会不工作了 * SimpleTimer有个bug,会导致两次快速的读温度,现在读温度函数里加了保护 * Blynk有个bug,会导致无法把数据传到服务器 * 现在可以正常工作了

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers BlynkHandlers.cpp Source File

BlynkHandlers.cpp

Go to the documentation of this file.
00001 /**
00002  * @file       BlynkHandlers.cpp
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      Virtual pin utilities
00008  */
00009 
00010 #include <Blynk/BlynkConfig.h>
00011 #include <Blynk/BlynkHandlers.h>
00012 #include <Blynk/BlynkDebug.h>
00013 
00014 void BlynkNoOpCbk()
00015 {}
00016 
00017 void BlynkWidgetRead(BlynkReq& request)
00018 {
00019     BLYNK_LOG2(BLYNK_F("No handler for reading from pin "), request.pin);
00020 }
00021 
00022 void BlynkWidgetWrite(BlynkReq& request, const BlynkParam& param)
00023 {
00024     BLYNK_LOG2(BLYNK_F("No handler for writing to pin "), request.pin);
00025 }
00026 
00027 #define BLYNK_ON_READ_IMPL(pin)  void BlynkWidgetRead  ## pin (BlynkReq& req) \
00028           __attribute__((weak, alias("BlynkWidgetRead")))
00029 
00030 #define BLYNK_ON_WRITE_IMPL(pin) void BlynkWidgetWrite ## pin (BlynkReq& req, const BlynkParam& param) \
00031           __attribute__((weak, alias("BlynkWidgetWrite")))
00032 
00033 BLYNK_CONNECTED() __attribute__((weak, alias("BlynkNoOpCbk")));
00034 BLYNK_DISCONNECTED() __attribute__((weak, alias("BlynkNoOpCbk")));
00035 
00036 BLYNK_ON_READ_IMPL(Default);
00037 BLYNK_ON_WRITE_IMPL(Default);
00038 
00039 BLYNK_ON_READ_IMPL(0 );
00040 BLYNK_ON_READ_IMPL(1 );
00041 BLYNK_ON_READ_IMPL(2 );
00042 BLYNK_ON_READ_IMPL(3 );
00043 BLYNK_ON_READ_IMPL(4 );
00044 BLYNK_ON_READ_IMPL(5 );
00045 BLYNK_ON_READ_IMPL(6 );
00046 BLYNK_ON_READ_IMPL(7 );
00047 BLYNK_ON_READ_IMPL(8 );
00048 BLYNK_ON_READ_IMPL(9 );
00049 BLYNK_ON_READ_IMPL(10);
00050 BLYNK_ON_READ_IMPL(11);
00051 BLYNK_ON_READ_IMPL(12);
00052 BLYNK_ON_READ_IMPL(13);
00053 BLYNK_ON_READ_IMPL(14);
00054 BLYNK_ON_READ_IMPL(15);
00055 BLYNK_ON_READ_IMPL(16);
00056 BLYNK_ON_READ_IMPL(17);
00057 BLYNK_ON_READ_IMPL(18);
00058 BLYNK_ON_READ_IMPL(19);
00059 BLYNK_ON_READ_IMPL(20);
00060 BLYNK_ON_READ_IMPL(21);
00061 BLYNK_ON_READ_IMPL(22);
00062 BLYNK_ON_READ_IMPL(23);
00063 BLYNK_ON_READ_IMPL(24);
00064 BLYNK_ON_READ_IMPL(25);
00065 BLYNK_ON_READ_IMPL(26);
00066 BLYNK_ON_READ_IMPL(27);
00067 BLYNK_ON_READ_IMPL(28);
00068 BLYNK_ON_READ_IMPL(29);
00069 BLYNK_ON_READ_IMPL(30);
00070 BLYNK_ON_READ_IMPL(31);
00071 #ifdef BLYNK_USE_128_VPINS
00072   BLYNK_ON_READ_IMPL(32);
00073   BLYNK_ON_READ_IMPL(33);
00074   BLYNK_ON_READ_IMPL(34);
00075   BLYNK_ON_READ_IMPL(35);
00076   BLYNK_ON_READ_IMPL(36);
00077   BLYNK_ON_READ_IMPL(37);
00078   BLYNK_ON_READ_IMPL(38);
00079   BLYNK_ON_READ_IMPL(39);
00080   BLYNK_ON_READ_IMPL(40);
00081   BLYNK_ON_READ_IMPL(41);
00082   BLYNK_ON_READ_IMPL(42);
00083   BLYNK_ON_READ_IMPL(43);
00084   BLYNK_ON_READ_IMPL(44);
00085   BLYNK_ON_READ_IMPL(45);
00086   BLYNK_ON_READ_IMPL(46);
00087   BLYNK_ON_READ_IMPL(47);
00088   BLYNK_ON_READ_IMPL(48);
00089   BLYNK_ON_READ_IMPL(49);
00090   BLYNK_ON_READ_IMPL(50);
00091   BLYNK_ON_READ_IMPL(51);
00092   BLYNK_ON_READ_IMPL(52);
00093   BLYNK_ON_READ_IMPL(53);
00094   BLYNK_ON_READ_IMPL(54);
00095   BLYNK_ON_READ_IMPL(55);
00096   BLYNK_ON_READ_IMPL(56);
00097   BLYNK_ON_READ_IMPL(57);
00098   BLYNK_ON_READ_IMPL(58);
00099   BLYNK_ON_READ_IMPL(59);
00100   BLYNK_ON_READ_IMPL(60);
00101   BLYNK_ON_READ_IMPL(61);
00102   BLYNK_ON_READ_IMPL(62);
00103   BLYNK_ON_READ_IMPL(63);
00104   BLYNK_ON_READ_IMPL(64);
00105   BLYNK_ON_READ_IMPL(65);
00106   BLYNK_ON_READ_IMPL(66);
00107   BLYNK_ON_READ_IMPL(67);
00108   BLYNK_ON_READ_IMPL(68);
00109   BLYNK_ON_READ_IMPL(69);
00110   BLYNK_ON_READ_IMPL(70);
00111   BLYNK_ON_READ_IMPL(71);
00112   BLYNK_ON_READ_IMPL(72);
00113   BLYNK_ON_READ_IMPL(73);
00114   BLYNK_ON_READ_IMPL(74);
00115   BLYNK_ON_READ_IMPL(75);
00116   BLYNK_ON_READ_IMPL(76);
00117   BLYNK_ON_READ_IMPL(77);
00118   BLYNK_ON_READ_IMPL(78);
00119   BLYNK_ON_READ_IMPL(79);
00120   BLYNK_ON_READ_IMPL(80);
00121   BLYNK_ON_READ_IMPL(81);
00122   BLYNK_ON_READ_IMPL(82);
00123   BLYNK_ON_READ_IMPL(83);
00124   BLYNK_ON_READ_IMPL(84);
00125   BLYNK_ON_READ_IMPL(85);
00126   BLYNK_ON_READ_IMPL(86);
00127   BLYNK_ON_READ_IMPL(87);
00128   BLYNK_ON_READ_IMPL(88);
00129   BLYNK_ON_READ_IMPL(89);
00130   BLYNK_ON_READ_IMPL(90);
00131   BLYNK_ON_READ_IMPL(91);
00132   BLYNK_ON_READ_IMPL(92);
00133   BLYNK_ON_READ_IMPL(93);
00134   BLYNK_ON_READ_IMPL(94);
00135   BLYNK_ON_READ_IMPL(95);
00136   BLYNK_ON_READ_IMPL(96);
00137   BLYNK_ON_READ_IMPL(97);
00138   BLYNK_ON_READ_IMPL(98);
00139   BLYNK_ON_READ_IMPL(99);
00140   BLYNK_ON_READ_IMPL(100);
00141   BLYNK_ON_READ_IMPL(101);
00142   BLYNK_ON_READ_IMPL(102);
00143   BLYNK_ON_READ_IMPL(103);
00144   BLYNK_ON_READ_IMPL(104);
00145   BLYNK_ON_READ_IMPL(105);
00146   BLYNK_ON_READ_IMPL(106);
00147   BLYNK_ON_READ_IMPL(107);
00148   BLYNK_ON_READ_IMPL(108);
00149   BLYNK_ON_READ_IMPL(109);
00150   BLYNK_ON_READ_IMPL(110);
00151   BLYNK_ON_READ_IMPL(111);
00152   BLYNK_ON_READ_IMPL(112);
00153   BLYNK_ON_READ_IMPL(113);
00154   BLYNK_ON_READ_IMPL(114);
00155   BLYNK_ON_READ_IMPL(115);
00156   BLYNK_ON_READ_IMPL(116);
00157   BLYNK_ON_READ_IMPL(117);
00158   BLYNK_ON_READ_IMPL(118);
00159   BLYNK_ON_READ_IMPL(119);
00160   BLYNK_ON_READ_IMPL(120);
00161   BLYNK_ON_READ_IMPL(121);
00162   BLYNK_ON_READ_IMPL(122);
00163   BLYNK_ON_READ_IMPL(123);
00164   BLYNK_ON_READ_IMPL(124);
00165   BLYNK_ON_READ_IMPL(125);
00166   BLYNK_ON_READ_IMPL(126);
00167   BLYNK_ON_READ_IMPL(127);
00168 #endif
00169 
00170 BLYNK_ON_WRITE_IMPL(0 );
00171 BLYNK_ON_WRITE_IMPL(1 );
00172 BLYNK_ON_WRITE_IMPL(2 );
00173 BLYNK_ON_WRITE_IMPL(3 );
00174 BLYNK_ON_WRITE_IMPL(4 );
00175 BLYNK_ON_WRITE_IMPL(5 );
00176 BLYNK_ON_WRITE_IMPL(6 );
00177 BLYNK_ON_WRITE_IMPL(7 );
00178 BLYNK_ON_WRITE_IMPL(8 );
00179 BLYNK_ON_WRITE_IMPL(9 );
00180 BLYNK_ON_WRITE_IMPL(10);
00181 BLYNK_ON_WRITE_IMPL(11);
00182 BLYNK_ON_WRITE_IMPL(12);
00183 BLYNK_ON_WRITE_IMPL(13);
00184 BLYNK_ON_WRITE_IMPL(14);
00185 BLYNK_ON_WRITE_IMPL(15);
00186 BLYNK_ON_WRITE_IMPL(16);
00187 BLYNK_ON_WRITE_IMPL(17);
00188 BLYNK_ON_WRITE_IMPL(18);
00189 BLYNK_ON_WRITE_IMPL(19);
00190 BLYNK_ON_WRITE_IMPL(20);
00191 BLYNK_ON_WRITE_IMPL(21);
00192 BLYNK_ON_WRITE_IMPL(22);
00193 BLYNK_ON_WRITE_IMPL(23);
00194 BLYNK_ON_WRITE_IMPL(24);
00195 BLYNK_ON_WRITE_IMPL(25);
00196 BLYNK_ON_WRITE_IMPL(26);
00197 BLYNK_ON_WRITE_IMPL(27);
00198 BLYNK_ON_WRITE_IMPL(28);
00199 BLYNK_ON_WRITE_IMPL(29);
00200 BLYNK_ON_WRITE_IMPL(30);
00201 BLYNK_ON_WRITE_IMPL(31);
00202 #ifdef BLYNK_USE_128_VPINS
00203   BLYNK_ON_WRITE_IMPL(32);
00204   BLYNK_ON_WRITE_IMPL(33);
00205   BLYNK_ON_WRITE_IMPL(34);
00206   BLYNK_ON_WRITE_IMPL(35);
00207   BLYNK_ON_WRITE_IMPL(36);
00208   BLYNK_ON_WRITE_IMPL(37);
00209   BLYNK_ON_WRITE_IMPL(38);
00210   BLYNK_ON_WRITE_IMPL(39);
00211   BLYNK_ON_WRITE_IMPL(40);
00212   BLYNK_ON_WRITE_IMPL(41);
00213   BLYNK_ON_WRITE_IMPL(42);
00214   BLYNK_ON_WRITE_IMPL(43);
00215   BLYNK_ON_WRITE_IMPL(44);
00216   BLYNK_ON_WRITE_IMPL(45);
00217   BLYNK_ON_WRITE_IMPL(46);
00218   BLYNK_ON_WRITE_IMPL(47);
00219   BLYNK_ON_WRITE_IMPL(48);
00220   BLYNK_ON_WRITE_IMPL(49);
00221   BLYNK_ON_WRITE_IMPL(50);
00222   BLYNK_ON_WRITE_IMPL(51);
00223   BLYNK_ON_WRITE_IMPL(52);
00224   BLYNK_ON_WRITE_IMPL(53);
00225   BLYNK_ON_WRITE_IMPL(54);
00226   BLYNK_ON_WRITE_IMPL(55);
00227   BLYNK_ON_WRITE_IMPL(56);
00228   BLYNK_ON_WRITE_IMPL(57);
00229   BLYNK_ON_WRITE_IMPL(58);
00230   BLYNK_ON_WRITE_IMPL(59);
00231   BLYNK_ON_WRITE_IMPL(60);
00232   BLYNK_ON_WRITE_IMPL(61);
00233   BLYNK_ON_WRITE_IMPL(62);
00234   BLYNK_ON_WRITE_IMPL(63);
00235   BLYNK_ON_WRITE_IMPL(64);
00236   BLYNK_ON_WRITE_IMPL(65);
00237   BLYNK_ON_WRITE_IMPL(66);
00238   BLYNK_ON_WRITE_IMPL(67);
00239   BLYNK_ON_WRITE_IMPL(68);
00240   BLYNK_ON_WRITE_IMPL(69);
00241   BLYNK_ON_WRITE_IMPL(70);
00242   BLYNK_ON_WRITE_IMPL(71);
00243   BLYNK_ON_WRITE_IMPL(72);
00244   BLYNK_ON_WRITE_IMPL(73);
00245   BLYNK_ON_WRITE_IMPL(74);
00246   BLYNK_ON_WRITE_IMPL(75);
00247   BLYNK_ON_WRITE_IMPL(76);
00248   BLYNK_ON_WRITE_IMPL(77);
00249   BLYNK_ON_WRITE_IMPL(78);
00250   BLYNK_ON_WRITE_IMPL(79);
00251   BLYNK_ON_WRITE_IMPL(80);
00252   BLYNK_ON_WRITE_IMPL(81);
00253   BLYNK_ON_WRITE_IMPL(82);
00254   BLYNK_ON_WRITE_IMPL(83);
00255   BLYNK_ON_WRITE_IMPL(84);
00256   BLYNK_ON_WRITE_IMPL(85);
00257   BLYNK_ON_WRITE_IMPL(86);
00258   BLYNK_ON_WRITE_IMPL(87);
00259   BLYNK_ON_WRITE_IMPL(88);
00260   BLYNK_ON_WRITE_IMPL(89);
00261   BLYNK_ON_WRITE_IMPL(90);
00262   BLYNK_ON_WRITE_IMPL(91);
00263   BLYNK_ON_WRITE_IMPL(92);
00264   BLYNK_ON_WRITE_IMPL(93);
00265   BLYNK_ON_WRITE_IMPL(94);
00266   BLYNK_ON_WRITE_IMPL(95);
00267   BLYNK_ON_WRITE_IMPL(96);
00268   BLYNK_ON_WRITE_IMPL(97);
00269   BLYNK_ON_WRITE_IMPL(98);
00270   BLYNK_ON_WRITE_IMPL(99);
00271   BLYNK_ON_WRITE_IMPL(100);
00272   BLYNK_ON_WRITE_IMPL(101);
00273   BLYNK_ON_WRITE_IMPL(102);
00274   BLYNK_ON_WRITE_IMPL(103);
00275   BLYNK_ON_WRITE_IMPL(104);
00276   BLYNK_ON_WRITE_IMPL(105);
00277   BLYNK_ON_WRITE_IMPL(106);
00278   BLYNK_ON_WRITE_IMPL(107);
00279   BLYNK_ON_WRITE_IMPL(108);
00280   BLYNK_ON_WRITE_IMPL(109);
00281   BLYNK_ON_WRITE_IMPL(110);
00282   BLYNK_ON_WRITE_IMPL(111);
00283   BLYNK_ON_WRITE_IMPL(112);
00284   BLYNK_ON_WRITE_IMPL(113);
00285   BLYNK_ON_WRITE_IMPL(114);
00286   BLYNK_ON_WRITE_IMPL(115);
00287   BLYNK_ON_WRITE_IMPL(116);
00288   BLYNK_ON_WRITE_IMPL(117);
00289   BLYNK_ON_WRITE_IMPL(118);
00290   BLYNK_ON_WRITE_IMPL(119);
00291   BLYNK_ON_WRITE_IMPL(120);
00292   BLYNK_ON_WRITE_IMPL(121);
00293   BLYNK_ON_WRITE_IMPL(122);
00294   BLYNK_ON_WRITE_IMPL(123);
00295   BLYNK_ON_WRITE_IMPL(124);
00296   BLYNK_ON_WRITE_IMPL(125);
00297   BLYNK_ON_WRITE_IMPL(126);
00298   BLYNK_ON_WRITE_IMPL(127);
00299 #endif
00300 
00301 static const WidgetReadHandler BlynkReadHandlerVector[] BLYNK_PROGMEM = {
00302     BlynkWidgetRead0,   BlynkWidgetRead1,   BlynkWidgetRead2,   BlynkWidgetRead3,
00303     BlynkWidgetRead4,   BlynkWidgetRead5,   BlynkWidgetRead6,   BlynkWidgetRead7,
00304     BlynkWidgetRead8,   BlynkWidgetRead9,   BlynkWidgetRead10,  BlynkWidgetRead11,
00305     BlynkWidgetRead12,  BlynkWidgetRead13,  BlynkWidgetRead14,  BlynkWidgetRead15,
00306     BlynkWidgetRead16,  BlynkWidgetRead17,  BlynkWidgetRead18,  BlynkWidgetRead19,
00307     BlynkWidgetRead20,  BlynkWidgetRead21,  BlynkWidgetRead22,  BlynkWidgetRead23,
00308     BlynkWidgetRead24,  BlynkWidgetRead25,  BlynkWidgetRead26,  BlynkWidgetRead27,
00309     BlynkWidgetRead28,  BlynkWidgetRead29,  BlynkWidgetRead30,  BlynkWidgetRead31,
00310 #ifdef BLYNK_USE_128_VPINS
00311     BlynkWidgetRead32,  BlynkWidgetRead33,  BlynkWidgetRead34,  BlynkWidgetRead35,
00312     BlynkWidgetRead36,  BlynkWidgetRead37,  BlynkWidgetRead38,  BlynkWidgetRead39,
00313     BlynkWidgetRead40,  BlynkWidgetRead41,  BlynkWidgetRead42,  BlynkWidgetRead43,
00314     BlynkWidgetRead44,  BlynkWidgetRead45,  BlynkWidgetRead46,  BlynkWidgetRead47,
00315     BlynkWidgetRead48,  BlynkWidgetRead49,  BlynkWidgetRead50,  BlynkWidgetRead51,
00316     BlynkWidgetRead52,  BlynkWidgetRead53,  BlynkWidgetRead54,  BlynkWidgetRead55,
00317     BlynkWidgetRead56,  BlynkWidgetRead57,  BlynkWidgetRead58,  BlynkWidgetRead59,
00318     BlynkWidgetRead60,  BlynkWidgetRead61,  BlynkWidgetRead62,  BlynkWidgetRead63,
00319     BlynkWidgetRead64,  BlynkWidgetRead65,  BlynkWidgetRead66,  BlynkWidgetRead67,
00320     BlynkWidgetRead68,  BlynkWidgetRead69,  BlynkWidgetRead70,  BlynkWidgetRead71,
00321     BlynkWidgetRead72,  BlynkWidgetRead73,  BlynkWidgetRead74,  BlynkWidgetRead75,
00322     BlynkWidgetRead76,  BlynkWidgetRead77,  BlynkWidgetRead78,  BlynkWidgetRead79,
00323     BlynkWidgetRead80,  BlynkWidgetRead81,  BlynkWidgetRead82,  BlynkWidgetRead83,
00324     BlynkWidgetRead84,  BlynkWidgetRead85,  BlynkWidgetRead86,  BlynkWidgetRead87,
00325     BlynkWidgetRead88,  BlynkWidgetRead89,  BlynkWidgetRead90,  BlynkWidgetRead91,
00326     BlynkWidgetRead92,  BlynkWidgetRead93,  BlynkWidgetRead94,  BlynkWidgetRead95,
00327     BlynkWidgetRead96,  BlynkWidgetRead97,  BlynkWidgetRead98,  BlynkWidgetRead99,
00328     BlynkWidgetRead100,  BlynkWidgetRead101,  BlynkWidgetRead102,  BlynkWidgetRead103,
00329     BlynkWidgetRead104,  BlynkWidgetRead105,  BlynkWidgetRead106,  BlynkWidgetRead107,
00330     BlynkWidgetRead108,  BlynkWidgetRead109,  BlynkWidgetRead110,  BlynkWidgetRead111,
00331     BlynkWidgetRead112,  BlynkWidgetRead113,  BlynkWidgetRead114,  BlynkWidgetRead115,
00332     BlynkWidgetRead116,  BlynkWidgetRead117,  BlynkWidgetRead118,  BlynkWidgetRead119,
00333     BlynkWidgetRead120,  BlynkWidgetRead121,  BlynkWidgetRead122,  BlynkWidgetRead123,
00334     BlynkWidgetRead124,  BlynkWidgetRead125,  BlynkWidgetRead126,  BlynkWidgetRead127,
00335 #endif
00336 };
00337 
00338 static const WidgetWriteHandler BlynkWriteHandlerVector[] BLYNK_PROGMEM = {
00339     BlynkWidgetWrite0,  BlynkWidgetWrite1,  BlynkWidgetWrite2,  BlynkWidgetWrite3,
00340     BlynkWidgetWrite4,  BlynkWidgetWrite5,  BlynkWidgetWrite6,  BlynkWidgetWrite7,
00341     BlynkWidgetWrite8,  BlynkWidgetWrite9,  BlynkWidgetWrite10, BlynkWidgetWrite11,
00342     BlynkWidgetWrite12, BlynkWidgetWrite13, BlynkWidgetWrite14, BlynkWidgetWrite15,
00343     BlynkWidgetWrite16, BlynkWidgetWrite17, BlynkWidgetWrite18, BlynkWidgetWrite19,
00344     BlynkWidgetWrite20, BlynkWidgetWrite21, BlynkWidgetWrite22, BlynkWidgetWrite23,
00345     BlynkWidgetWrite24, BlynkWidgetWrite25, BlynkWidgetWrite26, BlynkWidgetWrite27,
00346     BlynkWidgetWrite28, BlynkWidgetWrite29, BlynkWidgetWrite30, BlynkWidgetWrite31,
00347 #ifdef BLYNK_USE_128_VPINS
00348     BlynkWidgetWrite32,  BlynkWidgetWrite33,  BlynkWidgetWrite34,  BlynkWidgetWrite35,
00349     BlynkWidgetWrite36,  BlynkWidgetWrite37,  BlynkWidgetWrite38,  BlynkWidgetWrite39,
00350     BlynkWidgetWrite40,  BlynkWidgetWrite41,  BlynkWidgetWrite42,  BlynkWidgetWrite43,
00351     BlynkWidgetWrite44,  BlynkWidgetWrite45,  BlynkWidgetWrite46,  BlynkWidgetWrite47,
00352     BlynkWidgetWrite48,  BlynkWidgetWrite49,  BlynkWidgetWrite50,  BlynkWidgetWrite51,
00353     BlynkWidgetWrite52,  BlynkWidgetWrite53,  BlynkWidgetWrite54,  BlynkWidgetWrite55,
00354     BlynkWidgetWrite56,  BlynkWidgetWrite57,  BlynkWidgetWrite58,  BlynkWidgetWrite59,
00355     BlynkWidgetWrite60,  BlynkWidgetWrite61,  BlynkWidgetWrite62,  BlynkWidgetWrite63,
00356     BlynkWidgetWrite64,  BlynkWidgetWrite65,  BlynkWidgetWrite66,  BlynkWidgetWrite67,
00357     BlynkWidgetWrite68,  BlynkWidgetWrite69,  BlynkWidgetWrite70,  BlynkWidgetWrite71,
00358     BlynkWidgetWrite72,  BlynkWidgetWrite73,  BlynkWidgetWrite74,  BlynkWidgetWrite75,
00359     BlynkWidgetWrite76,  BlynkWidgetWrite77,  BlynkWidgetWrite78,  BlynkWidgetWrite79,
00360     BlynkWidgetWrite80,  BlynkWidgetWrite81,  BlynkWidgetWrite82,  BlynkWidgetWrite83,
00361     BlynkWidgetWrite84,  BlynkWidgetWrite85,  BlynkWidgetWrite86,  BlynkWidgetWrite87,
00362     BlynkWidgetWrite88,  BlynkWidgetWrite89,  BlynkWidgetWrite90,  BlynkWidgetWrite91,
00363     BlynkWidgetWrite92,  BlynkWidgetWrite93,  BlynkWidgetWrite94,  BlynkWidgetWrite95,
00364     BlynkWidgetWrite96,  BlynkWidgetWrite97,  BlynkWidgetWrite98,  BlynkWidgetWrite99,
00365     BlynkWidgetWrite100,  BlynkWidgetWrite101,  BlynkWidgetWrite102,  BlynkWidgetWrite103,
00366     BlynkWidgetWrite104,  BlynkWidgetWrite105,  BlynkWidgetWrite106,  BlynkWidgetWrite107,
00367     BlynkWidgetWrite108,  BlynkWidgetWrite109,  BlynkWidgetWrite110,  BlynkWidgetWrite111,
00368     BlynkWidgetWrite112,  BlynkWidgetWrite113,  BlynkWidgetWrite114,  BlynkWidgetWrite115,
00369     BlynkWidgetWrite116,  BlynkWidgetWrite117,  BlynkWidgetWrite118,  BlynkWidgetWrite119,
00370     BlynkWidgetWrite120,  BlynkWidgetWrite121,  BlynkWidgetWrite122,  BlynkWidgetWrite123,
00371     BlynkWidgetWrite124,  BlynkWidgetWrite125,  BlynkWidgetWrite126,  BlynkWidgetWrite127,
00372 #endif
00373 };
00374 
00375 WidgetReadHandler GetReadHandler(uint8_t pin)
00376 {
00377     if (pin >= COUNT_OF(BlynkReadHandlerVector))
00378         return NULL;
00379 #ifdef BLYNK_HAS_PROGMEM
00380     return (WidgetReadHandler)pgm_read_word(&BlynkReadHandlerVector[pin]);
00381 #else
00382     return BlynkReadHandlerVector[pin];
00383 #endif
00384 }
00385 
00386 WidgetWriteHandler GetWriteHandler(uint8_t pin)
00387 {
00388     if (pin >= COUNT_OF(BlynkWriteHandlerVector))
00389         return NULL;
00390 #ifdef BLYNK_HAS_PROGMEM
00391     return (WidgetWriteHandler)pgm_read_word(&BlynkWriteHandlerVector[pin]);
00392 #else
00393     return BlynkWriteHandlerVector[pin];
00394 #endif
00395 }
00396