123
Dependencies: MQTTSN
Client-AE.cpp
- Committer:
- m_ahsan
- Date:
- 2019-08-06
- Revision:
- 15:8c473836feba
File content as of revision 15:8c473836feba:
#define MQTTSNCLIENT_QOS2 1
#include "mbed.h"
#include "stdio.h"
#include "MQTT_server_setting.h"
#include "MQTTSNUDP.h"
#include "MQTTSNClient.h"
#include "sensor.h"
#include "Enumeration.h"
#include "easy-connect.h"
#include "MQTTSN_func.h"
#include "registration.h"
#include "container.h"
#include "contentInstance.h"
#include "Subscription.h"
NetworkInterface* network = NULL;
int main() {
float version = 1.0;
MQTTSNUDP* ipstack = NULL;
MQTTSN::Client<MQTTSNUDP, Countdown> *client = NULL;
/////////////////////////////////////////////////////////////////////////////////////////
printf("Opening network interface...\r\n");
{
network = easy_connect(true); // If true, prints out connection details.
if (!network) {
printf("Unable to open network interface.\r\n");
return -1;
}
}
printf("Network interface opened successfully.\r\n");
printf("\r\n");
const char* Local_IP = network->get_ip_address();
printf("IP Address of Device is: %s\n", Local_IP);
const char* Local_MAC = network->get_mac_address();
printf("MAC Address of Device is: %s\n", Local_MAC);
/////////////////////////////////////////////////////////////////////////////////////////
ipstack = new MQTTSNUDP(network);
client = new MQTTSN::Client<MQTTSNUDP, Countdown>(*ipstack);
//////////////////////////////////UDP Connect///////////////////////////////////////////
printf("Connecting to %s:%d\n", MQTT_SERVER_HOST_NAME, PORT);
rc = ipstack->connect(MQTT_SERVER_HOST_NAME, PORT);
if (rc != 0)
printf("rc from UDP connect is %d\n", rc);
else
printf("UDP connected\n");
//////////////////////////////////MQTT Connect///////////////////////////////////////////
attemptConnect(client, ipstack);
//////////////////////////////////MQTT Subscribe//////////////////////////////////////////
//Set Topic to /oneM2M/reg_resp/Sensor01/CSE_01
create_Topic("reg_resp", MQTT_CLIENT_ID, "CSE_01");
MQTTSN_topicid topicid;
if ((rc = subscribe(client, ipstack, topicid)) != 0)
printf("rc from MQTT subscribe is %d\n", rc);
else
printf("Subscribed to Topic %s\n", MQTT_TOPIC);
//Set Topic to /oneM2M/reg_req/Sensor01/CSE_01
create_Topic("reg_req", MQTT_CLIENT_ID, "CSE_01");
MQTTSN_topicid topicid2;
if ((rc = subscribe(client, ipstack, topicid2)) != 0)
printf("rc from MQTT subscribe is %d\n", rc);
else
printf("Subscribed to Topic %s\n", MQTT_TOPIC);
//////////////////////////////////Registration///////////////////////////////////////////
if(Registration(client, ipstack, topicid2) != 0 )
printf("Registration failed with response: %s\n", response.c_str());
else printf("Registration Done wth response: %s\n", response.c_str());
////////////////////////////////Req-Resp Topics//////////////////////////////////////////
c_aei = new char [aei.length()+1];;
printf("\nAEI in main: %s\r\n\n\n", aei.c_str());
strcpy(c_aei, aei.c_str());
printf("C_AEI: %s\r\n", c_aei);
//Set Topic to /oneM2M/resp/SAE01/CSE_01
create_Topic("resp", c_aei, "CSE_01");
MQTTSN_topicid topicid3;
if ((rc = subscribe(client, ipstack, topicid3)) != 0)
printf("rc from MQTT subscribe is %d\n", rc);
else
printf("Subscribed to Topic %s\n", MQTT_TOPIC);
//Set Topic to /oneM2M/req/SAE01/CSE_01
create_Topic("req", c_aei, "CSE_01");
MQTTSN_topicid topicid4;
if ((rc = subscribe(client, ipstack, topicid4)) != 0)
printf("rc from MQTT subscribe is %d\n", rc);
else
printf("Subscribed to Topic %s\n", MQTT_TOPIC);
wait(3);
////////////////////////////////// Container ////////////////////////////////////////////
if(Container(client, ipstack, topicid4) != 0 )
printf("Container Creation failed with response: %s\n", response.c_str());
else printf("Container Created wth response: %s\n", response.c_str());
wait(3);
////////////////////////////////// Subscription ////////////////////////////////////////////
if(Subscription(client, ipstack, topicid4) != 0 )
printf("Subscription Creation failed with response: %s\n", response.c_str());
else printf("Subscription Created wth response: %s\n", response.c_str());
wait(3);
////////////////////////////////// ContentInstance //////////////////////////////////////
if(contentInstance(client, ipstack, topicid4) != 0 )
printf("ContentInstance Creation failed with response: %s\n", response.c_str());
else printf("ContentInstance Created wth response: %s\n", response.c_str());
rc = delete_cnt(client, ipstack, topicid4);
rc = delete_sub(client, ipstack, topicid4);
while(1)
{
// Check connection //
if(!client->isConnected()){
break;
}
// Received a control message. //
if(isMessageArrived) {
isMessageArrived = false;
// Just print it out here.
printf("\r\nMessage arrived:\r\n%s\r\n", messageBuffer);
//generate notification response
if(op == 5)
{
Response Resp;
RES.resourceName = rn;
Resp.Request_Identifier = rqi;
Resp.To = From;
lcl = false;
Resp.From = CSE_ID;
buf = Notify_Resp(Resp);
if ((rc = publish(client, ipstack, topicid3)) != 0)
printf("rc from MQTT Publish is %d\n", rc);
else
printf("Published Buffer: %s to Topic %s\n",buf, MQTT_TOPIC);
}
}
client->yield(4000);
//wait(4);
}
//if ((rc = client->unsubscribe(topicid2)) != 0)
// printf("rc from unsubscribe was %d\n", rc);
if ((rc = client->disconnect()) != 0)
printf("rc from disconnect was %d\n", rc);
ipstack->disconnect();
delete ipstack;
delete client;
printf("Version %.2f: finish %d msgs\n", version, arrivedcount);
printf("Finishing with %d messages received\n", arrivedcount);
return 0;
}