UE: Set correct selected PLMN Identity
This commit is contained in:
@@ -2310,7 +2310,7 @@ uint8_t do_SidelinkUEInformation(uint8_t Mod_id, uint8_t *buffer, LTE_SL_Destin
|
|||||||
return((enc_rval.encoded+7)/8);
|
return((enc_rval.encoded+7)/8);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uint8_t Transaction_id, const int dedicatedInfoNASLength, const char *dedicatedInfoNAS) {
|
uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uint8_t Transaction_id, uint8_t sel_plmn_id, const int dedicatedInfoNASLength, const char *dedicatedInfoNAS) {
|
||||||
asn_enc_rval_t enc_rval;
|
asn_enc_rval_t enc_rval;
|
||||||
LTE_UL_DCCH_Message_t ul_dcch_msg;
|
LTE_UL_DCCH_Message_t ul_dcch_msg;
|
||||||
LTE_RRCConnectionSetupComplete_t *rrcConnectionSetupComplete;
|
LTE_RRCConnectionSetupComplete_t *rrcConnectionSetupComplete;
|
||||||
@@ -2323,7 +2323,7 @@ uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uin
|
|||||||
rrcConnectionSetupComplete->criticalExtensions.choice.c1.present = LTE_RRCConnectionSetupComplete__criticalExtensions__c1_PR_rrcConnectionSetupComplete_r8;
|
rrcConnectionSetupComplete->criticalExtensions.choice.c1.present = LTE_RRCConnectionSetupComplete__criticalExtensions__c1_PR_rrcConnectionSetupComplete_r8;
|
||||||
rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.nonCriticalExtension=CALLOC(1,
|
rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.nonCriticalExtension=CALLOC(1,
|
||||||
sizeof(*rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.nonCriticalExtension));
|
sizeof(*rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.nonCriticalExtension));
|
||||||
rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.selectedPLMN_Identity= 1;
|
rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.selectedPLMN_Identity= sel_plmn_id;
|
||||||
rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME =
|
rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME =
|
||||||
NULL;//calloc(1,sizeof(*rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME));
|
NULL;//calloc(1,sizeof(*rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME));
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -142,7 +142,11 @@ uint8_t do_SidelinkUEInformation(uint8_t Mod_id, uint8_t *buffer, LTE_SL_Destina
|
|||||||
/** \brief Generate an RRCConnectionSetupComplete UL-DCCH-Message (UE)
|
/** \brief Generate an RRCConnectionSetupComplete UL-DCCH-Message (UE)
|
||||||
@param buffer Pointer to PER-encoded ASN.1 description of UL-DCCH-Message PDU
|
@param buffer Pointer to PER-encoded ASN.1 description of UL-DCCH-Message PDU
|
||||||
@returns Size of encoded bit stream in bytes*/
|
@returns Size of encoded bit stream in bytes*/
|
||||||
uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uint8_t Transaction_id, const int dedicatedInfoNASLength,
|
uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id,
|
||||||
|
uint8_t *buffer,
|
||||||
|
const uint8_t Transaction_id,
|
||||||
|
uint8_t sel_plmn_id,
|
||||||
|
const int dedicatedInfoNASLength,
|
||||||
const char *dedicatedInfoNAS);
|
const char *dedicatedInfoNAS);
|
||||||
|
|
||||||
/** \brief Generate an RRCConnectionReconfigurationComplete UL-DCCH-Message (UE)
|
/** \brief Generate an RRCConnectionReconfigurationComplete UL-DCCH-Message (UE)
|
||||||
|
|||||||
@@ -128,8 +128,13 @@ static int decode_SIB1_MBMS( const protocol_ctxt_t *const ctxt_pP, const uint8_t
|
|||||||
* \param ctxt_pP Running context
|
* \param ctxt_pP Running context
|
||||||
* \param eNB_index Index of corresponding eNB/CH
|
* \param eNB_index Index of corresponding eNB/CH
|
||||||
* \param Transaction_id Transaction identifier
|
* \param Transaction_id Transaction identifier
|
||||||
|
* \param sel_plmn_id selected PLMN Identity
|
||||||
*/
|
*/
|
||||||
static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id );
|
static void rrc_ue_generate_RRCConnectionSetupComplete(
|
||||||
|
const protocol_ctxt_t *const ctxt_pP,
|
||||||
|
const uint8_t eNB_index,
|
||||||
|
const uint8_t Transaction_id,
|
||||||
|
uint8_t sel_plmn_id);
|
||||||
|
|
||||||
/** \brief Generates/Encodes RRCConnectionReconfigurationComplete message at UE
|
/** \brief Generates/Encodes RRCConnectionReconfigurationComplete message at UE
|
||||||
* \param ctxt_pP Running context
|
* \param ctxt_pP Running context
|
||||||
@@ -367,6 +372,7 @@ char openair_rrc_ue_init( const module_id_t ue_mod_idP, const unsigned char eNB_
|
|||||||
rrc_set_state (ue_mod_idP, RRC_STATE_INACTIVE);
|
rrc_set_state (ue_mod_idP, RRC_STATE_INACTIVE);
|
||||||
rrc_set_sub_state (ue_mod_idP, RRC_SUB_STATE_INACTIVE);
|
rrc_set_sub_state (ue_mod_idP, RRC_SUB_STATE_INACTIVE);
|
||||||
LOG_I(RRC,"[UE %d] INIT State = RRC_IDLE (eNB %d)\n",ctxt.module_id,eNB_index);
|
LOG_I(RRC,"[UE %d] INIT State = RRC_IDLE (eNB %d)\n",ctxt.module_id,eNB_index);
|
||||||
|
UE_rrc_inst[ctxt.module_id].selected_plmn_identity = 1;
|
||||||
UE_rrc_inst[ctxt.module_id].Info[eNB_index].State=RRC_IDLE;
|
UE_rrc_inst[ctxt.module_id].Info[eNB_index].State=RRC_IDLE;
|
||||||
UE_rrc_inst[ctxt.module_id].Info[eNB_index].T300_active = 0;
|
UE_rrc_inst[ctxt.module_id].Info[eNB_index].T300_active = 0;
|
||||||
UE_rrc_inst[ctxt.module_id].Info[eNB_index].T304_active = 0;
|
UE_rrc_inst[ctxt.module_id].Info[eNB_index].T304_active = 0;
|
||||||
@@ -490,7 +496,11 @@ rrc_t310_expiration(
|
|||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id ) {
|
static void rrc_ue_generate_RRCConnectionSetupComplete(
|
||||||
|
const protocol_ctxt_t *const ctxt_pP,
|
||||||
|
const uint8_t eNB_index,
|
||||||
|
const uint8_t Transaction_id,
|
||||||
|
uint8_t sel_plmn_id) {
|
||||||
uint8_t buffer[100];
|
uint8_t buffer[100];
|
||||||
uint8_t size;
|
uint8_t size;
|
||||||
const char *nas_msg;
|
const char *nas_msg;
|
||||||
@@ -504,7 +514,7 @@ static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t *c
|
|||||||
nas_msg_length = sizeof(nas_attach_req_imsi);
|
nas_msg_length = sizeof(nas_attach_req_imsi);
|
||||||
}
|
}
|
||||||
|
|
||||||
size = do_RRCConnectionSetupComplete(ctxt_pP->module_id, buffer, Transaction_id, nas_msg_length, nas_msg);
|
size = do_RRCConnectionSetupComplete(ctxt_pP->module_id, buffer, Transaction_id, sel_plmn_id, nas_msg_length, nas_msg);
|
||||||
LOG_I(RRC,"[UE %d][RAPROC] Frame %d : Logical Channel UL-DCCH (SRB1), Generating RRCConnectionSetupComplete (bytes%d, eNB %d)\n",
|
LOG_I(RRC,"[UE %d][RAPROC] Frame %d : Logical Channel UL-DCCH (SRB1), Generating RRCConnectionSetupComplete (bytes%d, eNB %d)\n",
|
||||||
ctxt_pP->module_id,ctxt_pP->frame, size, eNB_index);
|
ctxt_pP->module_id,ctxt_pP->frame, size, eNB_index);
|
||||||
LOG_D(RLC,
|
LOG_D(RLC,
|
||||||
@@ -624,7 +634,8 @@ int rrc_ue_decode_ccch( const protocol_ctxt_t *const ctxt_pP, const SRB_INFO *co
|
|||||||
rrc_ue_generate_RRCConnectionSetupComplete(
|
rrc_ue_generate_RRCConnectionSetupComplete(
|
||||||
ctxt_pP,
|
ctxt_pP,
|
||||||
eNB_index,
|
eNB_index,
|
||||||
dl_ccch_msg->message.choice.c1.choice.rrcConnectionSetup.rrc_TransactionIdentifier);
|
dl_ccch_msg->message.choice.c1.choice.rrcConnectionSetup.rrc_TransactionIdentifier,
|
||||||
|
UE_rrc_inst[ctxt_pP->module_id].selected_plmn_identity);
|
||||||
rval = 0;
|
rval = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -2969,6 +2980,7 @@ int decode_SIB1( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index,
|
|||||||
NAS_CELL_SELECTION_CNF (msg_p).rsrp = rsrp;
|
NAS_CELL_SELECTION_CNF (msg_p).rsrp = rsrp;
|
||||||
itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
|
itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
|
||||||
cell_valid = 1;
|
cell_valid = 1;
|
||||||
|
UE_rrc_inst[ctxt_pP->module_id].selected_plmn_identity = plmn + 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2979,7 +2991,11 @@ int decode_SIB1( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index,
|
|||||||
MessageDef *msg_p;
|
MessageDef *msg_p;
|
||||||
msg_p = itti_alloc_new_message(TASK_RRC_UE, PHY_FIND_NEXT_CELL_REQ);
|
msg_p = itti_alloc_new_message(TASK_RRC_UE, PHY_FIND_NEXT_CELL_REQ);
|
||||||
itti_send_msg_to_task(TASK_PHY_UE, ctxt_pP->instance, msg_p);
|
itti_send_msg_to_task(TASK_PHY_UE, ctxt_pP->instance, msg_p);
|
||||||
LOG_E(RRC, "Synched with a cell, but PLMN doesn't match our SIM, the message PHY_FIND_NEXT_CELL_REQ is sent but lost in current UE implementation! \n");
|
LOG_E(RRC,
|
||||||
|
"Synched with a cell, but PLMN doesn't match our SIM "
|
||||||
|
"(selected_plmn_identity %d), the message PHY_FIND_NEXT_CELL_REQ "
|
||||||
|
"is sent but lost in current UE implementation!\n",
|
||||||
|
UE_rrc_inst[ctxt_pP->module_id].selected_plmn_identity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -808,6 +808,7 @@ typedef struct UE_RRC_INST_s {
|
|||||||
Rrc_Sub_State_t RrcSubState;
|
Rrc_Sub_State_t RrcSubState;
|
||||||
plmn_t plmnID;
|
plmn_t plmnID;
|
||||||
Byte_t rat;
|
Byte_t rat;
|
||||||
|
uint8_t selected_plmn_identity;
|
||||||
as_nas_info_t initialNasMsg;
|
as_nas_info_t initialNasMsg;
|
||||||
OAI_UECapability_t *UECap;
|
OAI_UECapability_t *UECap;
|
||||||
uint8_t *UECapability;
|
uint8_t *UECapability;
|
||||||
|
|||||||
Reference in New Issue
Block a user