Shintaro Hosoai / Milkcocoa

Dependencies:   MQTT

Fork of Milkcocoa by Junichi Katsu

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers MClient.h Source File

MClient.h

00001 #ifndef _MCLIENT_H_
00002 #define _MCLIENT_H_
00003 
00004 //#define TARGET_GRPEACH_B3595
00005 
00006 #if defined(TARGET_UBLOX_C027)
00007  #define USE_MDM
00008 #elif defined(TARGET_LPC1768) || defined(TARGET_K64F) || defined(TARGET_W7500x)
00009  #define USE_ETHERNET
00010 #elif defined(TARGET_GRPEACH_B3595)
00011  #define USE_BP3595
00012 #else 
00013  #define USE_ESP8266
00014 #endif
00015 
00016 #include "mbed.h"
00017 #if defined(USE_ESP8266)
00018  #include "MQTTESP8266.h"
00019 #elif defined(USE_BP3595)
00020  #include "MQTTBP3595.h"
00021 #elif defined(USE_MDM)
00022  #include "MQTTMDM.h"
00023 #else 
00024  #include "MQTTEthernet.h"
00025 #endif
00026 #include "MQTTClient.h"
00027 
00028 class MClient
00029 {
00030  public:
00031     typedef void (*messageHandler)(MQTT::MessageData&);
00032 #ifdef USE_ESP8266
00033     MClient(MQTTESP8266 *ipstack) : client(MQTT::Client<MQTTESP8266, Countdown>(*ipstack))
00034 #elif defined(USE_BP3595)
00035     MClient(MQTTBP3595 *ipstack) : client(MQTT::Client<MQTTBP3595, Countdown>(*ipstack))
00036 #elif defined(USE_MDM)
00037     MClient(MQTTMDM *ipstack) : client(MQTT::Client<MQTTMDM, Countdown>(*ipstack))
00038 #else
00039     MClient(MQTTEthernet *ipstack) : client(MQTT::Client<MQTTEthernet, Countdown>(*ipstack))
00040 #endif
00041     {
00042         _ipstack = ipstack;
00043     }
00044     void setDefaultMessageHandler(messageHandler mh)
00045     {
00046         client.setDefaultMessageHandler(mh);
00047     }
00048     int connect(char* host,int port)
00049     {
00050         return _ipstack->connect(host, port);
00051     }
00052     int connect()
00053     {
00054         return client.connect();
00055     }
00056     int connect(MQTTPacket_connectData& options)
00057     {
00058         return client.connect(options);
00059     }
00060     int publish(const char* topicName, MQTT::Message& message)
00061     {
00062         return client.publish(topicName,message);
00063     }
00064     int publish(const char* topicName, void* payload, size_t payloadlen, enum MQTT::QoS qos = MQTT::QOS0, bool retained = false)
00065     {
00066         return client.publish(topicName,payload,payloadlen,qos,retained);
00067     }
00068     int publish(const char* topicName, void* payload, size_t payloadlen, unsigned short& id, enum MQTT::QoS qos = MQTT::QOS1, bool retained = false)
00069     {
00070         return client.publish(topicName,payload,payloadlen,id,qos,retained);
00071     }
00072     int subscribe(const char* topicFilter, enum MQTT::QoS qos, messageHandler mh)
00073     {
00074         return client.subscribe(topicFilter,qos,mh);
00075     }
00076     int unsubscribe(const char* topicFilter)
00077     {
00078         return client.unsubscribe(topicFilter);
00079     }
00080     int disconnect()
00081     {
00082         return client.disconnect();
00083     }
00084     int yield(unsigned long timeout_ms = 1000L)
00085     {
00086         return client.yield(timeout_ms);
00087     }
00088     bool isConnected()
00089     {
00090         return client.isConnected();
00091     }
00092 private:
00093 #ifdef USE_ESP8266
00094     MQTT::Client<MQTTESP8266, Countdown> client;
00095     MQTTESP8266 *_ipstack;
00096 #elif defined(USE_BP3595)
00097     MQTT::Client<MQTTBP3595, Countdown> client;
00098     MQTTBP3595 *_ipstack;
00099 #elif defined(USE_MDM)
00100     MQTT::Client<MQTTMDM, Countdown> client;
00101     MQTTMDM *_ipstack;
00102 #else
00103     MQTT::Client<MQTTEthernet, Countdown> client;
00104     MQTTEthernet *_ipstack;
00105 #endif
00106 };
00107 
00108 #endif