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:
Fri Jan 26 22:18:19 2018 +0000
Revision:
22:e1d3971fd902
Parent:
16:6d9bf99b263c
Fix BlynkSystemInit for MBED

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
Volodymyr Shymanskyy 16:6d9bf99b263c 13 #if !(defined(LINUX) || defined(__MBED__))
vshymanskyy 0:58b20b438383 14 #define BLYNK_USE_PRINT_CLASS
vshymanskyy 0:58b20b438383 15 #endif
vshymanskyy 0:58b20b438383 16
Volodymyr Shymanskyy 9:7369ec77a3ea 17 #include <Blynk/BlynkWidgetBase.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
Volodymyr Shymanskyy 9:7369ec77a3ea 27 : public BlynkWidgetBase
vshymanskyy 0:58b20b438383 28 #ifdef BLYNK_USE_PRINT_CLASS
Volodymyr Shymanskyy 9:7369ec77a3ea 29 , public Print
vshymanskyy 0:58b20b438383 30 #endif
vshymanskyy 0:58b20b438383 31 {
vshymanskyy 0:58b20b438383 32 public:
Volodymyr Shymanskyy 9:7369ec77a3ea 33 WidgetTerminal(uint8_t vPin)
Volodymyr Shymanskyy 9:7369ec77a3ea 34 : BlynkWidgetBase(vPin)
Volodymyr Shymanskyy 9:7369ec77a3ea 35 , mOutQty(0)
vshymanskyy 0:58b20b438383 36 {}
vshymanskyy 0:58b20b438383 37
Volodymyr Shymanskyy 9:7369ec77a3ea 38 //virtual ~WidgetTerminal() {}
Volodymyr Shymanskyy 9:7369ec77a3ea 39
vshymanskyy 0:58b20b438383 40 virtual size_t write(uint8_t byte) {
vshymanskyy 0:58b20b438383 41 mOutBuf[mOutQty++] = byte;
vshymanskyy 0:58b20b438383 42 if (mOutQty >= sizeof(mOutBuf)) {
vshymanskyy 0:58b20b438383 43 flush();
vshymanskyy 0:58b20b438383 44 }
vshymanskyy 0:58b20b438383 45 return 1;
vshymanskyy 0:58b20b438383 46 }
vshymanskyy 0:58b20b438383 47
vshymanskyy 0:58b20b438383 48 void flush() {
vshymanskyy 0:58b20b438383 49 if (mOutQty) {
vshymanskyy 0:58b20b438383 50 Blynk.virtualWriteBinary(mPin, mOutBuf, mOutQty);
vshymanskyy 0:58b20b438383 51 mOutQty = 0;
vshymanskyy 0:58b20b438383 52 }
vshymanskyy 0:58b20b438383 53 }
vshymanskyy 0:58b20b438383 54
vshymanskyy 0:58b20b438383 55 #ifdef BLYNK_USE_PRINT_CLASS
vshymanskyy 0:58b20b438383 56
vshymanskyy 0:58b20b438383 57 using Print::write;
vshymanskyy 0:58b20b438383 58
vshymanskyy 0:58b20b438383 59 size_t write(const void* buff, size_t len) {
vshymanskyy 0:58b20b438383 60 return write((char*)buff, len);
vshymanskyy 0:58b20b438383 61 }
vshymanskyy 0:58b20b438383 62
vshymanskyy 0:58b20b438383 63 #else
vshymanskyy 0:58b20b438383 64
vshymanskyy 0:58b20b438383 65 size_t write(const void* buff, size_t len) {
vshymanskyy 0:58b20b438383 66 uint8_t* buf = (uint8_t*)buff;
vshymanskyy 0:58b20b438383 67 while (len--) {
vshymanskyy 0:58b20b438383 68 write(*buf++);
vshymanskyy 0:58b20b438383 69 }
vshymanskyy 0:58b20b438383 70 return len;
vshymanskyy 0:58b20b438383 71 }
vshymanskyy 0:58b20b438383 72
vshymanskyy 0:58b20b438383 73 size_t write(const char* str) {
vshymanskyy 0:58b20b438383 74 return write(str, strlen(str));
vshymanskyy 0:58b20b438383 75 }
vshymanskyy 0:58b20b438383 76
vshymanskyy 0:58b20b438383 77 #endif
vshymanskyy 0:58b20b438383 78
vshymanskyy 0:58b20b438383 79 private:
Volodymyr Shymanskyy 13:ed6276c0afb7 80 uint8_t mOutBuf[64];
vshymanskyy 0:58b20b438383 81 uint8_t mOutQty;
vshymanskyy 0:58b20b438383 82 };
vshymanskyy 0:58b20b438383 83
vshymanskyy 0:58b20b438383 84 #endif