89 lines
2.0 KiB
C++
89 lines
2.0 KiB
C++
#ifndef _ADAFRUIT_MQTT_H_
|
|
#define _ADAFRUIT_MQTT_H_
|
|
|
|
#if ARDUINO >= 100
|
|
#include "Arduino.h"
|
|
#else
|
|
#include "WProgram.h"
|
|
#endif
|
|
|
|
#define MQTT_PROTOCOL_LEVEL 3
|
|
|
|
#define MQTT_CTRL_CONNECT 0x01
|
|
#define MQTT_CTRL_CONNECTACK 0x02
|
|
#define MQTT_CTRL_PUBLISH 0x03
|
|
#define MQTT_CTRL_PINGREQ 0x0C
|
|
#define MQTT_CTRL_PINGRESP 0x0D
|
|
|
|
#define MQTT_QOS_1 0x1
|
|
#define MQTT_QOS_0 0x0
|
|
|
|
#define SERVERNAME_SIZE 25
|
|
#define PASSWORD_SIZE 25
|
|
#define USERNAME_SIZE 41
|
|
#define FEEDNAME_SIZE 45
|
|
#define CLIENTID_SIZE 23
|
|
|
|
#define CONNECT_TIMEOUT_MS 3000
|
|
#define PUBLISH_TIMEOUT_MS 500
|
|
#define PING_TIMEOUT_MS 500
|
|
|
|
#define MQTT_CONN_USERNAMEFLAG 0x80
|
|
#define MQTT_CONN_PASSWORDFLAG 0x40
|
|
#define MQTT_CONN_WILLRETAIN 0x20
|
|
#define MQTT_CONN_WILLQOS 0x08
|
|
#define MQTT_CONN_WILLFLAG 0x04
|
|
#define MQTT_CONN_CLEANSESSION 0x02
|
|
#define MQTT_CONN_KEEPALIVE 15 // in seconds
|
|
|
|
#define MAXBUFFERSIZE 130
|
|
|
|
class Adafruit_MQTT {
|
|
public:
|
|
Adafruit_MQTT(char *server, uint16_t port, char *cid, char *user, char *pass);
|
|
uint8_t connectPacket(uint8_t *packet);
|
|
|
|
virtual boolean publish(char *topic, char *payload, uint8_t qos) {}
|
|
uint8_t publishPacket(uint8_t *packet, char *topic, char *payload, uint8_t qos);
|
|
|
|
virtual boolean ping(void) {}
|
|
uint8_t pingPacket(uint8_t *packet);
|
|
|
|
protected:
|
|
int8_t errno;
|
|
char servername[SERVERNAME_SIZE];
|
|
uint32_t serverip;
|
|
int16_t portnum;
|
|
char clientid[CLIENTID_SIZE];
|
|
char username[USERNAME_SIZE];
|
|
char password[PASSWORD_SIZE];
|
|
|
|
uint8_t buffer[MAXBUFFERSIZE];
|
|
};
|
|
|
|
class Adafruit_MQTT_Publish {
|
|
public:
|
|
Adafruit_MQTT_Publish(Adafruit_MQTT& mqttserver, char *feed, uint8_t qos = 0);
|
|
|
|
//bool publish(char *s);
|
|
//bool publish(double f);
|
|
bool publish(int32_t i);
|
|
bool publish(uint32_t i);
|
|
|
|
private:
|
|
Adafruit_MQTT *mqtt;
|
|
char topic[FEEDNAME_SIZE];
|
|
uint8_t qos;
|
|
int8_t errno;
|
|
};
|
|
|
|
class Adafruit_MQTT_Subscibe {
|
|
public:
|
|
Adafruit_MQTT_Subscibe(Adafruit_MQTT *mqttserver, char *feedname);
|
|
bool setCallback(void (*callback)(char *));
|
|
|
|
};
|
|
|
|
|
|
#endif /* header guard */
|