123

Dependencies:   MQTTSN

Files at this revision

API Documentation at this revision

Comitter:
m_ahsan
Date:
Mon Dec 10 08:03:46 2018 +0000
Parent:
12:80d8e97e81f2
Child:
14:e544557919d9
Commit message:
test

Changed in this revision

Client-main.cpp Show annotated file Show diff for this revision Revisions of this file
MQTTSN.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Client-main.cpp	Mon Dec 10 08:03:46 2018 +0000
@@ -0,0 +1,190 @@
+/* SpwfInterface NetworkSocketAPI Example Program
+ * Copyright (c) 2015 ARM Limited
+ *
+ * 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 "mbed.h"
+#define MQTTSNCLIENT_QOS2 1
+//#include "TCPSocket.h"
+//#include "UDPSocket.h"
+#include "MQTTSNUDP.h"
+#include "MQTTSNClient.h"
+
+//
+
+//------------------------------------
+// Hyperterminal configuration
+// 9600 bauds, 8-bit data, no parity
+//------------------------------------
+
+Serial pc(USBTX, USBRX);
+DigitalOut myled(LED1);
+
+int arrivedcount = 0;
+
+void messageArrived(MQTTSN::MessageData& md)
+{
+    MQTTSN::Message &message = md.message;
+    printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n, Number: %d", message.qos, message.retained, message.dup, message.id, arrivedcount);
+    printf("Payload %.*s\n", message.payloadlen, (char*)message.payload);
+    ++arrivedcount;
+     puts((char*)message.payload);
+}
+
+int main() {
+    
+    float version = 0.47;
+    char* topic = "mbed-sample";
+    
+    MQTTSNUDP ipstack = MQTTSNUDP();
+    
+    char * ssid = "KICS-IOT-DHCP";
+    char * seckey = "AAAFFFBBBC";  
+    
+    printf("\r\nX-NUCLEO-IDW01M1 mbed Application\r\n");     
+    printf("\r\nconnecting to AP\r\n");
+            
+    if(spwf.connect(ssid, seckey, NSAPI_SECURITY_WPA2)) {      
+        printf("\r\nnow connected\r\n");
+    } else {
+        printf("\r\nerror connecting to AP.\r\n");
+        return -1;
+    }
+    const char* Local_IP = spwf.get_ip_address();
+    printf("IP Address of Device is: %s\n", Local_IP);
+    
+    const char* Local_MAC = spwf.get_mac_address();
+    printf("MAC Address of Device is: %s\n", Local_MAC);
+    
+    MQTTSN::Client<MQTTSNUDP, Countdown> client = MQTTSN::Client<MQTTSNUDP, Countdown>(ipstack);
+    char* hostname = "192.168.0.114";
+    int port = 10000;
+    printf("Connecting to %s:%d\n", hostname, port);
+    int rc = ipstack.connect(hostname, port);
+    if (rc != 0)
+         printf("rc from UDP connect is %d\n", rc);
+    else
+        printf("UDP connected\n"); 
+
+    MQTTSNPacket_connectData data = MQTTSNPacket_connectData_initializer;       
+    data.clientID.cstring = "mbed-sample";
+    data.duration = 60;
+    if ((rc = client.connect(data)) != 0)
+         printf("rc from MQTT connect is %d\n", rc);
+    else
+         printf("MQTT Connected\n");
+    
+    MQTTSN_topicid topicid;
+    topicid.type = MQTTSN_TOPIC_TYPE_NORMAL;
+    topicid.data.long_.name = topic;
+    topicid.data.long_.len = strlen(topic);
+    MQTTSN::QoS grantedQoS;
+    if ((rc = client.subscribe(topicid, MQTTSN::QOS1, grantedQoS, messageArrived)) != 0)
+         printf("rc from MQTT subscribe is %d\n", rc);
+    else
+         printf("Subscribed to Topic %s\n", topic);
+         
+    MQTTSN::Message message;
+    
+    char buf[100];
+    int i;
+    // QoS 0
+    for(i = 0 ; i<= 10; i++){
+    sprintf(buf, "Hello World!  QoS 0 message from app version %f\n", version);
+    message.qos = MQTTSN::QOS0;
+    message.retained = false;
+    message.dup = false;
+    message.payload = (void*)buf;
+    message.payloadlen = strlen(buf)+1;
+    
+    if ((rc = client.publish(topicid, message)) != 0)
+         printf("rc from MQTT Publish is %d\n", rc);
+    else
+         printf("Published Buffer %s to Topic %s\n",buf, topic);
+    printf("arrivedcount %d, i = %d\n",arrivedcount, i);
+    //while (arrivedcount < i)
+        client.yield(100);
+    }   
+    wait(1);
+    // QoS 1
+    
+    sprintf(buf, "Hello World!  QoS 1 message from app version %f\n", version);
+    message.qos = MQTTSN::QOS1;
+    message.payloadlen = strlen(buf)+1;
+    if ((rc = client.publish(topicid, message)) != 0)
+         printf("rc from MQTT Publish is %d\n", rc);
+    else
+         printf("Published Buffer %s to Topic %s\n",buf, topic);
+    i++;
+    //while (arrivedcount < i)
+        client.yield(100);
+    wait(1);    
+        // QoS 1
+    
+    sprintf(buf, "Hello World!  QoS 2 message from app version %f\n", version);
+    message.qos = MQTTSN::QOS2;
+    message.payloadlen = strlen(buf)+1;
+    if ((rc = client.publish(topicid, message)) != 0)
+         printf("rc from MQTT Publish is %d\n", rc);
+    else
+         printf("Published Buffer %s to Topic %s\n",buf, topic);
+    i++;
+    //while (arrivedcount < i)
+        client.yield(100);
+    wait(1); 
+    /*
+    // QoS 2
+    sprintf(buf, "Hello World!  QoS 2 message from app version %f\n", version);
+    message.qos = MQTTSN::QOS2;
+    message.payloadlen = strlen(buf)+1;
+    if ((rc = client.publish(topicid, message)) != 0)
+         printf("rc from MQTT Publish is %d\n", rc);
+    else
+         printf("Published Buffer %s to Topic %s\n",buf, topic);
+    i++;
+    printf("arrivedcount %d, i = %d\n",arrivedcount, i);
+    //while (arrivedcount < i)
+        client.yield(100);
+    wait(3); */
+    /*    
+    // n * QoS 2
+    for (int a = 1; a <= 10; a++)
+    {
+        sprintf(buf, "Hello World!  QoS 2 message number %d from app version %f\n", i, version);
+        message.qos = MQTTSN::QOS2;
+        message.payloadlen = strlen(buf)+1;
+        if ((rc = client.publish(topicid, message)) != 0)
+         printf("rc from MQTT Publish is %d\n", rc);
+    else
+         printf("Published Buffer %s to Topic %s\n",buf, topic);
+         i++;
+        printf("arrivedcount %d, i = %d\n",arrivedcount, i);
+        while (arrivedcount < i)
+            client.yield(100);
+    }
+    */
+    if ((rc = client.unsubscribe(topicid)) != 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);
+    printf("Finishing with %d messages received\n", arrivedcount);
+    
+    return 0;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MQTTSN.lib	Mon Dec 10 08:03:46 2018 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/icraggs/code/MQTTSN/#489a49ad708a
--- a/main.cpp	Mon Jan 16 13:26:50 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/* SpwfInterface NetworkSocketAPI Example Program
- * Copyright (c) 2015 ARM Limited
- *
- * 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 "mbed.h"
-#include "SpwfInterface.h"
-#include "TCPSocket.h"
-
-
-
-//------------------------------------
-// Hyperterminal configuration
-// 9600 bauds, 8-bit data, no parity
-//------------------------------------
-
-Serial pc(USBTX, USBRX);
-DigitalOut myled(LED1);
-
-/*************************************
-//FRDM-K64: D9->UART1_TX, D7->UART1_RX
-Pin connections:
-    FRDM      IDW01M1
-   ------    ---------
-    +3v3 <--> +3v3
-    GND  <--> GND
-    D9   <--> D8
-    D7   <--> D2
-
-SpwfSAInterface spwf(D9, D7, false);
-*************************************/
-/*************************************
-//LPCXpresso11U68: D9->UART1_TX, D7->UART1_RX
-Pin connections:
-    LPC      IDW01M1
-   ------    ---------
-    +3v3 <--> +3v3
-    GND  <--> GND
-    A1   <--> D8
-    A2   <--> D2
-
-SpwfSAInterface spwf(A1, A2, false);
-*************************************/
-
-//NUCLEO: D8->UART1_TX (PA_9), D2->UART1_RX (PA_10)
-SpwfSAInterface spwf(D8, D2, false);
-
-int main() {
-    int err;    
-    char * ssid = "STM";
-    char * seckey = "STMDemo";  
-    
-    pc.printf("\r\nX-NUCLEO-IDW01M1 mbed Application\r\n");     
-    pc.printf("\r\nconnecting to AP\r\n");
-            
-    if(spwf.connect(ssid, seckey, NSAPI_SECURITY_WPA2)) {      
-        pc.printf("\r\nnow connected\r\n");
-    } else {
-        pc.printf("\r\nerror connecting to AP.\r\n");
-        return -1;
-    }   
-
-    const char *ip = spwf.get_ip_address();
-    const char *mac = spwf.get_mac_address();
-    
-    pc.printf("\r\nIP Address is: %s\r\n", (ip) ? ip : "No IP");
-    pc.printf("\r\nMAC Address is: %s\r\n", (mac) ? mac : "No MAC");    
-    
-    SocketAddress addr(&spwf, "st.com");   
-    pc.printf("\r\nst.com resolved to: %s\r\n", addr.get_ip_address());    
-
-    pc.printf("\r\nconnecting to http://4.ifcfg.me\r\n");
-    
-    TCPSocket socket(&spwf);
-    err = socket.connect("4.ifcfg.me", 23);
-    if(err!=0) 
-    {
-      pc.printf("\r\nCould not connect to Socket, err = %d!!\r\n", err); 
-      return -1;
-    } else pc.printf("\r\nconnected to host server\r\n"); 
-    
-    char buffer[100];
-    int count = 0;
-    pc.printf("\r\nReceiving Data\r\n"); 
-    count = socket.recv(buffer, sizeof buffer);
-    
-    if(count > 0)
-    {
-        buffer [count]='\0';
-        printf("%s\r\n", buffer);  
-    }
-    else pc.printf("\r\nData not received\r\n");
-
-    pc.printf("\r\nClosing Socket\r\n");
-    socket.close();
-    pc.printf("\r\nUnsecure Socket Test complete.\r\n");
-    printf ("Socket closed\n\r");
-    spwf.disconnect();
-    printf ("WIFI disconnected, exiting ...\n\r");
-
-    while(1) { 
-      wait(1);
-      myled = !myled;
-    }
-}