adds MQTT 3.1.1 connect packet changes
This commit is contained in:
parent
ea779b1daa
commit
a3925bdb6b
@ -26,7 +26,7 @@ void printBuffer(uint8_t *buffer, uint8_t len) {
|
|||||||
for (uint8_t i=0; i<len; i++) {
|
for (uint8_t i=0; i<len; i++) {
|
||||||
if (isprint(buffer[i]))
|
if (isprint(buffer[i]))
|
||||||
DEBUG_PRINTER.write(buffer[i]);
|
DEBUG_PRINTER.write(buffer[i]);
|
||||||
else
|
else
|
||||||
DEBUG_PRINTER.print(" ");
|
DEBUG_PRINTER.print(" ");
|
||||||
DEBUG_PRINTER.print(F(" [0x"));
|
DEBUG_PRINTER.print(F(" [0x"));
|
||||||
if (buffer[i] < 0x10)
|
if (buffer[i] < 0x10)
|
||||||
@ -96,25 +96,6 @@ Adafruit_MQTT::Adafruit_MQTT(const __FlashStringHelper *server, uint16_t port, c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Adafruit_MQTT::Adafruit_MQTT(char *server, uint16_t port, char *cid, char *user, char *pass) {
|
|
||||||
strncpy(servername, server, SERVERNAME_SIZE);
|
|
||||||
servername[SERVERNAME_SIZE-1] = 0;
|
|
||||||
portnum = port;
|
|
||||||
serverip = 0;
|
|
||||||
|
|
||||||
strncpy(clientid, cid, CLIENTID_SIZE);
|
|
||||||
clientid[CLIENTID_SIZE-1] = 0;
|
|
||||||
|
|
||||||
strncpy(username, user, USERNAME_SIZE);
|
|
||||||
username[USERNAME_SIZE-1] = 0;
|
|
||||||
|
|
||||||
strncpy(password, pass, PASSWORD_SIZE);
|
|
||||||
password[PASSWORD_SIZE-1] = 0;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
int8_t Adafruit_MQTT::connect() {
|
int8_t Adafruit_MQTT::connect() {
|
||||||
// Connect to the server.
|
// Connect to the server.
|
||||||
if (!connectServer())
|
if (!connectServer())
|
||||||
@ -174,7 +155,7 @@ bool Adafruit_MQTT::publish(const char *topic, const char *data, uint8_t qos) {
|
|||||||
uint8_t len = publishPacket(buffer, topic, data, qos);
|
uint8_t len = publishPacket(buffer, topic, data, qos);
|
||||||
if (!sendPacket(buffer, len))
|
if (!sendPacket(buffer, len))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// If QOS level is high enough verify the response packet.
|
// If QOS level is high enough verify the response packet.
|
||||||
if (qos > 0) {
|
if (qos > 0) {
|
||||||
len = readPacket(buffer, 4, PUBLISH_TIMEOUT_MS);
|
len = readPacket(buffer, 4, PUBLISH_TIMEOUT_MS);
|
||||||
@ -262,11 +243,11 @@ bool Adafruit_MQTT::ping(uint8_t times) {
|
|||||||
uint8_t len = pingPacket(buffer);
|
uint8_t len = pingPacket(buffer);
|
||||||
if (!sendPacket(buffer, len))
|
if (!sendPacket(buffer, len))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Process ping reply.
|
// Process ping reply.
|
||||||
len = readPacket(buffer, 2, PING_TIMEOUT_MS);
|
len = readPacket(buffer, 2, PING_TIMEOUT_MS);
|
||||||
if (buffer[0] == (MQTT_CTRL_PINGRESP << 4))
|
if (buffer[0] == (MQTT_CTRL_PINGRESP << 4))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -287,7 +268,10 @@ uint8_t Adafruit_MQTT::connectPacket(uint8_t *packet) {
|
|||||||
p+=2;
|
p+=2;
|
||||||
// fill in packet[1] last
|
// fill in packet[1] last
|
||||||
|
|
||||||
p = stringprint_P(p, PSTR("MQIsdp"));
|
if(MQTT_PROTOCOL_LEVEL == 3)
|
||||||
|
p = stringprint_P(p, PSTR("MQIsdp"));
|
||||||
|
else
|
||||||
|
p = stringprint_P(p, PSTR("MQTT"));
|
||||||
|
|
||||||
p[0] = MQTT_PROTOCOL_LEVEL;
|
p[0] = MQTT_PROTOCOL_LEVEL;
|
||||||
p++;
|
p++;
|
||||||
@ -305,7 +289,13 @@ uint8_t Adafruit_MQTT::connectPacket(uint8_t *packet) {
|
|||||||
p[0] = MQTT_CONN_KEEPALIVE & 0xFF;
|
p[0] = MQTT_CONN_KEEPALIVE & 0xFF;
|
||||||
p++;
|
p++;
|
||||||
|
|
||||||
p = stringprint_P(p, clientid, 23); // Limit client ID to first 23 characters.
|
if(MQTT_PROTOCOL_LEVEL == 3) {
|
||||||
|
p = stringprint_P(p, clientid, 23); // Limit client ID to first 23 characters.
|
||||||
|
} else {
|
||||||
|
if (pgm_read_byte(clientid) != 0) {
|
||||||
|
p = stringprint_P(p, clientid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (pgm_read_byte(username) != 0) {
|
if (pgm_read_byte(username) != 0) {
|
||||||
p = stringprint_P(p, username);
|
p = stringprint_P(p, username);
|
||||||
|
Loading…
Reference in New Issue
Block a user