BlynkParticle.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /**
  2. * @file BlynkParticle.h
  3. * @author Volodymyr Shymanskyy
  4. * @license This project is released under the MIT License (MIT)
  5. * @copyright Copyright (c) 2015 Volodymyr Shymanskyy
  6. * @date Mar 2015
  7. * @brief
  8. *
  9. */
  10. #ifndef BlynkParticle_h
  11. #define BlynkParticle_h
  12. #define BLYNK_INFO_CONNECTION "CC3000"
  13. #include "BlynkApiParticle.h"
  14. #include "Blynk/BlynkProtocol.h"
  15. class BlynkTransportParticle
  16. {
  17. public:
  18. BlynkTransportParticle()
  19. : domain(NULL), port(0)
  20. {}
  21. void begin(IPAddress a, uint16_t p) {
  22. domain = NULL;
  23. port = p;
  24. addr = a;
  25. }
  26. void begin(const char* d, uint16_t p) {
  27. domain = d;
  28. port = p;
  29. }
  30. bool connect() {
  31. if (domain) {
  32. BLYNK_LOG("Connecting to %s:%d", domain, port);
  33. return (1 == client.connect(domain, port));
  34. } else {
  35. BLYNK_LOG("Connecting to %d.%d.%d.%d:%d", addr[0], addr[1], addr[2], addr[3], port);
  36. return (1 == client.connect(addr, port));
  37. }
  38. return 0;
  39. }
  40. void disconnect() { client.stop(); }
  41. size_t read(void* buf, size_t len) {
  42. return client.readBytes((char*)buf, len);
  43. }
  44. size_t write(const void* buf, size_t len) {
  45. return client.write((const uint8_t*)buf, len);
  46. }
  47. void flush() { client.flush(); }
  48. bool connected() { return client.connected(); }
  49. int available() { return client.available(); }
  50. private:
  51. TCPClient client;
  52. IPAddress addr;
  53. const char* domain;
  54. uint16_t port;
  55. };
  56. class BlynkParticle
  57. : public BlynkProtocol<BlynkTransportParticle>
  58. {
  59. typedef BlynkProtocol<BlynkTransportParticle> Base;
  60. public:
  61. BlynkParticle(BlynkTransportParticle& transp)
  62. : Base(transp)
  63. {}
  64. void begin( const char* auth,
  65. const char* domain = BLYNK_DEFAULT_DOMAIN,
  66. uint16_t port = BLYNK_DEFAULT_PORT)
  67. {
  68. Base::begin(auth);
  69. ::delay(1000); // Give the board time to settle
  70. this->conn.begin(domain, port);
  71. }
  72. void begin( const char* auth,
  73. IPAddress addr,
  74. uint16_t port)
  75. {
  76. Base::begin(auth);
  77. ::delay(1000); // Give the board time to settle
  78. this->conn.begin(addr, port);
  79. }
  80. private:
  81. };
  82. #endif