MQTT Client for ENC28J60 Ethernet modules. Depends on the UIPEthernet library.

Dependents:   mBuino_ENC28_MQTT MQTT_DHT11_ENC28J60 MQTT_DHT11_ENC28J60_tushar MQTT_Hello_ENC28J60

MQTT library for ENC28J60 Ethernet modules.

/media/uploads/hudakz/enc28j60_module01.jpg

Depends on the UIPEthernet library.

Example program:

Import programMQTT_Hello_ENC28J60

MQTT Client example program. Ethernet connection is via an ENC28J60 module.

Revision:
2:ca17c5d846e7
Parent:
1:87da395325fc
Child:
3:5e31b4687aad
--- a/MQTTClient.h	Mon Sep 15 12:48:55 2014 +0000
+++ b/MQTTClient.h	Sun Nov 29 18:12:22 2015 +0000
@@ -2,10 +2,9 @@
   MQTTClient.h - A simple client for MQTT.
   Nicholas O'Leary
   http://knolleary.net
-  
+
   Ported to mbed by Zoltan Hudak <hudakz@inbox.com>
 */
-
 #ifndef MQTTClient_h
 #define MQTTClient_h
 
@@ -13,71 +12,65 @@
 #include "Client.h"
 //#include "Stream.h"
 
-// MQTT_MAX_PACKET_SIZE : Maximum packet size
-#define MQTT_MAX_PACKET_SIZE 128
-
-// MQTT_KEEPALIVE : keepAlive interval in Seconds
-#define MQTT_KEEPALIVE 15
 
-#define MQTTPROTOCOLVERSION 3
-#define MQTTCONNECT     1 << 4  // Client request to connect to Server
-#define MQTTCONNACK     2 << 4  // Connect Acknowledgment
-#define MQTTPUBLISH     3 << 4  // Publish message
-#define MQTTPUBACK      4 << 4  // Publish Acknowledgment
-#define MQTTPUBREC      5 << 4  // Publish Received (assured delivery part 1)
-#define MQTTPUBREL      6 << 4  // Publish Release (assured delivery part 2)
-#define MQTTPUBCOMP     7 << 4  // Publish Complete (assured delivery part 3)
-#define MQTTSUBSCRIBE   8 << 4  // Client Subscribe request
-#define MQTTSUBACK      9 << 4  // Subscribe Acknowledgment
-#define MQTTUNSUBSCRIBE 10 << 4 // Client Unsubscribe request
-#define MQTTUNSUBACK    11 << 4 // Unsubscribe Acknowledgment
-#define MQTTPINGREQ     12 << 4 // PING Request
-#define MQTTPINGRESP    13 << 4 // PING Response
-#define MQTTDISCONNECT  14 << 4 // Client is Disconnecting
-#define MQTTReserved    15 << 4 // Reserved
+#define MQTT_MAX_PACKET_SIZE   256  // MQTT_MAX_PACKET_SIZE : Maximum packet size
+#define MQTT_KEEPALIVE          15  // MQTT_KEEPALIVE : keepAlive interval in Seconds
+#define MQTTPROTOCOLVERSION      3
+#define MQTTCONNECT         1 << 4  // Client request to connect to Server
+#define MQTTCONNACK         2 << 4  // Connect Acknowledgment
+#define MQTTPUBLISH         3 << 4  // Publish message
+#define MQTTPUBACK          4 << 4  // Publish Acknowledgment
+#define MQTTPUBREC          5 << 4  // Publish Received (assured delivery part 1)
+#define MQTTPUBREL          6 << 4  // Publish Release (assured delivery part 2)
+#define MQTTPUBCOMP         7 << 4  // Publish Complete (assured delivery part 3)
+#define MQTTSUBSCRIBE       8 << 4  // Client Subscribe request
+#define MQTTSUBACK          9 << 4  // Subscribe Acknowledgment
+#define MQTTUNSUBSCRIBE     10 << 4 // Client Unsubscribe request
+#define MQTTUNSUBACK        11 << 4 // Unsubscribe Acknowledgment
+#define MQTTPINGREQ         12 << 4 // PING Request
+#define MQTTPINGRESP        13 << 4 // PING Response
+#define MQTTDISCONNECT      14 << 4 // Client is Disconnecting
+#define MQTTReserved        15 << 4 // Reserved
+#define MQTTQOS0            (0 << 1)
+#define MQTTQOS1            (1 << 1)
+#define MQTTQOS2            (2 << 1)
 
