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:
17:b4022b9c54e4
Fix BlynkSystemInit for MBED

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Volodymyr Shymanskyy 17:b4022b9c54e4 1 /**
Volodymyr Shymanskyy 17:b4022b9c54e4 2 * @file BlynkSimpleSerial.h
Volodymyr Shymanskyy 17:b4022b9c54e4 3 * @author Volodymyr Shymanskyy
Volodymyr Shymanskyy 17:b4022b9c54e4 4 * @license This project is released under the MIT License (MIT)
Volodymyr Shymanskyy 17:b4022b9c54e4 5 * @copyright Copyright (c) 2015 Volodymyr Shymanskyy
Volodymyr Shymanskyy 17:b4022b9c54e4 6 * @date Jan 2015
Volodymyr Shymanskyy 17:b4022b9c54e4 7 * @brief
Volodymyr Shymanskyy 17:b4022b9c54e4 8 *
Volodymyr Shymanskyy 17:b4022b9c54e4 9 */
Volodymyr Shymanskyy 17:b4022b9c54e4 10
Volodymyr Shymanskyy 17:b4022b9c54e4 11 #ifndef BlynkSimpleSerial_h
Volodymyr Shymanskyy 17:b4022b9c54e4 12 #define BlynkSimpleSerial_h
Volodymyr Shymanskyy 17:b4022b9c54e4 13
Volodymyr Shymanskyy 17:b4022b9c54e4 14 #ifndef BLYNK_INFO_CONNECTION
Volodymyr Shymanskyy 17:b4022b9c54e4 15 #define BLYNK_INFO_CONNECTION "Serial"
Volodymyr Shymanskyy 17:b4022b9c54e4 16 #endif
Volodymyr Shymanskyy 17:b4022b9c54e4 17
Volodymyr Shymanskyy 17:b4022b9c54e4 18 #include <BlynkApiMbed.h>
Volodymyr Shymanskyy 17:b4022b9c54e4 19 #include <Blynk/BlynkProtocol.h>
Volodymyr Shymanskyy 17:b4022b9c54e4 20
Volodymyr Shymanskyy 17:b4022b9c54e4 21 class BlynkTransportSerial
Volodymyr Shymanskyy 17:b4022b9c54e4 22 {
Volodymyr Shymanskyy 17:b4022b9c54e4 23 public:
Volodymyr Shymanskyy 17:b4022b9c54e4 24 BlynkTransportSerial()
Volodymyr Shymanskyy 17:b4022b9c54e4 25 : serial(NULL), conn(0)
Volodymyr Shymanskyy 17:b4022b9c54e4 26 {}
Volodymyr Shymanskyy 17:b4022b9c54e4 27
Volodymyr Shymanskyy 17:b4022b9c54e4 28 // IP redirect not available
Volodymyr Shymanskyy 17:b4022b9c54e4 29 void begin(char BLYNK_UNUSED *h, uint16_t BLYNK_UNUSED p) {}
Volodymyr Shymanskyy 17:b4022b9c54e4 30
Volodymyr Shymanskyy 17:b4022b9c54e4 31 void begin(Serial& s) {
Volodymyr Shymanskyy 17:b4022b9c54e4 32 serial = &s;
Volodymyr Shymanskyy 17:b4022b9c54e4 33 }
Volodymyr Shymanskyy 17:b4022b9c54e4 34
Volodymyr Shymanskyy 17:b4022b9c54e4 35 bool connect() {
Volodymyr Shymanskyy 17:b4022b9c54e4 36 BLYNK_LOG1(BLYNK_F("Connecting..."));
Volodymyr Shymanskyy 17:b4022b9c54e4 37 return conn = true;
Volodymyr Shymanskyy 17:b4022b9c54e4 38 }
Volodymyr Shymanskyy 17:b4022b9c54e4 39 void disconnect() { conn = false; }
Volodymyr Shymanskyy 17:b4022b9c54e4 40
Volodymyr Shymanskyy 17:b4022b9c54e4 41 size_t read(void* buf, size_t len) {
Volodymyr Shymanskyy 17:b4022b9c54e4 42 return fread(buf, 1, len, *serial);
Volodymyr Shymanskyy 17:b4022b9c54e4 43 }
Volodymyr Shymanskyy 17:b4022b9c54e4 44 size_t write(const void* buf, size_t len) {
Volodymyr Shymanskyy 17:b4022b9c54e4 45 return fwrite(buf, 1, len, *serial);
Volodymyr Shymanskyy 17:b4022b9c54e4 46 }
Volodymyr Shymanskyy 17:b4022b9c54e4 47
Volodymyr Shymanskyy 17:b4022b9c54e4 48 bool connected() { return conn; }
Volodymyr Shymanskyy 17:b4022b9c54e4 49 int available() { return serial->readable(); }
Volodymyr Shymanskyy 17:b4022b9c54e4 50
Volodymyr Shymanskyy 17:b4022b9c54e4 51 protected:
Volodymyr Shymanskyy 17:b4022b9c54e4 52 Serial* serial;
Volodymyr Shymanskyy 17:b4022b9c54e4 53 bool conn;
Volodymyr Shymanskyy 17:b4022b9c54e4 54 };
Volodymyr Shymanskyy 17:b4022b9c54e4 55
Volodymyr Shymanskyy 17:b4022b9c54e4 56 class BlynkSerial
Volodymyr Shymanskyy 17:b4022b9c54e4 57 : public BlynkProtocol<BlynkTransportSerial>
Volodymyr Shymanskyy 17:b4022b9c54e4 58 {
Volodymyr Shymanskyy 17:b4022b9c54e4 59 typedef BlynkProtocol<BlynkTransportSerial> Base;
Volodymyr Shymanskyy 17:b4022b9c54e4 60 public:
Volodymyr Shymanskyy 17:b4022b9c54e4 61 BlynkSerial(BlynkTransportSerial& transp)
Volodymyr Shymanskyy 17:b4022b9c54e4 62 : Base(transp)
Volodymyr Shymanskyy 17:b4022b9c54e4 63 {}
Volodymyr Shymanskyy 17:b4022b9c54e4 64
Volodymyr Shymanskyy 17:b4022b9c54e4 65 void config(Serial& serial,
Volodymyr Shymanskyy 17:b4022b9c54e4 66 const char* auth)
Volodymyr Shymanskyy 17:b4022b9c54e4 67 {
Volodymyr Shymanskyy 17:b4022b9c54e4 68 Base::begin(auth);
Volodymyr Shymanskyy 17:b4022b9c54e4 69 this->conn.begin(serial);
Volodymyr Shymanskyy 17:b4022b9c54e4 70 }
Volodymyr Shymanskyy 17:b4022b9c54e4 71
Volodymyr Shymanskyy 17:b4022b9c54e4 72 void begin(Serial& serial, const char* auth) {
Volodymyr Shymanskyy 17:b4022b9c54e4 73 config(serial, auth);
Volodymyr Shymanskyy 17:b4022b9c54e4 74 while(this->connect() != true) {}
Volodymyr Shymanskyy 17:b4022b9c54e4 75 }
Volodymyr Shymanskyy 17:b4022b9c54e4 76 };
Volodymyr Shymanskyy 17:b4022b9c54e4 77
Volodymyr Shymanskyy 17:b4022b9c54e4 78 static BlynkTransportSerial _blynkTransport;
Volodymyr Shymanskyy 17:b4022b9c54e4 79 BlynkSerial Blynk(_blynkTransport);
Volodymyr Shymanskyy 17:b4022b9c54e4 80
Volodymyr Shymanskyy 17:b4022b9c54e4 81 #include <BlynkWidgets.h>
Volodymyr Shymanskyy 17:b4022b9c54e4 82
Volodymyr Shymanskyy 17:b4022b9c54e4 83 #endif