Added transmission of NAS UE message to RRC for AS_CELL_INFO_REQ and AS_NAS_ESTABLISH_REQ.
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4670 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -36,7 +36,7 @@ Description Defines the EMMAS Service Access Point that provides
|
|||||||
#include <string.h> // memset
|
#include <string.h> // memset
|
||||||
#include <stdlib.h> // malloc, free
|
#include <stdlib.h> // malloc, free
|
||||||
|
|
||||||
#if defined(EPC_BUILD) && defined(NAS_MME)
|
#if (defined(EPC_BUILD) && defined(NAS_MME)) || (defined(UE_BUILD) && defined(NAS_UE))
|
||||||
# include "nas_itti_messaging.h"
|
# include "nas_itti_messaging.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1107,10 +1107,49 @@ static int _emm_as_send(const emm_as_t *msg)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
# if defined(UE_BUILD) && defined(NAS_UE)
|
||||||
|
LOG_TRACE(DEBUG, "EMMAS-SAP - "
|
||||||
|
"Sending msg with id 0x%x, primitive %s (%d) to RRC layer for transmission",
|
||||||
|
as_msg.msgID,
|
||||||
|
_emm_as_primitive_str[msg->primitive - _EMMAS_START - 1],
|
||||||
|
msg->primitive);
|
||||||
|
|
||||||
|
switch (as_msg.msgID) {
|
||||||
|
case AS_CELL_INFO_REQ: {
|
||||||
|
nas_itti_cell_info_req(as_msg.msg.cell_info_req.plmnID,
|
||||||
|
as_msg.msg.cell_info_req.rat);
|
||||||
|
LOG_FUNC_RETURN (RETURNok);
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case AS_NAS_ESTABLISH_REQ: {
|
||||||
|
nas_itti_nas_establish_req(as_msg.msg.nas_establish_req.cause,
|
||||||
|
as_msg.msg.nas_establish_req.type,
|
||||||
|
as_msg.msg.nas_establish_req.s_tmsi,
|
||||||
|
as_msg.msg.nas_establish_req.plmnID,
|
||||||
|
as_msg.msg.nas_establish_req.initialNasMsg.data,
|
||||||
|
as_msg.msg.nas_establish_req.initialNasMsg.length);
|
||||||
|
LOG_FUNC_RETURN (RETURNok);
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case AS_UL_INFO_TRANSFER_REQ: {
|
||||||
|
|
||||||
|
LOG_FUNC_RETURN (RETURNok);
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case AS_RAB_ESTABLISH_RSP: {
|
||||||
|
|
||||||
|
LOG_FUNC_RETURN (RETURNok);
|
||||||
|
} break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
# else
|
||||||
int bytes = as_message_send(&as_msg);
|
int bytes = as_message_send(&as_msg);
|
||||||
if (bytes > 0) {
|
if (bytes > 0) {
|
||||||
LOG_FUNC_RETURN (RETURNok);
|
LOG_FUNC_RETURN (RETURNok);
|
||||||
}
|
}
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
LOG_FUNC_RETURN (RETURNerror);
|
LOG_FUNC_RETURN (RETURNerror);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ include $(UE_NAS_DIR)/EURECOM-NAS/Makefile.inc
|
|||||||
|
|
||||||
libnas_INCLUDES = \
|
libnas_INCLUDES = \
|
||||||
-I$(OPENAIR2_DIR) \
|
-I$(OPENAIR2_DIR) \
|
||||||
|
-I$(UE_NAS_DIR) \
|
||||||
-I$(SRCDIR) \
|
-I$(SRCDIR) \
|
||||||
-I$(INCDIR) \
|
-I$(INCDIR) \
|
||||||
-I$(UTILDIR) \
|
-I$(UTILDIR) \
|
||||||
@@ -249,6 +250,7 @@ libnas_usim_OBJS = \
|
|||||||
|
|
||||||
libnas_OBJS = \
|
libnas_OBJS = \
|
||||||
nas_ue_task.o \
|
nas_ue_task.o \
|
||||||
|
nas_itti_messaging.o \
|
||||||
EURECOM-NAS/src/nas_parser.o \
|
EURECOM-NAS/src/nas_parser.o \
|
||||||
EURECOM-NAS/src/nas_proc.o \
|
EURECOM-NAS/src/nas_proc.o \
|
||||||
EURECOM-NAS/src/nas_user.o \
|
EURECOM-NAS/src/nas_user.o \
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
#include "intertask_interface.h"
|
#include "intertask_interface.h"
|
||||||
#include "nas_itti_messaging.h"
|
#include "nas_itti_messaging.h"
|
||||||
|
|
||||||
|
#if defined(EPC_BUILD) && defined(NAS_MME)
|
||||||
int nas_itti_dl_data_req(const uint32_t ue_id, void *const data,
|
int nas_itti_dl_data_req(const uint32_t ue_id, void *const data,
|
||||||
const uint32_t length)
|
const uint32_t length)
|
||||||
{
|
{
|
||||||
@@ -60,3 +61,34 @@ void nas_itti_establish_cnf(const nas_error_code_t error_code, void *const data,
|
|||||||
|
|
||||||
itti_send_msg_to_task(TASK_S1AP, INSTANCE_DEFAULT, message_p);
|
itti_send_msg_to_task(TASK_S1AP, INSTANCE_DEFAULT, message_p);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(UE_BUILD) && defined(NAS_UE)
|
||||||
|
int nas_itti_cell_info_req(const plmn_t plmnID, const Byte_t rat)
|
||||||
|
{
|
||||||
|
MessageDef *message_p;
|
||||||
|
|
||||||
|
message_p = itti_alloc_new_message(TASK_NAS_UE, NAS_CELL_SELECTION_REQ);
|
||||||
|
|
||||||
|
NAS_CELL_SELECTION_REQ(message_p).plmnID = plmnID;
|
||||||
|
NAS_CELL_SELECTION_REQ(message_p).rat = rat;
|
||||||
|
|
||||||
|
return itti_send_msg_to_task(TASK_RRC_UE, INSTANCE_DEFAULT, message_p);
|
||||||
|
}
|
||||||
|
|
||||||
|
int nas_itti_nas_establish_req(as_cause_t cause, as_call_type_t type, as_stmsi_t s_tmsi, plmn_t plmnID, Byte_t *data, UInt32_t length)
|
||||||
|
{
|
||||||
|
MessageDef *message_p;
|
||||||
|
|
||||||
|
message_p = itti_alloc_new_message(TASK_NAS_UE, NAS_CONN_ESTABLI_REQ);
|
||||||
|
|
||||||
|
NAS_CONN_ESTABLI_REQ(message_p).cause = cause;
|
||||||
|
NAS_CONN_ESTABLI_REQ(message_p).type = type;
|
||||||
|
NAS_CONN_ESTABLI_REQ(message_p).s_tmsi = s_tmsi;
|
||||||
|
NAS_CONN_ESTABLI_REQ(message_p).plmnID = plmnID;
|
||||||
|
NAS_CONN_ESTABLI_REQ(message_p).initialNasMsg.data = data;
|
||||||
|
NAS_CONN_ESTABLI_REQ(message_p).initialNasMsg.length = length;
|
||||||
|
|
||||||
|
itti_send_msg_to_task(TASK_RRC_UE, INSTANCE_DEFAULT, message_p);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -27,14 +27,16 @@
|
|||||||
06410 Biot FRANCE
|
06410 Biot FRANCE
|
||||||
|
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
#ifndef NAS_ITTI_MESSAGING_H_
|
||||||
|
#define NAS_ITTI_MESSAGING_H_
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#include "intertask_interface.h"
|
#include "intertask_interface.h"
|
||||||
#include "conversions.h"
|
|
||||||
|
|
||||||
#ifndef NAS_ITTI_MESSAGING_H_
|
# if defined(EPC_BUILD) && defined(NAS_MME)
|
||||||
#define NAS_ITTI_MESSAGING_H_
|
#include "conversions.h"
|
||||||
|
|
||||||
int nas_itti_dl_data_req(const uint32_t ue_id, void *const data,
|
int nas_itti_dl_data_req(const uint32_t ue_id, void *const data,
|
||||||
const uint32_t length);
|
const uint32_t length);
|
||||||
@@ -89,5 +91,11 @@ static inline void nas_itti_establish_rej(const uint32_t ue_id,
|
|||||||
|
|
||||||
itti_send_msg_to_task(TASK_MME_APP, INSTANCE_DEFAULT, message_p);
|
itti_send_msg_to_task(TASK_MME_APP, INSTANCE_DEFAULT, message_p);
|
||||||
}
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(UE_BUILD) && defined(NAS_UE)
|
||||||
|
int nas_itti_cell_info_req(const plmn_t plmnID, const Byte_t rat);
|
||||||
|
|
||||||
|
int nas_itti_nas_establish_req(as_cause_t cause, as_call_type_t type, as_stmsi_t s_tmsi, plmn_t plmnID, Byte_t *data, UInt32_t length);
|
||||||
|
# endif
|
||||||
#endif /* NAS_ITTI_MESSAGING_H_ */
|
#endif /* NAS_ITTI_MESSAGING_H_ */
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ void *nas_ue_task(void *args_p) {
|
|||||||
|
|
||||||
itti_free (ITTI_MSG_ORIGIN_ID(msg_p), msg_p);
|
itti_free (ITTI_MSG_ORIGIN_ID(msg_p), msg_p);
|
||||||
msg_p = NULL;
|
msg_p = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
nb_events = itti_get_events(TASK_NAS_UE, &events);
|
nb_events = itti_get_events(TASK_NAS_UE, &events);
|
||||||
if ((nb_events > 0) && (events != NULL)) {
|
if ((nb_events > 0) && (events != NULL)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user