Commit b36e4c10 authored by hscuser's avatar hscuser Committed by jperaldi

Initial Code changes to enhance SS for Multi-Cell

parent 0222a74a
...@@ -915,7 +915,7 @@ generate_Msg4(module_id_t module_idP, ...@@ -915,7 +915,7 @@ generate_Msg4(module_id_t module_idP,
UE_RNTI(module_idP,UE_id),1, // 1 transport block UE_RNTI(module_idP,UE_id),1, // 1 transport block
&cc[CC_idP].CCCH_pdu.payload[0], 0); // not used in this case &cc[CC_idP].CCCH_pdu.payload[0], 0); // not used in this case
if ((rrc_sdu_length > 0) || (RC.ss.CBRA_flag && (RC.ss.mode >SS_ENB))) { if ((rrc_sdu_length > 0) || (RC.ss.ss_cell_list[0].CBRA_flag && (RC.ss.mode >SS_ENB))) {
LOG_D(MAC, LOG_D(MAC,
"[eNB %d][RAPROC] CC_id %d Frame %d, subframeP %d: UE_id %d, rrc_sdu_length %d\n", "[eNB %d][RAPROC] CC_id %d Frame %d, subframeP %d: UE_id %d, rrc_sdu_length %d\n",
module_idP, CC_idP, frameP, subframeP, UE_id, rrc_sdu_length); module_idP, CC_idP, frameP, subframeP, UE_id, rrc_sdu_length);
...@@ -1427,7 +1427,7 @@ initiate_ra_proc(module_id_t module_idP, ...@@ -1427,7 +1427,7 @@ initiate_ra_proc(module_id_t module_idP,
module_idP, CC_id, frameP, ra[i].Msg2_frame, module_idP, CC_id, frameP, ra[i].Msg2_frame,
ra[i].Msg2_subframe, i, ra[i].rnti, ra[i].state); ra[i].Msg2_subframe, i, ra[i].rnti, ra[i].state);
if(RC.ss.l1macind.rachpreamble_enable) if(RC.ss.ss_cell_list[0].l1macind.rachpreamble_enable)
{ {
// Populate and send the SS_SYSTEM_IND to System Simulator // Populate and send the SS_SYSTEM_IND to System Simulator
MessageDef *m = itti_alloc_new_message(TASK_MAC_ENB, 0, SS_SYSTEM_IND); MessageDef *m = itti_alloc_new_message(TASK_MAC_ENB, 0, SS_SYSTEM_IND);
......
...@@ -875,8 +875,8 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -875,8 +875,8 @@ rx_sdu(const module_id_t enb_mod_idP,
rx_lcids[i]); rx_lcids[i]);
if (RC.ss.mode > SS_ENB) if (RC.ss.mode > SS_ENB)
{ {
RC.ss.mac_rlc_data_ind_frame = frameP; RC.ss.ss_cell_list[0].mac_rlc_data_ind_frame = frameP;
RC.ss.mac_rlc_data_ind_subframe = subframeP; RC.ss.ss_cell_list[0].mac_rlc_data_ind_subframe = subframeP;
} }
mac_rlc_data_ind(enb_mod_idP, current_rnti, enb_mod_idP, frameP, ENB_FLAG_YES, MBMS_FLAG_NO, rx_lcids[i], (char *) payload_ptr, rx_lengths[i], 1, NULL); //(unsigned int*)crc_status); mac_rlc_data_ind(enb_mod_idP, current_rnti, enb_mod_idP, frameP, ENB_FLAG_YES, MBMS_FLAG_NO, rx_lcids[i], (char *) payload_ptr, rx_lengths[i], 1, NULL); //(unsigned int*)crc_status);
UE_info->eNB_UE_stats[CC_idP][UE_id].num_pdu_rx[rx_lcids[i]] += 1; UE_info->eNB_UE_stats[CC_idP][UE_id].num_pdu_rx[rx_lcids[i]] += 1;
...@@ -971,8 +971,8 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -971,8 +971,8 @@ rx_sdu(const module_id_t enb_mod_idP,
} }
if (RC.ss.mode > SS_ENB) if (RC.ss.mode > SS_ENB)
{ {
RC.ss.mac_rlc_data_ind_frame = frameP; RC.ss.ss_cell_list[0].mac_rlc_data_ind_frame = frameP;
RC.ss.mac_rlc_data_ind_subframe = subframeP; RC.ss.ss_cell_list[0].mac_rlc_data_ind_subframe = subframeP;
} }
mac_rlc_data_ind(enb_mod_idP, current_rnti, enb_mod_idP, frameP, ENB_FLAG_YES, MBMS_FLAG_NO, rx_lcids[i], (char *) payload_ptr, rx_lengths[i], 1, NULL); mac_rlc_data_ind(enb_mod_idP, current_rnti, enb_mod_idP, frameP, ENB_FLAG_YES, MBMS_FLAG_NO, rx_lcids[i], (char *) payload_ptr, rx_lengths[i], 1, NULL);
UE_info->eNB_UE_stats[CC_idP][UE_id].num_pdu_rx[rx_lcids[i]] += 1; UE_info->eNB_UE_stats[CC_idP][UE_id].num_pdu_rx[rx_lcids[i]] += 1;
......
...@@ -303,7 +303,7 @@ void *mac_enb_task(void *arg) ...@@ -303,7 +303,7 @@ void *mac_enb_task(void *arg)
case SS_L1MACIND_CTRL: case SS_L1MACIND_CTRL:
LOG_I(MAC, "MAC Task Received SS_L1MACIND_CTRL\n"); LOG_I(MAC, "MAC Task Received SS_L1MACIND_CTRL\n");
RC.ss.l1macind.rachpreamble_enable = received_msg->ittiMsg.ss_l1macind_ctrl.rachpreamble_enable; RC.ss.ss_cell_list[0].l1macind.rachpreamble_enable = received_msg->ittiMsg.ss_l1macind_ctrl.rachpreamble_enable;
break; break;
case TERMINATE_MESSAGE: case TERMINATE_MESSAGE:
......
...@@ -405,8 +405,8 @@ rb_found: ...@@ -405,8 +405,8 @@ rb_found:
/* used fields? */ /* used fields? */
ctx.module_id = ue->module_id; ctx.module_id = ue->module_id;
ctx.rnti = ue->rnti; ctx.rnti = ue->rnti;
ctx.frame = RC.ss.mac_rlc_data_ind_frame; /* Populating the frame received from Lower layer */ ctx.frame = RC.ss.ss_cell_list[0].mac_rlc_data_ind_frame; /* Populating the frame received from Lower layer */
ctx.subframe = RC.ss.mac_rlc_data_ind_subframe; /* Populating the subframe received from Lower layer */ ctx.subframe = RC.ss.ss_cell_list[0].mac_rlc_data_ind_subframe; /* Populating the subframe received from Lower layer */
is_enb = rlc_manager_get_enb_flag(rlc_ue_manager); is_enb = rlc_manager_get_enb_flag(rlc_ue_manager);
ctx.enb_flag = is_enb; ctx.enb_flag = is_enb;
......
...@@ -340,7 +340,7 @@ mac_rrc_data_ind( ...@@ -340,7 +340,7 @@ mac_rrc_data_ind(
ctxt.brOption = brOption; ctxt.brOption = brOption;
//#ifdef ENB_SS //#ifdef ENB_SS
if (RC.ss.mode >= SS_SOFTMODEM && RC.ss.State >= SS_STATE_CELL_ACTIVE) if (RC.ss.mode >= SS_SOFTMODEM && RC.ss.ss_cell_list[0].State >= SS_STATE_CELL_ACTIVE)
{ {
LOG_I(RRC,"RRC Sending CCCH PDU_IND to SS \n"); LOG_I(RRC,"RRC Sending CCCH PDU_IND to SS \n");
MessageDef *message_p = itti_alloc_new_message (TASK_RRC_ENB, 0, SS_RRC_PDU_IND); MessageDef *message_p = itti_alloc_new_message (TASK_RRC_ENB, 0, SS_RRC_PDU_IND);
......
...@@ -122,7 +122,7 @@ rrc_data_ind( ...@@ -122,7 +122,7 @@ rrc_data_ind(
ctxt_pP->rnti); ctxt_pP->rnti);
//#ifdef ENB_SS //#ifdef ENB_SS
if (RC.ss.mode >= SS_SOFTMODEM && RC.ss.State >= SS_STATE_CELL_ACTIVE) if (RC.ss.mode >= SS_SOFTMODEM && RC.ss.ss_cell_list[0].State >= SS_STATE_CELL_ACTIVE)
{ {
LOG_I(RRC,"L2 Interface Sending DCCH PDU_IND to SS \n"); LOG_I(RRC,"L2 Interface Sending DCCH PDU_IND to SS \n");
MessageDef *message_p = itti_alloc_new_message (TASK_RRC_ENB, 0, SS_RRC_PDU_IND); MessageDef *message_p = itti_alloc_new_message (TASK_RRC_ENB, 0, SS_RRC_PDU_IND);
......
...@@ -10490,7 +10490,7 @@ void *rrc_enb_process_itti_msg(void *notUsed) { ...@@ -10490,7 +10490,7 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
} }
security_mode_command_send = TRUE; security_mode_command_send = TRUE;
as_security_conf_ciphering = FALSE; as_security_conf_ciphering = FALSE;
if (RC.ss.CBRA_flag) if (RC.ss.ss_cell_list[0].CBRA_flag)
{ {
RRCConnSetup_PDU_Present = FALSE; RRCConnSetup_PDU_Present = FALSE;
} }
......
...@@ -231,14 +231,14 @@ ss_eNB_read_from_drb_socket(acpCtx_t ctx){ ...@@ -231,14 +231,14 @@ ss_eNB_read_from_drb_socket(acpCtx_t ctx){
LOG_A(ENB_APP, "[SS_DRB][DRB_COMMON_REQ] acpDrbProcessFromSSDecSrv Failed\n"); LOG_A(ENB_APP, "[SS_DRB][DRB_COMMON_REQ] acpDrbProcessFromSSDecSrv Failed\n");
break; break;
} }
if(RC.ss.State >= SS_STATE_CELL_ACTIVE) if(RC.ss.ss_cell_list[0].State >= SS_STATE_CELL_ACTIVE)
{ {
LOG_A(ENB_APP, "[SS_DRB][DRB_COMMON_REQ] DRB_COMMON_REQ Received in CELL_ACTIVE\n"); LOG_A(ENB_APP, "[SS_DRB][DRB_COMMON_REQ] DRB_COMMON_REQ Received in CELL_ACTIVE\n");
ss_task_handle_drb_pdu_req(req); ss_task_handle_drb_pdu_req(req);
} }
else else
{ {
LOG_W(ENB_APP, "[SS_DRB][DRB_COMMON_REQ] received in SS state %d \n", RC.ss.State); LOG_W(ENB_APP, "[SS_DRB][DRB_COMMON_REQ] received in SS state %d \n", RC.ss.ss_cell_list[0].State);
} }
acpDrbProcessFromSSFreeSrv(req); acpDrbProcessFromSSFreeSrv(req);
...@@ -272,19 +272,19 @@ void *ss_eNB_drb_process_itti_msg(void *notUsed) ...@@ -272,19 +272,19 @@ void *ss_eNB_drb_process_itti_msg(void *notUsed)
if (origin_task == TASK_SS_PORTMAN) if (origin_task == TASK_SS_PORTMAN)
{ {
LOG_D(ENB_APP, "[SS_DRB] DUMMY WAKEUP recevied from PORTMAN state %d \n", RC.ss.State); LOG_D(ENB_APP, "[SS_DRB] DUMMY WAKEUP recevied from PORTMAN state %d \n", RC.ss.ss_cell_list[0].State);
} }
else else
{ {
LOG_A(ENB_APP, "[SS_DRB] Received SS_DRB_PDU_IND from RRC PDCP\n"); LOG_A(ENB_APP, "[SS_DRB] Received SS_DRB_PDU_IND from RRC PDCP\n");
if (RC.ss.State >= SS_STATE_CELL_ACTIVE) if (RC.ss.ss_cell_list[0].State >= SS_STATE_CELL_ACTIVE)
{ {
instance_g = ITTI_MSG_DESTINATION_INSTANCE(received_msg); instance_g = ITTI_MSG_DESTINATION_INSTANCE(received_msg);
ss_send_drb_data(&received_msg->ittiMsg.ss_drb_pdu_ind); ss_send_drb_data(&received_msg->ittiMsg.ss_drb_pdu_ind);
} }
else else
{ {
LOG_A(ENB_APP, "ERROR [SS_DRB][SS_DRB_PDU_IND] received in SS state %d \n", RC.ss.State); LOG_A(ENB_APP, "ERROR [SS_DRB][SS_DRB_PDU_IND] received in SS state %d \n", RC.ss.ss_cell_list[0].State);
} }
} }
......
...@@ -363,7 +363,7 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx) ...@@ -363,7 +363,7 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx)
{ {
// No message (timeout on socket) // No message (timeout on socket)
//Send Dummy Wake up ITTI message to SRB task. //Send Dummy Wake up ITTI message to SRB task.
if (RC.ss.mode >= SS_SOFTMODEM && RC.ss.State >= SS_STATE_CELL_ACTIVE) if (RC.ss.mode >= SS_SOFTMODEM && RC.ss.ss_cell_list[0].State >= SS_STATE_CELL_ACTIVE)
{ {
LOG_A(ENB_SS,"[SS-PORTMAN] Sending Wake up signal to SRB task \n"); LOG_A(ENB_SS,"[SS-PORTMAN] Sending Wake up signal to SRB task \n");
MessageDef *message_p = itti_alloc_new_message(TASK_SS_PORTMAN, 0, SS_RRC_PDU_IND); MessageDef *message_p = itti_alloc_new_message(TASK_SS_PORTMAN, 0, SS_RRC_PDU_IND);
......
...@@ -354,13 +354,13 @@ ss_eNB_read_from_srb_socket(acpCtx_t ctx) ...@@ -354,13 +354,13 @@ ss_eNB_read_from_srb_socket(acpCtx_t ctx)
LOG_A(ENB_SS, "[SS_SRB][EUTRA_RRC_PDU_REQ] acpSysSrbProcessFromSSDecSrv Failed\n"); LOG_A(ENB_SS, "[SS_SRB][EUTRA_RRC_PDU_REQ] acpSysSrbProcessFromSSDecSrv Failed\n");
break; break;
} }
if (RC.ss.State >= SS_STATE_CELL_ACTIVE) if (RC.ss.ss_cell_list[0].State >= SS_STATE_CELL_ACTIVE)
{ {
ss_task_handle_rrc_pdu_req(req); ss_task_handle_rrc_pdu_req(req);
} }
else else
{ {
LOG_A(ENB_SS, "ERROR [SS_SRB][EUTRA_RRC_PDU_REQ] received in SS state %d \n", RC.ss.State); LOG_A(ENB_SS, "ERROR [SS_SRB][EUTRA_RRC_PDU_REQ] received in SS state %d \n", RC.ss.ss_cell_list[0].State);
} }
acpSysSrbProcessFromSSFreeSrv(req); acpSysSrbProcessFromSSFreeSrv(req);
...@@ -452,19 +452,19 @@ void *ss_eNB_srb_process_itti_msg(void *notUsed) ...@@ -452,19 +452,19 @@ void *ss_eNB_srb_process_itti_msg(void *notUsed)
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", RC.ss.State); LOG_D(ENB_APP, "[SS_SRB] DUMMY WAKEUP receviedfrom PORTMAN state %d \n", RC.ss.ss_cell_list[0].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 (RC.ss.State >= SS_STATE_CELL_ACTIVE) if (RC.ss.ss_cell_list[0].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); ss_send_srb_data(&received_msg->ittiMsg.ss_rrc_pdu_ind);
} }
else else
{ {
LOG_A(ENB_SS, "ERROR [SS_SRB][EUTRA_RRC_PDU_IND] received in SS state %d \n", RC.ss.State); LOG_A(ENB_SS, "ERROR [SS_SRB][EUTRA_RRC_PDU_IND] received in SS state %d \n", RC.ss.ss_cell_list[0].State);
} }
} }
......
...@@ -494,8 +494,8 @@ int sys_add_reconfig_cell(struct CellConfigInfo_Type *AddOrReconfigure) ...@@ -494,8 +494,8 @@ int sys_add_reconfig_cell(struct CellConfigInfo_Type *AddOrReconfigure)
else else
{ {
RRC_CONFIGURATION_REQ(msg_p).RlcPduCCCH_Present = false; RRC_CONFIGURATION_REQ(msg_p).RlcPduCCCH_Present = false;
if(RC.ss.State == SS_STATE_NOT_CONFIGURED) if(RC.ss.ss_cell_list[0].State == SS_STATE_NOT_CONFIGURED)
RC.ss.CBRA_flag = TRUE; RC.ss.ss_cell_list[0].CBRA_flag = TRUE;
} }
} }
} }
...@@ -646,7 +646,7 @@ static void send_sys_cnf(enum ConfirmationResult_Type_Sel resType, ...@@ -646,7 +646,7 @@ static void send_sys_cnf(enum ConfirmationResult_Type_Sel resType,
int sys_handle_cell_config_req(struct CellConfigRequest_Type *Cell) int sys_handle_cell_config_req(struct CellConfigRequest_Type *Cell)
{ {
int status = false; int status = false;
int returnState = RC.ss.State; int returnState = RC.ss.ss_cell_list[0].State;
enum SystemConfirm_Type_Sel cnfType = SystemConfirm_Type_Cell; enum SystemConfirm_Type_Sel cnfType = SystemConfirm_Type_Cell;
enum ConfirmationResult_Type_Sel resType = ConfirmationResult_Type_Success; enum ConfirmationResult_Type_Sel resType = ConfirmationResult_Type_Success;
bool resVal = TRUE; bool resVal = TRUE;
...@@ -664,7 +664,7 @@ int sys_handle_cell_config_req(struct CellConfigRequest_Type *Cell) ...@@ -664,7 +664,7 @@ int sys_handle_cell_config_req(struct CellConfigRequest_Type *Cell)
cell_config_done_indication(); cell_config_done_indication();
} }
//TODO Change it later to move to cell configuration //TODO Change it later to move to cell configuration
if ( RC.ss.State == SS_STATE_NOT_CONFIGURED) if ( RC.ss.ss_cell_list[0].State == SS_STATE_NOT_CONFIGURED)
{ {
returnState = SS_STATE_CELL_CONFIGURED; returnState = SS_STATE_CELL_CONFIGURED;
} }
...@@ -698,7 +698,7 @@ int sys_handle_cell_config_req(struct CellConfigRequest_Type *Cell) ...@@ -698,7 +698,7 @@ int sys_handle_cell_config_req(struct CellConfigRequest_Type *Cell)
*/ */
static int sys_handle_radiobearer_list(struct RadioBearer_Type_RadioBearerList_Type_Dynamic *BearerList) static int sys_handle_radiobearer_list(struct RadioBearer_Type_RadioBearerList_Type_Dynamic *BearerList)
{ {
int returnState = RC.ss.State; int returnState = RC.ss.ss_cell_list[0].State;
enum SystemConfirm_Type_Sel cnfType = SystemConfirm_Type_RadioBearerList; enum SystemConfirm_Type_Sel cnfType = SystemConfirm_Type_RadioBearerList;
enum ConfirmationResult_Type_Sel resType = ConfirmationResult_Type_Success; enum ConfirmationResult_Type_Sel resType = ConfirmationResult_Type_Success;
bool resVal = TRUE; bool resVal = TRUE;
...@@ -1068,7 +1068,7 @@ static int sys_handle_radiobearer_list(struct RadioBearer_Type_RadioBearerList_T ...@@ -1068,7 +1068,7 @@ static int sys_handle_radiobearer_list(struct RadioBearer_Type_RadioBearerList_T
*/ */
int sys_handle_pdcp_count_req(struct PDCP_CountReq_Type *PdcpCount) int sys_handle_pdcp_count_req(struct PDCP_CountReq_Type *PdcpCount)
{ {
int returnState = RC.ss.State; int returnState = RC.ss.ss_cell_list[0].State;
int send_res = -1; int send_res = -1;
switch (PdcpCount->d) switch (PdcpCount->d)
...@@ -1635,25 +1635,25 @@ static void sys_handle_as_security_req(struct AS_Security_Type *ASSecurity) ...@@ -1635,25 +1635,25 @@ static void sys_handle_as_security_req(struct AS_Security_Type *ASSecurity)
*/ */
static void ss_task_sys_handle_req(struct SYSTEM_CTRL_REQ *req, ss_set_timinfo_t *tinfo) static void ss_task_sys_handle_req(struct SYSTEM_CTRL_REQ *req, ss_set_timinfo_t *tinfo)
{ {
int enterState = RC.ss.State; int enterState = RC.ss.ss_cell_list[0].State;
int exitState = RC.ss.State; int exitState = RC.ss.ss_cell_list[0].State;
if(req->Common.CellId) if(req->Common.CellId)
SS_context.eutra_cellId = req->Common.CellId; SS_context.eutra_cellId = req->Common.CellId;
LOG_A(ENB_SS, "[SYS] Current SS_STATE %d received SystemRequest_Type %d eutra_cellId %d cnf_flag %d\n", LOG_A(ENB_SS, "[SYS] Current SS_STATE %d received SystemRequest_Type %d eutra_cellId %d cnf_flag %d\n",
RC.ss.State, req->Request.d, SS_context.eutra_cellId, req->Common.ControlInfo.CnfFlag); RC.ss.ss_cell_list[0].State, req->Request.d, SS_context.eutra_cellId, req->Common.ControlInfo.CnfFlag);
switch (RC.ss.State) switch (RC.ss.ss_cell_list[0].State)
{ {
case SS_STATE_NOT_CONFIGURED: case SS_STATE_NOT_CONFIGURED:
if (req->Request.d == SystemRequest_Type_Cell) if (req->Request.d == SystemRequest_Type_Cell)
{ {
LOG_A(ENB_SS, "[SYS] SystemRequest_Type_Cell received\n"); LOG_A(ENB_SS, "[SYS] SystemRequest_Type_Cell received\n");
exitState = sys_handle_cell_config_req(&(req->Request.v.Cell)); exitState = sys_handle_cell_config_req(&(req->Request.v.Cell));
RC.ss.State = exitState; RC.ss.ss_cell_list[0].State = exitState;
} }
else else
{ {
LOG_A(ENB_SS, "[SYS] Error ! SS_STATE %d Invalid SystemRequest_Type %d received\n", LOG_A(ENB_SS, "[SYS] Error ! SS_STATE %d Invalid SystemRequest_Type %d received\n",
RC.ss.State, req->Request.d); RC.ss.ss_cell_list[0].State, req->Request.d);
} }
break; break;
case SS_STATE_CELL_CONFIGURED: case SS_STATE_CELL_CONFIGURED:
...@@ -1661,12 +1661,12 @@ static void ss_task_sys_handle_req(struct SYSTEM_CTRL_REQ *req, ss_set_timinfo_t ...@@ -1661,12 +1661,12 @@ static void ss_task_sys_handle_req(struct SYSTEM_CTRL_REQ *req, ss_set_timinfo_t
{ {
LOG_A(ENB_SS, "[SYS] SystemRequest_Type_RadioBearerList received\n"); LOG_A(ENB_SS, "[SYS] SystemRequest_Type_RadioBearerList received\n");
exitState = sys_handle_radiobearer_list(&(req->Request.v.RadioBearerList)); exitState = sys_handle_radiobearer_list(&(req->Request.v.RadioBearerList));
RC.ss.State = exitState; RC.ss.ss_cell_list[0].State = exitState;
} }
else else
{ {
LOG_A(ENB_SS, "[SYS] Error ! SS_STATE %d Invalid SystemRequest_Type %d received\n", LOG_A(ENB_SS, "[SYS] Error ! SS_STATE %d Invalid SystemRequest_Type %d received\n",
RC.ss.State, req->Request.d); RC.ss.ss_cell_list[0].State, req->Request.d);
} }
break; break;
case SS_STATE_CELL_BROADCASTING: case SS_STATE_CELL_BROADCASTING:
...@@ -1678,12 +1678,12 @@ static void ss_task_sys_handle_req(struct SYSTEM_CTRL_REQ *req, ss_set_timinfo_t ...@@ -1678,12 +1678,12 @@ static void ss_task_sys_handle_req(struct SYSTEM_CTRL_REQ *req, ss_set_timinfo_t
case SystemRequest_Type_Cell: case SystemRequest_Type_Cell:
LOG_A(ENB_SS, "[SYS] SystemRequest_Type_Cell received\n"); LOG_A(ENB_SS, "[SYS] SystemRequest_Type_Cell received\n");
exitState = sys_handle_cell_config_req(&(req->Request.v.Cell)); exitState = sys_handle_cell_config_req(&(req->Request.v.Cell));
RC.ss.State = exitState; RC.ss.ss_cell_list[0].State = exitState;
break; break;
case SystemRequest_Type_RadioBearerList: case SystemRequest_Type_RadioBearerList:
LOG_A(ENB_SS, "[SYS] SystemRequest_Type_RadioBearerList received in SS_STATE_CELL_ACTIVE state\n"); LOG_A(ENB_SS, "[SYS] SystemRequest_Type_RadioBearerList received in SS_STATE_CELL_ACTIVE state\n");
exitState = sys_handle_radiobearer_list(&(req->Request.v.RadioBearerList)); exitState = sys_handle_radiobearer_list(&(req->Request.v.RadioBearerList));
RC.ss.State = exitState; RC.ss.ss_cell_list[0].State = exitState;
break; break;
case SystemRequest_Type_CellAttenuationList: case SystemRequest_Type_CellAttenuationList:
LOG_A(ENB_SS, "[SYS] SystemRequest_Type_CellAttenuationList received\n"); LOG_A(ENB_SS, "[SYS] SystemRequest_Type_CellAttenuationList received\n");
...@@ -1741,22 +1741,22 @@ static void ss_task_sys_handle_req(struct SYSTEM_CTRL_REQ *req, ss_set_timinfo_t ...@@ -1741,22 +1741,22 @@ static void ss_task_sys_handle_req(struct SYSTEM_CTRL_REQ *req, ss_set_timinfo_t
else else
{ {
LOG_A(ENB_SS, "[SYS] Error ! SS_STATE %d Invalid SystemRequest_Type %d received\n", LOG_A(ENB_SS, "[SYS] Error ! SS_STATE %d Invalid SystemRequest_Type %d received\n",
RC.ss.State, req->Request.d); RC.ss.ss_cell_list[0].State, req->Request.d);
} }
break; break;
case SS_STATE_AS_RBS_ACTIVE: case SS_STATE_AS_RBS_ACTIVE:
LOG_A(ENB_SS, "[SYS] Error ! SS_STATE %d Invalid SystemRequest_Type %d received\n", LOG_A(ENB_SS, "[SYS] Error ! SS_STATE %d Invalid SystemRequest_Type %d received\n",
RC.ss.State, req->Request.d); RC.ss.ss_cell_list[0].State, req->Request.d);
break; break;
default: default:
LOG_A(ENB_SS, "[SYS] Error ! SS_STATE %d Invalid SystemRequest_Type %d received\n", LOG_A(ENB_SS, "[SYS] Error ! SS_STATE %d Invalid SystemRequest_Type %d received\n",
RC.ss.State, req->Request.d); RC.ss.ss_cell_list[0].State, req->Request.d);
break; break;
} }
LOG_A(ENB_SS, "[SYS] Current SS_STATE %d New SS_STATE %d received SystemRequest_Type %d\n", LOG_A(ENB_SS, "[SYS] Current SS_STATE %d New SS_STATE %d received SystemRequest_Type %d\n",
enterState, RC.ss.State, req->Request.d); enterState, RC.ss.ss_cell_list[0].State, req->Request.d);
} }
/* /*
* Function : valid_sys_msg * Function : valid_sys_msg
...@@ -1786,12 +1786,12 @@ bool valid_sys_msg(struct SYSTEM_CTRL_REQ *req) ...@@ -1786,12 +1786,12 @@ bool valid_sys_msg(struct SYSTEM_CTRL_REQ *req)
// return FALSE; // return FALSE;
// } // }
LOG_A(ENB_SS, "[SYS] received req : %d for cell %d RC.ss.state %d \n", LOG_A(ENB_SS, "[SYS] received req : %d for cell %d RC.ss.ss_cell_list[0].State %d \n",
req->Request.d, req->Common.CellId, RC.ss.State); req->Request.d, req->Common.CellId, RC.ss.ss_cell_list[0].State);
switch (req->Request.d) switch (req->Request.d)
{ {
case SystemRequest_Type_Cell: case SystemRequest_Type_Cell:
if (RC.ss.State >= SS_STATE_NOT_CONFIGURED) if (RC.ss.ss_cell_list[0].State >= SS_STATE_NOT_CONFIGURED)
{ {
valid = TRUE; valid = TRUE;
sendDummyCnf = FALSE; sendDummyCnf = FALSE;
...@@ -1803,7 +1803,7 @@ bool valid_sys_msg(struct SYSTEM_CTRL_REQ *req) ...@@ -1803,7 +1803,7 @@ bool valid_sys_msg(struct SYSTEM_CTRL_REQ *req)
} }
break; break;
case SystemRequest_Type_EnquireTiming: case SystemRequest_Type_EnquireTiming:
if (RC.ss.State == SS_STATE_CELL_ACTIVE) if (RC.ss.ss_cell_list[0].State == SS_STATE_CELL_ACTIVE)
{ {
valid = TRUE; valid = TRUE;
sendDummyCnf = FALSE; sendDummyCnf = FALSE;
...@@ -1811,7 +1811,7 @@ bool valid_sys_msg(struct SYSTEM_CTRL_REQ *req) ...@@ -1811,7 +1811,7 @@ bool valid_sys_msg(struct SYSTEM_CTRL_REQ *req)
} }
break; break;
case SystemRequest_Type_CellAttenuationList: case SystemRequest_Type_CellAttenuationList:
if (RC.ss.State == SS_STATE_CELL_ACTIVE) if (RC.ss.ss_cell_list[0].State == SS_STATE_CELL_ACTIVE)
{ {
valid = TRUE; valid = TRUE;
sendDummyCnf = FALSE; sendDummyCnf = FALSE;
...@@ -1831,7 +1831,7 @@ bool valid_sys_msg(struct SYSTEM_CTRL_REQ *req) ...@@ -1831,7 +1831,7 @@ bool valid_sys_msg(struct SYSTEM_CTRL_REQ *req)
reqCnfFlag_g = req->Common.ControlInfo.CnfFlag; reqCnfFlag_g = req->Common.ControlInfo.CnfFlag;
break; break;
case SystemRequest_Type_PdcpCount: case SystemRequest_Type_PdcpCount:
if (RC.ss.State == SS_STATE_CELL_ACTIVE) if (RC.ss.ss_cell_list[0].State == SS_STATE_CELL_ACTIVE)
{ {
valid = TRUE; valid = TRUE;
sendDummyCnf = FALSE; sendDummyCnf = FALSE;
...@@ -2071,12 +2071,12 @@ void *ss_eNB_sys_task(void *arg) ...@@ -2071,12 +2071,12 @@ void *ss_eNB_sys_task(void *arg)
// Set the state to NOT_CONFIGURED for Cell Config processing mode // Set the state to NOT_CONFIGURED for Cell Config processing mode
if (RC.ss.mode == SS_SOFTMODEM) if (RC.ss.mode == SS_SOFTMODEM)
{ {
RC.ss.State = SS_STATE_NOT_CONFIGURED; RC.ss.ss_cell_list[0].State = SS_STATE_NOT_CONFIGURED;
} }
// Set the state to CELL_ACTIVE for SRB processing mode // Set the state to CELL_ACTIVE for SRB processing mode
else if (RC.ss.mode == SS_SOFTMODEM_SRB) else if (RC.ss.mode == SS_SOFTMODEM_SRB)
{ {
RC.ss.State = SS_STATE_CELL_ACTIVE; RC.ss.ss_cell_list[0].State = SS_STATE_CELL_ACTIVE;
} }
while (1) while (1)
{ {
......
...@@ -278,19 +278,19 @@ void *ss_eNB_sysind_process_itti_msg(void *notUsed) ...@@ -278,19 +278,19 @@ void *ss_eNB_sysind_process_itti_msg(void *notUsed)
if (origin_task == TASK_SS_PORTMAN) if (origin_task == TASK_SS_PORTMAN)
{ {
LOG_D(ENB_APP, "[SS_SYSIND] DUMMY WAKEUP receviedfrom PORTMAN state %d \n", RC.ss.State); LOG_D(ENB_APP, "[SS_SYSIND] DUMMY WAKEUP receviedfrom PORTMAN state %d \n", RC.ss.ss_cell_list[0].State);
} }
else else
{ {
LOG_A(ENB_SS, "[SS_SYSIND] Received SS_SYSTEM_IND\n"); LOG_A(ENB_SS, "[SS_SYSIND] Received SS_SYSTEM_IND\n");
if (RC.ss.State >= SS_STATE_CELL_CONFIGURED) if (RC.ss.ss_cell_list[0].State >= SS_STATE_CELL_CONFIGURED)
{ {
instance_g = ITTI_MSG_DESTINATION_INSTANCE(received_msg); instance_g = ITTI_MSG_DESTINATION_INSTANCE(received_msg);
ss_send_sysind_data(&received_msg->ittiMsg.ss_system_ind); ss_send_sysind_data(&received_msg->ittiMsg.ss_system_ind);
} }
else else
{ {
LOG_E(ENB_SS, "[SS_SYSIND][SS_SYSTEM_IND] received in SS state %d \n", RC.ss.State); LOG_E(ENB_SS, "[SS_SYSIND][SS_SYSTEM_IND] received in SS state %d \n", RC.ss.ss_cell_list[0].State);
} }
} }
result = itti_free(ITTI_MSG_ORIGIN_ID(received_msg), received_msg); result = itti_free(ITTI_MSG_ORIGIN_ID(received_msg), received_msg);
......
...@@ -200,8 +200,8 @@ ss_eNB_read_from_vng_socket(acpCtx_t ctx) ...@@ -200,8 +200,8 @@ ss_eNB_read_from_vng_socket(acpCtx_t ctx)
break; break;
} }
if (RC.ss.State < SS_STATE_CELL_ACTIVE) { if (RC.ss.ss_cell_list[0].State < SS_STATE_CELL_ACTIVE) {
LOG_A(ENB_SS, "[SS-VNG] Request received in an invalid state: %d \n", RC.ss.State); LOG_A(ENB_SS, "[SS-VNG] Request received in an invalid state: %d \n", RC.ss.ss_cell_list[0].State);
break; break;
} }
/** TODO: Dump message here */ /** TODO: Dump message here */
......
...@@ -488,7 +488,8 @@ void* ss_eNB_vtp_task(void *arg) { ...@@ -488,7 +488,8 @@ void* ss_eNB_vtp_task(void *arg) {
ss_eNB_wait_first_msg(); ss_eNB_wait_first_msg();
RC.ss.vtp_ready = 1; SS_context.vtp_enabled = 1;
RC.ss.ss_cell_list[0].vtp_ready = 1;
ss_enable_vtp(); ss_enable_vtp();
sleep(1); sleep(1);
while (1) { while (1) {
......
...@@ -300,13 +300,13 @@ ss_gNB_read_from_srb_socket(acpCtx_t ctx) ...@@ -300,13 +300,13 @@ ss_gNB_read_from_srb_socket(acpCtx_t ctx)
LOG_A(GNB_APP, "[SS_SRB][NR_RRC_PDU_REQ] acpNrSysSrbProcessFromSSDecSrv Failed\n"); LOG_A(GNB_APP, "[SS_SRB][NR_RRC_PDU_REQ] acpNrSysSrbProcessFromSSDecSrv Failed\n");
break; break;
} }
if (RC.ss.State >= SS_STATE_CELL_ACTIVE) if (RC.ss.ss_cell_list[0].State >= SS_STATE_CELL_ACTIVE)
{ {
ss_task_handle_rrc_pdu_req(req); ss_task_handle_rrc_pdu_req(req);
} }
else else
{ {
LOG_A(GNB_APP, "ERROR [SS_SRB][NR_RRC_PDU_REQ] received in SS state %d \n", RC.ss.State); LOG_A(GNB_APP, "ERROR [SS_SRB][NR_RRC_PDU_REQ] received in SS state %d \n", RC.ss.ss_cell_list[0].State);
} }
acpNrSysSrbProcessFromSSFreeSrv(req); acpNrSysSrbProcessFromSSFreeSrv(req);
...@@ -361,7 +361,7 @@ void ss_gNB_srb_init(void) ...@@ -361,7 +361,7 @@ void ss_gNB_srb_init(void)
buffer = (unsigned char *)acpMalloc(size); buffer = (unsigned char *)acpMalloc(size);
assert(buffer); assert(buffer);
RC.ss.State = SS_STATE_CELL_ACTIVE; RC.ss.ss_cell_list[0].State = SS_STATE_CELL_ACTIVE;
itti_subscribe_event_fd(TASK_SS_SRB, fd1); itti_subscribe_event_fd(TASK_SS_SRB, fd1);
itti_mark_task_ready(TASK_SS_SRB); itti_mark_task_ready(TASK_SS_SRB);
...@@ -393,14 +393,14 @@ void *ss_gNB_srb_process_itti_msg(void *notUsed) ...@@ -393,14 +393,14 @@ void *ss_gNB_srb_process_itti_msg(void *notUsed)
#endif #endif
{ {
LOG_A(GNB_APP, "[SS_SRB] Received SS_NRRRC_PDU_IND from RRC\n"); LOG_A(GNB_APP, "[SS_SRB] Received SS_NRRRC_PDU_IND from RRC\n");
if (RC.ss.State >= SS_STATE_CELL_ACTIVE) if (RC.ss.ss_cell_list[0].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_nrrrc_pdu_ind); ss_send_srb_data(&received_msg->ittiMsg.ss_nrrrc_pdu_ind);
} }
else else
{ {
LOG_A(GNB_APP, "ERROR [SS_SRB][NR_RRC_PDU_IND] received in SS state %d \n", RC.ss.State); LOG_A(GNB_APP, "ERROR [SS_SRB][NR_RRC_PDU_IND] received in SS state %d \n", RC.ss.ss_cell_list[0].State);
} }
} }
......
...@@ -43,6 +43,15 @@ typedef enum ss_mode { ...@@ -43,6 +43,15 @@ typedef enum ss_mode {
#define SS_SOFTMODEM (0x01) #define SS_SOFTMODEM (0x01)
#define SS_SOFTMODEM_SRB (0x02) #define SS_SOFTMODEM_SRB (0x02)
#endif #endif
typedef struct ss_cell_config_s{
/** State info */
int State;
int vtp_ready;
int CBRA_flag;
int mac_rlc_data_ind_frame;
int mac_rlc_data_ind_subframe;
ss_l1macind_ctrl_t l1macind;
} ss_cell_config_t;
typedef struct ss_config_s { typedef struct ss_config_s {
/** SS mode of operation */ /** SS mode of operation */
...@@ -71,6 +80,8 @@ typedef struct ss_config_s { ...@@ -71,6 +80,8 @@ typedef struct ss_config_s {
int mac_rlc_data_ind_frame; int mac_rlc_data_ind_frame;
int mac_rlc_data_ind_subframe; int mac_rlc_data_ind_subframe;
ss_l1macind_ctrl_t l1macind; ss_l1macind_ctrl_t l1macind;
/** Cell Config Array */
ss_cell_config_t ss_cell_list[8];
} ss_config_t; } ss_config_t;
typedef enum { typedef enum {
......
...@@ -278,8 +278,8 @@ static inline int rxtx(PHY_VARS_eNB *eNB, ...@@ -278,8 +278,8 @@ static inline int rxtx(PHY_VARS_eNB *eNB,
LOG_D(PHY, "[SS] SS_UPD_TIM_INFO from L1_Thread to SYS task itti_send_msg_to_task sfn %d sf %d", LOG_D(PHY, "[SS] SS_UPD_TIM_INFO from L1_Thread to SYS task itti_send_msg_to_task sfn %d sf %d",
eNB->UL_INFO.subframe, eNB->UL_INFO.frame); /** TODO: Need separate logging for SS */ eNB->UL_INFO.subframe, eNB->UL_INFO.frame); /** TODO: Need separate logging for SS */
} }
MessageDef *message_p_vtp = itti_alloc_new_message(TASK_ENB_APP, 0, SS_UPD_TIM_INFO); MessageDef *message_p_vtp = itti_alloc_new_message(TASK_VTP, INSTANCE_DEFAULT, SS_UPD_TIM_INFO);
if (message_p_vtp && RC.ss.vtp_ready) if (message_p_vtp && RC.ss.ss_cell_list[0].vtp_ready)
{ {
SS_UPD_TIM_INFO(message_p_vtp).sf = eNB->UL_INFO.subframe; SS_UPD_TIM_INFO(message_p_vtp).sf = eNB->UL_INFO.subframe;
SS_UPD_TIM_INFO(message_p_vtp).sfn = eNB->UL_INFO.frame; SS_UPD_TIM_INFO(message_p_vtp).sfn = eNB->UL_INFO.frame;
......
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