Fix subscribe message id

Remove pointless &client arg to default constructor
This commit is contained in:
Nicholas O'Leary
2013-01-10 20:15:26 +00:00
parent 0d850cd8d7
commit 25a2af4238
2 changed files with 14 additions and 8 deletions

View File

@ -7,8 +7,8 @@
#include "PubSubClient.h" #include "PubSubClient.h"
#include <string.h> #include <string.h>
PubSubClient::PubSubClient(Client& client) { PubSubClient::PubSubClient() {
this->_client = &client; this->_client = NULL;
} }
PubSubClient::PubSubClient(uint8_t *ip, uint16_t port, void (*callback)(char*,uint8_t*,unsigned int), Client& client) { PubSubClient::PubSubClient(uint8_t *ip, uint16_t port, void (*callback)(char*,uint8_t*,unsigned int), Client& client) {
@ -16,6 +16,7 @@ PubSubClient::PubSubClient(uint8_t *ip, uint16_t port, void (*callback)(char*,ui
this->callback = callback; this->callback = callback;
this->ip = ip; this->ip = ip;
this->port = port; this->port = port;
this->domain = NULL;
} }
PubSubClient::PubSubClient(char* domain, uint16_t port, void (*callback)(char*,uint8_t*,unsigned int), Client& client) { PubSubClient::PubSubClient(char* domain, uint16_t port, void (*callback)(char*,uint8_t*,unsigned int), Client& client) {
@ -293,13 +294,13 @@ boolean PubSubClient::write(uint8_t header, uint8_t* buf, uint16_t length) {
boolean PubSubClient::subscribe(char* topic) { boolean PubSubClient::subscribe(char* topic) {
if (connected()) { if (connected()) {
// Leave room in the buffer for header and variable length field // Leave room in the buffer for header and variable length field
uint16_t length = 7; uint16_t length = 5;
nextMsgId++; nextMsgId++;
if (nextMsgId == 0) { if (nextMsgId == 0) {
nextMsgId = 1; nextMsgId = 1;
} }
buffer[0] = (nextMsgId >> 8); buffer[length++] = (nextMsgId >> 8);
buffer[1] = (nextMsgId & 0xFF); buffer[length++] = (nextMsgId & 0xFF);
length = writeString(topic, buffer,length); length = writeString(topic, buffer,length);
buffer[length++] = 0; // Only do QoS 0 subs buffer[length++] = 0; // Only do QoS 0 subs
return write(MQTTSUBSCRIBE|MQTTQOS1,buffer,length-5); return write(MQTTSUBSCRIBE|MQTTQOS1,buffer,length-5);
@ -330,8 +331,13 @@ uint16_t PubSubClient::writeString(char* string, uint8_t* buf, uint16_t pos) {
boolean PubSubClient::connected() { boolean PubSubClient::connected() {
int rc = (int)_client->connected(); boolean rc;
if (!rc) _client->stop(); if (_client == NULL ) {
rc = false;
} else {
rc = (int)_client->connected();
if (!rc) _client->stop();
}
return rc; return rc;
} }

View File

@ -54,7 +54,7 @@ private:
char* domain; char* domain;
uint16_t port; uint16_t port;
public: public:
PubSubClient(Client& client); PubSubClient();
PubSubClient(uint8_t *, uint16_t, void(*)(char*,uint8_t*,unsigned int),Client& client); PubSubClient(uint8_t *, uint16_t, void(*)(char*,uint8_t*,unsigned int),Client& client);
PubSubClient(char*, uint16_t, void(*)(char*,uint8_t*,unsigned int),Client& client); PubSubClient(char*, uint16_t, void(*)(char*,uint8_t*,unsigned int),Client& client);
boolean connect(char *); boolean connect(char *);