Had to fork with a different name, because of some incompatibility issues.

Dependencies:   MQTT

DeviceClient.h

Committer:
sathipal
Date:
2015-11-06
Revision:
0:f86732d81998
Child:
1:31c93319bbd8
Child:
2:199ddea804cd

File content as of revision 0:f86732d81998:

#ifndef DeviceClient_H
#define DeviceClient_H

#include "MQTTEthernet.h"
#include "MQTTClient.h"
#include "Command.h"

// Update this to the next number *before* a commit
#define __APP_SW_REVISION__ "0.0.1"

// Configuration values needed to connect to IBM IoT Cloud
#define QUICKSTART "quickstart"

#define MQTT_PORT 1883
#define MQTT_TLS_PORT 8883
#define IBM_IOT_PORT MQTT_PORT

#define IBM_IOT_MESSAGING ".messaging.internetofthings.ibmcloud.com"
#define CONNECT_TIMEOUT 1000 * 60
#define MQTT_MAX_PACKET_SIZE 250

typedef void (*CommandHandler)(IoTF::Command &cmd);

namespace IoTF {
    
    class DeviceClient
    {
        private:
            char *org;
            char *deviceType;
            char *deviceId;
            char *authMethod;
            char *authToken;
            MQTTEthernet ipstack;
            MQTT::Client<MQTTEthernet, Countdown, MQTT_MAX_PACKET_SIZE> mqttClient;
            
            bool tryConnect(char *hostname, MQTTPacket_connectData &data);
            int getConnTimeout(int attemptNumber);
            void logData(EthernetInterface& eth, char *hostname, char *clientId);
            int subscribeToCommands();

        public:
            DeviceClient();
            DeviceClient(char *org, char *deviceType, char *deviceId);
            DeviceClient(char *org, char *deviceType, char *deviceId, char *authMethod, char *authToken);
            bool publishEvent(char *eventName, char *data, MQTT::QoS qos = MQTT::QOS0);
            void setCommandCallback(CommandHandler callbackFunc);
            char* getMac(char* buf, int buflen);
            void yield(int ms);
            bool connect();
            bool disconnect();
     };
}
#endif