
123
Dependencies: MQTTSN
Revision 13:8f1f478c300a, committed 2018-12-10
- 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
--- /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; - } -}