*/
#include "xapp.hpp"
+#define BUFFER_SIZE 1024
Xapp::Xapp(XappSettings &config, XappRmr &rmr){
return;
}
-Xapp::Xapp(XappSettings &config, XappRmr &rmr, SubscriptionHandler &sub_ref){
- rmr_ref = &rmr;
- config_ref = &config;
- xapp_mutex = NULL;
- subhandler_ref = &sub_ref;
- set_rnib_gnblist();
-
- return;
- };
-
Xapp::~Xapp(void){
//Joining the threads
sleep(10);
}
-void Xapp::startup() {
+void Xapp::startup(SubscriptionHandler &sub_ref) {
+
+ subhandler_ref = &sub_ref;
+ set_rnib_gnblist();
+
//send subscriptions.
startup_subscribe_requests();
unsigned char meid[RMR_MAX_MEID];
std::string xapp_id = config_ref->operator [](XappSettings::SettingName::XAPP_ID);
- mdclog_write(MDCLOG_INFO,"Sending subscription in file= %s, line=%d",__FILE__,__LINE__);
+ mdclog_write(MDCLOG_INFO,"Preparing to send subscription in file= %s, line=%d",__FILE__,__LINE__);
+
+ std::string sub_id = "1";
auto gnblist = get_rnib_gnblist();
int sz = gnblist.size();
+ if(sz <= 0)
+ mdclog_write(MDCLOG_INFO,"Subscriptions cannot be sent as GNBList in RNIB is NULL");
+
for(int i = 0; i<sz; i++){
//give the message to subscription handler, along with the transmitter.
strcpy((char*)meid,gnblist[i].c_str());
- char *strMsg = "Subscription Request from HelloWorld XApp\0";
- strncpy((char *)data,strMsg,strlen(strMsg));
- data_size = strlen(strMsg);
+ // char *strMsg = "Subscription Request from HelloWorld XApp\0";
+ // strncpy((char *)data,strMsg,strlen(strMsg));
+ // data_size = strlen(strMsg);
+
+ unsigned char buf[1024];
+ size_t buf_size = 1024;
+
+
+ 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"));
+
+ //first Action Object
+ E2APAction<HWActionDefinition> actionObj;
+ actionObj.add(E2APAction<HWActionDefinition>::ActionIEs().set_ricActionID(1).set_ricActionType(1).set_ricActionDefinition(e2sm_actdefn1));
+
+ 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));
+
+ 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");
+
+
xapp_rmr_header rmr_header;
rmr_header.message_type = RIC_SUB_REQ;
- rmr_header.payload_length = data_size;
- strcpy((char*)rmr_header.meid,gnblist[i].c_str());
+ rmr_header.payload_length = buf_size; //data_size
- 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*)data);
+ strcpy((char*)rmr_header.sid,sub_id.c_str());
+ strcpy((char*)rmr_header.meid,gnblist[i].c_str());
- int res = subhandler_ref->manage_subscription_request(meid, transmitter);
- if(res){
- mdclog_write(MDCLOG_INFO,"Subscription SUCCESSFUL in file= %s, line=%d for MEID %s",__FILE__,__LINE__, meid);
+ 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(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);
}
}
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;
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;