Added DNS support.

This commit is contained in:
Matteo Collina 2012-01-25 14:36:16 +01:00
parent e4fdabf4db
commit f328d0849f
2 changed files with 22 additions and 3 deletions

View File

@ -5,8 +5,8 @@
*/ */
#include "PubSubClient.h" #include "PubSubClient.h"
#include "EthernetClient.h" #include <EthernetClient.h>
#include "string.h" #include <string.h>
PubSubClient::PubSubClient() : _client() { PubSubClient::PubSubClient() : _client() {
} }
@ -16,13 +16,30 @@ PubSubClient::PubSubClient(uint8_t *ip, uint16_t port, void (*callback)(char*,ui
this->ip = ip; this->ip = ip;
this->port = port; 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) { int PubSubClient::connect(char *id) {
return connect(id,0,0,0,0); return connect(id,0,0,0,0);
} }
int PubSubClient::connect(char *id, char* willTopic, uint8_t willQos, uint8_t willRetain, char* willMessage) { int PubSubClient::connect(char *id, char* willTopic, uint8_t willQos, uint8_t willRetain, char* willMessage) {
if (!connected()) { 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; nextMsgId = 1;
uint8_t d[9] = {0x00,0x06,'M','Q','I','s','d','p',MQTTPROTOCOLVERSION}; uint8_t d[9] = {0x00,0x06,'M','Q','I','s','d','p',MQTTPROTOCOLVERSION};
uint8_t length = 0; uint8_t length = 0;

View File

@ -45,10 +45,12 @@ private:
int write(uint8_t header, uint8_t* buf, uint8_t length); int write(uint8_t header, uint8_t* buf, uint8_t length);
uint8_t writeString(char* string, uint8_t* buf, uint8_t pos); uint8_t writeString(char* string, uint8_t* buf, uint8_t pos);
uint8_t *ip; uint8_t *ip;
String domain;
uint16_t port; uint16_t port;
public: public:
PubSubClient(); PubSubClient();
PubSubClient(uint8_t *, uint16_t, void(*)(char*,uint8_t*,int)); 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 *);
int connect(char*, char*, uint8_t, uint8_t, char*); int connect(char*, char*, uint8_t, uint8_t, char*);
void disconnect(); void disconnect();