fix gNB build error
This commit is contained in:
@@ -16,3 +16,4 @@
|
|||||||
#include "openair2/COMMON/gtpv1_u_messages_def.h"
|
#include "openair2/COMMON/gtpv1_u_messages_def.h"
|
||||||
#include "openair2/COMMON/flexran_messages_def.h"
|
#include "openair2/COMMON/flexran_messages_def.h"
|
||||||
#include "openair2/COMMON/f1ap_messages_def.h"
|
#include "openair2/COMMON/f1ap_messages_def.h"
|
||||||
|
#include "openair2/COMMON/ngap_messages_def.h"
|
||||||
|
|||||||
@@ -230,6 +230,7 @@ typedef struct IttiMsgText_s {
|
|||||||
#include <openair2/COMMON/sctp_messages_types.h>
|
#include <openair2/COMMON/sctp_messages_types.h>
|
||||||
#include <openair2/COMMON/udp_messages_types.h>
|
#include <openair2/COMMON/udp_messages_types.h>
|
||||||
#include <openair2/COMMON/gtpv1_u_messages_types.h>
|
#include <openair2/COMMON/gtpv1_u_messages_types.h>
|
||||||
|
#include <openair2/COMMON/ngap_messages_types.h>
|
||||||
#include <openair3/SCTP/sctp_eNB_task.h>
|
#include <openair3/SCTP/sctp_eNB_task.h>
|
||||||
#include <openair3/NAS/UE/nas_proc_defs.h>
|
#include <openair3/NAS/UE/nas_proc_defs.h>
|
||||||
#include <openair3/NAS/UE/ESM/esmData.h>
|
#include <openair3/NAS/UE/ESM/esmData.h>
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ unsigned short config_frames[4] = {2,9,11,13};
|
|||||||
#include "executables/thread-common.h"
|
#include "executables/thread-common.h"
|
||||||
#include "NB_IoT_interface.h"
|
#include "NB_IoT_interface.h"
|
||||||
#include "x2ap_eNB.h"
|
#include "x2ap_eNB.h"
|
||||||
|
#include "ngap_gNB.h"
|
||||||
|
|
||||||
pthread_cond_t nfapi_sync_cond;
|
pthread_cond_t nfapi_sync_cond;
|
||||||
pthread_mutex_t nfapi_sync_mutex;
|
pthread_mutex_t nfapi_sync_mutex;
|
||||||
@@ -408,10 +409,12 @@ int create_gNB_tasks(uint32_t gnb_nb) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
/*
|
||||||
if (itti_create_task (TASK_NGAP, ngap_gNB_task, NULL) < 0) {
|
if (itti_create_task (TASK_NGAP, ngap_gNB_task, NULL) < 0) {
|
||||||
LOG_E(S1AP, "Create task for NGAP failed\n");
|
LOG_E(S1AP, "Create task for NGAP failed\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
if(!emulate_rf){
|
if(!emulate_rf){
|
||||||
|
|||||||
@@ -74,83 +74,78 @@
|
|||||||
#define NGAP_MAX_NB_AMF_IP_ADDRESS 10
|
#define NGAP_MAX_NB_AMF_IP_ADDRESS 10
|
||||||
#define NGAP_IMSI_LENGTH 16
|
#define NGAP_IMSI_LENGTH 16
|
||||||
|
|
||||||
#define QOSFLOW_MAX_VALUE 64;
|
#define QOSFLOW_MAX_VALUE 64
|
||||||
|
|
||||||
/* Security key length used within gNB
|
/* Security key length used within gNB
|
||||||
* Even if only 16 bytes will be effectively used,
|
* Even if only 16 bytes will be effectively used,
|
||||||
* the key length is 32 bytes (256 bits)
|
* the key length is 32 bytes (256 bits)
|
||||||
*/
|
*/
|
||||||
#define SECURITY_KEY_LENGTH 32
|
#define SECURITY_KEY_LENGTH 32
|
||||||
typedef enum cell_type_e {
|
|
||||||
CELL_MACRO_ENB,
|
|
||||||
CELL_HOME_ENB,
|
|
||||||
CELL_MACRO_GNB
|
|
||||||
} cell_type_t;
|
|
||||||
|
|
||||||
typedef enum paging_drx_e {
|
typedef enum ngap_paging_drx_e {
|
||||||
PAGING_DRX_32 = 0x0,
|
NGAP_PAGING_DRX_32 = 0x0,
|
||||||
PAGING_DRX_64 = 0x1,
|
NGAP_PAGING_DRX_64 = 0x1,
|
||||||
PAGING_DRX_128 = 0x2,
|
NGAP_PAGING_DRX_128 = 0x2,
|
||||||
PAGING_DRX_256 = 0x3
|
NGAP_PAGING_DRX_256 = 0x3
|
||||||
} paging_drx_t;
|
} ngap_paging_drx_t;
|
||||||
|
|
||||||
/* Lower value codepoint
|
/* Lower value codepoint
|
||||||
* indicates higher priority.
|
* indicates higher priority.
|
||||||
*/
|
*/
|
||||||
typedef enum paging_priority_s {
|
typedef enum ngap_paging_priority_s {
|
||||||
PAGING_PRIO_LEVEL1 = 0,
|
NGAP_PAGING_PRIO_LEVEL1 = 0,
|
||||||
PAGING_PRIO_LEVEL2 = 1,
|
NGAP_PAGING_PRIO_LEVEL2 = 1,
|
||||||
PAGING_PRIO_LEVEL3 = 2,
|
NGAP_PAGING_PRIO_LEVEL3 = 2,
|
||||||
PAGING_PRIO_LEVEL4 = 3,
|
NGAP_PAGING_PRIO_LEVEL4 = 3,
|
||||||
PAGING_PRIO_LEVEL5 = 4,
|
NGAP_PAGING_PRIO_LEVEL5 = 4,
|
||||||
PAGING_PRIO_LEVEL6 = 5,
|
NGAP_PAGING_PRIO_LEVEL6 = 5,
|
||||||
PAGING_PRIO_LEVEL7 = 6,
|
NGAP_PAGING_PRIO_LEVEL7 = 6,
|
||||||
PAGING_PRIO_LEVEL8 = 7
|
NGAP_PAGING_PRIO_LEVEL8 = 7
|
||||||
} paging_priority_t;
|
} ngap_paging_priority_t;
|
||||||
|
|
||||||
typedef enum cn_domain_s {
|
typedef enum ngap_cn_domain_s {
|
||||||
CN_DOMAIN_PS = 1,
|
NGAP_CN_DOMAIN_PS = 1,
|
||||||
CN_DOMAIN_CS = 2
|
NGAP_CN_DOMAIN_CS = 2
|
||||||
} cn_domain_t;
|
} ngap_cn_domain_t;
|
||||||
|
|
||||||
typedef struct net_ip_address_s {
|
typedef struct ngap_net_ip_address_s {
|
||||||
unsigned ipv4:1;
|
unsigned ipv4:1;
|
||||||
unsigned ipv6:1;
|
unsigned ipv6:1;
|
||||||
char ipv4_address[16];
|
char ipv4_address[16];
|
||||||
char ipv6_address[46];
|
char ipv6_address[46];
|
||||||
} net_ip_address_t;
|
} ngap_net_ip_address_t;
|
||||||
|
|
||||||
typedef uint64_t bitrate_t;
|
typedef uint64_t bitrate_t;
|
||||||
|
|
||||||
typedef struct ambr_s {
|
typedef struct ngap_ambr_s {
|
||||||
bitrate_t br_ul;
|
bitrate_t br_ul;
|
||||||
bitrate_t br_dl;
|
bitrate_t br_dl;
|
||||||
} ambr_t;
|
} ngap_ambr_t;
|
||||||
|
|
||||||
typedef enum priority_level_s {
|
typedef enum ngap_priority_level_s {
|
||||||
PRIORITY_LEVEL_SPARE = 0,
|
NGAP_PRIORITY_LEVEL_SPARE = 0,
|
||||||
PRIORITY_LEVEL_HIGHEST = 1,
|
NGAP_PRIORITY_LEVEL_HIGHEST = 1,
|
||||||
PRIORITY_LEVEL_LOWEST = 14,
|
NGAP_PRIORITY_LEVEL_LOWEST = 14,
|
||||||
PRIORITY_LEVEL_NO_PRIORITY = 15
|
NGAP_PRIORITY_LEVEL_NO_PRIORITY = 15
|
||||||
} priority_level_t;
|
} ngap_priority_level_t;
|
||||||
|
|
||||||
typedef enum pre_emp_capability_e {
|
typedef enum ngap_pre_emp_capability_e {
|
||||||
PRE_EMPTION_CAPABILITY_ENABLED = 0,
|
NGAP_PRE_EMPTION_CAPABILITY_ENABLED = 0,
|
||||||
PRE_EMPTION_CAPABILITY_DISABLED = 1,
|
NGAP_PRE_EMPTION_CAPABILITY_DISABLED = 1,
|
||||||
PRE_EMPTION_CAPABILITY_MAX,
|
NGAP_PRE_EMPTION_CAPABILITY_MAX,
|
||||||
} pre_emp_capability_t;
|
} ngap_pre_emp_capability_t;
|
||||||
|
|
||||||
typedef enum pre_emp_vulnerability_e {
|
typedef enum ngap_pre_emp_vulnerability_e {
|
||||||
PRE_EMPTION_VULNERABILITY_ENABLED = 0,
|
NGAP_PRE_EMPTION_VULNERABILITY_ENABLED = 0,
|
||||||
PRE_EMPTION_VULNERABILITY_DISABLED = 1,
|
NGAP_PRE_EMPTION_VULNERABILITY_DISABLED = 1,
|
||||||
PRE_EMPTION_VULNERABILITY_MAX,
|
NGAP_PRE_EMPTION_VULNERABILITY_MAX,
|
||||||
} pre_emp_vulnerability_t;
|
} ngap_pre_emp_vulnerability_t;
|
||||||
|
|
||||||
typedef struct allocation_retention_priority_s {
|
typedef struct ngap_allocation_retention_priority_s {
|
||||||
priority_level_t priority_level;
|
ngap_priority_level_t priority_level;
|
||||||
pre_emp_capability_t pre_emp_capability;
|
ngap_pre_emp_capability_t pre_emp_capability;
|
||||||
pre_emp_vulnerability_t pre_emp_vulnerability;
|
ngap_pre_emp_vulnerability_t pre_emp_vulnerability;
|
||||||
} allocation_retention_priority_t;
|
} ngap_allocation_retention_priority_t;
|
||||||
|
|
||||||
typedef struct nr_security_capabilities_s {
|
typedef struct nr_security_capabilities_s {
|
||||||
uint16_t nRencryption_algorithms;
|
uint16_t nRencryption_algorithms;
|
||||||
@@ -164,17 +159,17 @@ typedef struct nr_security_capabilities_s {
|
|||||||
* concerns AC11..AC15, ‘mt Estands for ‘Mobile Terminating Eand ‘mo Efor
|
* concerns AC11..AC15, ‘mt Estands for ‘Mobile Terminating Eand ‘mo Efor
|
||||||
* 'Mobile Originating'. Defined in TS 36.331.
|
* 'Mobile Originating'. Defined in TS 36.331.
|
||||||
*/
|
*/
|
||||||
typedef enum rrc_establishment_cause_e {
|
typedef enum ngap_rrc_establishment_cause_e {
|
||||||
RRC_CAUSE_EMERGENCY = 0x0,
|
NGAP_RRC_CAUSE_EMERGENCY = 0x0,
|
||||||
RRC_CAUSE_HIGH_PRIO_ACCESS = 0x1,
|
NGAP_RRC_CAUSE_HIGH_PRIO_ACCESS = 0x1,
|
||||||
RRC_CAUSE_MT_ACCESS = 0x2,
|
NGAP_RRC_CAUSE_MT_ACCESS = 0x2,
|
||||||
RRC_CAUSE_MO_SIGNALLING = 0x3,
|
NGAP_RRC_CAUSE_MO_SIGNALLING = 0x3,
|
||||||
RRC_CAUSE_MO_DATA = 0x4,
|
NGAP_RRC_CAUSE_MO_DATA = 0x4,
|
||||||
#if defined(UPDATE_RELEASE_10)
|
#if defined(UPDATE_RELEASE_10)
|
||||||
RRC_CAUSE_DELAY_TOLERANT_ACCESS = 0x5,
|
NGAP_RRC_CAUSE_DELAY_TOLERANT_ACCESS = 0x5,
|
||||||
#endif
|
#endif
|
||||||
RRC_CAUSE_LAST
|
NGAP_RRC_CAUSE_LAST
|
||||||
} rrc_establishment_cause_t;
|
} ngap_rrc_establishment_cause_t;
|
||||||
|
|
||||||
typedef struct ngap_guami_s {
|
typedef struct ngap_guami_s {
|
||||||
uint16_t mcc;
|
uint16_t mcc;
|
||||||
@@ -197,43 +192,43 @@ typedef struct ngap_imsi_s {
|
|||||||
uint8_t length;
|
uint8_t length;
|
||||||
} ngap_imsi_t;
|
} ngap_imsi_t;
|
||||||
|
|
||||||
typedef struct s_tmsi_s {
|
typedef struct ngap_s_tmsi_s {
|
||||||
uint8_t amf_code;
|
uint8_t amf_code;
|
||||||
uint32_t m_tmsi;
|
uint32_t m_tmsi;
|
||||||
} s_tmsi_t;
|
} ngap_s_tmsi_t;
|
||||||
|
|
||||||
typedef enum ue_paging_identity_presenceMask_e {
|
typedef enum ngap_ue_paging_identity_presenceMask_e {
|
||||||
UE_PAGING_IDENTITY_NONE = 0,
|
NGAP_UE_PAGING_IDENTITY_NONE = 0,
|
||||||
UE_PAGING_IDENTITY_imsi = (1 << 1),
|
NGAP_UE_PAGING_IDENTITY_imsi = (1 << 1),
|
||||||
UE_PAGING_IDENTITY_s_tmsi = (1 << 2),
|
NGAP_UE_PAGING_IDENTITY_s_tmsi = (1 << 2),
|
||||||
} ue_paging_identity_presenceMask_t;
|
} ngap_ue_paging_identity_presenceMask_t;
|
||||||
|
|
||||||
typedef struct ue_paging_identity_s {
|
typedef struct ngap_ue_paging_identity_s {
|
||||||
ue_paging_identity_presenceMask_t presenceMask;
|
ngap_ue_paging_identity_presenceMask_t presenceMask;
|
||||||
union {
|
union {
|
||||||
ngap_imsi_t imsi;
|
ngap_imsi_t imsi;
|
||||||
s_tmsi_t s_tmsi;
|
ngap_s_tmsi_t s_tmsi;
|
||||||
} choice;
|
} choice;
|
||||||
} ue_paging_identity_t;
|
} ngap_ue_paging_identity_t;
|
||||||
|
|
||||||
typedef enum ue_identities_presenceMask_e {
|
typedef enum ngap_ue_identities_presenceMask_e {
|
||||||
UE_IDENTITIES_NONE = 0,
|
NGAP_UE_IDENTITIES_NONE = 0,
|
||||||
UE_IDENTITIES_s_tmsi = 1 << 1,
|
NGAP_UE_IDENTITIES_s_tmsi = 1 << 1,
|
||||||
UE_IDENTITIES_guami = 1 << 2,
|
NGAP_UE_IDENTITIES_guami = 1 << 2,
|
||||||
} ue_identities_presenceMask_t;
|
} ngap_ue_identities_presenceMask_t;
|
||||||
|
|
||||||
typedef struct nrue_identity_s {
|
typedef struct ngap_nrue_identity_s {
|
||||||
ue_identities_presenceMask_t presenceMask;
|
ngap_ue_identities_presenceMask_t presenceMask;
|
||||||
s_tmsi_t s_tmsi;
|
ngap_s_tmsi_t s_tmsi;
|
||||||
ngap_guami_t guami;
|
ngap_guami_t guami;
|
||||||
} nrue_identity_t;
|
} nrue_identity_t;
|
||||||
|
|
||||||
typedef struct nas_pdu_s {
|
typedef struct ngap_nas_pdu_s {
|
||||||
/* Octet string data */
|
/* Octet string data */
|
||||||
uint8_t *buffer;
|
uint8_t *buffer;
|
||||||
/* Length of the octet string */
|
/* Length of the octet string */
|
||||||
uint32_t length;
|
uint32_t length;
|
||||||
} nas_pdu_t, ue_radio_cap_t;
|
} ngap_nas_pdu_t, ngap_ue_radio_cap_t;
|
||||||
|
|
||||||
typedef enum pdu_session_type_e {
|
typedef enum pdu_session_type_e {
|
||||||
PDUSessionType_ipv4 = 0,
|
PDUSessionType_ipv4 = 0,
|
||||||
@@ -243,7 +238,7 @@ typedef enum pdu_session_type_e {
|
|||||||
PDUSessionType_unstructured = 4
|
PDUSessionType_unstructured = 4
|
||||||
}pdu_session_type_t;
|
}pdu_session_type_t;
|
||||||
|
|
||||||
typedef struct transport_layer_addr_s {
|
typedef struct ngap_transport_layer_addr_s {
|
||||||
/* Length of the transport layer address buffer in bits. NGAP layer received a
|
/* Length of the transport layer address buffer in bits. NGAP layer received a
|
||||||
* bit string<1..160> containing one of the following addresses: ipv4,
|
* bit string<1..160> containing one of the following addresses: ipv4,
|
||||||
* ipv6, or ipv4 and ipv6. The layer doesn't interpret the buffer but
|
* ipv6, or ipv4 and ipv6. The layer doesn't interpret the buffer but
|
||||||
@@ -252,7 +247,7 @@ typedef struct transport_layer_addr_s {
|
|||||||
uint8_t pdu_session_type;
|
uint8_t pdu_session_type;
|
||||||
uint8_t length;
|
uint8_t length;
|
||||||
uint8_t buffer[20]; // in network byte order
|
uint8_t buffer[20]; // in network byte order
|
||||||
} transport_layer_addr_t;
|
} ngap_transport_layer_addr_t;
|
||||||
|
|
||||||
#define TRANSPORT_LAYER_ADDR_COPY(dEST,sOURCE) \
|
#define TRANSPORT_LAYER_ADDR_COPY(dEST,sOURCE) \
|
||||||
do { \
|
do { \
|
||||||
@@ -275,9 +270,9 @@ typedef struct pdusession_s {
|
|||||||
/* Quality of service for this pdusession */
|
/* Quality of service for this pdusession */
|
||||||
pdusession_level_qos_parameter_t qos[QOSFLOW_MAX_VALUE];
|
pdusession_level_qos_parameter_t qos[QOSFLOW_MAX_VALUE];
|
||||||
/* The NAS PDU should be forwarded by the RRC layer to the NAS layer */
|
/* The NAS PDU should be forwarded by the RRC layer to the NAS layer */
|
||||||
nas_pdu_t nas_pdu;
|
ngap_nas_pdu_t nas_pdu;
|
||||||
/* The transport layer address for the IP packets */
|
/* The transport layer address for the IP packets */
|
||||||
transport_layer_addr_t upf_addr;
|
ngap_transport_layer_addr_t upf_addr;
|
||||||
/* S-GW Tunnel endpoint identifier */
|
/* S-GW Tunnel endpoint identifier */
|
||||||
uint32_t gtp_teid;
|
uint32_t gtp_teid;
|
||||||
} pdusession_t;
|
} pdusession_t;
|
||||||
@@ -339,7 +334,7 @@ typedef struct pdusession_modify_s {
|
|||||||
uint8_t pdusession_id;
|
uint8_t pdusession_id;
|
||||||
} pdusession_modify_t;
|
} pdusession_modify_t;
|
||||||
|
|
||||||
typedef enum S1ap_Cause_e {
|
typedef enum ngap_Cause_e {
|
||||||
NGAP_CAUSE_NOTHING, /* No components present */
|
NGAP_CAUSE_NOTHING, /* No components present */
|
||||||
NGAP_CAUSE_RADIO_NETWORK,
|
NGAP_CAUSE_RADIO_NETWORK,
|
||||||
NGAP_CAUSE_TRANSPORT,
|
NGAP_CAUSE_TRANSPORT,
|
||||||
@@ -400,7 +395,7 @@ typedef struct ngap_register_gnb_req_s {
|
|||||||
uint8_t num_plmn;
|
uint8_t num_plmn;
|
||||||
|
|
||||||
/* Default Paging DRX of the gNB as defined in TS 36.304 */
|
/* Default Paging DRX of the gNB as defined in TS 36.304 */
|
||||||
paging_drx_t default_drx;
|
ngap_paging_drx_t default_drx;
|
||||||
|
|
||||||
/* The gNB IP address to bind */
|
/* The gNB IP address to bind */
|
||||||
net_ip_address_t gnb_ip_address;
|
net_ip_address_t gnb_ip_address;
|
||||||
@@ -446,7 +441,7 @@ typedef struct ngap_nas_first_req_s {
|
|||||||
int selected_plmn_identity;
|
int selected_plmn_identity;
|
||||||
|
|
||||||
/* Establishment cause as sent by UE */
|
/* Establishment cause as sent by UE */
|
||||||
rrc_establishment_cause_t establishment_cause;
|
ngap_rrc_establishment_cause_t establishment_cause;
|
||||||
|
|
||||||
/* NAS PDU */
|
/* NAS PDU */
|
||||||
nas_pdu_t nas_pdu;
|
nas_pdu_t nas_pdu;
|
||||||
@@ -508,7 +503,7 @@ typedef struct ngap_ue_ctxt_modification_req_s {
|
|||||||
uint8_t security_key[SECURITY_KEY_LENGTH];
|
uint8_t security_key[SECURITY_KEY_LENGTH];
|
||||||
|
|
||||||
/* UE aggregate maximum bitrate */
|
/* UE aggregate maximum bitrate */
|
||||||
ambr_t ue_ambr;
|
ngap_ambr_t ue_ambr;
|
||||||
|
|
||||||
/* NR Security capabilities */
|
/* NR Security capabilities */
|
||||||
nr_security_capabilities_t security_capabilities;
|
nr_security_capabilities_t security_capabilities;
|
||||||
@@ -569,11 +564,11 @@ typedef struct ngap_initial_context_setup_req_s {
|
|||||||
pdusession_t pdusession_param[NGAP_MAX_PDUSESSION];
|
pdusession_t pdusession_param[NGAP_MAX_PDUSESSION];
|
||||||
} ngap_initial_context_setup_req_t;
|
} ngap_initial_context_setup_req_t;
|
||||||
|
|
||||||
typedef struct tai_plmn_identity_s {
|
typedef struct ngap_tai_plmn_identity_s {
|
||||||
uint16_t mcc;
|
uint16_t mcc;
|
||||||
uint16_t mnc;
|
uint16_t mnc;
|
||||||
uint8_t mnc_digit_length;
|
uint8_t mnc_digit_length;
|
||||||
} plmn_identity_t;
|
} ngap_plmn_identity_t;
|
||||||
|
|
||||||
typedef struct ngap_paging_ind_s {
|
typedef struct ngap_paging_ind_s {
|
||||||
/* UE identity index value.
|
/* UE identity index value.
|
||||||
@@ -582,13 +577,13 @@ typedef struct ngap_paging_ind_s {
|
|||||||
unsigned ue_index_value:10;
|
unsigned ue_index_value:10;
|
||||||
|
|
||||||
/* UE paging identity */
|
/* UE paging identity */
|
||||||
ue_paging_identity_t ue_paging_identity;
|
ngap_ue_paging_identity_t ue_paging_identity;
|
||||||
|
|
||||||
/* Indicates origin of paging */
|
/* Indicates origin of paging */
|
||||||
cn_domain_t cn_domain;
|
ngap_cn_domain_t cn_domain;
|
||||||
|
|
||||||
/* PLMN_identity in TAI of Paging*/
|
/* PLMN_identity in TAI of Paging*/
|
||||||
plmn_identity_t plmn_identity[256];
|
ngap_plmn_identity_t plmn_identity[256];
|
||||||
|
|
||||||
/* TAC in TAIList of Paging*/
|
/* TAC in TAIList of Paging*/
|
||||||
int16_t tac[256];
|
int16_t tac[256];
|
||||||
@@ -597,9 +592,9 @@ typedef struct ngap_paging_ind_s {
|
|||||||
int16_t tai_size;
|
int16_t tai_size;
|
||||||
|
|
||||||
/* Optional fields */
|
/* Optional fields */
|
||||||
paging_drx_t paging_drx;
|
ngap_paging_drx_t paging_drx;
|
||||||
|
|
||||||
paging_priority_t paging_priority;
|
ngap_paging_priority_t paging_priority;
|
||||||
} ngap_paging_ind_t;
|
} ngap_paging_ind_t;
|
||||||
|
|
||||||
typedef struct ngap_pdusession_setup_req_s {
|
typedef struct ngap_pdusession_setup_req_s {
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
#include "x2ap_eNB.h"
|
#include "x2ap_eNB.h"
|
||||||
#include "intertask_interface.h"
|
#include "intertask_interface.h"
|
||||||
#include "s1ap_eNB.h"
|
#include "ngap_gNB.h"
|
||||||
#include "sctp_eNB_task.h"
|
#include "sctp_eNB_task.h"
|
||||||
#include "gtpv1u_eNB_task.h"
|
#include "gtpv1u_eNB_task.h"
|
||||||
#include "PHY/INIT/phy_init.h"
|
#include "PHY/INIT/phy_init.h"
|
||||||
@@ -83,14 +83,14 @@ static uint32_t gNB_app_register(uint32_t gnb_id_start, uint32_t gnb_id_end)//,
|
|||||||
ngap_register_gnb_req_t *ngap_register_gNB; //Type Temporarily reuse
|
ngap_register_gnb_req_t *ngap_register_gNB; //Type Temporarily reuse
|
||||||
|
|
||||||
// note: there is an implicit relationship between the data structure and the message name
|
// note: there is an implicit relationship between the data structure and the message name
|
||||||
*msg_p = itti_alloc_new_message (TASK_GNB_APP, NGAP_REGISTER_GNB_REQ); //Message Temporarily reuse
|
msg_p = itti_alloc_new_message (TASK_GNB_APP, NGAP_REGISTER_GNB_REQ); //Message Temporarily reuse
|
||||||
|
|
||||||
RCconfig_NR_NG(msg_p, gnb_id);
|
RCconfig_NR_NG(msg_p, gnb_id);
|
||||||
|
|
||||||
if (gnb_id == 0) RCconfig_nr_gtpu();
|
if (gnb_id == 0) RCconfig_nr_gtpu();
|
||||||
|
|
||||||
ngap_register_gNB = &NGAP_REGISTER_GNB_REQ(msg_p); //Message Temporarily reuse
|
ngap_register_gNB = &NGAP_REGISTER_GNB_REQ(msg_p); //Message Temporarily reuse
|
||||||
LOG_I(GNB_APP,"default drx %d\n",ngap_register_gNB->default_drx);*/
|
LOG_I(GNB_APP,"default drx %d\n",ngap_register_gNB->default_drx);
|
||||||
|
|
||||||
LOG_I(GNB_APP,"[gNB %d] gNB_app_register for instance %d\n", gnb_id, GNB_MODULE_ID_TO_INSTANCE(gnb_id));
|
LOG_I(GNB_APP,"[gNB %d] gNB_app_register for instance %d\n", gnb_id, GNB_MODULE_ID_TO_INSTANCE(gnb_id));
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
#include "UTIL/OTG/otg.h"
|
#include "UTIL/OTG/otg.h"
|
||||||
#include "UTIL/OTG/otg_externs.h"
|
#include "UTIL/OTG/otg_externs.h"
|
||||||
#include "intertask_interface.h"
|
#include "intertask_interface.h"
|
||||||
|
#include "s1ap_eNB.h"
|
||||||
#include "ngap_gNB.h"
|
#include "ngap_gNB.h"
|
||||||
#include "sctp_eNB_task.h"
|
#include "sctp_eNB_task.h"
|
||||||
#include "sctp_default_values.h"
|
#include "sctp_default_values.h"
|
||||||
@@ -342,7 +343,7 @@ void RCconfig_nr_flexran()
|
|||||||
if (!GNBParamList.paramarray[i][GNB_GNB_ID_IDX].uptr) {
|
if (!GNBParamList.paramarray[i][GNB_GNB_ID_IDX].uptr) {
|
||||||
// Calculate a default gNB ID
|
// Calculate a default gNB ID
|
||||||
if (EPC_MODE_ENABLED)
|
if (EPC_MODE_ENABLED)
|
||||||
gnb_id = i + (ngap_generate_gNB_id () & 0xFFFF8);
|
gnb_id = i + (s1ap_generate_eNB_id () & 0xFFFF8);
|
||||||
else
|
else
|
||||||
gnb_id = i;
|
gnb_id = i;
|
||||||
} else {
|
} else {
|
||||||
@@ -569,7 +570,7 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
|
|||||||
// Calculate a default gNB ID
|
// Calculate a default gNB ID
|
||||||
if (EPC_MODE_ENABLED) {
|
if (EPC_MODE_ENABLED) {
|
||||||
uint32_t hash;
|
uint32_t hash;
|
||||||
hash = ngap_generate_gNB_id ();
|
hash = s1ap_generate_eNB_id ();
|
||||||
gnb_id = i + (hash & 0xFFFF8);
|
gnb_id = i + (hash & 0xFFFF8);
|
||||||
} else {
|
} else {
|
||||||
gnb_id = i;
|
gnb_id = i;
|
||||||
@@ -786,7 +787,7 @@ int RCconfig_NR_NG(MessageDef *msg_p, uint32_t i) {
|
|||||||
if (EPC_MODE_ENABLED) {
|
if (EPC_MODE_ENABLED) {
|
||||||
uint32_t hash;
|
uint32_t hash;
|
||||||
|
|
||||||
hash = ngap_generate_gNB_id ();
|
hash = s1ap_generate_eNB_id ();
|
||||||
gnb_id = k + (hash & 0xFFFF8);
|
gnb_id = k + (hash & 0xFFFF8);
|
||||||
} else {
|
} else {
|
||||||
gnb_id = k;
|
gnb_id = k;
|
||||||
@@ -1035,7 +1036,7 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
|
|||||||
// Calculate a default eNB ID
|
// Calculate a default eNB ID
|
||||||
if (EPC_MODE_ENABLED) {
|
if (EPC_MODE_ENABLED) {
|
||||||
uint32_t hash;
|
uint32_t hash;
|
||||||
hash = ngap_generate_gNB_id ();
|
hash = s1ap_generate_eNB_id ();
|
||||||
gnb_id = k + (hash & 0xFFFF8);
|
gnb_id = k + (hash & 0xFFFF8);
|
||||||
} else {
|
} else {
|
||||||
gnb_id = k;
|
gnb_id = k;
|
||||||
|
|||||||
@@ -39,6 +39,7 @@
|
|||||||
#include "platform_constants.h"
|
#include "platform_constants.h"
|
||||||
#include "PHY/defs_eNB.h"
|
#include "PHY/defs_eNB.h"
|
||||||
#include "s1ap_messages_types.h"
|
#include "s1ap_messages_types.h"
|
||||||
|
#include "ngap_messages_types.h"
|
||||||
|
|
||||||
#ifdef CMAKER
|
#ifdef CMAKER
|
||||||
#include "rrc_messages_types.h"
|
#include "rrc_messages_types.h"
|
||||||
|
|||||||
@@ -39,6 +39,7 @@
|
|||||||
#include "udp_messages_types.h"
|
#include "udp_messages_types.h"
|
||||||
#include "mme_app_messages_types.h"
|
#include "mme_app_messages_types.h"
|
||||||
#include "m2ap_messages_types.h"
|
#include "m2ap_messages_types.h"
|
||||||
|
#include "ngap_messages_types.h"
|
||||||
|
|
||||||
|
|
||||||
#endif /* MESSAGES_TYPES_H_ */
|
#endif /* MESSAGES_TYPES_H_ */
|
||||||
|
|||||||
@@ -64,7 +64,6 @@
|
|||||||
#include "oaisim_amf_test_s1c.h"
|
#include "oaisim_amf_test_s1c.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ngap_gNB_config_t ngap_config;
|
|
||||||
|
|
||||||
static int ngap_gNB_generate_ng_setup_request(
|
static int ngap_gNB_generate_ng_setup_request(
|
||||||
ngap_gNB_instance_t *instance_p, ngap_gNB_amf_data_t *ngap_amf_data_p);
|
ngap_gNB_instance_t *instance_p, ngap_gNB_amf_data_t *ngap_amf_data_p);
|
||||||
|
|||||||
@@ -30,15 +30,6 @@
|
|||||||
#ifndef NGAP_GNB_H_
|
#ifndef NGAP_GNB_H_
|
||||||
#define NGAP_GNB_H_
|
#define NGAP_GNB_H_
|
||||||
|
|
||||||
typedef struct ngap_gNB_config_s {
|
|
||||||
// AMF related params
|
|
||||||
unsigned char amf_enabled; ///< AMF enabled ?
|
|
||||||
} ngap_gNB_config_t;
|
|
||||||
|
|
||||||
extern ngap_gNB_config_t ngap_config;
|
|
||||||
|
|
||||||
#define EPC_MODE_ENABLED ngap_config.amf_enabled
|
|
||||||
|
|
||||||
void *ngap_gNB_process_itti_msg(void*);
|
void *ngap_gNB_process_itti_msg(void*);
|
||||||
void ngap_gNB_init(void);
|
void ngap_gNB_init(void);
|
||||||
void *ngap_gNB_task(void *arg);
|
void *ngap_gNB_task(void *arg);
|
||||||
|
|||||||
Reference in New Issue
Block a user