Commit 9b1c03d1 authored by WEI-TAI CHEN's avatar WEI-TAI CHEN

-Update LTE RRC ASN to Rel15, but there is a parameter that does not meet the...

-Update LTE RRC ASN to Rel15, but there is a parameter that does not meet the specifications since I modify asn file.
-I modify the name of the parameter "maxRS-IndexCellQual-r15" to "maxRS-IndexCellQualNR-r15" in structure,
 otherwise it will be conflict with the Macro define "#define maxRS_IndexCellQual_r15 (16)" in asn1_constant.h
parent 6bcbf537
...@@ -291,7 +291,7 @@ elseif (${RRC_ASN1_VERSION} STREQUAL "CBA") ...@@ -291,7 +291,7 @@ elseif (${RRC_ASN1_VERSION} STREQUAL "CBA")
elseif (${RRC_ASN1_VERSION} STREQUAL "Rel10") elseif (${RRC_ASN1_VERSION} STREQUAL "Rel10")
set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1c/ASN1_files/EUTRA-RRC-Definitions-a20.asn) set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1c/ASN1_files/EUTRA-RRC-Definitions-a20.asn)
else() else()
set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1c/ASN1_files/RRC-e30.asn) set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1c/ASN1_files/RRC-36331-f22.asn)
endif (${RRC_ASN1_VERSION} STREQUAL "Rel8") endif (${RRC_ASN1_VERSION} STREQUAL "Rel8")
set (RRC_FULL_DIR ${asn1_generated_dir}/RRC_${RRC_ASN1_VERSION}) set (RRC_FULL_DIR ${asn1_generated_dir}/RRC_${RRC_ASN1_VERSION})
...@@ -301,6 +301,9 @@ if(NOT EXISTS ${asn1c_call}) ...@@ -301,6 +301,9 @@ if(NOT EXISTS ${asn1c_call})
endif(NOT EXISTS ${asn1c_call}) endif(NOT EXISTS ${asn1c_call})
message("calling asn1c -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D ${RRC_FULL_DIR} ${RRC_GRAMMAR}") message("calling asn1c -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D ${RRC_FULL_DIR} ${RRC_GRAMMAR}")
#execute_process(COMMAND mkdir -p ${RRC_FULL_DIR}
# COMMAND env asn1c -pdu=all -fcompound-names -gen-PER -no-gen-OER -no-gen-example -D ${RRC_FULL_DIR} ${RRC_GRAMMAR}
# RESULT_VARIABLE ret)
execute_process(COMMAND ${asn1c_call} execute_process(COMMAND ${asn1c_call}
${RRC_FULL_DIR} ${RRC_FULL_DIR}
${RRC_GRAMMAR} ${RRC_GRAMMAR}
......
...@@ -129,7 +129,7 @@ else ...@@ -129,7 +129,7 @@ else
case "$module" in case "$module" in
RRC ) RRC )
asn1c -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example $* 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample asn1c -pdu=all -fcompound-names -gen-PER -no-gen-OER -no-gen-example $* 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
;; ;;
NR_RRC ) NR_RRC )
export ASN1C_PREFIX=NR_ export ASN1C_PREFIX=NR_
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
# define __RLC_H__ # define __RLC_H__
# include "platform_types.h" # include "platform_types.h"
# include "platform_constants.h" # include "COMMON/platform_constants.h"
# include "hashtable.h" # include "hashtable.h"
# include "rlc_am.h" # include "rlc_am.h"
# include "rlc_um.h" # include "rlc_um.h"
......
...@@ -2425,15 +2425,15 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname) ...@@ -2425,15 +2425,15 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
InterFreqBandInfo[3][3].interFreqNeedForGaps = 0; InterFreqBandInfo[3][3].interFreqNeedForGaps = 0;
UE_EUTRA_Capability->accessStratumRelease = 0;//AccessStratumRelease_rel8; UE_EUTRA_Capability->accessStratumRelease = 0;//AccessStratumRelease_rel8;
UE_EUTRA_Capability->ue_Category = 4; UE_EUTRA_Capability->ue_Category = 4;
UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0001=0; UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0001_r15=0;
UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0002=0; UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0002_r15=0;
UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0003=0; UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0003_r15=0;
UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0004=0; UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0004_r15=0;
UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0006=0; UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0006_r15=0;
UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0101=0; UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0101_r15=0;
UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0102=0; UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0102_r15=0;
UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0103=0; UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0103_r15=0;
UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0104=0; UE_EUTRA_Capability->pdcp_Parameters.supportedROHC_Profiles.profile0x0104_r15=0;
UE_EUTRA_Capability->pdcp_Parameters.maxNumberROHC_ContextSessions = &maxNumberROHC_ContextSessions; UE_EUTRA_Capability->pdcp_Parameters.maxNumberROHC_ContextSessions = &maxNumberROHC_ContextSessions;
UE_EUTRA_Capability->phyLayerParameters.ue_TxAntennaSelectionSupported = 0; UE_EUTRA_Capability->phyLayerParameters.ue_TxAntennaSelectionSupported = 0;
UE_EUTRA_Capability->phyLayerParameters.ue_SpecificRefSigsSupported = 0; UE_EUTRA_Capability->phyLayerParameters.ue_SpecificRefSigsSupported = 0;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -255,7 +255,110 @@ typedef struct SRB_INFO_TABLE_ENTRY_NR_s { ...@@ -255,7 +255,110 @@ typedef struct SRB_INFO_TABLE_ENTRY_NR_s {
uint32_t Next_check_frame; uint32_t Next_check_frame;
} NR_SRB_INFO_TABLE_ENTRY; } NR_SRB_INFO_TABLE_ENTRY;
//called "carrier"--> data from PHY layer
typedef struct gNB_RRC_UE_s {
uint8_t primaryCC_id;
#if defined(Rel10) || defined(Rel14)
SCellToAddMod_r10_t sCell_config[2];
#endif
SRB_ToAddModList_t* SRB_configList;
SRB_ToAddModList_t* SRB_configList2[RRC_TRANSACTION_IDENTIFIER_NUMBER];
DRB_ToAddModList_t* DRB_configList;
DRB_ToAddModList_t* DRB_configList2[RRC_TRANSACTION_IDENTIFIER_NUMBER];
DRB_ToReleaseList_t* DRB_Release_configList2[RRC_TRANSACTION_IDENTIFIER_NUMBER];
uint8_t DRB_active[8];
SRB_INFO SI;
SRB_INFO Srb0;
SRB_INFO_TABLE_ENTRY Srb1;
SRB_INFO_TABLE_ENTRY Srb2;
MeasConfig_t* measConfig;
HANDOVER_INFO* handover_info;
MeasResults_t* measResults;
UE_EUTRA_Capability_t* UE_Capability;
ImsiMobileIdentity_t imsi;
#if defined(ENABLE_SECURITY)
/* KeNB as derived from KASME received from EPC */
uint8_t kenb[32];
int8_t kenb_ncc;
uint8_t nh[32];
int8_t nh_ncc;
#endif
/* Used integrity/ciphering algorithms */
CipheringAlgorithm_r12_t ciphering_algorithm;
e_SecurityAlgorithmConfig__integrityProtAlgorithm integrity_algorithm;
uint8_t Status;
rnti_t rnti;
uint64_t random_ue_identity;
#if defined(ENABLE_ITTI)
/* Information from UE RRC ConnectionRequest */
UE_S_TMSI Initialue_identity_s_TMSI;
EstablishmentCause_t establishment_cause;
/* Information from UE RRC ConnectionReestablishmentRequest */
ReestablishmentCause_t reestablishment_cause;
/* UE id for initial connection to S1AP */
uint16_t ue_initial_id;
/* Information from S1AP initial_context_setup_req */
uint32_t gNB_ue_s1ap_id :24;
security_capabilities_t security_capabilities;
/* Total number of e_rab already setup in the list */
uint8_t setup_e_rabs;
/* Number of e_rab to be setup in the list */
uint8_t nb_of_e_rabs;
/* Number of e_rab to be modified in the list */
uint8_t nb_of_modify_e_rabs;
uint8_t nb_of_failed_e_rabs;
e_rab_param_t modify_e_rab[NB_RB_MAX];//[S1AP_MAX_E_RAB];
/* list of e_rab to be setup by RRC layers */
e_rab_param_t e_rab[NB_RB_MAX];//[S1AP_MAX_E_RAB];
//release e_rabs
uint8_t nb_release_of_e_rabs;
e_rab_failed_t e_rabs_release_failed[S1AP_MAX_E_RAB];
// LG: For GTPV1 TUNNELS
uint32_t enb_gtp_teid[S1AP_MAX_E_RAB];
transport_layer_addr_t enb_gtp_addrs[S1AP_MAX_E_RAB];
rb_id_t enb_gtp_ebi[S1AP_MAX_E_RAB];
#endif
uint32_t ul_failure_timer;
uint32_t ue_release_timer;
uint32_t ue_release_timer_thres;
uint32_t ue_release_timer_s1;
uint32_t ue_release_timer_thres_s1;
uint32_t ue_release_timer_rrc;
uint32_t ue_release_timer_thres_rrc;
uint32_t ue_reestablishment_timer;
uint32_t ue_reestablishment_timer_thres;
uint8_t e_rab_release_command_flag;
} gNB_RRC_UE_t;
typedef uid_t ue_uid_t;
typedef struct rrc_gNB_ue_context_s {
/* Tree related data */
RB_ENTRY(rrc_gNB_ue_context_s) entries;
/* Uniquely identifies the UE between MME and eNB within the eNB.
* This id is encoded on 24bits.
*/
rnti_t ue_id_rnti;
// another key for protocol layers but should not be used as a key for RB tree
ue_uid_t local_uid;
/* UE id for initial connection to S1AP */
struct gNB_RRC_UE_s ue_context;
} rrc_gNB_ue_context_t;
typedef struct { typedef struct {
// buffer that contains the encoded messages // buffer that contains the encoded messages
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
#include "NR_BCCH-BCH-Message.h" #include "NR_BCCH-BCH-Message.h"
#include "NR_UL-DCCH-Message.h" #include "NR_UL-DCCH-Message.h"
#include "NR_DL-DCCH-Message.h" #include "NR_DL-DCCH-Message.h"
#include "NR_CellGroupConfig.h"
#include "NR_MeasResults.h" #include "NR_MeasResults.h"
#include "rlc.h" #include "rlc.h"
...@@ -114,38 +114,49 @@ mui_t rrc_gNB_mui = 0; ...@@ -114,38 +114,49 @@ mui_t rrc_gNB_mui = 0;
///---------------------------------------------------------------------------------------------------------------/// ///---------------------------------------------------------------------------------------------------------------///
///---------------------------------------------------------------------------------------------------------------/// ///---------------------------------------------------------------------------------------------------------------///
void void openair_nr_rrc_on(const protocol_ctxt_t* const ctxt_pP){
openair_nr_rrc_on(
const protocol_ctxt_t* const ctxt_pP
)
//-----------------------------------------------------------------------------
{
int CC_id; int CC_id;
LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_FMT" gNB:OPENAIR NR RRC IN....\n",PROTOCOL_NR_RRC_CTXT_ARGS(ctxt_pP));
LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_FMT" gNB:OPENAIR NR RRC IN....\n",
PROTOCOL_NR_RRC_CTXT_ARGS(ctxt_pP));
for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) { for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
rrc_config_nr_buffer (&RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].SI, BCCH, 1); rrc_config_nr_buffer (&RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].SI, BCCH, 1);
RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].SI.Active = 1; RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].SI.Active = 1;
rrc_config_nr_buffer (&RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].Srb0, CCCH, 1); rrc_config_nr_buffer (&RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].Srb0, CCCH, 1);
RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Active = 1; RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Active = 1;
} }
} }
///---------------------------------------------------------------------------------------------------------------/// ///---------------------------------------------------------------------------------------------------------------///
///---------------------------------------------------------------------------------------------------------------/// ///---------------------------------------------------------------------------------------------------------------///
static void void rrc_gNB_process_SgNBAdditionRequest(
init_NR_SI( const protocol_ctxt_t *const ctxt_pP,
const protocol_ctxt_t* const ctxt_pP, rrc_gNB_ue_context_t *ue_context_pP
){
rrc_gNB_generate_SgNBAdditionRequestAcknowledge(ctxt_pP,ue_context_pP);
}
void rrc_gNB_generate_SgNBAdditionRequestAcknowledge(
const protocol_ctxt_t *const ctxt_pP,
rrc_gNB_ue_context_t *const ue_context_pP
){
}
///---------------------------------------------------------------------------------------------------------------///
///---------------------------------------------------------------------------------------------------------------///
static void init_NR_SI(const protocol_ctxt_t* const ctxt_pP,
const int CC_id const int CC_id
#if defined(ENABLE_ITTI) #if defined(ENABLE_ITTI)
, ,
gNB_RrcConfigurationReq * configuration gNB_RrcConfigurationReq * configuration
#endif #endif
) ){
//-----------------------------------------------------------------------------
{
//int i; //int i;
LOG_D(RRC,"%s()\n\n\n\n",__FUNCTION__); LOG_D(RRC,"%s()\n\n\n\n",__FUNCTION__);
......
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