p kj
/
LPC824-BlynkWeatherstation
Microduino
Fork of Io_moon by
Diff: Blynk_v0_3_7/Blynk/WidgetTerminal.h
- Revision:
- 0:740c1eb2df13
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Blynk_v0_3_7/Blynk/WidgetTerminal.h Thu Jun 23 11:16:14 2016 +0000 @@ -0,0 +1,82 @@ +/** + * @file WidgetTerminal.h + * @author Volodymyr Shymanskyy + * @license This project is released under the MIT License (MIT) + * @copyright Copyright (c) 2015 Volodymyr Shymanskyy + * @date Jan 2015 + * @brief + */ + +#ifndef WidgetTerminal_h +#define WidgetTerminal_h + +#if !(defined(LINUX) || defined(MBED_LIBRARY_VERSION)) + #define BLYNK_USE_PRINT_CLASS +#endif + +#include <Blynk/BlynkApi.h> + +#ifdef BLYNK_USE_PRINT_CLASS + #if !(defined(SPARK) || defined(PARTICLE) || (PLATFORM_ID==88) || defined(ARDUINO_RedBear_Duo)) // 88 -> RBL Duo + // On Particle this is auto-included + #include <Print.h> + #endif +#endif + +class WidgetTerminal +#ifdef BLYNK_USE_PRINT_CLASS + : public Print +#endif +{ +public: + WidgetTerminal(int vPin) + : mPin(vPin), mOutQty(0) + {} + + virtual size_t write(uint8_t byte) { + mOutBuf[mOutQty++] = byte; + if (mOutQty >= sizeof(mOutBuf)) { + flush(); + } + return 1; + } + + void flush() { + if (mOutQty) { + Blynk.virtualWriteBinary(mPin, mOutBuf, mOutQty); + mOutQty = 0; + } + } + +#ifdef BLYNK_USE_PRINT_CLASS + + using Print::write; + + size_t write(const void* buff, size_t len) { + return write((char*)buff, len); + } + +#else + + size_t write(const void* buff, size_t len) { + uint8_t* buf = (uint8_t*)buff; + while (len--) { + write(*buf++); + } + return len; + } + + size_t write(const char* str) { + return write(str, strlen(str)); + } + +#endif + +private: + uint8_t mPin; + uint8_t mOutBuf[32]; + uint8_t mOutQty; +}; + +#endif +