Arch GPRS MQTT demo

Dependencies:   GPRSInterface USBDevice mbed

Fork of Seeed_HTTPClient_GPRSInterface_HelloWorld by Seeed

Committer:
yihui
Date:
Fri Apr 03 09:51:32 2015 +0000
Revision:
4:14a9621ec99c
Parent:
3:9dc67659d945
update

Who changed what in which revision?

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