Yalgaar mBed SDK for real-time messaging

Dependents:   YalgaarSDK

Fork of MQTT by Joerg Wende

Committer:
nileshvora
Date:
Tue Mar 14 11:21:33 2017 +0000
Revision:
5:7dde43328c25
Parent:
1:c233cee7c15b
Yalgaar SDK V1.0.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jwende 0:ca855d29545b 1 /*
jwende 0:ca855d29545b 2 PubSubClient.h - A simple client for MQTT.
jwende 0:ca855d29545b 3 Nicholas O'Leary
jwende 0:ca855d29545b 4 http://knolleary.net
jwende 0:ca855d29545b 5 */
jwende 0:ca855d29545b 6 #include "mbed.h"
jwende 0:ca855d29545b 7 #include "EthernetInterface.h"
jwende 0:ca855d29545b 8 #include "TCPSocketConnection.h"
jwende 0:ca855d29545b 9
jwende 0:ca855d29545b 10 #ifndef PubSubClient_h
jwende 0:ca855d29545b 11 #define PubSubClient_h
jwende 0:ca855d29545b 12
nileshvora 1:c233cee7c15b 13 #define MQTT_CALLBACK_SIGNATURE void (*callback)(char*,char*, unsigned int)
jwende 0:ca855d29545b 14
jwende 0:ca855d29545b 15 // MQTT_MAX_PACKET_SIZE : Maximum packet size
nileshvora 1:c233cee7c15b 16 #define MQTT_MAX_PACKET_SIZE 2048
jwende 0:ca855d29545b 17
jwende 0:ca855d29545b 18 // MQTT_KEEPALIVE : keepAlive interval in Seconds
nileshvora 1:c233cee7c15b 19 #define MQTT_KEEPALIVE 60
nileshvora 1:c233cee7c15b 20
nileshvora 1:c233cee7c15b 21 #define MQTT_CONNECTION_TIMEOUT -4
nileshvora 1:c233cee7c15b 22 #define MQTT_CONNECTION_LOST -3
nileshvora 1:c233cee7c15b 23 #define MQTT_CONNECT_FAILED -2
nileshvora 1:c233cee7c15b 24 #define MQTT_DISCONNECTED -1
nileshvora 1:c233cee7c15b 25 #define MQTT_CONNECTED 0
nileshvora 1:c233cee7c15b 26 #define MQTT_CONNECT_BAD_PROTOCOL 1
nileshvora 1:c233cee7c15b 27 #define MQTT_CONNECT_BAD_CLIENT_ID 2
nileshvora 1:c233cee7c15b 28 #define MQTT_CONNECT_UNAVAILABLE 3
nileshvora 1:c233cee7c15b 29 #define MQTT_CONNECT_BAD_CREDENTIALS 4
nileshvora 1:c233cee7c15b 30 #define MQTT_CONNECT_UNAUTHORIZED 5
jwende 0:ca855d29545b 31
jwende 0:ca855d29545b 32 #define MQTTPROTOCOLVERSION 3
jwende 0:ca855d29545b 33 #define MQTTCONNECT 1 << 4 // Client request to connect to Server
jwende 0:ca855d29545b 34 #define MQTTCONNACK 2 << 4 // Connect Acknowledgment
jwende 0:ca855d29545b 35 #define MQTTPUBLISH 3 << 4 // Publish message
jwende 0:ca855d29545b 36 #define MQTTPUBACK 4 << 4 // Publish Acknowledgment
jwende 0:ca855d29545b 37 #define MQTTPUBREC 5 << 4 // Publish Received (assured delivery part 1)
jwende 0:ca855d29545b 38 #define MQTTPUBREL 6 << 4 // Publish Release (assured delivery part 2)
jwende 0:ca855d29545b 39 #define MQTTPUBCOMP 7 << 4 // Publish Complete (assured delivery part 3)
jwende 0:ca855d29545b 40 #define MQTTSUBSCRIBE 8 << 4 // Client Subscribe request
jwende 0:ca855d29545b 41 #define MQTTSUBACK 9 << 4 // Subscribe Acknowledgment
jwende 0:ca855d29545b 42 #define MQTTUNSUBSCRIBE 10 << 4 // Client Unsubscribe request
jwende 0:ca855d29545b 43 #define MQTTUNSUBACK 11 << 4 // Unsubscribe Acknowledgment
jwende 0:ca855d29545b 44 #define MQTTPINGREQ 12 << 4 // PING Request
jwende 0:ca855d29545b 45 #define MQTTPINGRESP 13 << 4 // PING Response
jwende 0:ca855d29545b 46 #define MQTTDISCONNECT 14 << 4 // Client is Disconnecting
jwende 0:ca855d29545b 47 #define MQTTReserved 15 << 4 // Reserved
jwende 0:ca855d29545b 48
jwende 0:ca855d29545b 49 #define MQTTQOS0 (0 << 1)
jwende 0:ca855d29545b 50 #define MQTTQOS1 (1 << 1)
jwende 0:ca855d29545b 51 #define MQTTQOS2 (2 << 1)
jwende 0:ca855d29545b 52
nileshvora 1:c233cee7c15b 53
nileshvora 1:c233cee7c15b 54
jwende 0:ca855d29545b 55 class PubSubClient {
jwende 0:ca855d29545b 56 private:
jwende 0:ca855d29545b 57 TCPSocketConnection _client;
jwende 0:ca855d29545b 58 char buffer[MQTT_MAX_PACKET_SIZE];
jwende 0:ca855d29545b 59 int nextMsgId;
jwende 0:ca855d29545b 60 unsigned long lastOutActivity;
jwende 0:ca855d29545b 61 unsigned long lastInActivity;
jwende 0:ca855d29545b 62 bool pingOutstanding;
nileshvora 1:c233cee7c15b 63 MQTT_CALLBACK_SIGNATURE;
jwende 0:ca855d29545b 64 int readPacket(int);
jwende 0:ca855d29545b 65 char readByte();
jwende 0:ca855d29545b 66 bool write(short header, char* buf, int length);
jwende 0:ca855d29545b 67 int writeString(char* string, char* buf, int pos);
jwende 0:ca855d29545b 68 char* ip;
jwende 0:ca855d29545b 69 int port;
nileshvora 1:c233cee7c15b 70 Timer t;
nileshvora 1:c233cee7c15b 71 int _state;
jwende 0:ca855d29545b 72 public:
jwende 0:ca855d29545b 73 PubSubClient();
nileshvora 1:c233cee7c15b 74 PubSubClient(char*, int);
nileshvora 1:c233cee7c15b 75
nileshvora 1:c233cee7c15b 76 PubSubClient& setCallback(MQTT_CALLBACK_SIGNATURE);
nileshvora 1:c233cee7c15b 77
jwende 0:ca855d29545b 78 bool connect(char *);
jwende 0:ca855d29545b 79 bool connect(char *, char *, char *);
jwende 0:ca855d29545b 80 bool connect(char *, char *, short, short, char *);
jwende 0:ca855d29545b 81 bool connect(char *, char *, char *, char *, short, short, char*);
jwende 0:ca855d29545b 82 void disconnect();
jwende 0:ca855d29545b 83 bool publish(char *, char *);
jwende 0:ca855d29545b 84 bool publish(char *, char *, unsigned int);
jwende 0:ca855d29545b 85 bool publish(char *, char *, unsigned int, bool);
jwende 0:ca855d29545b 86 // bool publish_P(char *, short PROGMEM *, unsigned int, bool);
jwende 0:ca855d29545b 87 bool subscribe(char *);
jwende 0:ca855d29545b 88 bool unsubscribe(char *);
jwende 0:ca855d29545b 89 bool loop();
jwende 0:ca855d29545b 90 bool connected();
nileshvora 1:c233cee7c15b 91 int mqtt_state();
nileshvora 1:c233cee7c15b 92 int millis();
jwende 0:ca855d29545b 93 };
jwende 0:ca855d29545b 94
jwende 0:ca855d29545b 95
jwende 0:ca855d29545b 96 #endif