2121#define _MQTT_CLIENT_H_
2222
2323#include < Arduino.h>
24- #include < Client.h >
24+ #include " MqttInterface.h "
2525
2626#define MQTT_CONNECTION_REFUSED -2
2727#define MQTT_CONNECTION_TIMEOUT -1
4141
4242namespace arduino {
4343
44- class MqttClient : public Client {
44+ class MqttClient : public MqttClientInterface , public Client {
4545public:
46- MqttClient (Client* client);
46+ MqttClient (Client* client= nullptr );
4747 MqttClient (Client& client);
4848 virtual ~MqttClient ();
4949
@@ -55,52 +55,69 @@ class MqttClient : public Client {
5555 void onMessage (void (*)(int ));
5656#endif
5757
58+ error_t publish (
59+ Topic t, uint8_t payload[],
60+ size_t size, MqttQos qos = QosDefault,
61+ MqttPublishFlag flags = MqttPublishFlags::None);
62+
63+ error_t ping () override ;
64+
65+ void setReceiveCallback (MqttReceiveCallback cbk);
66+
67+ void setWill (
68+ Topic willTopic, const uint8_t * will_message,
69+ size_t will_size, MqttQos qos=QosDefault,
70+ MqttPublishFlag flags = MqttPublishFlags::None) override ;
71+
72+ void setClient (arduino::Client*) override ;
73+
5874 int parseMessage ();
59- String messageTopic () const ;
60- int messageDup () const ;
61- int messageQoS () const ;
62- int messageRetain () const ;
63-
64- int beginMessage (const char * topic, unsigned long size, bool retain = false , uint8_t qos = 0 , bool dup = false );
65- int beginMessage (const String& topic, unsigned long size, bool retain = false , uint8_t qos = 0 , bool dup = false );
66- int beginMessage (const char * topic, bool retain = false , uint8_t qos = 0 , bool dup = false );
67- int beginMessage (const String& topic, bool retain = false , uint8_t qos = 0 , bool dup = false );
75+ String messageTopic () const override ;
76+ int messageDup () const override ;
77+ uint16_t messageId () const override ;
78+ MqttQos messageQoS () const override ;
79+ int messageRetain () const override ;
80+
81+ int beginMessage (const char * topic, unsigned long size, bool retain = false , uint8_t qos = QosDefault, bool dup = false );
82+ int beginMessage (const String& topic, unsigned long size, bool retain = false , uint8_t qos = QosDefault, bool dup = false );
83+ int beginMessage (const char * topic, bool retain = false , uint8_t qos = QosDefault, bool dup = false );
84+ int beginMessage (const String& topic, bool retain = false , uint8_t qos = QosDefault, bool dup = false );
6885 int endMessage ();
6986
70- int beginWill (const char * topic, unsigned short size, bool retain, uint8_t qos);
71- int beginWill (const String& topic, unsigned short size, bool retain, uint8_t qos);
72- int beginWill (const char * topic, bool retain, uint8_t qos);
73- int beginWill (const String& topic, bool retain, uint8_t qos);
87+ int beginWill (const char * topic, unsigned short size, bool retain, uint8_t qos = QosDefault );
88+ int beginWill (const String& topic, unsigned short size, bool retain, uint8_t qos = QosDefault );
89+ int beginWill (const char * topic, bool retain, uint8_t qos = QosDefault );
90+ int beginWill (const String& topic, bool retain, uint8_t qos = QosDefault );
7491 int endWill ();
7592
76- int subscribe (const char * topic, uint8_t qos = 0 ) ;
77- int subscribe (const String& topic, uint8_t qos = 0 );
78- int unsubscribe (const char * topic);
79- int unsubscribe (const String& topic);
93+ error_t subscribe (Topic topic, MqttQos qos = QosDefault) override ;
94+ error_t subscribe (const String& topic, MqttQos qos = QosDefault );
95+ error_t unsubscribe (Topic topic) override ;
96+ error_t unsubscribe (const String& topic);
8097
81- void poll ();
98+ void poll () override ;
8299
83100 // from Client
84- virtual int connect (IPAddress ip, uint16_t port = 1883 );
85- virtual int connect (const char *host, uint16_t port = 1883 );
101+ error_t connect (IPAddress ip, uint16_t port = 1883 ) override ;
102+ error_t connect (const char *host, uint16_t port = 1883 ) override ;
86103#ifdef ESP8266
87104 virtual int connect (const IPAddress& ip, uint16_t port) { return 0 ; }; /* ESP8266 core defines this pure virtual in Client.h */
88105#endif
89106 virtual size_t write (uint8_t );
90107 virtual size_t write (const uint8_t *buf, size_t size);
91108 virtual int available ();
92109 virtual int read ();
93- virtual int read (uint8_t * buf, size_t size);
110+ virtual int read (uint8_t buf[] , size_t size);
94111 virtual int peek ();
95112 virtual void flush ();
96113 virtual void stop ();
97114 virtual uint8_t connected ();
98115 virtual operator bool ();
99116
100- void setId (const char * id);
117+ void setId (const char * id) override ;
101118 void setId (const String& id);
102119
103- void setUsernamePassword (const char * username, const char * password);
120+ void setUsernamePassword (const char * username, const char * password) override ;
104121 void setUsernamePassword (const String& username, const String& password);
105122
106123 void setCleanSession (bool cleanSession);
@@ -123,8 +140,7 @@ class MqttClient : public Client {
123140 void pubrec (uint16_t id);
124141 void pubrel (uint16_t id);
125142 void pubcomp (uint16_t id);
126- void ping ();
127- void disconnect ();
143+ void disconnect () override ;
128144
129145 int beginPacket (uint8_t type, uint8_t flags, size_t length, uint8_t * buffer);
130146 int writeString (const char * s, uint16_t length);
@@ -197,6 +213,8 @@ class MqttClient : public Client {
197213 uint16_t _willBufferIndex;
198214 size_t _willMessageIndex;
199215 uint8_t _willFlags;
216+
217+ MqttReceiveCallback _cbk;
200218};
201219}
202220
0 commit comments