xApp usr API
The following functions are available in the usr SDK.
// Function to init the SDK
// @param1:argc := Passed from the terminal
// @param2:argv := Passed from the terminal
void init_xapp_sdk(int argc, char** argv);
// Function to retrieve information about connected E2 Nodes and UEs
// @param1:use_case_e := Use case intended to run the xApp.
// @return := Connected E2 Nodes with their respective UEs
arr_node_data_t node_data_xapp_sdk(use_case_e uc);
// Function to stop the SDK.
void stop_xapp_sdk();
// Function to do the handover (only available in OAI)
// @param1:n := E2 Node
// @param2:ue := targeted UE
// @param3:target_pci := target physical cell id
// @param4:target_ssb_nr_arfcn := target arfcn UE
void ho_xapp_sdk(global_e2_node_id_sdk_t const* n, ue_id_e2sm_sdk_t const* ue, int16_t target_pci, size_t target_ssb_nr_arfcn);
// Function to change the bandwith part
// @param1:n := E2 Node
// @param2:cell := Cell ID
// @param3:bwp_context := DL, UL or SUL
// @param4:start_rb := Starting RB
// @param5:number_rb := Amount of RBs
void bwp_xapp_sdk(global_e2_node_id_sdk_t const* n, cell_global_id_sdk_t const* cell, bwp_context_sdk_e bwp_context, uint32_t start_rb, uint32_t number_rb);
// Function to monitor a variable once
// @param1:n := E2 Node
// @param2:var := Monitoring variable
// @return := Monitoring variable value
float e2_node_mntr_xapp_sdk(global_e2_node_id_sdk_t const* n, mntr_var_e var);
// Function to monitor a variable with a periodicity and a callback
// @param1:n := E2 Node
// @param2:var := Monitoring variable
// @param3:p := Periodicity
// @param4:fn_cb := Callback function
// @return := Stop token
stop_token_t e2_node_mntr_cb_xapp_sdk(global_e2_node_id_sdk_t const* n, mntr_var_e var, periodicity_e p, void (*fn_cb)(float val,uint32_t ric_req_id));
// Function to monitor a UE variable once
// @param1:n := E2 Node
// @param2:ue := UE to monitor
// @param3:var := Monitoring variable
// @return := Monitoring variable value
float ue_mntr_xapp_sdk(global_e2_node_id_sdk_t const* n, ue_id_e2sm_sdk_t const* ue, mntr_var_e var);
// Function to monitor a UE variable with a periodicity and a callback
// @param1:n := E2 Node
// @param2:ue := UE to monitor
// @param3:var := Monitoring variable
// @param4:p := Periodicity
// @param5:fn_cb := Callback function
// @return := Stop token
stop_token_t ue_mntr_cb_xapp_sdk(global_e2_node_id_sdk_t const* n, ue_id_e2sm_sdk_t const* ue, mntr_var_e var, periodicity_e p, void (*fn_cb)(float val,uint32_t ric_req_id));
// Function to stop a running periodic subscription
void stop_cb_xapp_sdk(stop_token_t st);
// Function to assign slice resources
// @param1:n := E2 Node
// @param2:sst := Slice SST
// @param3:sd := Slice SD
// @param4:dedicated_prb := Dedicated amount of PRBs
void slice_xapp_sdk(global_e2_node_id_sdk_t const* n, char const* sst, char const* sd, int dedicated_prb);