v1
Dependencies: MQTTSN mbed-http
Diff: sensor.h
- Revision:
- 15:557d0008dd2d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sensor.h Mon Mar 11 07:51:06 2019 +0000
@@ -0,0 +1,241 @@
+#include <string>
+void process_rsc(MbedJSONValue &MSG);
+
+bool reg_resp = false;
+
+char* CSE_ID = "cse1";
+char* AE_ID;
+
+struct Mendatory
+{
+ string To;
+ string From;
+ string Request_Identifier;
+ int Operation;
+ int Resource_Type;
+}m1;
+
+struct CreateAE
+{
+ string resourceName;
+ string App_ID;
+ string pointOfAccess;
+ bool requestReachability;
+}CAE;
+
+const char* Create_AE()
+{
+ MbedJSONValue MSG, demo, demo2, demo3;
+
+ std::string s;
+
+ //fill the object
+
+ demo3["api"] = CAE.App_ID;
+ demo3["rn"] = CAE.resourceName;
+ demo3["rr"] = CAE.requestReachability;
+ demo2["m2m:ae"] = demo3;
+ demo["fr"] = m1.From;
+ demo["op"] = m1.Operation;
+ demo["pc"] = demo2;
+ demo["rqi"] = m1.Request_Identifier;
+ demo["to"] = m1.To;
+ demo["ty"] = m1.Resource_Type;
+
+ //serialize it into a JSON string
+ s = demo.serialize();
+ printf("\nMSG SIZE: %d\n", s.length());
+ //printf("json: %s\r\n", s.c_str());
+ return s.c_str();
+}
+
+void process_msg()
+{
+ MbedJSONValue MSG;
+ //printf("Before Parsing\n");
+ parse(MSG, messageBuffer);
+ //bool temp; //Check fot parameters presence
+
+ ////////////////////////resource Type Parameter (Mendatory parameter)//////////////////////
+ if(MSG.hasMember("rsc"))
+ {
+ rsc = MSG["rsc"].get<int>();
+ printf("Response Status Code: %d\r\n", rsc);
+ Response_Type();
+ printf("Response Status: %s\r\n", response.c_str());
+ process_rsc(MSG);
+ return;
+ }
+
+ ////////////////////////resource Type Parameter (Mendatory parameter)//////////////////////
+ if(MSG.hasMember("ty"))
+ {
+ ty = MSG["ty"].get<int>();
+ printf("ResourceType: %d\r\n", ty);
+ resource_type();
+ printf("ResourceType: %s\r\n", resourceType.c_str());
+ }
+ else {
+ //add response code for no mendatory parameter
+ return; }
+
+ ////////////////////////From parameter (Mendatory parameter[optional for Create AE])//////////
+ if(MSG.hasMember("fr"))
+ {
+ From = MSG["fr"].get<std::string>();
+ printf("From: %s\r\n", From.c_str());
+ }
+ else {
+ //add Response Status Code for no mendatory parameter BAD_REQUEST
+ return; }
+
+ ////////////////////////Operation Parameter (Mendatory parameter)//////////////////////
+ if(MSG.hasMember("op"))
+ {
+ op = MSG["op"].get<int>();
+ printf("Operation: %d\r\n", op);
+ Operation_Type();
+ printf("Operation: %s\r\n", operation.c_str());
+ }
+ else {
+ //add response code for no mendatory parameter
+ return; }
+
+ ////////////////////////To Parameter (Mendatory parameter)//////////////////////
+ if(MSG.hasMember("to"))
+ {
+ to = MSG["to"].get<std::string>();
+ printf("To: %s\r\n", to.c_str());
+ }
+ else {
+ //add response code for no mendatory parameter
+ return; }
+
+ ////////////////////////Request Identifier (Mendatory parameter)//////////////////////
+ if(MSG.hasMember("rqi"))
+ {
+ rqi = MSG["rqi"].get<std::string>();
+ printf("Request Identifier: %s\r\n", rqi.c_str());
+ }
+ else {
+ //add response code for no mendatory parameter
+ return; }
+
+ ////////////////////////Response Status Code
+ if(MSG.hasMember("rsc"))
+ {
+ rsc = MSG["rsc"].get<int>();
+ printf("Response Status Code: %d\r\n", rsc);
+ Response_Type();
+ printf("Response Status: %s\r\n", response.c_str());
+ }
+ MbedJSONValue &MSG_1 = MSG["pc"][content]; //content value depends on the resource type e.g. m2m:ae for resource type 2
+
+ //////////////////////// Resource specific attributes CSE-ID
+ if(MSG_1.hasMember("csi"))
+ {
+ csi = MSG_1["csi"].get<std::string>();
+ printf("CSI: %s\r\n", csi.c_str());
+ }
+
+ //////////////////////// Resource specific attributes Point of Access
+ if(MSG_1.hasMember("poa"))
+ {
+ poa = MSG_1["poa"].get<std::string>();
+ printf("POA: %s\r\n", poa.c_str());
+ }
+
+ /////////////////////// Resource specific attributes CSE Type
+ if(MSG_1.hasMember("cst"))
+ {
+ cst = MSG_1["cst"].get<int>();
+ printf("CSE Type: %d\r\n", cst);
+ CSE_Type();
+ printf("CSE Type: %s\r\n", cseType.c_str());
+ }
+
+ /////////////////////// Resource specific attributes RequestReachability
+ if(MSG_1.hasMember("rr"))
+ {
+ RequestReachability = MSG_1["rr"].get<bool>();
+ printf("RR: %s\r\n", RequestReachability? "true" : "false");
+ }
+
+ /////////////////////// Resource specific attributes App-ID
+ if(MSG_1.hasMember("api"))
+ {
+ api = MSG_1["api"].get<std::string>();
+ printf("App-ID: %s\r\n", api.c_str());
+ }
+ // msg[0] = '\0';
+ //MSG.~MbedJSONValue();
+ //MSG_1.~MbedJSONValue();*/
+}
+
+void process_rsc(MbedJSONValue &MSG)
+{
+ if(MSG.hasMember("rqi"))
+ {
+ rqi = MSG["rqi"].get<std::string>();
+ printf("Request Identifier: %s\r\n", rqi.c_str());
+ }
+ else {
+ //add response code for no mendatory parameter
+ return; }
+ if(MSG.hasMember("to"))
+ {
+ to = MSG["to"].get<std::string>();
+ printf("To: %s\r\n", to.c_str());
+ }
+ else {
+ //add response code for no mendatory parameter
+ return; }
+ if(MSG.hasMember("fr"))
+ {
+ From = MSG["fr"].get<std::string>();
+ printf("From: %s\r\n", From.c_str());
+ }
+ else {
+ //add response code for no mendatory parameter
+ return; }
+
+ MbedJSONValue &MSG_1 = MSG["pc"][content];
+
+ if(MSG_1.hasMember("ty"))
+ {
+ ty = MSG_1["ty"].get<int>();
+ printf("ResourceType: %d\r\n", ty);
+ resource_type();
+ printf("ResourceType: %s\r\n", resourceType.c_str());
+ }
+ else {
+ //add response code for no mendatory parameter
+ return; }
+
+ if(MSG_1.hasMember("rr"))
+ {
+ RequestReachability = MSG_1["rr"].get<bool>();
+ printf("RR: %s\r\n", RequestReachability? "true" : "false");
+ }
+ if(MSG_1.hasMember("aei"))
+ {
+ aei = MSG_1["aei"].get<std::string>();
+ printf("AE_ID: %s\r\n", aei.c_str());
+ }
+ if(MSG_1.hasMember("poa"))
+ {
+ poa = MSG_1["poa"].get<std::string>();
+ printf("POA: %s\r\n", poa.c_str());
+ }
+ if(MSG_1.hasMember("rn"))
+ {
+ rn = MSG_1["rn"].get<std::string>();
+ printf("Resource Name: %s\r\n", rn.c_str());
+ }
+ if(MSG_1.hasMember("api"))
+ {
+ api = MSG_1["api"].get<std::string>();
+ printf("App-ID: %s\r\n", api.c_str());
+ }
+ return;
+}
\ No newline at end of file