![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
,ss
Fork of HelloMQTT by
Diff: main.cpp
- Revision:
- 20:49c9daf2b0ff
- Parent:
- 19:7f7aba7a4a8b
- Child:
- 21:a68bd76740f9
--- 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; }