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 {
int8_t reestablishment_xid;
int does_nr;
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;
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){
static void ss_task_handle_drb_pdu_req(struct DRB_COMMON_REQ *req,int cell_index)
{
assert(req);
MessageDef *message_p = itti_alloc_new_message(TASK_PDCP_ENB, 0, SS_DRB_PDU_REQ);
assert(message_p);
if (message_p)
{
/* Populate the message and send to eNB */
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);
for(int i = 0; i < req->U_Plane.SubframeDataList.d; i++){
if(req->U_Plane.SubframeDataList.v[i].PduSduList.d == L2DataList_Type_PdcpSdu){
LOG_A(ENB_APP, "PDCP SDU Received in DRB_COMMON_REQ");
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;
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);
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);
}
}
}
assert(req);
MessageDef *message_p = itti_alloc_new_message(TASK_PDCP_ENB, 0, SS_DRB_PDU_REQ);
assert(message_p);
if (message_p)
{
/* Populate the message and send to eNB */
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);
for(int i = 0; i < req->U_Plane.SubframeDataList.d; i++){
if(req->U_Plane.SubframeDataList.v[i].PduSduList.d == L2DataList_Type_PdcpSdu){
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++){
SS_DRB_PDU_REQ(message_p).sdu_size = 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);
}
}
}
}
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);
if (send_res < 0)
{
LOG_A(ENB_APP, "[SS_DRB] Error in itti_send_msg_to_task");
}
int send_res = itti_send_msg_to_task(TASK_RRC_ENB, instance_g, message_p);
if (send_res < 0)
{
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)
assert(req);
LTE_DL_DCCH_Message_t *dl_dcch_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);
instance_g = 0;
if (message_p)
......@@ -443,61 +443,61 @@ void ss_eNB_srb_init(void)
*/
void *ss_eNB_srb_process_itti_msg(void *notUsed)
{
MessageDef *received_msg = NULL;
int result = 0;
int cell_index = 0;
itti_receive_msg(TASK_SS_SRB, &received_msg);
/* Check if there is a packet to handle */
if (received_msg != NULL)
{
switch (ITTI_MSG_ID(received_msg))
{
case SS_RRC_PDU_IND:
{
task_id_t origin_task = ITTI_MSG_ORIGIN_ID(received_msg);
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);
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)
{
LOG_D(ENB_APP, "[SS_SRB] DUMMY WAKEUP receviedfrom PORTMAN state %d \n", SS_context.SSCell_list[cell_index].State);
}
else
{
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)
{
instance_g = ITTI_MSG_DESTINATION_INSTANCE(received_msg);
ss_send_srb_data(&received_msg->ittiMsg.ss_rrc_pdu_ind,cell_index);
}
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);
}
}
result = itti_free(ITTI_MSG_ORIGIN_ID(received_msg), received_msg);
AssertFatal(result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
received_msg = NULL;
}
break;
case TERMINATE_MESSAGE:
LOG_A(ENB_SS, "[SS_SRB] Received TERMINATE_MESSAGE \n");
itti_exit_task();
break;
default:
LOG_A(ENB_SS, "[SS_SRB] Received unhandled message %d:%s\n",
ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
break;
}
}
return NULL;
MessageDef *received_msg = NULL;
int result = 0;
int cell_index = 0;
itti_receive_msg(TASK_SS_SRB, &received_msg);
/* Check if there is a packet to handle */
if (received_msg != NULL)
{
switch (ITTI_MSG_ID(received_msg))
{
case SS_RRC_PDU_IND:
{
task_id_t origin_task = ITTI_MSG_ORIGIN_ID(received_msg);
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);
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)
{
LOG_D(ENB_APP, "[SS_SRB] DUMMY WAKEUP receviedfrom PORTMAN state %d \n", SS_context.SSCell_list[cell_index].State);
}
else
{
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)
{
instance_g = ITTI_MSG_DESTINATION_INSTANCE(received_msg);
ss_send_srb_data(&received_msg->ittiMsg.ss_rrc_pdu_ind,cell_index);
}
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);
}
}
result = itti_free(ITTI_MSG_ORIGIN_ID(received_msg), received_msg);
AssertFatal(result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
received_msg = NULL;
}
break;
case TERMINATE_MESSAGE:
LOG_A(ENB_SS, "[SS_SRB] Received TERMINATE_MESSAGE \n");
itti_exit_task();
break;
default:
LOG_A(ENB_SS, "[SS_SRB] Received unhandled message %d:%s\n",
ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
break;
}
}
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