Yalgaar mBed SDK for real-time messaging
Fork of MQTT by
PubSubClient.h@1:c233cee7c15b, 2017-03-10 (annotated)
- Committer:
- nileshvora
- Date:
- Fri Mar 10 13:11:49 2017 +0000
- Revision:
- 1:c233cee7c15b
- Parent:
- 0:ca855d29545b
Yalgaar SDK V:1.0
Who changed what in which revision?
User | Revision | Line number | New 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 |