enb: Add cell_list attribute

It allows configuring each cell_list up to a maximum of 'num_cells'.

Change-Id: I4fd30a3e37789b76bfaddc2beba1815154daab7f
This commit is contained in:
Pau Espin 2020-04-17 16:23:54 +02:00
parent 045245d5ae
commit f46ae22b3d
6 changed files with 41 additions and 29 deletions

View File

@ -38,6 +38,7 @@ class eNodeB(log.Origin, metaclass=ABCMeta):
self.set_name('%s_%s' % (name, self._addr))
self._txmode = 0
self._num_prb = 0
self._num_cells = None
self._epc = None
def configure(self, config_specifics_li):
@ -56,6 +57,25 @@ class eNodeB(log.Origin, metaclass=ABCMeta):
assert self._epc is not None
config.overlay(values, dict(enb={ 'mme_addr': self._epc.addr() }))
config.overlay(values, dict(enb={ 'gtp_bind_addr': self._gtp_bind_addr }))
self._num_cells = int(values['enb'].get('num_cells', None))
assert self._num_cells
# adjust cell_list to num_cells length:
len_cell_list = len(values['enb']['cell_list'])
if len_cell_list >= self._num_cells:
values['enb']['cell_list'] = values['enb']['cell_list'][:self._num_cells]
else:
raise log.Error('enb.cell_list items (%d) < enb.num_cells (%d) attribute!' % (len_cell_list, self._num_cells))
# adjust scell list (to only contain values available in cell_list):
cell_id_list = [c['cell_id'] for c in values['enb']['cell_list']]
for i in range(len(values['enb']['cell_list'])):
scell_list_old = values['enb']['cell_list'][i]['scell_list']
scell_list_new = []
for scell_id in scell_list_old:
if scell_id in cell_id_list:
scell_list_new.append(scell_id)
values['enb']['cell_list'][i]['scell_list'] = scell_list_new
return values
def num_ports(self):

View File

@ -165,8 +165,6 @@ class AmarisoftENB(enb.eNodeB):
self.remote_log_file = remote_run_dir.child(AmarisoftENB.LOGFILE)
values = super().configure(['amarisoft', 'amarisoftenb'])
self._num_cells = int(values['enb'].get('num_cells', None))
assert self._num_cells
# Convert parsed boolean string to Python boolean:
self.enable_measurements = util.str2bool(values['enb'].get('enable_measurements', 'false'))

View File

@ -190,9 +190,6 @@ class srsENB(enb.eNodeB):
self._additional_args = values['enb'].get('additional_args', '').split()
self._num_cells = int(values['enb'].get('num_cells', None))
assert self._num_cells
# We need to set some specific variables programatically here to match IP addresses:
if self._conf.get('rf_dev_type') == 'zmq':
base_srate = num_prb2base_srate(self.num_prb())

View File

@ -91,7 +91,6 @@ RESOURCES_SCHEMA = {
'enb[].gtp_bind_addr': schema.IPV4,
'enb[].num_prb': schema.UINT,
'enb[].transmission_mode': schema.LTE_TRANSMISSION_MODE,
'enb[].num_cells': schema.UINT,
'enb[].rf_dev_type': schema.STR,
'enb[].rf_dev_args': schema.STR,
'enb[].additional_args': schema.STR,
@ -108,6 +107,10 @@ RESOURCES_SCHEMA = {
'enb[].a3_report_value': schema.INT,
'enb[].a3_hysteresis': schema.INT,
'enb[].a3_time_to_trigger': schema.INT,
'enb[].num_cells': schema.UINT,
'enb[].cell_list[].cell_id': schema.UINT,
'enb[].cell_list[].scell_list[]': schema.UINT,
'enb[].cell_list[].dl_earfcn': schema.UINT,
'arfcn[].arfcn': schema.INT,
'arfcn[].band': schema.BAND,
'modem[].type': schema.STR,

View File

@ -55,36 +55,23 @@
/* list of cells */
cell_list: [
{
// First cell
dl_earfcn: 2850,
rf_port: 0,
cell_id: 0x01,
n_id_cell: 1,
tac: 0x0001,
root_sequence_index: 204, /* PRACH root sequence index */
% if enb.get('num_cells') == '2':
scell_list: [
{ cell_id: 0x02, cross_carrier_scheduling: false, scheduling_cell_id: 0x01, ul_allowed: true},
],
% endif
},
% if enb.get('num_cells') == '2':
%for cell in enb.cell_list:
{
// Second Cell
dl_earfcn: 3050,
rf_port: 1,
cell_id: 0x02,
n_id_cell: 2,
dl_earfcn: ${cell.dl_earfcn},
rf_port: ${loop.index},
cell_id: ${cell.cell_id},
n_id_cell: ${loop.index + 1},
tac: 0x0001,
root_sequence_index: 205,
root_sequence_index: ${loop.index + 204}, /* PRACH root sequence index */
scell_list: [
{ cell_id: 0x01, cross_carrier_scheduling: false, scheduling_cell_id: 0x02, ul_allowed: true},
%for scell_id in cell.scell_list:
{ cell_id: ${scell_id}, cross_carrier_scheduling: false, scheduling_cell_id: ${cell.cell_id}, ul_allowed: true},
%endfor
],
},
% endif
%endfor
], /* cell_list */
/* default cell parameters */

View File

@ -123,6 +123,13 @@ enb:
a3_report_value: 6
a3_hysteresis: 0
a3_time_to_trigger: 480
cell_list:
- cell_id: 0x01
dl_earfcn: 2850
scell_list: [0x02]
- cell_id: 0x02
dl_earfcn: 3050
scell_list: [0x01]
srsenb:
num_prb: 100