v1
Dependencies: MQTTSN mbed-http
Diff: Client-main.cpp
- Revision:
- 15:557d0008dd2d
- Parent:
- 14:e544557919d9
--- a/Client-main.cpp Mon Dec 10 08:06:33 2018 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,190 +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" -#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; - -}