mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 12:40:28 +00:00
Compare commits
2 Commits
F1C_extens
...
feat-mac-s
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c0a54e8f4a | ||
|
|
fe21cd8ca9 |
@@ -202,6 +202,23 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
|
||||
uint16_t sfn_sf = frameP << 7 | slotP;
|
||||
int dl_carrier_bandwidth = cfg->rf_config.dl_carrier_bandwidth.value;
|
||||
|
||||
|
||||
|
||||
//socket_mac_gNB_data *socket_data;
|
||||
//socket_data = calloc(1, sizeof(*socket_data));
|
||||
//memset((void *)socket_data, 0, sizeof(socket_data));
|
||||
const char *ip_address = "10.102.81.239";
|
||||
const uint16_t port = 53108;
|
||||
//const uint16_t port = 554; //RTSP port
|
||||
//const uint16_t port = 50202; //Custom port
|
||||
char* pdu[5888] = {0};
|
||||
|
||||
//Connect socket
|
||||
//connect_mac_socket_to_data_source(ip_address, port, nr_mac->socket_mac_data);
|
||||
|
||||
|
||||
|
||||
|
||||
// everything here is hard-coded to 30 kHz
|
||||
int scs = get_dlscs(cfg);
|
||||
int slots_per_frame = get_spf(cfg);
|
||||
@@ -299,6 +316,20 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
|
||||
dl_req->number_dci++;
|
||||
dl_req->number_pdsch_rnti++;
|
||||
dl_req->number_pdu+=2;
|
||||
|
||||
|
||||
|
||||
//while(1){
|
||||
|
||||
|
||||
//Call get_mac_pdu_from_socket() around here?
|
||||
//LOG_I(MAC, "get_mac_pdu_from_socket\n");
|
||||
get_mac_pdu_from_socket(pdu, 5888, nr_mac->socket_mac_data);
|
||||
//get_mac_pdu_from_socket(pdu, dl_config_dlsch_pdu->dlsch_pdu.dlsch_pdu_rel15.transport_block_size, socket_mac_gNB_data *socket_data);
|
||||
|
||||
//}
|
||||
|
||||
|
||||
|
||||
TX_req = &nr_mac->TX_req[CC_id].tx_request_body.tx_pdu_list[nr_mac->TX_req[CC_id].tx_request_body.number_of_pdus];
|
||||
TX_req->pdu_length = 6;
|
||||
@@ -321,4 +352,10 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
|
||||
nr_mac->TX_req[CC_id].header.message_id = NFAPI_TX_REQUEST;
|
||||
|
||||
}
|
||||
|
||||
|
||||
//disconnect_mac_socket_from_data_source(nr_mac->socket_mac_data);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -119,6 +119,9 @@ void mac_top_init_gNB(void)
|
||||
nr_init_search_space(&RC.nrmac[i]->search_space[j][1]);
|
||||
}
|
||||
|
||||
RC.nrmac[i]->socket_mac_data = calloc(1, sizeof(socket_mac_gNB_data));
|
||||
//Open socket for receiving data to send from MAC layer (should have different ports for different nrmac)
|
||||
connect_mac_socket_to_data_source("10.102.81.239", 53108, RC.nrmac[i]->socket_mac_data);
|
||||
|
||||
}//END for (i = 0; i < RC.nb_nr_macrlc_inst; i++)
|
||||
|
||||
|
||||
@@ -62,6 +62,9 @@
|
||||
#include "LAYER2/MAC/mac_extern.h"
|
||||
#include "common/ran_context.h"
|
||||
|
||||
#include "nr_mac_gNB_socket.h"
|
||||
|
||||
|
||||
/*! \brief gNB common channels */
|
||||
typedef struct {
|
||||
int physCellId;
|
||||
@@ -147,6 +150,9 @@ typedef struct gNB_MAC_INST_s {
|
||||
|
||||
/// UL handle
|
||||
uint32_t ul_handle;
|
||||
|
||||
//Socket to receive data that will be sent from MAC
|
||||
socket_mac_gNB_data *socket_mac_data;
|
||||
|
||||
// MAC function execution peformance profiler
|
||||
/// processing time of eNB scheduler
|
||||
@@ -175,4 +181,5 @@ void nr_schedule_css_dlsch_phytest(module_id_t module_idP,
|
||||
frame_t frameP,
|
||||
sub_frame_t subframeP);
|
||||
|
||||
|
||||
#endif /*__LAYER2_NR_MAC_GNB_H__ */
|
||||
|
||||
173
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB_socket.c
Normal file
173
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB_socket.c
Normal file
@@ -0,0 +1,173 @@
|
||||
/*
|
||||
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The OpenAirInterface Software Alliance licenses this file to You under
|
||||
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.openairinterface.org/?page_id=698
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*-------------------------------------------------------------------------------
|
||||
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
* contact@openairinterface.org
|
||||
*/
|
||||
|
||||
/*! \file mac.h
|
||||
* \brief MAC data structures, constant, and function prototype
|
||||
* \author Navid Nikaein and Raymond Knopp, WIE-TAI CHEN
|
||||
* \date 2011, 2018
|
||||
* \version 0.5
|
||||
* \company Eurecom, NTUST
|
||||
* \email navid.nikaein@eurecom.fr, kroempa@gmail.com
|
||||
|
||||
*/
|
||||
/** @defgroup _oai2 openair2 Reference Implementation
|
||||
* @ingroup _ref_implementation_
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*@}*/
|
||||
|
||||
#include "nr_mac_gNB.h"
|
||||
#include "SCHED_NR/sched_nr.h"
|
||||
#include "mac_proto.h"
|
||||
#include "PHY/NR_TRANSPORT/nr_dlsch.h"
|
||||
#include "PHY/NR_TRANSPORT/nr_dci.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Function to get the MAC PDU from socket data */
|
||||
int get_mac_pdu_from_socket(char* pdu,
|
||||
uint32_t TBS,
|
||||
socket_mac_gNB_data *socket_data)
|
||||
{
|
||||
|
||||
//LOG_I(MAC, "[get_mac_pdu_from_socket] TEST\n");
|
||||
/* Should I set the socket as non-blocking? */
|
||||
//fcntl(socket_data->sd, F_SETFL, O_NONBLOCK);
|
||||
|
||||
//If listening to more than one socket (e.g. for TCP and UDP listening) select() should be used
|
||||
|
||||
int recv_ret;
|
||||
//struct sockaddr *from_addr;
|
||||
struct sockaddr_in from_addr;
|
||||
socklen_t from_addr_len;
|
||||
from_addr_len = sizeof(struct sockaddr_in);
|
||||
|
||||
//LOG_I(MAC, "[get_mac_pdu_from_socket] TEST1, socket_data->sd=%d\n", socket_data->sd);
|
||||
//recv_ret = recv(socket_data->sd, pdu, (size_t)TBS, 0);
|
||||
recv_ret = recvfrom(socket_data->sd, pdu, (size_t)TBS, 0, &from_addr, &from_addr_len);
|
||||
//LOG_I(MAC, "[get_mac_pdu_from_socket] TEST2\n");
|
||||
if (recv_ret == -1) {
|
||||
/* Failure case */
|
||||
|
||||
switch (errno) {
|
||||
//case EWOULDBLOCK:
|
||||
case EAGAIN:
|
||||
return -1;
|
||||
default:
|
||||
//g_info("recv failed: %s", g_strerror(errno));
|
||||
LOG_I(MAC, "[get_mac_pdu_from_socket] ERROR. Received %d bytes in MAC socket. Errno=%d\n", recv_ret, errno);
|
||||
return -1;
|
||||
break;
|
||||
|
||||
}
|
||||
//} else if (recv_ret == 0) {
|
||||
// /* We lost the connection with other peer or shutdown asked */
|
||||
// ui_pipe_write_message(socket_data->pipe_fd,
|
||||
// UI_PIPE_CONNECTION_LOST, NULL, 0);
|
||||
// free(socket_data->ip_address);
|
||||
// free(socket_data);
|
||||
// pthread_exit(NULL);
|
||||
}else{
|
||||
//Source IP address could be checked to only transmit RTP packets for video flow
|
||||
LOG_I(MAC, "[get_mac_pdu_from_socket] Received %d bytes in MAC socket.\n", recv_ret);
|
||||
}
|
||||
|
||||
|
||||
return recv_ret;
|
||||
|
||||
}
|
||||
|
||||
/* Function to open a socket and connect to the MAC data source*/
|
||||
int connect_mac_socket_to_data_source(const char *ip_address,
|
||||
const uint16_t port, socket_mac_gNB_data *socket_mac)
|
||||
{
|
||||
|
||||
//LOG_I(MAC, "[connect_mac_socket_to_data_source]TEST\n");
|
||||
//socket_mac_gNB_data *socket_data;
|
||||
//socket_data = calloc(1, sizeof(*socket_data));
|
||||
socket_mac->ip_address = strdup(ip_address);
|
||||
socket_mac->port = port;
|
||||
socket_mac->sd = -1;
|
||||
struct sockaddr_in si_me;
|
||||
|
||||
//g_assert(socket_data != NULL);
|
||||
|
||||
/* Preparing the socket */
|
||||
//if ((socket_data->sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
|
||||
if ((socket_mac->sd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
|
||||
//g_warning("socket failed: %s", g_strerror(errno));
|
||||
LOG_I(MAC, "socket failed\n");
|
||||
free(socket_mac->ip_address);
|
||||
free(socket_mac);
|
||||
return RESULT_FAILED;
|
||||
}
|
||||
memset((void *)&si_me, 0, sizeof(si_me));
|
||||
|
||||
si_me.sin_family = AF_INET;
|
||||
si_me.sin_port = htons(socket_mac->port);
|
||||
//si_me.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
//si_me.sin_addr.s_addr = htonl(socket_data->ip_address);
|
||||
si_me.sin_addr.s_addr = inet_addr(socket_mac->ip_address);
|
||||
|
||||
if (inet_aton(socket_mac->ip_address, &si_me.sin_addr) == 0) {
|
||||
//g_warning("inet_aton() failed\n");
|
||||
LOG_I(MAC, "inet_aton() failed\n");
|
||||
free(socket_mac->ip_address);
|
||||
free(socket_mac);
|
||||
return RESULT_FAILED;
|
||||
}
|
||||
|
||||
if(bind(socket_mac->sd, (struct sockaddr *)&si_me, sizeof(struct sockaddr_in)) == -1){
|
||||
//g_warning("binding socket failed\n");
|
||||
LOG_I(MAC, "binding socket failed\n");
|
||||
free(socket_mac->ip_address);
|
||||
free(socket_mac);
|
||||
return RESULT_FAILED;
|
||||
}
|
||||
|
||||
//Set socket as non-blocking
|
||||
fcntl(socket_mac->sd, F_SETFL, O_NONBLOCK);
|
||||
|
||||
//If more than one socket, there should be a set of sockets to use select() with them
|
||||
//The socket should be added to the set in this function.
|
||||
|
||||
//memcpy(socket_mac, socket_data, sizeof(socket_data));
|
||||
//&socket_mac = &socket_data;
|
||||
LOG_I(MAC, "[connect_mac_socket_to_data_source]MAC socket connected; socket_mac->sd= %d\n", socket_mac->sd);
|
||||
|
||||
return RESULT_OK;
|
||||
}
|
||||
|
||||
/* Function to close the MAC data source socket */
|
||||
int disconnect_mac_socket_from_data_source(socket_mac_gNB_data *socket_data)
|
||||
{
|
||||
close(socket_data->sd);
|
||||
free(socket_data->ip_address);
|
||||
free(socket_data);
|
||||
|
||||
LOG_I(MAC, "[disconnect_mac_socket_from_data_source] Disconnecting MAC socket\n");
|
||||
|
||||
return RESULT_OK;
|
||||
}
|
||||
|
||||
72
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB_socket.h
Normal file
72
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB_socket.h
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The OpenAirInterface Software Alliance licenses this file to You under
|
||||
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.openairinterface.org/?page_id=698
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*-------------------------------------------------------------------------------
|
||||
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
* contact@openairinterface.org
|
||||
*/
|
||||
|
||||
/*! \file mac.h
|
||||
* \brief MAC data structures, constant, and function prototype
|
||||
* \author Navid Nikaein and Raymond Knopp, WIE-TAI CHEN
|
||||
* \date 2011, 2018
|
||||
* \version 0.5
|
||||
* \company Eurecom, NTUST
|
||||
* \email navid.nikaein@eurecom.fr, kroempa@gmail.com
|
||||
|
||||
*/
|
||||
/** @defgroup _oai2 openair2 Reference Implementation
|
||||
* @ingroup _ref_implementation_
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*@}*/
|
||||
|
||||
#ifndef __LAYER2_NR_MAC_GNB_H_SOCKET__
|
||||
#define __LAYER2_NR_MAC_GNB_H_SOCKET_
|
||||
|
||||
#define RESULT_OK 0
|
||||
#define RESULT_FAILED -1
|
||||
|
||||
/* structure for socket as source of MAC gNB data; copied from common/utils/itti_analyzer/libbuffer/socket.h */
|
||||
typedef struct {
|
||||
pthread_t thread;
|
||||
int sd;
|
||||
char *ip_address;
|
||||
uint16_t port;
|
||||
|
||||
/* The pipe used between main thread (running GTK) and the socket thread */
|
||||
int pipe_fd;
|
||||
|
||||
/* Time used to avoid refreshing UI every time a new signal is incoming */
|
||||
//gint64 last_data_notification;
|
||||
//uint8_t nb_signals_since_last_update;
|
||||
|
||||
/* The last signals received which are not yet been updated in GUI */
|
||||
//GList *signal_list;
|
||||
} socket_mac_gNB_data;
|
||||
|
||||
/* Function to get the MAC PDU from socket data */
|
||||
|
||||
int get_mac_pdu_from_socket(char* pdu, uint32_t TBS, socket_mac_gNB_data *socket_data);
|
||||
|
||||
/* Function to open a socket and connect to the MAC data source*/
|
||||
int connect_mac_socket_to_data_source(const char *remote_ip, const uint16_t port, socket_mac_gNB_data *socket_data);
|
||||
|
||||
/* Function to close the MAC data source socket */
|
||||
int disconnect_mac_socket_from_data_source(socket_mac_gNB_data *socket_data);
|
||||
|
||||
#endif /*__LAYER2_NR_MAC_GNB_H_SOCKET_ */
|
||||
@@ -0,0 +1,301 @@
|
||||
Active_gNBs = ( "gNB-Eurecom-5GNRBox");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
|
||||
cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
gNB_name = "gNB-Eurecom-5GNRBox";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
|
||||
plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;});
|
||||
|
||||
tr_s_preference = "local_mac"
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
component_carriers = (
|
||||
{
|
||||
node_function = "3GPP_gNODEB";
|
||||
node_timing = "synch_to_ext_device";
|
||||
node_synch_ref = 0;
|
||||
frame_type = "TDD";
|
||||
DL_prefix_type = "NORMAL";
|
||||
UL_prefix_type = "NORMAL";
|
||||
eutra_band = 22;
|
||||
//downlink_frequency = 2300000000L;
|
||||
downlink_frequency = 3510000000L;
|
||||
uplink_frequency_offset = -120000000;
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 106;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 130;
|
||||
//tx_gain = 90;
|
||||
rx_gain = 125;
|
||||
MIB_subCarrierSpacingCommon = 30;
|
||||
MIB_ssb_SubcarrierOffset = 0;
|
||||
MIB_dmrs_TypeA_Position = 2;
|
||||
pdcch_ConfigSIB1 = 0;
|
||||
SIB1_frequencyOffsetSSB = "khz5";
|
||||
SIB1_ssb_PeriodicityServingCell = 5;
|
||||
SIB1_ss_PBCH_BlockPower = -60;
|
||||
absoluteFrequencySSB = 0;
|
||||
DL_FreqBandIndicatorNR = 15;
|
||||
DL_absoluteFrequencyPointA = 15;
|
||||
DL_offsetToCarrier = 15;
|
||||
DL_SCS_SubcarrierSpacing = "kHz30";
|
||||
DL_SCS_SpecificCarrier_k0 = 0;
|
||||
DL_carrierBandwidth = 40;
|
||||
DL_locationAndBandwidth = 40;
|
||||
DL_BWP_SubcarrierSpacing = "kHz30";
|
||||
DL_BWP_prefix_type = "NORMAL";
|
||||
UL_FreqBandIndicatorNR = 15;
|
||||
UL_absoluteFrequencyPointA = 13;
|
||||
UL_additionalSpectrumEmission = 3;
|
||||
UL_p_Max = -1;
|
||||
UL_frequencyShift7p5khz = "TRUE";
|
||||
UL_offsetToCarrier = 10;
|
||||
UL_SCS_SubcarrierSpacing = "kHz30";
|
||||
UL_SCS_SpecificCarrier_k0 = 0;
|
||||
UL_carrierBandwidth = 40;
|
||||
UL_locationAndBandwidth = 40;
|
||||
UL_BWP_SubcarrierSpacing = "kHz30";
|
||||
UL_BWP_prefix_type = "NORMAL";
|
||||
UL_timeAlignmentTimerCommon = "infinity";
|
||||
ServingCellConfigCommon_n_TimingAdvanceOffset = "n0"
|
||||
ServingCellConfigCommon_ssb_PositionsInBurst_PR = "shortBitmap";
|
||||
ServingCellConfigCommon_ssb_periodicityServingCell = 10;
|
||||
ServingCellConfigCommon_dmrs_TypeA_Position = 2;
|
||||
NIA_SubcarrierSpacing = "kHz15";
|
||||
ServingCellConfigCommon_ss_PBCH_BlockPower = -60;
|
||||
referenceSubcarrierSpacing = "kHz15";
|
||||
dl_UL_TransmissionPeriodicity = "ms0p5";
|
||||
nrofDownlinkSlots = 10;
|
||||
nrofDownlinkSymbols = 10;
|
||||
nrofUplinkSlots = 10;
|
||||
nrofUplinkSymbols = 10;
|
||||
rach_totalNumberOfRA_Preambles = 63;
|
||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice = "oneEighth";
|
||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth = 4;
|
||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth = 8;
|
||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf = 16;
|
||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one = 24;
|
||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two = 32;
|
||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four = 8;
|
||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight = 4;
|
||||
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen = 2;
|
||||
rach_groupBconfigured = "ENABLE";
|
||||
rach_ra_Msg3SizeGroupA = 56;
|
||||
rach_messagePowerOffsetGroupB = "dB0";
|
||||
rach_numberOfRA_PreamblesGroupA = 32;
|
||||
rach_ra_ContentionResolutionTimer = 8;
|
||||
rsrp_ThresholdSSB = 64;
|
||||
rsrp_ThresholdSSB_SUL = 64;
|
||||
prach_RootSequenceIndex_choice = "l839";
|
||||
prach_RootSequenceIndex_l839 = 0;
|
||||
prach_RootSequenceIndex_l139 = 0;
|
||||
prach_msg1_SubcarrierSpacing = "kHz30";
|
||||
restrictedSetConfig = "unrestrictedSet";
|
||||
msg3_transformPrecoding = "ENABLE";
|
||||
prach_ConfigurationIndex = 10;
|
||||
prach_msg1_FDM = "one";
|
||||
prach_msg1_FrequencyStart = 10;
|
||||
zeroCorrelationZoneConfig = 10;
|
||||
preambleReceivedTargetPower = -150;
|
||||
preambleTransMax = 6;
|
||||
powerRampingStep = "dB0";
|
||||
ra_ResponseWindow = 8;
|
||||
groupHoppingEnabledTransformPrecoding = "ENABLE";
|
||||
msg3_DeltaPreamble = 0;
|
||||
p0_NominalWithGrant = 0;
|
||||
PUSCH_TimeDomainResourceAllocation_k2 = 0;
|
||||
PUSCH_TimeDomainResourceAllocation_mappingType = "typeA";
|
||||
PUSCH_TimeDomainResourceAllocation_startSymbolAndLength = 0;
|
||||
pucch_ResourceCommon = 0;
|
||||
pucch_GroupHopping = "neither";
|
||||
hoppingId = 0;
|
||||
p0_nominal = -30;
|
||||
PDSCH_TimeDomainResourceAllocation_k0 = 2;
|
||||
PDSCH_TimeDomainResourceAllocation_mappingType = "typeA";
|
||||
PDSCH_TimeDomainResourceAllocation_startSymbolAndLength = 0;
|
||||
rateMatchPatternId = 0;
|
||||
RateMatchPattern_patternType = "bitmaps";
|
||||
symbolsInResourceBlock = "oneSlot";
|
||||
periodicityAndPattern = 2;
|
||||
RateMatchPattern_controlResourceSet = 5;
|
||||
RateMatchPattern_subcarrierSpacing = "kHz30";
|
||||
RateMatchPattern_mode = "dynamic";
|
||||
controlResourceSetZero = 0;
|
||||
searchSpaceZero = 0;
|
||||
searchSpaceSIB1 = 10;
|
||||
searchSpaceOtherSystemInformation = 10;
|
||||
pagingSearchSpace = 10;
|
||||
ra_SearchSpace = 10;
|
||||
PDCCH_common_controlResourceSetId = 5;
|
||||
PDCCH_common_ControlResourceSet_duration = 2;
|
||||
PDCCH_cce_REG_MappingType = "nonInterleaved";
|
||||
PDCCH_reg_BundleSize = 3;
|
||||
PDCCH_interleaverSize = 3;
|
||||
PDCCH_shiftIndex = 10;
|
||||
PDCCH_precoderGranularity = "sameAsREG-bundle";
|
||||
PDCCH_TCI_StateId = 32;
|
||||
tci_PresentInDCI = "ENABLE";
|
||||
PDCCH_DMRS_ScramblingID = 0;
|
||||
SearchSpaceId = 10;
|
||||
commonSearchSpaces_controlResourceSetId = 5;
|
||||
SearchSpace_monitoringSlotPeriodicityAndOffset_choice = "sl1";
|
||||
SearchSpace_monitoringSlotPeriodicityAndOffset_value = 0;
|
||||
SearchSpace_duration = 2;
|
||||
SearchSpace_nrofCandidates_aggregationLevel1 = 0;
|
||||
SearchSpace_nrofCandidates_aggregationLevel2 = 0;
|
||||
SearchSpace_nrofCandidates_aggregationLevel4 = 0;
|
||||
SearchSpace_nrofCandidates_aggregationLevel8 = 0;
|
||||
SearchSpace_nrofCandidates_aggregationLevel16 = 0;
|
||||
SearchSpace_searchSpaceType = "common";
|
||||
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1 = 1;
|
||||
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2 = 1;
|
||||
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4 = 1;
|
||||
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8 = 1;
|
||||
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16 = 1;
|
||||
Common_dci_Format2_3_monitoringPeriodicity = 1;
|
||||
Common_dci_Format2_3_nrofPDCCH_Candidates = 1;
|
||||
ue_Specific__dci_Formats = "formats0-0-And-1-0";
|
||||
RateMatchPatternLTE_CRS_carrierFreqDL = 6;
|
||||
RateMatchPatternLTE_CRS_carrierBandwidthDL = 6;
|
||||
RateMatchPatternLTE_CRS_nrofCRS_Ports = 1;
|
||||
RateMatchPatternLTE_CRS_v_Shift = 0;
|
||||
RateMatchPatternLTE_CRS_radioframeAllocationPeriod = 1;
|
||||
RateMatchPatternLTE_CRS_radioframeAllocationOffset = 0;
|
||||
RateMatchPatternLTE_CRS_subframeAllocation_choice = "oneFrame";
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
srb1_parameters :
|
||||
{
|
||||
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
|
||||
timer_poll_retransmit = 80;
|
||||
|
||||
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
|
||||
timer_reordering = 35;
|
||||
|
||||
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
|
||||
timer_status_prohibit = 0;
|
||||
|
||||
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
|
||||
poll_pdu = 4;
|
||||
|
||||
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
|
||||
poll_byte = 99999;
|
||||
|
||||
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
|
||||
max_retx_threshold = 4;
|
||||
}
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
|
||||
////////// MME parameters:
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.26";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
}
|
||||
);
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
GNB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||
GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24";
|
||||
GNB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||
GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
}
|
||||
);
|
||||
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
}
|
||||
);
|
||||
|
||||
RUs = (
|
||||
{
|
||||
local_rf = "yes"
|
||||
nb_tx = 1
|
||||
nb_rx = 1
|
||||
att_tx = 0;
|
||||
att_rx = 0;
|
||||
bands = [7];
|
||||
max_pdschReferenceSignalPower = -27; //default: -27
|
||||
max_rxgain = 114;
|
||||
eNB_instances = [0];
|
||||
#sdr_addrs = "addr=192.168.20.2,second_addr=192.168.10.2,mgmt_addr=192.168.20.2";
|
||||
sdr_addrs = "addr=192.168.20.2,mgmt_addr=192.168.20.2";
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_DISABLE";
|
||||
}
|
||||
);
|
||||
|
||||
NETWORK_CONTROLLER :
|
||||
{
|
||||
FLEXRAN_ENABLED = "no";
|
||||
FLEXRAN_INTERFACE_NAME = "lo";
|
||||
FLEXRAN_IPV4_ADDRESS = "127.0.0.1";
|
||||
FLEXRAN_PORT = 2210;
|
||||
FLEXRAN_CACHE = "/mnt/oai_agent_cache";
|
||||
FLEXRAN_AWAIT_RECONF = "no";
|
||||
};
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
global_log_verbosity ="medium";
|
||||
hw_log_level ="info";
|
||||
hw_log_verbosity ="medium";
|
||||
phy_log_level ="info";
|
||||
phy_log_verbosity ="medium";
|
||||
mac_log_level ="info";
|
||||
mac_log_verbosity ="high";
|
||||
rlc_log_level ="info";
|
||||
rlc_log_verbosity ="medium";
|
||||
pdcp_log_level ="info";
|
||||
pdcp_log_verbosity ="medium";
|
||||
rrc_log_level ="info";
|
||||
rrc_log_verbosity ="medium";
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user