Commit de578561 authored by Jerome PERALDI's avatar Jerome PERALDI

Merge branch '10_3_1_branch' into '3GPP_TTCN_System_Simulator'

TC 10.3.1 Support

See merge request firecell/rdsubscription/sequansrd!150
parents 04151ae6 fc5a1615
...@@ -666,6 +666,9 @@ typedef struct eNB_RRC_UE_s { ...@@ -666,6 +666,9 @@ typedef struct eNB_RRC_UE_s {
int8_t reestablishment_xid; int8_t reestablishment_xid;
int does_nr; int does_nr;
int nr_capabilities_requested; int nr_capabilities_requested;
uint32_t sdu_size; /* This is size of SDU received from TTCN */
uint8_t sdu[SDU_SIZE]; /* This is sdu received from ttcn */
} eNB_RRC_UE_t; } eNB_RRC_UE_t;
typedef uid_t ue_uid_t; typedef uid_t ue_uid_t;
......
This diff is collapsed.
...@@ -146,36 +146,36 @@ static void ss_send_drb_data(ss_drb_pdu_ind_t *pdu_ind, int cell_index){ ...@@ -146,36 +146,36 @@ static void ss_send_drb_data(ss_drb_pdu_ind_t *pdu_ind, int cell_index){
static void ss_task_handle_drb_pdu_req(struct DRB_COMMON_REQ *req,int cell_index) static void ss_task_handle_drb_pdu_req(struct DRB_COMMON_REQ *req,int cell_index)
{ {
assert(req); assert(req);
MessageDef *message_p = itti_alloc_new_message(TASK_PDCP_ENB, 0, SS_DRB_PDU_REQ); MessageDef *message_p = itti_alloc_new_message(TASK_PDCP_ENB, 0, SS_DRB_PDU_REQ);
assert(message_p); assert(message_p);
if (message_p) if (message_p)
{ {
/* Populate the message and send to eNB */ /* Populate the message and send to eNB */
SS_DRB_PDU_REQ(message_p).drb_id = req->Common.RoutingInfo.v.RadioBearerId.v.Drb; SS_DRB_PDU_REQ(message_p).drb_id = req->Common.RoutingInfo.v.RadioBearerId.v.Drb;
memset(SS_DRB_PDU_REQ(message_p).sdu, 0, SDU_SIZE); memset(SS_DRB_PDU_REQ(message_p).sdu, 0, SDU_SIZE);
for(int i = 0; i < req->U_Plane.SubframeDataList.d; i++){ for(int i = 0; i < req->U_Plane.SubframeDataList.d; i++){
if(req->U_Plane.SubframeDataList.v[i].PduSduList.d == L2DataList_Type_PdcpSdu){ if(req->U_Plane.SubframeDataList.v[i].PduSduList.d == L2DataList_Type_PdcpSdu){
LOG_A(ENB_APP, "PDCP SDU Received in DRB_COMMON_REQ"); LOG_A(ENB_SS, "PDCP SDU Received in DRB_COMMON_REQ");
for(int j = 0; j < req->U_Plane.SubframeDataList.v[i].PduSduList.v.PdcpSdu.d; j++){ for(int j = 0; j < req->U_Plane.SubframeDataList.v[i].PduSduList.v.PdcpSdu.d; j++){
SS_DRB_PDU_REQ(message_p).sdu_size = req->U_Plane.SubframeDataList.v[i].PduSduList.v.PdcpSdu.v[j].d; SS_DRB_PDU_REQ(message_p).sdu_size = req->U_Plane.SubframeDataList.v[i].PduSduList.v.PdcpSdu.v[j].d;
LOG_A(ENB_APP, "Length of PDCP SDU received in DRB_COMMON_REQ: %lu\n", req->U_Plane.SubframeDataList.v[i].PduSduList.v.PdcpSdu.v[j].d); LOG_A(ENB_SS, "Length of PDCP SDU received in DRB_COMMON_REQ: %lu\n", req->U_Plane.SubframeDataList.v[i].PduSduList.v.PdcpSdu.v[j].d);
memcpy(SS_DRB_PDU_REQ(message_p).sdu, req->U_Plane.SubframeDataList.v[i].PduSduList.v.PdcpSdu.v[j].v, req->U_Plane.SubframeDataList.v[i].PduSduList.v.PdcpSdu.v[j].d); memcpy(SS_DRB_PDU_REQ(message_p).sdu, req->U_Plane.SubframeDataList.v[i].PduSduList.v.PdcpSdu.v[j].v, req->U_Plane.SubframeDataList.v[i].PduSduList.v.PdcpSdu.v[j].d);
} }
} }
} }
} }
SS_DRB_PDU_REQ(message_p).rnti = SS_context.SSCell_list[cell_index].ss_rnti_g; SS_DRB_PDU_REQ(message_p).rnti = SS_context.SSCell_list[cell_index].ss_rnti_g;
int send_res = itti_send_msg_to_task(TASK_RRC_ENB, instance_g, message_p); int send_res = itti_send_msg_to_task(TASK_RRC_ENB, instance_g, message_p);
if (send_res < 0) if (send_res < 0)
{ {
LOG_A(ENB_APP, "[SS_DRB] Error in itti_send_msg_to_task"); LOG_A(ENB_APP, "[SS_DRB] Error in itti_send_msg_to_task");
} }
LOG_A(ENB_APP, "Send res: %d", send_res); LOG_A(ENB_APP, "Send res: %d", send_res);
} }
......
...@@ -213,7 +213,7 @@ static void ss_task_handle_rrc_pdu_req(struct EUTRA_RRC_PDU_REQ *req) ...@@ -213,7 +213,7 @@ static void ss_task_handle_rrc_pdu_req(struct EUTRA_RRC_PDU_REQ *req)
assert(req); assert(req);
LTE_DL_DCCH_Message_t *dl_dcch_msg=NULL; LTE_DL_DCCH_Message_t *dl_dcch_msg=NULL;
LTE_DL_CCCH_Message_t *dl_ccch_msg=NULL; LTE_DL_CCCH_Message_t *dl_ccch_msg=NULL;
MessageDef *message_p = itti_alloc_new_message(TASK_RRC_ENB, 0, SS_RRC_PDU_REQ); MessageDef *message_p = itti_alloc_new_message(TASK_RRC_ENB, 0, SS_RRC_PDU_REQ);
assert(message_p); assert(message_p);
instance_g = 0; instance_g = 0;
if (message_p) if (message_p)
...@@ -443,61 +443,61 @@ void ss_eNB_srb_init(void) ...@@ -443,61 +443,61 @@ void ss_eNB_srb_init(void)
*/ */
void *ss_eNB_srb_process_itti_msg(void *notUsed) void *ss_eNB_srb_process_itti_msg(void *notUsed)
{ {
MessageDef *received_msg = NULL; MessageDef *received_msg = NULL;
int result = 0; int result = 0;
int cell_index = 0; int cell_index = 0;
itti_receive_msg(TASK_SS_SRB, &received_msg); itti_receive_msg(TASK_SS_SRB, &received_msg);
/* Check if there is a packet to handle */ /* Check if there is a packet to handle */
if (received_msg != NULL) if (received_msg != NULL)
{ {
switch (ITTI_MSG_ID(received_msg)) switch (ITTI_MSG_ID(received_msg))
{ {
case SS_RRC_PDU_IND: case SS_RRC_PDU_IND:
{ {
task_id_t origin_task = ITTI_MSG_ORIGIN_ID(received_msg); task_id_t origin_task = ITTI_MSG_ORIGIN_ID(received_msg);
if(received_msg->ittiMsg.ss_rrc_pdu_ind.physCellId){ if(received_msg->ittiMsg.ss_rrc_pdu_ind.physCellId){
cell_index = get_cell_index_pci(received_msg->ittiMsg.ss_rrc_pdu_ind.physCellId, SS_context.SSCell_list); cell_index = get_cell_index_pci(received_msg->ittiMsg.ss_rrc_pdu_ind.physCellId, SS_context.SSCell_list);
LOG_A(ENB_SS,"[SS_SRB] cell_index in SS_RRC_PDU_IND: %d PhysicalCellId: %d \n",cell_index,SS_context.SSCell_list[cell_index].PhysicalCellId); LOG_A(ENB_SS,"[SS_SRB] cell_index in SS_RRC_PDU_IND: %d PhysicalCellId: %d \n",cell_index,SS_context.SSCell_list[cell_index].PhysicalCellId);
} }
if (origin_task == TASK_SS_PORTMAN) if (origin_task == TASK_SS_PORTMAN)
{ {
LOG_D(ENB_APP, "[SS_SRB] DUMMY WAKEUP receviedfrom PORTMAN state %d \n", SS_context.SSCell_list[cell_index].State); LOG_D(ENB_APP, "[SS_SRB] DUMMY WAKEUP receviedfrom PORTMAN state %d \n", SS_context.SSCell_list[cell_index].State);
} }
else else
{ {
LOG_A(ENB_SS, "[SS_SRB] Received SS_RRC_PDU_IND from RRC\n"); LOG_A(ENB_SS, "[SS_SRB] Received SS_RRC_PDU_IND from RRC\n");
if (SS_context.SSCell_list[cell_index].State >= SS_STATE_CELL_ACTIVE) if (SS_context.SSCell_list[cell_index].State >= SS_STATE_CELL_ACTIVE)
{ {
instance_g = ITTI_MSG_DESTINATION_INSTANCE(received_msg); instance_g = ITTI_MSG_DESTINATION_INSTANCE(received_msg);
ss_send_srb_data(&received_msg->ittiMsg.ss_rrc_pdu_ind,cell_index); ss_send_srb_data(&received_msg->ittiMsg.ss_rrc_pdu_ind,cell_index);
} }
else else
{ {
LOG_A(ENB_SS, "ERROR [SS_SRB][EUTRA_RRC_PDU_IND] received in SS state %d \n", SS_context.SSCell_list[cell_index].State); LOG_A(ENB_SS, "ERROR [SS_SRB][EUTRA_RRC_PDU_IND] received in SS state %d \n", SS_context.SSCell_list[cell_index].State);
} }
} }
result = itti_free(ITTI_MSG_ORIGIN_ID(received_msg), received_msg); result = itti_free(ITTI_MSG_ORIGIN_ID(received_msg), received_msg);
AssertFatal(result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result); AssertFatal(result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
received_msg = NULL; received_msg = NULL;
} }
break; break;
case TERMINATE_MESSAGE: case TERMINATE_MESSAGE:
LOG_A(ENB_SS, "[SS_SRB] Received TERMINATE_MESSAGE \n"); LOG_A(ENB_SS, "[SS_SRB] Received TERMINATE_MESSAGE \n");
itti_exit_task(); itti_exit_task();
break; break;
default: default:
LOG_A(ENB_SS, "[SS_SRB] Received unhandled message %d:%s\n", LOG_A(ENB_SS, "[SS_SRB] Received unhandled message %d:%s\n",
ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg)); ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
break; break;
} }
} }
return NULL; return 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