E2AP Abstraction Changes
[ric-app/hw.git] / src / xapp.cc
index 1fb2b5b..1753661 100644 (file)
@@ -126,8 +126,9 @@ void Xapp::startup_subscribe_requests(void ){
 
    mdclog_write(MDCLOG_INFO,"Preparing to send subscription in file= %s, line=%d",__FILE__,__LINE__);
 
-   auto gnblist = get_rnib_gnblist();
+   std::string sub_id = "1";
 
+   auto gnblist = get_rnib_gnblist();
    int sz = gnblist.size();
 
    if(sz <= 0)
@@ -142,44 +143,47 @@ void Xapp::startup_subscribe_requests(void ){
        // strncpy((char *)data,strMsg,strlen(strMsg));
        // data_size = strlen(strMsg);
 
-        subscription_helper  din;
-        subscription_helper  dout;
+        unsigned char buf[1024];
+        size_t buf_size = 1024;
 
-        subscription_request sub_req;
-        subscription_request sub_recv;
 
-        unsigned char buf[BUFFER_SIZE];
-        size_t buf_size = BUFFER_SIZE;
-        bool res;
+        HWEventTriggerDefinition eventObj;
+        eventObj.set_triggerNature(0);
 
+        //creating Action Definition
+        HWActionDefinition e2sm_actdefn1;
+        e2sm_actdefn1.add(HWActionDefinition::RANParamIEs().set_param_id(1).set_param_name("ENodeBID").set_param_test(1).set_param_value("SR123"));
 
-        //Random Data  for request
-        int request_id = 1;
-        int function_id = 0;
-        std::string event_def = "HelloWorld Event Definition";
+        //first Action Object
+        E2APAction<HWActionDefinition> actionObj;
+        actionObj.add(E2APAction<HWActionDefinition>::ActionIEs().set_ricActionID(1).set_ricActionType(1).set_ricActionDefinition(e2sm_actdefn1));
 
-        din.set_request(request_id);
-        din.set_function_id(function_id);
-        din.set_event_def(event_def.c_str(), event_def.length());
+        E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition> requestObj(E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs().set_ranFunctionID(1).set_ricInstanceID(1).set_ricRequestorID(3).set_ricAction_ToBeSetup_List(actionObj).set_ricEventTriggerDefinition(eventObj));
 
-        std::string act_def = "HelloWorld Action Definition";
+        bool res = requestObj.encode(&buf[0], &buf_size);
+        if(!res)
+                 mdclog_write(MDCLOG_ERR,"SubscriptionRequest ENCODING Error: %s",requestObj.get_error().c_str());
+        else
+                 mdclog_write(MDCLOG_INFO,"SubscriptionRequest ENCODING SUCESS");
 
-        din.add_action(1,1,(void*)act_def.c_str(), act_def.length(), 0);
 
-        res = sub_req.encode_e2ap_subscription(&buf[0], &buf_size, din);
 
         xapp_rmr_header rmr_header;
         rmr_header.message_type = RIC_SUB_REQ;
         rmr_header.payload_length = buf_size; //data_size
+
+        strcpy((char*)rmr_header.sid,sub_id.c_str());
         strcpy((char*)rmr_header.meid,gnblist[i].c_str());
 
         mdclog_write(MDCLOG_INFO,"Sending subscription in file= %s, line=%d for MEID %s",__FILE__,__LINE__, meid);
      auto transmitter = std::bind(&XappRmr::xapp_rmr_send,rmr_ref, &rmr_header, (void*)buf );//(void*)data);
 
-     int result = subhandler_ref->manage_subscription_request(meid, transmitter);
-     if(result){
-        mdclog_write(MDCLOG_INFO,"Subscription SUCCESSFUL in file= %s, line=%d for MEID %s",__FILE__,__LINE__, meid);
-
+     int result = subhandler_ref->manage_subscription_request(gnblist[i], transmitter);
+     if(result==SUBSCR_SUCCESS){
+       mdclog_write(MDCLOG_INFO,"Subscription SUCCESSFUL in file= %s, line=%d for MEID %s",__FILE__,__LINE__, meid);
+     }
+     else {
+               mdclog_write(MDCLOG_ERR,"Subscription FAILED in file= %s, line=%d for MEID %s",__FILE__,__LINE__, meid);
      }
    }
 
@@ -189,7 +193,7 @@ void Xapp::startup_get_policies(void){
 
   int policy_id = HELLOWORLD_POLICY_ID;
 
-  std::string policy_query = "{\"policy_id\":" + std::to_string(policy_id) + "}";
+  std::string policy_query = "{\"policy_type_id\":" + std::to_string(policy_id) + "}";
   unsigned char * message = (unsigned char *)calloc(policy_query.length(), sizeof(unsigned char));
   memcpy(message, policy_query.c_str(),  policy_query.length());
   xapp_rmr_header header;
@@ -215,7 +219,7 @@ void Xapp::set_rnib_gnblist(void) {
 
 
            Document doc;
-           ParseResult parseJson = doc.Parse((char*)result);
+           ParseResult parseJson = doc.Parse<kParseStopWhenDoneFlag>((char*)result);
            if (!parseJson) {
                std::cerr << "JSON parse error: %s (%u)", GetParseErrorFunc(parseJson.Code());
                return;