-// void e2ap_handle_RICSubscriptionRequest_old(e2ap_pdu_t* pdu, int &socket_fd)\r
-// {\r
-// RICsubscription_params_t params;\r
-// e2ap_parse_RICsubscriptionRequest(pdu, params);\r
-//\r
-// /* Example handling logic\r
-// - Accept if request id is even-numbered -> send back response\r
-// in this case, accept every other actions\r
-//\r
-// - Reject if request id is odd-numbered -> send back failure\r
-// */\r
-//\r
-// e2ap_pdu_t* res_pdu = new_e2ap_pdu();\r
-// bool is_failure = false;\r
-//\r
-// if(params.request_id % 2 == 0)\r
-// {\r
-// for(size_t i = 0; i < params.actionList.size(); i++)\r
-// {\r
-// if(i%2 == 0){\r
-// params.actionList[i].isAdmitted = true;\r
-// } else {\r
-// params.actionList[i].isAdmitted = false;\r
-// params.actionList[i].notAdmitted_cause = RICcause_radioNetwork;\r
-// params.actionList[i].notAdmitted_subCause = 5;\r
-// }\r
-// }\r
-//\r
-// e2ap_create_RICsubscriptionResponse(res_pdu, params);\r
-// LOG_I("[E2AP] Created RIC-SUBSCRIPTION-RESPONSE");\r
-// }\r
-// else\r
-// {\r
-// is_failure = true;\r
-//\r
-// for(size_t i = 0; i < params.actionList.size(); i++)\r
-// {\r
-// params.actionList[i].isAdmitted = false;\r
-// params.actionList[i].notAdmitted_cause = RICcause_radioNetwork;\r
-// params.actionList[i].notAdmitted_subCause = 5;\r
-// }\r
-//\r
-// e2ap_create_RICsubscriptionFailure(res_pdu, params);\r
-// LOG_I("[E2AP] Created RIC-SUBSCRIPTION-FAILURE");\r
-// }\r
-//\r
-// e2ap_print_pdu(res_pdu);\r
-//\r
-// //Encode into buffer\r
-// sctp_buffer_t data;\r
-// e2ap_encode_pdu(res_pdu, data.buffer, sizeof(data.buffer), data.len);\r
-//\r
-// //send response data over sctp\r
-// if(sctp_send_data(socket_fd, data) > 0)\r
-// {\r
-// if(is_failure) {\r
-// LOG_I("[SCTP] Sent RIC-SUBSCRIPTION-FAILURE");\r
-// }\r
-// else {\r
-// LOG_I("[SCTP] Sent RIC-SUBSCRIPTION-RESPONSE");\r
-// }\r
-// }\r
-// else\r
-// {\r
-// if(is_failure) {\r
-// LOG_I("[SCTP] Unable to send RIC-SUBSCRIPTION-FAILURE");\r
-// }\r
-// else {\r
-// LOG_E("[SCTP] Unable to send RIC-SUBSCRIPTION-RESPONSE");\r
-// }\r
-// }\r
-//\r
-// }\r
+void e2ap_handle_ResourceStatusRequest(E2AP_PDU_t* pdu, int &socket_fd)\r
+{\r
+ //send back ResourceStatusResponse, followed by resource status update\r
+ E2AP_PDU_t* res_pdu = e2ap_xml_to_pdu("E2AP_ResourceStatusResponse.xml");\r
+\r
+ LOG_D("[E2AP] Created RESOURCE-STATUS-RESPONSE");\r
+\r
+ e2ap_asn1c_print_pdu(res_pdu);\r
+\r
+ uint8_t *buf;\r
+ sctp_buffer_t data;\r
+\r
+ data.len = e2ap_asn1c_encode_pdu(res_pdu, &buf);\r
+ memcpy(data.buffer, buf, min(data.len, MAX_SCTP_BUFFER));\r
+\r
+ //send response data over sctp\r
+ if(sctp_send_data(socket_fd, data) > 0) {\r
+ LOG_I("[SCTP] Sent RESOURCE-STATUS-RESPONSE");\r
+ } else {\r
+ LOG_E("[SCTP] Unable to send RESOURCE-STATUS-RESPONSE to peer");\r
+ }\r
+\r
+\r
+ //send ResourceStatusUpdate periodically\r
+ E2AP_PDU_t* update_pdu = e2ap_xml_to_pdu("E2AP_ResourceStatusUpdate.xml");\r
+\r
+ uint8_t *update_buf;\r
+ sctp_buffer_t update_data;\r
+\r
+ update_data.len = e2ap_asn1c_encode_pdu(update_pdu, &update_buf);\r
+ memcpy(update_data.buffer, update_buf, min(update_data.len, MAX_SCTP_BUFFER));\r
+\r
+ while(1) {\r
+ // e2ap_asn1c_print_pdu(update_pdu);\r
+\r
+ if(sctp_send_data(socket_fd, update_data) > 0) {\r
+ LOG_I("[SCTP] Sent RESOURCE-STATUS-UPDATE");\r
+ } else {\r
+ LOG_E("[SCTP] Unable to send RESOURCE-STATUS-UPDATE to peer");\r
+ }\r
+\r
+ sleep(1);\r
+\r
+ }\r
+}\r