diff --git a/src/PubSubClient.cpp b/src/PubSubClient.cpp index 2b48d2b6..a9307ae0 100755 --- a/src/PubSubClient.cpp +++ b/src/PubSubClient.cpp @@ -445,6 +445,18 @@ boolean PubSubClient::publish(const char* topic, const uint8_t* payload, unsigne return publish(topic, payload, plength, false); } +boolean PubSubClient::deleteTopic(const char* topic) { +uint8_t buf[64]; +if (!connected()) return false; +uint8_t len = strlen(topic); +buf[0]=0x31; //PUBLISH, QoS=0, Retained +buf[1]=len+2; //Packet len = topic + his Length +buf[2]=0; +buf[3]=len; //topic StrLen +strncpy((char*)buf+4,topic,sizeof(buf)-5); +return write( buf,len+4); +} + boolean PubSubClient::publish(const char* topic, const uint8_t* payload, unsigned int plength, boolean retained) { if (connected()) { if (this->bufferSize < MQTT_MAX_HEADER_SIZE + 2+strnlen(topic, this->bufferSize) + plength) { diff --git a/src/PubSubClient.h b/src/PubSubClient.h index c70d9fd3..1e486ef8 100755 --- a/src/PubSubClient.h +++ b/src/PubSubClient.h @@ -149,11 +149,13 @@ class PubSubClient : public Print { boolean connect(const char* id, const char* user, const char* pass, const char* willTopic, uint8_t willQos, boolean willRetain, const char* willMessage, boolean cleanSession); void disconnect(); boolean publish(const char* topic, const char* payload); + boolean deleteTopic(const char* topic); boolean publish(const char* topic, const char* payload, boolean retained); boolean publish(const char* topic, const uint8_t * payload, unsigned int plength); boolean publish(const char* topic, const uint8_t * payload, unsigned int plength, boolean retained); boolean publish_P(const char* topic, const char* payload, boolean retained); boolean publish_P(const char* topic, const uint8_t * payload, unsigned int plength, boolean retained); + boolean isRetained() {return this->buffer[0]&0x1;} // Start to publish a message. // This API: // beginPublish(...)