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:
Volodymyr Shymanskyy
Date:
Mon Nov 27 19:48:07 2017 +0200
Revision:
15:975b60f7a8ff
Parent:
13:ed6276c0afb7
Update version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vshymanskyy 0:58b20b438383 1 /**
vshymanskyy 0:58b20b438383 2 * @file BlynkParam.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 Container for handler parameters
vshymanskyy 0:58b20b438383 8 *
vshymanskyy 0:58b20b438383 9 */
vshymanskyy 0:58b20b438383 10
vshymanskyy 0:58b20b438383 11 #ifndef BlynkParam_h
vshymanskyy 0:58b20b438383 12 #define BlynkParam_h
vshymanskyy 0:58b20b438383 13
vshymanskyy 0:58b20b438383 14 #include <string.h>
vshymanskyy 0:58b20b438383 15 #include <stdlib.h>
vshymanskyy 0:58b20b438383 16 #include <Blynk/BlynkConfig.h>
vshymanskyy 0:58b20b438383 17 #include <Blynk/BlynkDebug.h>
vshymanskyy 0:58b20b438383 18
vshymanskyy 0:58b20b438383 19 #define BLYNK_PARAM_KV(k, v) k "\0" v "\0"
vshymanskyy 0:58b20b438383 20
vshymanskyy 0:58b20b438383 21 class BlynkParam
vshymanskyy 0:58b20b438383 22 {
vshymanskyy 0:58b20b438383 23 public:
vshymanskyy 0:58b20b438383 24 class iterator
vshymanskyy 0:58b20b438383 25 {
vshymanskyy 0:58b20b438383 26 public:
vshymanskyy 0:58b20b438383 27 iterator(char* c) : ptr(c) {}
vshymanskyy 0:58b20b438383 28 static iterator invalid() { return iterator(NULL); }
vshymanskyy 0:58b20b438383 29
vshymanskyy 0:58b20b438383 30 operator const char* () const { return asStr(); }
vshymanskyy 0:58b20b438383 31 operator int () const { return asInt(); }
vshymanskyy 0:58b20b438383 32 const char* asStr() const { return ptr; }
vshymanskyy 0:58b20b438383 33 const char* asString() const { return ptr; }
vshymanskyy 0:58b20b438383 34 int asInt() const { return atoi(ptr); }
vshymanskyy 0:58b20b438383 35 long asLong() const { return atol(ptr); }
Volodymyr Shymanskyy 9:7369ec77a3ea 36 //long long asLongLong() const { return atoll(ptr); }
vshymanskyy 0:58b20b438383 37 #ifndef BLYNK_NO_FLOAT
vshymanskyy 0:58b20b438383 38 double asDouble() const { return atof(ptr); }
Volodymyr Shymanskyy 7:8879692d4e6c 39 float asFloat() const { return atof(ptr); }
vshymanskyy 0:58b20b438383 40 #endif
vshymanskyy 0:58b20b438383 41 bool isValid() const { return ptr != NULL; }
Volodymyr Shymanskyy 7:8879692d4e6c 42 bool isEmpty() const { return *ptr == '\0'; }
vshymanskyy 0:58b20b438383 43
vshymanskyy 0:58b20b438383 44 bool operator < (const iterator& it) const { return ptr < it.ptr; }
vshymanskyy 0:58b20b438383 45 bool operator >= (const iterator& it) const { return ptr >= it.ptr; }
vshymanskyy 0:58b20b438383 46
vshymanskyy 0:58b20b438383 47 iterator& operator ++() {
vshymanskyy 0:58b20b438383 48 ptr += strlen(ptr)+1;
vshymanskyy 0:58b20b438383 49 return *this;
vshymanskyy 0:58b20b438383 50 }
vshymanskyy 0:58b20b438383 51 private:
vshymanskyy 0:58b20b438383 52 const char* ptr;
vshymanskyy 0:58b20b438383 53 };
vshymanskyy 0:58b20b438383 54
vshymanskyy 0:58b20b438383 55 public:
vshymanskyy 0:58b20b438383 56 explicit
vshymanskyy 0:58b20b438383 57 BlynkParam(void* addr, size_t length)
vshymanskyy 0:58b20b438383 58 : buff((char*)addr), len(length), buff_size(length)
vshymanskyy 0:58b20b438383 59 {}
vshymanskyy 0:58b20b438383 60
vshymanskyy 0:58b20b438383 61 explicit
vshymanskyy 0:58b20b438383 62 BlynkParam(void* addr, size_t length, size_t buffsize)
vshymanskyy 0:58b20b438383 63 : buff((char*)addr), len(length), buff_size(buffsize)
vshymanskyy 0:58b20b438383 64 {}
vshymanskyy 0:58b20b438383 65
vshymanskyy 0:58b20b438383 66 const char* asStr() const { return buff; }
vshymanskyy 0:58b20b438383 67 const char* asString() const { return buff; }
vshymanskyy 0:58b20b438383 68 int asInt() const { return atoi(buff); }
vshymanskyy 0:58b20b438383 69 long asLong() const { return atol(buff); }
Volodymyr Shymanskyy 9:7369ec77a3ea 70 //long long asLongLong() const { return atoll(buff); }
vshymanskyy 0:58b20b438383 71 #ifndef BLYNK_NO_FLOAT
vshymanskyy 0:58b20b438383 72 double asDouble() const { return atof(buff); }
Volodymyr Shymanskyy 7:8879692d4e6c 73 float asFloat() const { return atof(buff); }
vshymanskyy 0:58b20b438383 74 #endif
Volodymyr Shymanskyy 7:8879692d4e6c 75 bool isEmpty() const { return *buff == '\0'; }
vshymanskyy 0:58b20b438383 76
vshymanskyy 0:58b20b438383 77 iterator begin() const { return iterator(buff); }
vshymanskyy 0:58b20b438383 78 iterator end() const { return iterator(buff+len); }
vshymanskyy 0:58b20b438383 79
vshymanskyy 0:58b20b438383 80 iterator operator[](int index) const;
vshymanskyy 0:58b20b438383 81 iterator operator[](const char* key) const;
vshymanskyy 0:58b20b438383 82
vshymanskyy 0:58b20b438383 83 void* getBuffer() const { return (void*)buff; }
vshymanskyy 0:58b20b438383 84 size_t getLength() const { return len; }
vshymanskyy 0:58b20b438383 85
vshymanskyy 0:58b20b438383 86 // Modification
vshymanskyy 0:58b20b438383 87 void add(int value);
vshymanskyy 0:58b20b438383 88 void add(unsigned int value);
vshymanskyy 0:58b20b438383 89 void add(long value);
vshymanskyy 0:58b20b438383 90 void add(unsigned long value);
Volodymyr Shymanskyy 9:7369ec77a3ea 91 void add(long long value);
Volodymyr Shymanskyy 9:7369ec77a3ea 92 void add(unsigned long long value);
vshymanskyy 0:58b20b438383 93 #ifndef BLYNK_NO_FLOAT
vshymanskyy 0:58b20b438383 94 void add(float value);
vshymanskyy 0:58b20b438383 95 void add(double value);
vshymanskyy 0:58b20b438383 96 #endif
vshymanskyy 0:58b20b438383 97 void add(const char* str);
vshymanskyy 0:58b20b438383 98 void add(const void* b, size_t l);
vshymanskyy 0:58b20b438383 99 #if defined(ARDUINO) || defined(SPARK) || defined(PARTICLE)
vshymanskyy 0:58b20b438383 100 void add(const String& str);
Volodymyr Shymanskyy 9:7369ec77a3ea 101 #if defined(BLYNK_HAS_PROGMEM)
Volodymyr Shymanskyy 9:7369ec77a3ea 102 void add(const __FlashStringHelper* str);
Volodymyr Shymanskyy 9:7369ec77a3ea 103 #endif
vshymanskyy 0:58b20b438383 104 #endif
vshymanskyy 0:58b20b438383 105
Volodymyr Shymanskyy 9:7369ec77a3ea 106 template<typename T, typename... Args>
Volodymyr Shymanskyy 9:7369ec77a3ea 107 void add_multi(T last) {
Volodymyr Shymanskyy 9:7369ec77a3ea 108 add(last);
Volodymyr Shymanskyy 9:7369ec77a3ea 109 }
Volodymyr Shymanskyy 9:7369ec77a3ea 110
Volodymyr Shymanskyy 9:7369ec77a3ea 111 template<typename T, typename... Args>
Volodymyr Shymanskyy 9:7369ec77a3ea 112 void add_multi(T head, Args... tail) {
Volodymyr Shymanskyy 9:7369ec77a3ea 113 add(head);
Volodymyr Shymanskyy 9:7369ec77a3ea 114 add_multi(tail...);
Volodymyr Shymanskyy 9:7369ec77a3ea 115 }
Volodymyr Shymanskyy 9:7369ec77a3ea 116
vshymanskyy 0:58b20b438383 117 template <typename TV>
vshymanskyy 0:58b20b438383 118 void add_key(const char* key, const TV& val) {
vshymanskyy 0:58b20b438383 119 add(key);
vshymanskyy 0:58b20b438383 120 add(val);
vshymanskyy 0:58b20b438383 121 }
vshymanskyy 0:58b20b438383 122
Volodymyr Shymanskyy 7:8879692d4e6c 123 protected:
Volodymyr Shymanskyy 9:7369ec77a3ea 124 char* buff;
Volodymyr Shymanskyy 9:7369ec77a3ea 125 size_t len;
Volodymyr Shymanskyy 9:7369ec77a3ea 126 size_t buff_size;
vshymanskyy 0:58b20b438383 127 };
vshymanskyy 0:58b20b438383 128
Volodymyr Shymanskyy 7:8879692d4e6c 129
Volodymyr Shymanskyy 7:8879692d4e6c 130 class BlynkParamAllocated
Volodymyr Shymanskyy 9:7369ec77a3ea 131 : public BlynkParam
Volodymyr Shymanskyy 7:8879692d4e6c 132 {
Volodymyr Shymanskyy 7:8879692d4e6c 133 public:
Volodymyr Shymanskyy 9:7369ec77a3ea 134 BlynkParamAllocated(size_t size)
Volodymyr Shymanskyy 9:7369ec77a3ea 135 : BlynkParam(malloc(size), 0, size)
Volodymyr Shymanskyy 9:7369ec77a3ea 136 {}
Volodymyr Shymanskyy 9:7369ec77a3ea 137 ~BlynkParamAllocated() {
Volodymyr Shymanskyy 9:7369ec77a3ea 138 free(buff);
Volodymyr Shymanskyy 9:7369ec77a3ea 139 }
Volodymyr Shymanskyy 7:8879692d4e6c 140 };
Volodymyr Shymanskyy 7:8879692d4e6c 141
vshymanskyy 0:58b20b438383 142 inline
vshymanskyy 0:58b20b438383 143 BlynkParam::iterator BlynkParam::operator[](int index) const
vshymanskyy 0:58b20b438383 144 {
vshymanskyy 0:58b20b438383 145 const iterator e = end();
vshymanskyy 0:58b20b438383 146 for (iterator it = begin(); it < e; ++it) {
vshymanskyy 0:58b20b438383 147 if (!index--) {
vshymanskyy 0:58b20b438383 148 return it;
vshymanskyy 0:58b20b438383 149 }
vshymanskyy 0:58b20b438383 150 }
vshymanskyy 0:58b20b438383 151 return iterator::invalid();
vshymanskyy 0:58b20b438383 152 }
vshymanskyy 0:58b20b438383 153
vshymanskyy 0:58b20b438383 154 inline
vshymanskyy 0:58b20b438383 155 BlynkParam::iterator BlynkParam::operator[](const char* key) const
vshymanskyy 0:58b20b438383 156 {
vshymanskyy 0:58b20b438383 157 const iterator e = end();
vshymanskyy 0:58b20b438383 158 for (iterator it = begin(); it < e; ++it) {
vshymanskyy 0:58b20b438383 159 if (!strcmp(it.asStr(), key)) {
vshymanskyy 0:58b20b438383 160 return ++it;
vshymanskyy 0:58b20b438383 161 }
vshymanskyy 0:58b20b438383 162 ++it;
vshymanskyy 0:58b20b438383 163 if (it >= e) break;
vshymanskyy 0:58b20b438383 164 }
vshymanskyy 0:58b20b438383 165 return iterator::invalid();
vshymanskyy 0:58b20b438383 166 }
vshymanskyy 0:58b20b438383 167
vshymanskyy 0:58b20b438383 168 inline
vshymanskyy 0:58b20b438383 169 void BlynkParam::add(const void* b, size_t l)
vshymanskyy 0:58b20b438383 170 {
vshymanskyy 0:58b20b438383 171 if (len + l > buff_size)
vshymanskyy 0:58b20b438383 172 return;
vshymanskyy 0:58b20b438383 173 memcpy(buff+len, b, l);
vshymanskyy 0:58b20b438383 174 len += l;
vshymanskyy 0:58b20b438383 175 }
vshymanskyy 0:58b20b438383 176
vshymanskyy 0:58b20b438383 177 inline
vshymanskyy 0:58b20b438383 178 void BlynkParam::add(const char* str)
vshymanskyy 0:58b20b438383 179 {
Volodymyr Shymanskyy 15:975b60f7a8ff 180 if (str == NULL) {
Volodymyr Shymanskyy 15:975b60f7a8ff 181 buff[len++] = '\0';
Volodymyr Shymanskyy 15:975b60f7a8ff 182 return;
Volodymyr Shymanskyy 15:975b60f7a8ff 183 }
vshymanskyy 0:58b20b438383 184 add(str, strlen(str)+1);
vshymanskyy 0:58b20b438383 185 }
vshymanskyy 0:58b20b438383 186
vshymanskyy 0:58b20b438383 187 #if defined(ARDUINO) || defined(SPARK) || defined(PARTICLE)
vshymanskyy 0:58b20b438383 188 inline
vshymanskyy 0:58b20b438383 189 void BlynkParam::add(const String& str)
vshymanskyy 0:58b20b438383 190 {
Volodymyr Shymanskyy 9:7369ec77a3ea 191 #if defined(ARDUINO_AVR_DIGISPARK) \
Volodymyr Shymanskyy 9:7369ec77a3ea 192 || defined(__ARDUINO_X86__) \
Volodymyr Shymanskyy 9:7369ec77a3ea 193 || defined(__RFduino__)
Volodymyr Shymanskyy 9:7369ec77a3ea 194
vshymanskyy 0:58b20b438383 195 size_t len = str.length()+1;
vshymanskyy 0:58b20b438383 196 char buff[len];
vshymanskyy 0:58b20b438383 197 const_cast<String&>(str).toCharArray(buff, len);
Volodymyr Shymanskyy 9:7369ec77a3ea 198 add(buff, len);
vshymanskyy 0:58b20b438383 199 #else
Volodymyr Shymanskyy 9:7369ec77a3ea 200 add(str.c_str());
vshymanskyy 0:58b20b438383 201 #endif
vshymanskyy 0:58b20b438383 202 }
vshymanskyy 0:58b20b438383 203
Volodymyr Shymanskyy 9:7369ec77a3ea 204 #if defined(BLYNK_HAS_PROGMEM)
Volodymyr Shymanskyy 9:7369ec77a3ea 205
vshymanskyy 0:58b20b438383 206 inline
Volodymyr Shymanskyy 9:7369ec77a3ea 207 void BlynkParam::add(const __FlashStringHelper* ifsh)
vshymanskyy 0:58b20b438383 208 {
Volodymyr Shymanskyy 9:7369ec77a3ea 209 PGM_P p = reinterpret_cast<PGM_P>(ifsh);
Volodymyr Shymanskyy 9:7369ec77a3ea 210 size_t l = strlen_P(p) + 1;
Volodymyr Shymanskyy 9:7369ec77a3ea 211 if (len + l > buff_size)
Volodymyr Shymanskyy 9:7369ec77a3ea 212 return;
Volodymyr Shymanskyy 9:7369ec77a3ea 213 memcpy_P(buff+len, p, l);
Volodymyr Shymanskyy 9:7369ec77a3ea 214 len += l;
Volodymyr Shymanskyy 9:7369ec77a3ea 215 buff[len] = '\0';
vshymanskyy 0:58b20b438383 216 }
Volodymyr Shymanskyy 9:7369ec77a3ea 217
Volodymyr Shymanskyy 9:7369ec77a3ea 218 #endif
Volodymyr Shymanskyy 9:7369ec77a3ea 219
vshymanskyy 0:58b20b438383 220 #endif
vshymanskyy 0:58b20b438383 221
vshymanskyy 0:58b20b438383 222 #if defined(__AVR__) || defined (ARDUINO_ARCH_ARC32)
vshymanskyy 0:58b20b438383 223
vshymanskyy 0:58b20b438383 224 #include <stdlib.h>
vshymanskyy 0:58b20b438383 225
Volodymyr Shymanskyy 9:7369ec77a3ea 226 inline
vshymanskyy 0:58b20b438383 227 void BlynkParam::add(int value)
vshymanskyy 0:58b20b438383 228 {
vshymanskyy 0:58b20b438383 229 char str[2 + 8 * sizeof(value)];
vshymanskyy 0:58b20b438383 230 itoa(value, str, 10);
vshymanskyy 0:58b20b438383 231 add(str);
vshymanskyy 0:58b20b438383 232 }
vshymanskyy 0:58b20b438383 233
Volodymyr Shymanskyy 9:7369ec77a3ea 234 inline
vshymanskyy 0:58b20b438383 235 void BlynkParam::add(unsigned int value)
vshymanskyy 0:58b20b438383 236 {
vshymanskyy 0:58b20b438383 237 char str[1 + 8 * sizeof(value)];
vshymanskyy 0:58b20b438383 238 utoa(value, str, 10);
vshymanskyy 0:58b20b438383 239 add(str);
vshymanskyy 0:58b20b438383 240 }
vshymanskyy 0:58b20b438383 241
Volodymyr Shymanskyy 9:7369ec77a3ea 242 inline
vshymanskyy 0:58b20b438383 243 void BlynkParam::add(long value)
vshymanskyy 0:58b20b438383 244 {
vshymanskyy 0:58b20b438383 245 char str[2 + 8 * sizeof(value)];
vshymanskyy 0:58b20b438383 246 ltoa(value, str, 10);
vshymanskyy 0:58b20b438383 247 add(str);
vshymanskyy 0:58b20b438383 248 }
vshymanskyy 0:58b20b438383 249
Volodymyr Shymanskyy 9:7369ec77a3ea 250 inline
vshymanskyy 0:58b20b438383 251 void BlynkParam::add(unsigned long value)
vshymanskyy 0:58b20b438383 252 {
vshymanskyy 0:58b20b438383 253 char str[1 + 8 * sizeof(value)];
vshymanskyy 0:58b20b438383 254 ultoa(value, str, 10);
vshymanskyy 0:58b20b438383 255 add(str);
vshymanskyy 0:58b20b438383 256 }
vshymanskyy 0:58b20b438383 257
Volodymyr Shymanskyy 9:7369ec77a3ea 258 inline
Volodymyr Shymanskyy 9:7369ec77a3ea 259 void BlynkParam::add(long long value) // TODO: this currently adds just a long
Volodymyr Shymanskyy 9:7369ec77a3ea 260 {
Volodymyr Shymanskyy 9:7369ec77a3ea 261 char str[2 + 8 * sizeof(value)];
Volodymyr Shymanskyy 9:7369ec77a3ea 262 ltoa(value, str, 10);
Volodymyr Shymanskyy 9:7369ec77a3ea 263 add(str);
Volodymyr Shymanskyy 9:7369ec77a3ea 264 }
Volodymyr Shymanskyy 9:7369ec77a3ea 265
Volodymyr Shymanskyy 9:7369ec77a3ea 266 inline
Volodymyr Shymanskyy 9:7369ec77a3ea 267 void BlynkParam::add(unsigned long long value) // TODO: this currently adds just a long
Volodymyr Shymanskyy 9:7369ec77a3ea 268 {
Volodymyr Shymanskyy 9:7369ec77a3ea 269 char str[1 + 8 * sizeof(value)];
Volodymyr Shymanskyy 9:7369ec77a3ea 270 ultoa(value, str, 10);
Volodymyr Shymanskyy 9:7369ec77a3ea 271 add(str);
Volodymyr Shymanskyy 9:7369ec77a3ea 272 }
Volodymyr Shymanskyy 9:7369ec77a3ea 273
vshymanskyy 0:58b20b438383 274 #ifndef BLYNK_NO_FLOAT
vshymanskyy 0:58b20b438383 275
Volodymyr Shymanskyy 9:7369ec77a3ea 276 inline
vshymanskyy 0:58b20b438383 277 void BlynkParam::add(float value)
vshymanskyy 0:58b20b438383 278 {
vshymanskyy 0:58b20b438383 279 char str[33];
vshymanskyy 0:58b20b438383 280 dtostrf(value, 5, 3, str);
vshymanskyy 0:58b20b438383 281 add(str);
vshymanskyy 0:58b20b438383 282 }
vshymanskyy 0:58b20b438383 283
Volodymyr Shymanskyy 9:7369ec77a3ea 284 inline
vshymanskyy 0:58b20b438383 285 void BlynkParam::add(double value)
vshymanskyy 0:58b20b438383 286 {
vshymanskyy 0:58b20b438383 287 char str[33];
Volodymyr Shymanskyy 13:ed6276c0afb7 288 dtostrf(value, 5, 7, str);
vshymanskyy 0:58b20b438383 289 add(str);
vshymanskyy 0:58b20b438383 290 }
vshymanskyy 0:58b20b438383 291 #endif
vshymanskyy 0:58b20b438383 292
vshymanskyy 0:58b20b438383 293 #else
vshymanskyy 0:58b20b438383 294
vshymanskyy 0:58b20b438383 295 #include <stdio.h>
vshymanskyy 0:58b20b438383 296
Volodymyr Shymanskyy 9:7369ec77a3ea 297 inline
vshymanskyy 0:58b20b438383 298 void BlynkParam::add(int value)
vshymanskyy 0:58b20b438383 299 {
vshymanskyy 0:58b20b438383 300 len += snprintf(buff+len, buff_size-len, "%i", value)+1;
vshymanskyy 0:58b20b438383 301 }
vshymanskyy 0:58b20b438383 302
Volodymyr Shymanskyy 9:7369ec77a3ea 303 inline
vshymanskyy 0:58b20b438383 304 void BlynkParam::add(unsigned int value)
vshymanskyy 0:58b20b438383 305 {
vshymanskyy 0:58b20b438383 306 len += snprintf(buff+len, buff_size-len, "%u", value)+1;
vshymanskyy 0:58b20b438383 307 }
vshymanskyy 0:58b20b438383 308
Volodymyr Shymanskyy 9:7369ec77a3ea 309 inline
vshymanskyy 0:58b20b438383 310 void BlynkParam::add(long value)
vshymanskyy 0:58b20b438383 311 {
vshymanskyy 0:58b20b438383 312 len += snprintf(buff+len, buff_size-len, "%li", value)+1;
vshymanskyy 0:58b20b438383 313 }
vshymanskyy 0:58b20b438383 314
Volodymyr Shymanskyy 9:7369ec77a3ea 315 inline
vshymanskyy 0:58b20b438383 316 void BlynkParam::add(unsigned long value)
vshymanskyy 0:58b20b438383 317 {
vshymanskyy 0:58b20b438383 318 len += snprintf(buff+len, buff_size-len, "%lu", value)+1;
vshymanskyy 0:58b20b438383 319 }
vshymanskyy 0:58b20b438383 320
Volodymyr Shymanskyy 9:7369ec77a3ea 321 inline
Volodymyr Shymanskyy 9:7369ec77a3ea 322 void BlynkParam::add(long long value)
Volodymyr Shymanskyy 9:7369ec77a3ea 323 {
Volodymyr Shymanskyy 9:7369ec77a3ea 324 len += snprintf(buff+len, buff_size-len, "%lli", value)+1;
Volodymyr Shymanskyy 9:7369ec77a3ea 325 }
Volodymyr Shymanskyy 9:7369ec77a3ea 326
Volodymyr Shymanskyy 9:7369ec77a3ea 327 inline
Volodymyr Shymanskyy 9:7369ec77a3ea 328 void BlynkParam::add(unsigned long long value)
Volodymyr Shymanskyy 9:7369ec77a3ea 329 {
Volodymyr Shymanskyy 9:7369ec77a3ea 330 len += snprintf(buff+len, buff_size-len, "%llu", value)+1;
Volodymyr Shymanskyy 9:7369ec77a3ea 331 }
Volodymyr Shymanskyy 9:7369ec77a3ea 332
vshymanskyy 0:58b20b438383 333 #ifndef BLYNK_NO_FLOAT
vshymanskyy 0:58b20b438383 334
vshymanskyy 0:58b20b438383 335 #if defined(ESP8266)
vshymanskyy 0:58b20b438383 336
Volodymyr Shymanskyy 9:7369ec77a3ea 337 extern char* dtostrf_internal(double number, signed char width, unsigned char prec, char *s);
vshymanskyy 0:58b20b438383 338
Volodymyr Shymanskyy 9:7369ec77a3ea 339 inline
vshymanskyy 0:58b20b438383 340 void BlynkParam::add(float value)
vshymanskyy 0:58b20b438383 341 {
vshymanskyy 0:58b20b438383 342 char str[33];
vshymanskyy 0:58b20b438383 343 dtostrf_internal(value, 5, 3, str);
vshymanskyy 0:58b20b438383 344 add(str);
vshymanskyy 0:58b20b438383 345 }
vshymanskyy 0:58b20b438383 346
Volodymyr Shymanskyy 9:7369ec77a3ea 347 inline
vshymanskyy 0:58b20b438383 348 void BlynkParam::add(double value)
vshymanskyy 0:58b20b438383 349 {
vshymanskyy 0:58b20b438383 350 char str[33];
Volodymyr Shymanskyy 13:ed6276c0afb7 351 dtostrf_internal(value, 5, 7, str);
vshymanskyy 0:58b20b438383 352 add(str);
vshymanskyy 0:58b20b438383 353 }
vshymanskyy 0:58b20b438383 354
vshymanskyy 0:58b20b438383 355 #else
vshymanskyy 0:58b20b438383 356
Volodymyr Shymanskyy 9:7369ec77a3ea 357 inline
vshymanskyy 0:58b20b438383 358 void BlynkParam::add(float value)
vshymanskyy 0:58b20b438383 359 {
vshymanskyy 0:58b20b438383 360 len += snprintf(buff+len, buff_size-len, "%2.3f", value)+1;
vshymanskyy 0:58b20b438383 361 }
vshymanskyy 0:58b20b438383 362
Volodymyr Shymanskyy 9:7369ec77a3ea 363 inline
vshymanskyy 0:58b20b438383 364 void BlynkParam::add(double value)
vshymanskyy 0:58b20b438383 365 {
Volodymyr Shymanskyy 13:ed6276c0afb7 366 len += snprintf(buff+len, buff_size-len, "%2.7f", value)+1;
vshymanskyy 0:58b20b438383 367 }
vshymanskyy 0:58b20b438383 368
vshymanskyy 0:58b20b438383 369 #endif
vshymanskyy 0:58b20b438383 370
vshymanskyy 0:58b20b438383 371 #endif
vshymanskyy 0:58b20b438383 372
vshymanskyy 0:58b20b438383 373 #endif
vshymanskyy 0:58b20b438383 374
vshymanskyy 0:58b20b438383 375
vshymanskyy 0:58b20b438383 376 #endif