Files
openairinterface5g/openair3/NRPPA/nrppa_gNB.c

78 lines
2.3 KiB
C

/*
* SPDX-License-Identifier: LicenseRef-CSSL-1.0
*/
#include "tree.h"
#include "queue.h"
#include "intertask_interface.h"
#include "assertions.h"
#include "conversions.h"
#include "nrppa_gNB.h"
#include "nrppa_common.h"
#include "nrppa_gNB_handlers.h"
#include "nrppa_gNB_location_information_transfer.h"
#include "nrppa_gNB_measurement_information_transfer.h"
void nrppa_gNB_init(void)
{
LOG_I(NRPPA, "Starting NRPPA layer\n");
itti_mark_task_ready(TASK_NRPPA);
}
void *nrppa_gNB_process_itti_msg(void *notUsed)
{
UNUSED(notUsed);
MessageDef *received_msg = NULL;
int result;
itti_receive_msg(TASK_NRPPA, &received_msg);
if (received_msg) {
instance_t instance = ITTI_MSG_DESTINATION_INSTANCE(received_msg);
LOG_I(NRPPA, "Received message %s\n", ITTI_MSG_NAME(received_msg));
switch (ITTI_MSG_ID(received_msg)) {
case TERMINATE_MESSAGE:
LOG_W(NRPPA, " *** Exiting NRPPA thread\n");
itti_exit_task();
break;
case NGAP_DOWNLINKUEASSOCIATEDNRPPA:
nrppa_handle_downlink_ue_associated_nrppa_transport(instance, &NGAP_DOWNLINKUEASSOCIATEDNRPPA(received_msg));
break;
case NGAP_DOWNLINKNONUEASSOCIATEDNRPPA:
nrppa_handle_downlink_non_ue_associated_nrppa_transport(instance, &NGAP_DOWNLINKNONUEASSOCIATEDNRPPA(received_msg));
break;
case NRPPA_TRP_INFORMATION_RESP:
nrppa_gNB_trp_information_response(instance, received_msg);
break;
case NRPPA_POSITIONING_INFORMATION_RESP:
nrppa_gNB_positioning_information_response(instance, received_msg);
break;
case NRPPA_POSITIONING_ACTIVATION_RESP:
nrppa_gNB_positioning_activation_response(instance, received_msg);
break;
case NRPPA_MEASUREMENT_RESP:
nrppa_gNB_measurement_response(instance, received_msg);
break;
default:
LOG_E(NRPPA, "Received unhandled message: %d:%s\n", ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
break;
}
result = itti_free(ITTI_MSG_ORIGIN_ID(received_msg), received_msg);
AssertFatal(result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
}
return NULL;
}
void *nrppa_gNB_task(void *arg)
{
UNUSED(arg);
nrppa_gNB_init();
while (1) {
(void)nrppa_gNB_process_itti_msg(NULL);
}
return NULL;
}