Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FP MQTTPacket
Dependents: IDW01M1_Cloud_IBM IDW01M1-MQTT IDW01M1-MQTT-1 IDW01M1-MQTT3 ... more
Fork of MQTT by
Revision 2:dcfdd2abfe71, committed 2014-03-28
- Comitter:
- icraggs
- Date:
- Fri Mar 28 13:39:25 2014 +0000
- Parent:
- 1:1a6016a0cf66
- Child:
- 3:dbff6b768d28
- Commit message:
- Structure of API
Changed in this revision
--- a/MQTT.cpp Sat Mar 08 00:36:11 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -/** - * @file MQTT.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 "MQTT.h" -
--- a/MQTT.h Sat Mar 08 00:36:11 2014 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/**
- * @file MQTT.h
- * @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.
- */
-
-#ifndef MQTT_H
-#define MQTT_H
-
-/** Example using the MQTT API class
- * @code
- * #include "mbed.h"
- * #include "MQTT.h"
- *
- * DigitalOut myled(LED1);
- *
- * int main()
- * {
- * while(1)
- * {
- * myled = 1;
- * wait(0.2);
- * myled = 0;
- * wait(0.2);
- * }
- * }
- * @endcode
- */
-
-#include "FP.h"
-#include "MQTTPubSub.h"
-#include "mbed.h"
-
-typedef struct MQTTInfo MQTTInfo;
-struct MQTTInfo
-{
- char *topic;
- char *payload;
- int length;
-};
-
-class MQTT : public MQTTPubSub
-{
-public:
- MQTT(){}
-
- char *mqttStream(void){return 0;}
- int mqttStreamLength(void){return 0;}
-
- FP <void,void*>callback;
-};
-
-#endif
--- /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;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MQTTClient.h Fri Mar 28 13:39:25 2014 +0000
@@ -0,0 +1,92 @@
+/**
+ * @file MQTTPubSub.h
+ * @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.
+ */
+
+#if !defined(MQTTCLIENT_H)
+#define MQTTCLIENT_H
+
+#include <vector>
+
+#include "mbed.h"
+#include "FP.h"
+
+class MQTTClient;
+
+enum QoS { QOS0, QOS1, QOS2 };
+
+class MQTTResult
+{
+ /* success or failure result data */
+ MQTTClient* client;
+};
+
+struct MQTTMessage
+{
+ enum QoS qos;
+ bool retained;
+ bool dup;
+ unsigned short msgid;
+ void *payload;
+ size_t payloadlen;
+};
+
+struct MQTTConnectOptions
+{
+ unsigned short keepAliveInterval;
+ bool cleansession;
+ char* username;
+ char* password;
+ int timeout;
+ std::vector<char*> serverURIs;
+};
+
+
+class MQTTClient
+{
+
+public:
+
+ static FP<void, MQTTResult*> None; // default argument of no result handler to indicate call should be blocking
+
+ MQTTClient(char* serverURI, char* clientId = "", const int buffer_size = 100);
+
+ int connect(MQTTConnectOptions* options = 0, FP<void, MQTTResult*> resultHandler = None);
+
+ int publish(char* topic, MQTTMessage* message, FP<void, MQTTResult*> resultHandler = None);
+
+ int subscribe(char* topicFilter, int qos, FP<void, MQTTMessage*> messageHandler, FP<void, MQTTResult*> resultHandler = None);
+
+ int unsubscribe(char* topicFilter, FP<void, MQTTResult*> resultHandler = None);
+
+ int disconnect(int timeout, FP<void, MQTTResult*> resultHandler = None);
+
+private:
+
+ int sendPacket(char* buf, int buflen);
+
+ char* clientId;
+ char* serverURI;
+ char* buf;
+ int buflen;
+
+};
+
+#endif
--- a/MQTTConnection.cpp Sat Mar 08 00:36:11 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -/** - * @file MQTTConnection.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 "MQTTConnection.h" -
--- a/MQTTConnection.h Sat Mar 08 00:36:11 2014 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/**
- * @file MQTTConnection.h
- * @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.
- */
-
-#ifndef MQTTCONNECTION_H
-#define MQTTCONNECTION_H
-
-#include "MQTTPacket.h"
-
-class MQTTConnect
-{
- MQTTPacket_connectData connect_data;
- char *host;
- int port;
- char *serialize_buffer;
-};
-
-#endif
--- a/MQTTPubSub.cpp Sat Mar 08 00:36:11 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -/** - * @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 "MQTTPubSub.h" -
--- a/MQTTPubSub.h Sat Mar 08 00:36:11 2014 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/**
- * @file MQTTPubSub.h
- * @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.
- */
-
-#ifndef MQTTPUBSUB_H
-#define MQTTPUBSUB_H
-
-#include "MQTTConnection.h"
-
-class MQTTTopic
-{
- MQTTString topic;
- char *msg_buffer;
- int msg_size;
-};
-
-class MQTTPubSub : private MQTTConnect
-{
-private:
- MQTTTopic topic;
-
-public:
- enum {
- TOPIC_PUBLISH, TOPIC_SUBSCRIBE
- }Message;
-
- MQTTPubSub(){}
-
- void publish(){}
- void subscribe(){}
-};
-
-#endif