-#define MQTTQOS0        (0 << 1)
-#define MQTTQOS1        (1 << 1)
-#define MQTTQOS2        (2 << 1)
-
-class MQTTClient
+class   MQTTClient
 {
 private:
-    Client* _client;
-    uint8_t buffer[MQTT_MAX_PACKET_SIZE];
-    uint16_t nextMsgId;
-    time_t lastOutActivity;
-    time_t lastInActivity;
-    bool pingOutstanding;
-    void (*onMessage)(char*,uint8_t*,unsigned int);
-    uint16_t readPacket(uint8_t*);
-    uint8_t readByte();
-    bool write(uint8_t header, uint8_t* buf, uint16_t length);
-    uint16_t writeString(char* string, uint8_t* buf, uint16_t pos);
-    IPAddress ip;
-    char* domain;
-    uint16_t port;
-    Stream* stream;
+    Client*         _client;
+    uint8_t         buffer[MQTT_MAX_PACKET_SIZE];
+    uint16_t        nextMsgId;
+    unsigned long   lastOutActivity;
+    unsigned long   lastInActivity;
+    bool            pingOutstanding;
+    void (*onMessage) (char*, uint8_t*, unsigned int);
+    uint16_t    readPacket(uint8_t* );
+    uint8_t     readByte(void);
+    bool        write(uint8_t header, uint8_t* buf, uint16_t length);
+    uint16_t    writeString(char* string, uint8_t* buf, uint16_t pos);
+    IPAddress   ip;
+    char*       domain;
+    uint16_t    port;
+    Stream*     stream;
 public:
-    MQTTClient();
-    MQTTClient(IPAddress&, uint16_t, void(*)(char*,uint8_t*,unsigned int),Client& client);
-    MQTTClient(IPAddress&, uint16_t, void(*)(char*,uint8_t*,unsigned int),Client& client, Stream&);
-    MQTTClient(char*, uint16_t, void(*)(char*,uint8_t*,unsigned int),Client& client);
-    MQTTClient(char*, uint16_t, void(*)(char*,uint8_t*,unsigned int),Client& client, Stream&);
-    bool connect(char*);
-    bool connect(char*, char*, char*);
-    bool connect(char*, char*, uint8_t, uint8_t, char*);
-    bool connect(char*, char*, char*, char*, uint8_t, uint8_t, char*);
-    void disconnect();
-    bool publish(char*, char*);
-    bool publish(char*, uint8_t*, unsigned int);
-    bool publish(char*, uint8_t*, unsigned int, bool);
-    bool subscribe(char*);
-    bool subscribe(char*, uint8_t qos);
-    bool unsubscribe(char*);
-    bool loop();
-    bool connected();
+    MQTTClient(void);
+    MQTTClient(IPAddress& , uint16_t, void (* ) (char*, uint8_t*, unsigned int), Client& client);
+    MQTTClient(IPAddress& , uint16_t, void (* ) (char*, uint8_t*, unsigned int), Client& client, Stream& );
+    MQTTClient(char* , uint16_t, void (* ) (char*, uint8_t*, unsigned int), Client& client);
+    MQTTClient(char* , uint16_t, void (* ) (char*, uint8_t*, unsigned int), Client& client, Stream& );
+    bool    connect(char* );
+    bool    connect(char* , char* , char* );
+    bool    connect(char* , char* , uint8_t, uint8_t, char* );
+    bool    connect(char* , char* , char* , char* , uint8_t, uint8_t, char* );
+    void    disconnect(void);
+    bool    publish(char* , char* );
+    bool    publish(char* , uint8_t* , unsigned int);
+    bool    publish(char* , uint8_t* , unsigned int, bool);
+    bool    subscribe(char* );
+    bool    subscribe(char* , uint8_t qos);
+    bool    unsubscribe(char* );
+    bool    loop(void);
+    bool    connected(void);
 };
-
-
 #endif