this is a sample for mbed(LPC1768)

Revision:
0:3163adfd2cf1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ennoTest2.cpp	Thu Nov 19 10:17:55 2015 +0800
@@ -0,0 +1,167 @@
+// Do not remove the include below
+#include "ennoTest2.h"
+#include "MQTTEthernet.h"
+#include "MQTTClient.h"
+#include <pb_decode.h>
+#include <sitewhere.h>
+#include <sitewhere.pb.h>
+
+#define MQTTCLIENT_QOS2 1
+int arrivedcount = 0;
+bool registered = false;
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+
+void messageArrived(MQTT::MessageData& md)
+{
+	uint8_t buffer[512];
+    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);
+    ++arrivedcount;
+/*
+    buffer = message.payload;
+    Device_Header header;
+    pb_istream_t stream = pb_istream_from_buffer(buffer, message.payloadlen);
+
+    // Read header to find what type of command follows.
+      if (pb_decode_delimited(&stream, Device_Header_fields, &header)) {
+        // Handle a registration acknowledgement.
+        if (header.command == Device_Command_REGISTER_ACK) {
+          Device_RegistrationAck ack;
+          if (pb_decode_delimited(&stream, Device_RegistrationAck_fields, &ack)) {
+            if (ack.state == Device_RegistrationAckState_NEW_REGISTRATION) {
+              printf("Registered new device.");
+              registered = true;
+            } else if (ack.state == Device_RegistrationAckState_ALREADY_REGISTERED) {
+              printf("Device was already registered.");
+              registered = true;
+            } else if (ack.state == Device_RegistrationAckState_REGISTRATION_ERROR) {
+              printf("Error registering device.");
+            }
+          }
+        }
+      } else {
+        printf("Unable to decode system command.");
+      }
+    */
+}
+
+
+int main(int argc, char* argv[])
+{
+    MQTTEthernet ipstack = MQTTEthernet();
+    float version = 0.5;
+    char* topic = "SiteWhere/input/protobuf";
+    char* hardwareId = "enno-device-mbed-id-1";
+    char* specificationToken = "9556b504-52cc-4194-89c0-f301a782b286";
+    char* system = "SiteWhere/system/mbed-test-A";
+    char* hostname = "139.217.10.99";//sitewhere.chinacloudapp.cn:1883
+    int port = 1883;
+
+    led1=1;led2=1;led3=1;led4=1;
+    wait(0.5);
+    led1=!led1;led2=!led2;led3=!led3;led4=!led4;
+	wait(0.5);
+	led1=!led1;led2=!led2;led3=!led3;led4=!led4;
+
+    printf("HelloMQTT: version is %f\n", version);
+    MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack);
+    printf("Connecting to %s:%d\n", hostname, port);
+    int rc = ipstack.connect(hostname, port);
+
+    if (rc != 0){							//tcp connect error!
+        printf("rc from TCP connect is %d\n", rc);
+       }
+    if (rc == 0){                            //tcp connected!
+    	led1=!led1;wait(1);led1=!led1;wait(1);led1=!led1;
+
+		 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
+		 data.MQTTVersion = 3;
+		 data.clientID.cstring = "mbed-sample";
+		 data.username.cstring = NULL;
+		 data.password.cstring = NULL;
+		 if ((rc = client.connect(data)) != 0)
+			 printf("rc from MQTT connect is %d\n", rc);
+		 if (rc == 0){						//MQTT Client connected!
+			 led2=!led2;wait(1);led2=!led2;wait(1);led2=!led2;
+
+			 if ((rc = client.subscribe(system, MQTT::QOS2, messageArrived)) != 0)
+				 printf("rc from MQTT subscribe is %d\n", rc);
+			 if(rc == 0){						//subscribe successed!
+				 led3=!led3;wait(1);led3=!led3;wait(1);led3=!led3;
+
+				 MQTT::Message message;
+
+			 // QoS 0
+				 char buf[100];
+				 //unsigned char buffer[512];
+				 uint8_t buffer[512];                                // Caution: unsigned char cause an error!!!
+				 unsigned int len = 0;
+				 sprintf(buf, "Hello World!  QoS 0 message from app version %f\n", version);
+				 message.qos = MQTT::QOS0;
+				 message.retained = false;
+				 message.dup = false;
+				// message.payload = (void*)buf;
+				// message.payloadlen = strlen(buf)+1;                //??
+				 /*********** serialization ************/
+				 len = sw_register(hardwareId, specificationToken, buffer, 512,NULL);
+				 message.payload = buffer;
+				 message.payloadlen = len;
+				 /*************************************/
+				 rc = client.publish(topic, message);
+		//		 while (arrivedcount < 1)
+		//			 client.yield(100);
+
+
+
+ // QoS 1
+				 /*********** serialization ************/
+				// len = sw_alert(hardwareId, "enno.info","mbed is alive", NULL, buffer, 512, NULL);
+				 len = sw_location(hardwareId, 27.59, 86.55, 8844.43, 0,buffer, 512, NULL);
+				 message.payload = buffer;
+				 message.payloadlen = len;
+				 sprintf(buf, "Hello World!  QoS 1 message from app version %f\n", version);
+				 message.qos = MQTT::QOS1;
+
+				 while (0 == rc) {
+				         client.yield(1000);
+				         //sleep();
+				         //wait(0.5);
+				         client.publish(topic, message);
+				         printf("Location updated.\n");
+				         led4=!led4;
+
+				     }
+				 return 0;
+			 }
+		 }
+    }
+}
+/*
+    // QoS 2
+    sprintf(buf, "Hello World!  QoS 2 message from app version %f\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);
+
+	 if ((rc = client.disconnect()) != 0)
+		 printf("rc from disconnect was %d\n", rc);
+
+	 ipstack.disconnect();
+
+	 printf("Version %.2f: finish %d msgs\n", version, arrivedcount); */
+
+
+
+//  Auto Added by "SMeshLink SMeshStudio"
+