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:
Sat May 07 08:02:50 2016 +0000
Revision:
0:58b20b438383
Child:
3:31e4b850b126
First commit

Who changed what in which revision?

UserRevisionLine numberNew 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