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:
Sun Apr 09 14:50:30 2017 +0300
Revision:
13:ed6276c0afb7
Parent:
9:7369ec77a3ea
Child:
15:975b60f7a8ff
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 {
vshymanskyy 0:58b20b438383 180 add(str, strlen(str)+1);
vshymanskyy 0:58b20b438383 181 }
vshymanskyy 0:58b20b438383 182
vshymanskyy 0:58b20b438383 183 #if defined(ARDUINO) || defined(SPARK) || defined(PARTICLE)
vshymanskyy 0:58b20b438383 184 inline
vshymanskyy 0:58b20b438383 185 void BlynkParam::add(const String& str)
vshymanskyy 0:58b20b438383 186 {
Volodymyr Shymanskyy 9:7369ec77a3ea 187 #if defined(ARDUINO_AVR_DIGISPARK) \
Volodymyr Shymanskyy 9:7369ec77a3ea 188 || defined(__ARDUINO_X86__) \
Volodymyr Shymanskyy 9:7369ec77a3ea 189 || defined(__RFduino__)
Volodymyr Shymanskyy 9:7369ec77a3ea 190
vshymanskyy 0:58b20b438383 191 size_t len = str.length()+1;
vshymanskyy 0:58b20b438383 192 char buff[len];
vshymanskyy 0:58b20b438383 193 const_cast<String&>(str).toCharArray(buff, len);
Volodymyr Shymanskyy 9:7369ec77a3ea 194 add(buff, len);
vshymanskyy 0:58b20b438383 195 #else
Volodymyr Shymanskyy 9:7369ec77a3ea 196 add(str.c_str());
vshymanskyy 0:58b20b438383 197 #endif
vshymanskyy 0:58b20b438383 198 }
vshymanskyy 0:58b20b438383 199
Volodymyr Shymanskyy 9:7369ec77a3ea 200 #if defined(BLYNK_HAS_PROGMEM)
Volodymyr Shymanskyy 9:7369ec77a3ea 201
vshymanskyy 0:58b20b438383 202 inline
Volodymyr Shymanskyy 9:7369ec77a3ea 203 void BlynkParam::add(const __FlashStringHelper* ifsh)
vshymanskyy 0:58b20b438383 204 {
Volodymyr Shymanskyy 9:7369ec77a3ea 205 PGM_P p = reinterpret_cast<PGM_P>(ifsh);
Volodymyr Shymanskyy 9:7369ec77a3ea 206 size_t l = strlen_P(p) + 1;
Volodymyr Shymanskyy 9:7369ec77a3ea 207 if (len + l > buff_size)
Volodymyr Shymanskyy 9:7369ec77a3ea 208 return;
Volodymyr Shymanskyy 9:7369ec77a3ea 209 memcpy_P(buff+len, p, l);
Volodymyr Shymanskyy 9:7369ec77a3ea 210 len += l;
Volodymyr Shymanskyy 9:7369ec77a3ea 211 buff[len] = '\0';
vshymanskyy 0:58b20b438383 212 }
Volodymyr Shymanskyy 9:7369ec77a3ea 213
Volodymyr Shymanskyy 9:7369ec77a3ea 214 #endif
Volodymyr Shymanskyy 9:7369ec77a3ea 215
vshymanskyy 0:58b20b438383 216 #endif
vshymanskyy 0:58b20b438383 217
vshymanskyy 0:58b20b438383 218 #if defined(__AVR__) || defined (ARDUINO_ARCH_ARC32)
vshymanskyy 0:58b20b438383 219
vshymanskyy 0:58b20b438383 220 #include <stdlib.h>
vshymanskyy 0:58b20b438383 221
Volodymyr Shymanskyy 9:7369ec77a3ea 222 inline
vshymanskyy 0:58b20b438383 223 void BlynkParam::add(int value)
vshymanskyy 0:58b20b438383 224 {
vshymanskyy 0:58b20b438383 225 char str[2 + 8 * sizeof(value)];
vshymanskyy 0:58b20b438383 226 itoa(value, str, 10);
vshymanskyy 0:58b20b438383 227 add(str);
vshymanskyy 0:58b20b438383 228 }
vshymanskyy 0:58b20b438383 229
Volodymyr Shymanskyy 9:7369ec77a3ea 230 inline
vshymanskyy 0:58b20b438383 231 void BlynkParam::add(unsigned int value)
vshymanskyy 0:58b20b438383 232 {
vshymanskyy 0:58b20b438383 233 char str[1 + 8 * sizeof(value)];
vshymanskyy 0:58b20b438383 234 utoa(value, str, 10);
vshymanskyy 0:58b20b438383 235 add(str);
vshymanskyy 0:58b20b438383 236 }
vshymanskyy 0:58b20b438383 237
Volodymyr Shymanskyy 9:7369ec77a3ea 238 inline
vshymanskyy 0:58b20b438383 239 void BlynkParam::add(long value)
vshymanskyy 0:58b20b438383 240 {
vshymanskyy 0:58b20b438383 241 char str[2 + 8 * sizeof(value)];
vshymanskyy 0:58b20b438383 242 ltoa(value, str, 10);
vshymanskyy 0:58b20b438383 243 add(str);
vshymanskyy 0:58b20b438383 244 }
vshymanskyy 0:58b20b438383 245
Volodymyr Shymanskyy 9:7369ec77a3ea 246 inline
vshymanskyy 0:58b20b438383 247 void BlynkParam::add(unsigned long value)
vshymanskyy 0:58b20b438383 248 {
vshymanskyy 0:58b20b438383 249 char str[1 + 8 * sizeof(value)];
vshymanskyy 0:58b20b438383 250 ultoa(value, str, 10);
vshymanskyy 0:58b20b438383 251 add(str);
vshymanskyy 0:58b20b438383 252 }
vshymanskyy 0:58b20b438383 253
Volodymyr Shymanskyy 9:7369ec77a3ea 254 inline
Volodymyr Shymanskyy 9:7369ec77a3ea 255 void BlynkParam::add(long long value) // TODO: this currently adds just a long
Volodymyr Shymanskyy 9:7369ec77a3ea 256 {
Volodymyr Shymanskyy 9:7369ec77a3ea 257 char str[2 + 8 * sizeof(value)];
Volodymyr Shymanskyy 9:7369ec77a3ea 258 ltoa(value, str, 10);
Volodymyr Shymanskyy 9:7369ec77a3ea 259 add(str);
Volodymyr Shymanskyy 9:7369ec77a3ea 260 }
Volodymyr Shymanskyy 9:7369ec77a3ea 261
Volodymyr Shymanskyy 9:7369ec77a3ea 262 inline
Volodymyr Shymanskyy 9:7369ec77a3ea 263 void BlynkParam::add(unsigned long long value) // TODO: this currently adds just a long
Volodymyr Shymanskyy 9:7369ec77a3ea 264 {
Volodymyr Shymanskyy 9:7369ec77a3ea 265 char str[1 + 8 * sizeof(value)];
Volodymyr Shymanskyy 9:7369ec77a3ea 266 ultoa(value, str, 10);
Volodymyr Shymanskyy 9:7369ec77a3ea 267 add(str);
Volodymyr Shymanskyy 9:7369ec77a3ea 268 }
Volodymyr Shymanskyy 9:7369ec77a3ea 269
vshymanskyy 0:58b20b438383 270 #ifndef BLYNK_NO_FLOAT
vshymanskyy 0:58b20b438383 271
Volodymyr Shymanskyy 9:7369ec77a3ea 272 inline
vshymanskyy 0:58b20b438383 273 void BlynkParam::add(float value)
vshymanskyy 0:58b20b438383 274 {
vshymanskyy 0:58b20b438383 275 char str[33];
vshymanskyy 0:58b20b438383 276 dtostrf(value, 5, 3, str);
vshymanskyy 0:58b20b438383 277 add(str);
vshymanskyy 0:58b20b438383 278 }
vshymanskyy 0:58b20b438383 279
Volodymyr Shymanskyy 9:7369ec77a3ea 280 inline
vshymanskyy 0:58b20b438383 281 void BlynkParam::add(double value)
vshymanskyy 0:58b20b438383 282 {
vshymanskyy 0:58b20b438383 283 char str[33];
Volodymyr Shymanskyy 13:ed6276c0afb7 284 dtostrf(value, 5, 7, str);
vshymanskyy 0:58b20b438383 285 add(str);
vshymanskyy 0:58b20b438383 286 }
vshymanskyy 0:58b20b438383 287 #endif
vshymanskyy 0:58b20b438383 288
vshymanskyy 0:58b20b438383 289 #else
vshymanskyy 0:58b20b438383 290
vshymanskyy 0:58b20b438383 291 #include <stdio.h>
vshymanskyy 0:58b20b438383 292
Volodymyr Shymanskyy 9:7369ec77a3ea 293 inline
vshymanskyy 0:58b20b438383 294 void BlynkParam::add(int value)
vshymanskyy 0:58b20b438383 295 {
vshymanskyy 0:58b20b438383 296 len += snprintf(buff+len, buff_size-len, "%i", value)+1;
vshymanskyy 0:58b20b438383 297 }
vshymanskyy 0:58b20b438383 298
Volodymyr Shymanskyy 9:7369ec77a3ea 299 inline
vshymanskyy 0:58b20b438383 300 void BlynkParam::add(unsigned int value)
vshymanskyy 0:58b20b438383 301 {
vshymanskyy 0:58b20b438383 302 len += snprintf(buff+len, buff_size-len, "%u", value)+1;
vshymanskyy 0:58b20b438383 303 }
vshymanskyy 0:58b20b438383 304
Volodymyr Shymanskyy 9:7369ec77a3ea 305 inline
vshymanskyy 0:58b20b438383 306 void BlynkParam::add(long value)
vshymanskyy 0:58b20b438383 307 {
vshymanskyy 0:58b20b438383 308 len += snprintf(buff+len, buff_size-len, "%li", value)+1;
vshymanskyy 0:58b20b438383 309 }
vshymanskyy 0:58b20b438383 310
Volodymyr Shymanskyy 9:7369ec77a3ea 311 inline
vshymanskyy 0:58b20b438383 312 void BlynkParam::add(unsigned long value)
vshymanskyy 0:58b20b438383 313 {
vshymanskyy 0:58b20b438383 314 len += snprintf(buff+len, buff_size-len, "%lu", value)+1;
vshymanskyy 0:58b20b438383 315 }
vshymanskyy 0:58b20b438383 316
Volodymyr Shymanskyy 9:7369ec77a3ea 317 inline
Volodymyr Shymanskyy 9:7369ec77a3ea 318 void BlynkParam::add(long long value)
Volodymyr Shymanskyy 9:7369ec77a3ea 319 {
Volodymyr Shymanskyy 9:7369ec77a3ea 320 len += snprintf(buff+len, buff_size-len, "%lli", value)+1;
Volodymyr Shymanskyy 9:7369ec77a3ea 321 }
Volodymyr Shymanskyy 9:7369ec77a3ea 322
Volodymyr Shymanskyy 9:7369ec77a3ea 323 inline
Volodymyr Shymanskyy 9:7369ec77a3ea 324 void BlynkParam::add(unsigned long long value)
Volodymyr Shymanskyy 9:7369ec77a3ea 325 {
Volodymyr Shymanskyy 9:7369ec77a3ea 326 len += snprintf(buff+len, buff_size-len, "%llu", value)+1;
Volodymyr Shymanskyy 9:7369ec77a3ea 327 }
Volodymyr Shymanskyy 9:7369ec77a3ea 328
vshymanskyy 0:58b20b438383 329 #ifndef BLYNK_NO_FLOAT
vshymanskyy 0:58b20b438383 330
vshymanskyy 0:58b20b438383 331 #if defined(ESP8266)
vshymanskyy 0:58b20b438383 332
Volodymyr Shymanskyy 9:7369ec77a3ea 333 extern char* dtostrf_internal(double number, signed char width, unsigned char prec, char *s);
vshymanskyy 0:58b20b438383 334
Volodymyr Shymanskyy 9:7369ec77a3ea 335 inline
vshymanskyy 0:58b20b438383 336 void BlynkParam::add(float value)
vshymanskyy 0:58b20b438383 337 {
vshymanskyy 0:58b20b438383 338 char str[33];
vshymanskyy 0:58b20b438383 339 dtostrf_internal(value, 5, 3, str);
vshymanskyy 0:58b20b438383 340 add(str);
vshymanskyy 0:58b20b438383 341 }
vshymanskyy 0:58b20b438383 342
Volodymyr Shymanskyy 9:7369ec77a3ea 343 inline
vshymanskyy 0:58b20b438383 344 void BlynkParam::add(double value)
vshymanskyy 0:58b20b438383 345 {
vshymanskyy 0:58b20b438383 346 char str[33];
Volodymyr Shymanskyy 13:ed6276c0afb7 347 dtostrf_internal(value, 5, 7, str);
vshymanskyy 0:58b20b438383 348 add(str);
vshymanskyy 0:58b20b438383 349 }
vshymanskyy 0:58b20b438383 350
vshymanskyy 0:58b20b438383 351 #else
vshymanskyy 0:58b20b438383 352
Volodymyr Shymanskyy 9:7369ec77a3ea 353 inline
vshymanskyy 0:58b20b438383 354 void BlynkParam::add(float value)
vshymanskyy 0:58b20b438383 355 {
vshymanskyy 0:58b20b438383 356 len += snprintf(buff+len, buff_size-len, "%2.3f", value)+1;
vshymanskyy 0:58b20b438383 357 }
vshymanskyy 0:58b20b438383 358
Volodymyr Shymanskyy 9:7369ec77a3ea 359 inline
vshymanskyy 0:58b20b438383 360 void BlynkParam::add(double value)
vshymanskyy 0:58b20b438383 361 {
Volodymyr Shymanskyy 13:ed6276c0afb7 362 len += snprintf(buff+len, buff_size-len, "%2.7f", value)+1;
vshymanskyy 0:58b20b438383 363 }
vshymanskyy 0:58b20b438383 364
vshymanskyy 0:58b20b438383 365 #endif
vshymanskyy 0:58b20b438383 366
vshymanskyy 0:58b20b438383 367 #endif
vshymanskyy 0:58b20b438383 368
vshymanskyy 0:58b20b438383 369 #endif
vshymanskyy 0:58b20b438383 370
vshymanskyy 0:58b20b438383 371
vshymanskyy 0:58b20b438383 372 #endif