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:
Wed Oct 12 09:18:39 2016 +0300
Revision:
7:8879692d4e6c
Parent:
0:58b20b438383
Child:
9:7369ec77a3ea
Update library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vshymanskyy 0:58b20b438383 1 /**
vshymanskyy 0:58b20b438383 2 * @file WidgetTerminal.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
vshymanskyy 0:58b20b438383 8 */
vshymanskyy 0:58b20b438383 9
vshymanskyy 0:58b20b438383 10 #ifndef WidgetTerminal_h
vshymanskyy 0:58b20b438383 11 #define WidgetTerminal_h
vshymanskyy 0:58b20b438383 12
vshymanskyy 0:58b20b438383 13 #if !(defined(LINUX) || defined(MBED_LIBRARY_VERSION))
vshymanskyy 0:58b20b438383 14 #define BLYNK_USE_PRINT_CLASS
vshymanskyy 0:58b20b438383 15 #endif
vshymanskyy 0:58b20b438383 16
vshymanskyy 0:58b20b438383 17 #include <Blynk/BlynkApi.h>
vshymanskyy 0:58b20b438383 18
vshymanskyy 0:58b20b438383 19 #ifdef BLYNK_USE_PRINT_CLASS
vshymanskyy 0:58b20b438383 20 #if !(defined(SPARK) || defined(PARTICLE) || (PLATFORM_ID==88) || defined(ARDUINO_RedBear_Duo)) // 88 -> RBL Duo
vshymanskyy 0:58b20b438383 21 // On Particle this is auto-included
vshymanskyy 0:58b20b438383 22 #include <Print.h>
vshymanskyy 0:58b20b438383 23 #endif
vshymanskyy 0:58b20b438383 24 #endif
vshymanskyy 0:58b20b438383 25
vshymanskyy 0:58b20b438383 26 class WidgetTerminal
vshymanskyy 0:58b20b438383 27 #ifdef BLYNK_USE_PRINT_CLASS
vshymanskyy 0:58b20b438383 28 : public Print
vshymanskyy 0:58b20b438383 29 #endif
vshymanskyy 0:58b20b438383 30 {
vshymanskyy 0:58b20b438383 31 public:
vshymanskyy 0:58b20b438383 32 WidgetTerminal(int vPin)
vshymanskyy 0:58b20b438383 33 : mPin(vPin), mOutQty(0)
vshymanskyy 0:58b20b438383 34 {}
vshymanskyy 0:58b20b438383 35
vshymanskyy 0:58b20b438383 36 virtual size_t write(uint8_t byte) {
vshymanskyy 0:58b20b438383 37 mOutBuf[mOutQty++] = byte;
vshymanskyy 0:58b20b438383 38 if (mOutQty >= sizeof(mOutBuf)) {
vshymanskyy 0:58b20b438383 39 flush();
vshymanskyy 0:58b20b438383 40 }
vshymanskyy 0:58b20b438383 41 return 1;
vshymanskyy 0:58b20b438383 42 }
vshymanskyy 0:58b20b438383 43
vshymanskyy 0:58b20b438383 44 void flush() {
vshymanskyy 0:58b20b438383 45 if (mOutQty) {
vshymanskyy 0:58b20b438383 46 Blynk.virtualWriteBinary(mPin, mOutBuf, mOutQty);
vshymanskyy 0:58b20b438383 47 mOutQty = 0;
vshymanskyy 0:58b20b438383 48 }
vshymanskyy 0:58b20b438383 49 }
vshymanskyy 0:58b20b438383 50
vshymanskyy 0:58b20b438383 51 #ifdef BLYNK_USE_PRINT_CLASS
vshymanskyy 0:58b20b438383 52
vshymanskyy 0:58b20b438383 53 using Print::write;
vshymanskyy 0:58b20b438383 54
vshymanskyy 0:58b20b438383 55 size_t write(const void* buff, size_t len) {
vshymanskyy 0:58b20b438383 56 return write((char*)buff, len);
vshymanskyy 0:58b20b438383 57 }
vshymanskyy 0:58b20b438383 58
vshymanskyy 0:58b20b438383 59 #else
vshymanskyy 0:58b20b438383 60
vshymanskyy 0:58b20b438383 61 size_t write(const void* buff, size_t len) {
vshymanskyy 0:58b20b438383 62 uint8_t* buf = (uint8_t*)buff;
vshymanskyy 0:58b20b438383 63 while (len--) {
vshymanskyy 0:58b20b438383 64 write(*buf++);
vshymanskyy 0:58b20b438383 65 }
vshymanskyy 0:58b20b438383 66 return len;
vshymanskyy 0:58b20b438383 67 }
vshymanskyy 0:58b20b438383 68
vshymanskyy 0:58b20b438383 69 size_t write(const char* str) {
vshymanskyy 0:58b20b438383 70 return write(str, strlen(str));
vshymanskyy 0:58b20b438383 71 }
vshymanskyy 0:58b20b438383 72
vshymanskyy 0:58b20b438383 73 #endif
vshymanskyy 0:58b20b438383 74
vshymanskyy 0:58b20b438383 75 private:
vshymanskyy 0:58b20b438383 76 uint8_t mPin;
Volodymyr Shymanskyy 7:8879692d4e6c 77 uint8_t mOutBuf[BLYNK_MAX_SENDBYTES];
vshymanskyy 0:58b20b438383 78 uint8_t mOutQty;
vshymanskyy 0:58b20b438383 79 };
vshymanskyy 0:58b20b438383 80
vshymanskyy 0:58b20b438383 81 #endif