21
21
#define _MQTT_CLIENT_H_
22
22
23
23
#include < Arduino.h>
24
- #include < Client.h >
24
+ #include " MqttInterface.h "
25
25
26
26
#define MQTT_CONNECTION_REFUSED -2
27
27
#define MQTT_CONNECTION_TIMEOUT -1
41
41
42
42
namespace arduino {
43
43
44
- class MqttClient : public Client {
44
+ class MqttClient : public MqttClientInterface , public Client {
45
45
public:
46
- MqttClient (Client* client);
46
+ MqttClient (Client* client= nullptr );
47
47
MqttClient (Client& client);
48
48
virtual ~MqttClient ();
49
49
@@ -55,52 +55,69 @@ class MqttClient : public Client {
55
55
void onMessage (void (*)(int ));
56
56
#endif
57
57
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
+
58
74
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 );
68
85
int endMessage ();
69
86
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 );
74
91
int endWill ();
75
92
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);
80
97
81
- void poll ();
98
+ void poll () override ;
82
99
83
100
// 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 ;
86
103
#ifdef ESP8266
87
104
virtual int connect (const IPAddress& ip, uint16_t port) { return 0 ; }; /* ESP8266 core defines this pure virtual in Client.h */
88
105
#endif
89
106
virtual size_t write (uint8_t );
90
107
virtual size_t write (const uint8_t *buf, size_t size);
91
108
virtual int available ();
92
109
virtual int read ();
93
- virtual int read (uint8_t * buf, size_t size);
110
+ virtual int read (uint8_t buf[] , size_t size);
94
111
virtual int peek ();
95
112
virtual void flush ();
96
113
virtual void stop ();
97
114
virtual uint8_t connected ();
98
115
virtual operator bool ();
99
116
100
- void setId (const char * id);
117
+ void setId (const char * id) override ;
101
118
void setId (const String& id);
102
119
103
- void setUsernamePassword (const char * username, const char * password);
120
+ void setUsernamePassword (const char * username, const char * password) override ;
104
121
void setUsernamePassword (const String& username, const String& password);
105
122
106
123
void setCleanSession (bool cleanSession);
@@ -123,8 +140,7 @@ class MqttClient : public Client {
123
140
void pubrec (uint16_t id);
124
141
void pubrel (uint16_t id);
125
142
void pubcomp (uint16_t id);
126
- void ping ();
127
- void disconnect ();
143
+ void disconnect () override ;
128
144
129
145
int beginPacket (uint8_t type, uint8_t flags, size_t length, uint8_t * buffer);
130
146
int writeString (const char * s, uint16_t length);
@@ -197,6 +213,8 @@ class MqttClient : public Client {
197
213
uint16_t _willBufferIndex;
198
214
size_t _willMessageIndex;
199
215
uint8_t _willFlags;
216
+
217
+ MqttReceiveCallback _cbk;
200
218
};
201
219
}
202
220
0 commit comments