An API for using MQTT over multiple transports

Dependencies:   FP MQTTPacket

Dependents:   Cellular_HelloMQTT IoTStarterKit GSwifiInterface_HelloMQTT IBMIoTClientEthernetExample ... more

This library is part of the EclipseTM Paho project; specifically the embedded client.

The goals of this API are:

  1. to be independent of any system library: hence templates parameters for networking, timer and threading classes
  2. not to rely on heap storage, only automatic (I think this is a good thing)
  3. to limit memory use, for instance by defining the size of the buffers and arrays used at object creation time
Revision:
2:dcfdd2abfe71
Parent:
0:fe461e4d7afe
Child:
3:dbff6b768d28
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MQTTClient.cpp	Fri Mar 28 13:39:25 2014 +0000
@@ -0,0 +1,61 @@
+/**
+ * @file    MQTTPubSub.cpp
+ * @brief   API - for MQTT
+ * @author  
+ * @version 1.0
+ * @see     
+ *
+ * Copyright (c) 2014
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+#include "MQTTClient.h"
+#include "MQTTPacket.h"
+
+MQTTClient::MQTTClient(char* serverURI, char* clientId, const int buffer_size)
+{
+    
+   buf = new char[buffer_size];
+   this->clientId = clientId;
+   this->serverURI = serverURI;
+}
+
+
+int MQTTClient::connect(MQTTConnectOptions* options, FP<void, MQTTResult*> resultHandler)
+{
+    MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
+     
+    data.clientID.cstring = clientId;
+    if (options)
+    {
+        data.keepAliveInterval = options->keepAliveInterval;
+        data.cleansession = options->cleansession;
+        data.username.cstring = options->username;
+        data.password.cstring = options->password;
+    }
+     
+    int len = MQTTSerialize_connect(buf, buflen, &data);
+    
+    sendPacket(buf, buflen); // send the connect packet
+    
+    /* how to make this check work?
+    if (resultHandler == None)
+    {
+        // this will be a blocking call, wait for the connack
+        
+    }*/
+    
+    return len;
+}
+