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: C12832 hw4f HW4 MQTT
Fork of HW4 by
Diff: main.cpp
- Revision:
- 20:49c9daf2b0ff
- Parent:
- 19:7f7aba7a4a8b
- Child:
- 21:a68bd76740f9
diff -r 7f7aba7a4a8b -r 49c9daf2b0ff main.cpp
--- a/main.cpp Thu Jul 30 13:49:18 2015 +0000
+++ b/main.cpp Tue Jan 10 18:10:17 2017 -0600
@@ -14,7 +14,7 @@
* Ian Craggs - initial API and implementation and/or initial documentation
* Ian Craggs - make sure QoS2 processing works, and add device headers
*******************************************************************************/
-
+
/**
This is a sample program to illustrate the use of the MQTT Client library
on the mbed platform. The Client class requires two classes which mediate
@@ -22,33 +22,31 @@
classes provide the required public programming interfaces, it does not matter
what facilities they use underneath. In this program, they use the mbed
system libraries.
-
+
*/
-
+
// change this to 0 to output messages to serial instead of LCD
#define USE_LCD 1
#if USE_LCD
#include "C12832.h"
-#if defined(TARGET_UBLOX_C027)
-#warning "Compiling for mbed C027"
-#include "C027.h"
-#elif defined(TARGET_LPC1768)
-#warning "Compiling for mbed LPC1768"
-#include "LPC1768.h"
-#elif defined(TARGET_K64F)
-#warning "Compiling for mbed K64F"
-#include "K64F.h"
-#endif
+// the actual pins are defined in mbed_app.json and can be overridden per target
+C12832 lcd(LCD_MOSI, LCD_SCK, LCD_MISO, LCD_A0, LCD_NCS);
-#define printf lcd.cls();lcd.printf
+#define logMessage lcd.cls();lcd.printf
+
+#else
+
+#define logMessage printf
#endif
#define MQTTCLIENT_QOS2 1
-#include "MQTTEthernet.h"
+#include "easy-connect.h"
+#include "MQTTNetwork.h"
+#include "MQTTmbed.h"
#include "MQTTClient.h"
int arrivedcount = 0;
@@ -57,45 +55,51 @@
void messageArrived(MQTT::MessageData& md)
{
MQTT::Message &message = md.message;
- printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id);
- printf("Payload %.*s\n", message.payloadlen, (char*)message.payload);
+ logMessage("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
+ logMessage("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
++arrivedcount;
}
int main(int argc, char* argv[])
-{
- MQTTEthernet ipstack = MQTTEthernet();
- float version = 0.5;
+{
+ float version = 0.6;
char* topic = "mbed-sample";
-
- printf("HelloMQTT: version is %f\n", version);
-
- MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack);
-
- char* hostname = "m2m.eclipse.org";
+
+ logMessage("HelloMQTT: version is %.2f\r\n", version);
+
+ NetworkInterface* network = easy_connect(true);
+ if (!network) {
+ return -1;
+ }
+
+ MQTTNetwork mqttNetwork(network);
+
+ MQTT::Client<MQTTNetwork, Countdown> client = MQTT::Client<MQTTNetwork, Countdown>(mqttNetwork);
+
+ const char* hostname = "m2m.eclipse.org";
int port = 1883;
- printf("Connecting to %s:%d\n", hostname, port);
- int rc = ipstack.connect(hostname, port);
+ logMessage("Connecting to %s:%d\r\n", hostname, port);
+ int rc = mqttNetwork.connect(hostname, port);
if (rc != 0)
- printf("rc from TCP connect is %d\n", rc);
-
- MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
+ logMessage("rc from TCP connect is %d\r\n", rc);
+
+ MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
data.MQTTVersion = 3;
data.clientID.cstring = "mbed-sample";
data.username.cstring = "testuser";
data.password.cstring = "testpassword";
if ((rc = client.connect(data)) != 0)
- printf("rc from MQTT connect is %d\n", rc);
-
+ logMessage("rc from MQTT connect is %d\r\n", rc);
+
if ((rc = client.subscribe(topic, MQTT::QOS2, messageArrived)) != 0)
- printf("rc from MQTT subscribe is %d\n", rc);
+ logMessage("rc from MQTT subscribe is %d\r\n", rc);
MQTT::Message message;
// QoS 0
char buf[100];
- sprintf(buf, "Hello World! QoS 0 message from app version %f\n", version);
+ sprintf(buf, "Hello World! QoS 0 message from app version %f\r\n", version);
message.qos = MQTT::QOS0;
message.retained = false;
message.dup = false;
@@ -104,32 +108,32 @@
rc = client.publish(topic, message);
while (arrivedcount < 1)
client.yield(100);
-
+
// QoS 1
- sprintf(buf, "Hello World! QoS 1 message from app version %f\n", version);
+ sprintf(buf, "Hello World! QoS 1 message from app version %f\r\n", version);
message.qos = MQTT::QOS1;
message.payloadlen = strlen(buf)+1;
rc = client.publish(topic, message);
while (arrivedcount < 2)
client.yield(100);
-
+
// QoS 2
- sprintf(buf, "Hello World! QoS 2 message from app version %f\n", version);
+ sprintf(buf, "Hello World! QoS 2 message from app version %f\r\n", version);
message.qos = MQTT::QOS2;
message.payloadlen = strlen(buf)+1;
rc = client.publish(topic, message);
while (arrivedcount < 3)
client.yield(100);
-
+
if ((rc = client.unsubscribe(topic)) != 0)
- printf("rc from unsubscribe was %d\n", rc);
-
+ logMessage("rc from unsubscribe was %d\r\n", rc);
+
if ((rc = client.disconnect()) != 0)
- printf("rc from disconnect was %d\n", rc);
-
- ipstack.disconnect();
-
- printf("Version %.2f: finish %d msgs\n", version, arrivedcount);
-
+ logMessage("rc from disconnect was %d\r\n", rc);
+
+ mqttNetwork.disconnect();
+
+ logMessage("Version %.2f: finish %d msgs\r\n", version, arrivedcount);
+
return 0;
}
