Commit bce6aaa3 authored by winckel's avatar winckel

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
parent b708cb36
......@@ -36,7 +36,7 @@ Description Defines the EMMAS Service Access Point that provides
#include <string.h> // memset
#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"
#endif
......@@ -1107,10 +1107,49 @@ static int _emm_as_send(const emm_as_t *msg)
break;
}
#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);
if (bytes > 0) {
LOG_FUNC_RETURN (RETURNok);
}
# endif
#endif
}
LOG_FUNC_RETURN (RETURNerror);
......
......@@ -4,6 +4,7 @@ include $(UE_NAS_DIR)/EURECOM-NAS/Makefile.inc
libnas_INCLUDES = \
-I$(OPENAIR2_DIR) \
-I$(UE_NAS_DIR) \
-I$(SRCDIR) \
-I$(INCDIR) \
-I$(UTILDIR) \
......@@ -249,6 +250,7 @@ libnas_usim_OBJS = \
libnas_OBJS = \
nas_ue_task.o \
nas_itti_messaging.o \
EURECOM-NAS/src/nas_parser.o \
EURECOM-NAS/src/nas_proc.o \
EURECOM-NAS/src/nas_user.o \
......
......@@ -33,6 +33,7 @@
#include "intertask_interface.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,
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);
}
#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
*******************************************************************************/
#ifndef NAS_ITTI_MESSAGING_H_
#define NAS_ITTI_MESSAGING_H_
#include <stdint.h>
#include <ctype.h>
#include "intertask_interface.h"
#include "conversions.h"
#ifndef NAS_ITTI_MESSAGING_H_
#define NAS_ITTI_MESSAGING_H_
# if defined(EPC_BUILD) && defined(NAS_MME)
#include "conversions.h"
int nas_itti_dl_data_req(const uint32_t ue_id, void *const data,
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);
}
# 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_ */
......@@ -128,7 +128,7 @@ void *nas_ue_task(void *args_p) {
itti_free (ITTI_MSG_ORIGIN_ID(msg_p), msg_p);
msg_p = NULL;
}
}
nb_events = itti_get_events(TASK_NAS_UE, &events);
if ((nb_events > 0) && (events != NULL)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment