Version of HelloMQTT with u-blox cellular (C027 and C030) boards added.

Dependencies:   C12832 MQTT easy-connect ublox-at-cellular-interface-ext ublox-cellular-base ublox-cellular-driver-gen ublox-ppp-cellular-interface ublox-at-cellular-interface-n2xx ublox-cellular-base-n2xx

Fork of HelloMQTT by MQTT

Revision:
20:49c9daf2b0ff
Parent:
19:7f7aba7a4a8b
Child:
25:d5b073826601
--- 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;
 }