+
+uint8_t nr5g_fapi_check_api_ordering(
+ p_nr5g_fapi_phy_instance_t p_phy_instance,
+ p_fapi_api_queue_elem_t p_msg_list)
+{
+ uint16_t msg_id, api_order_check = FAPI_CONFIG_REQUEST;
+ p_fapi_api_queue_elem_t p_msg = p_msg_list;
+ fapi_msg_t *p_fapi_msg = NULL;
+
+ if (p_phy_instance && p_phy_instance->state == FAPI_STATE_RUNNING) {
+ p_fapi_msg = (fapi_msg_t *) (p_msg + 1);
+ msg_id = p_fapi_msg->msg_id;
+ // check if first msg is CONFIG.req
+ if (msg_id == FAPI_CONFIG_REQUEST) {
+ p_msg = p_msg->p_next;
+ }
+ api_order_check = FAPI_DL_TTI_REQUEST;
+ // Continue checking remaining APIs
+ while (p_msg) {
+ p_fapi_msg = (fapi_msg_t *) (p_msg + 1);
+ msg_id = p_fapi_msg->msg_id;
+ if ((msg_id == FAPI_DL_TTI_REQUEST) && (msg_id == api_order_check)) {
+ api_order_check = FAPI_UL_TTI_REQUEST;
+ } else if ((msg_id == FAPI_UL_TTI_REQUEST) &&
+ (msg_id == api_order_check)) {
+ api_order_check = FAPI_UL_DCI_REQUEST;
+ } else {
+ break;
+ }
+ p_msg = p_msg->p_next;
+ }
+ if (api_order_check != FAPI_UL_DCI_REQUEST) {
+ return FAILURE;
+ }
+ }
+
+ return SUCCESS;
+}