From f328d0849fbce2fccc3da750d87fcefc8de17c91 Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Wed, 25 Jan 2012 14:36:16 +0100 Subject: [PATCH] Added DNS support. --- PubSubClient/PubSubClient.cpp | 23 ++++++++++++++++++++--- PubSubClient/PubSubClient.h | 2 ++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/PubSubClient/PubSubClient.cpp b/PubSubClient/PubSubClient.cpp index bc76edc..66fc1a3 100644 --- a/PubSubClient/PubSubClient.cpp +++ b/PubSubClient/PubSubClient.cpp @@ -5,8 +5,8 @@ */ #include "PubSubClient.h" -#include "EthernetClient.h" -#include "string.h" +#include +#include PubSubClient::PubSubClient() : _client() { } @@ -16,13 +16,30 @@ PubSubClient::PubSubClient(uint8_t *ip, uint16_t port, void (*callback)(char*,ui this->ip = ip; this->port = port; } + +PubSubClient::PubSubClient(String domain, uint16_t port, void (*callback)(char*,uint8_t*,int)) : _client() { + this->callback = callback; + this->domain = domain; + this->port = port; +} + int PubSubClient::connect(char *id) { return connect(id,0,0,0,0); } int PubSubClient::connect(char *id, char* willTopic, uint8_t willQos, uint8_t willRetain, char* willMessage) { if (!connected()) { - if (_client.connect(this->ip, this->port)) { + int result = 0; + + if (domain != NULL) { + char c[40]; + this->domain.toCharArray(c, 40); + result = _client.connect(c, this->port); + } else { + result = _client.connect(this->ip, this->port); + } + + if (result) { nextMsgId = 1; uint8_t d[9] = {0x00,0x06,'M','Q','I','s','d','p',MQTTPROTOCOLVERSION}; uint8_t length = 0; diff --git a/PubSubClient/PubSubClient.h b/PubSubClient/PubSubClient.h index 74628e7..11adee2 100644 --- a/PubSubClient/PubSubClient.h +++ b/PubSubClient/PubSubClient.h @@ -45,10 +45,12 @@ private: int write(uint8_t header, uint8_t* buf, uint8_t length); uint8_t writeString(char* string, uint8_t* buf, uint8_t pos); uint8_t *ip; + String domain; uint16_t port; public: PubSubClient(); PubSubClient(uint8_t *, uint16_t, void(*)(char*,uint8_t*,int)); + PubSubClient(String, uint16_t, void(*)(char*,uint8_t*,int)); int connect(char *); int connect(char*, char*, uint8_t, uint8_t, char*); void disconnect();