diff options
-rw-r--r-- | example/defaults.conf | 13 | ||||
-rw-r--r-- | example/scenarios/mod-enb-meas-event@.conf | 7 | ||||
-rw-r--r-- | src/osmo_gsm_tester/amarisoft_enb.py | 5 | ||||
-rw-r--r-- | src/osmo_gsm_tester/resource.py | 13 | ||||
-rw-r--r-- | src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl | 25 |
5 files changed, 63 insertions, 0 deletions
diff --git a/example/defaults.conf b/example/defaults.conf index 5cda132..f3994bb 100644 --- a/example/defaults.conf +++ b/example/defaults.conf @@ -110,6 +110,19 @@ enb: mnc: 70 transmission_mode: 1 num_cells: 1 + enable_measurements: false + a1_report_type: rsrp + a1_report_value: -105 + a1_hysteresis: 0 + a1_time_to_trigger: 640 + a2_report_type: rsrp + a2_report_value: -110 + a2_hysteresis: 0 + a2_time_to_trigger: 640 + a3_report_type: rsrp + a3_report_value: 6 + a3_hysteresis: 0 + a3_time_to_trigger: 480 srsenb: num_prb: 100 diff --git a/example/scenarios/mod-enb-meas-event@.conf b/example/scenarios/mod-enb-meas-event@.conf new file mode 100644 index 0000000..44f4fcd --- /dev/null +++ b/example/scenarios/mod-enb-meas-event@.conf @@ -0,0 +1,7 @@ +modifiers: + enb: + - enable_measurements: true + ${param1}_report_type: ${param2} + ${param1}_report_value: ${param3} + ${param1}_hysteresis: ${param4} + ${param1}_time_to_trigger: ${param5} diff --git a/src/osmo_gsm_tester/amarisoft_enb.py b/src/osmo_gsm_tester/amarisoft_enb.py index e6e214f..df8e0db 100644 --- a/src/osmo_gsm_tester/amarisoft_enb.py +++ b/src/osmo_gsm_tester/amarisoft_enb.py @@ -77,6 +77,7 @@ class AmarisoftENB(enb.eNodeB): self.remote_config_rf_file = None self.remote_config_drb_file = None self.remote_log_file = None + self.enable_measurements = False self.suite_run = suite_run self.remote_user = conf.get('remote_user', None) if not rf_type_valid(conf.get('rf_dev_type', None)): @@ -167,6 +168,10 @@ class AmarisoftENB(enb.eNodeB): 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')) + config.overlay(values, dict(enb={'enable_measurements': self.enable_measurements})) + # 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()) diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py index ea1b543..c58bdc7 100644 --- a/src/osmo_gsm_tester/resource.py +++ b/src/osmo_gsm_tester/resource.py @@ -94,6 +94,19 @@ RESOURCES_SCHEMA = { 'enb[].rf_dev_type': schema.STR, 'enb[].rf_dev_args': schema.STR, 'enb[].additional_args': schema.STR, + 'enb[].enable_measurements': schema.BOOL_STR, + 'enb[].a1_report_type': schema.STR, + 'enb[].a1_report_value': schema.INT, + 'enb[].a1_hysteresis': schema.INT, + 'enb[].a1_time_to_trigger': schema.INT, + 'enb[].a2_report_type': schema.STR, + 'enb[].a2_report_value': schema.INT, + 'enb[].a2_hysteresis': schema.INT, + 'enb[].a2_time_to_trigger': schema.INT, + 'enb[].a3_report_type': schema.STR, + 'enb[].a3_report_value': schema.INT, + 'enb[].a3_hysteresis': schema.INT, + 'enb[].a3_time_to_trigger': schema.INT, 'arfcn[].arfcn': schema.INT, 'arfcn[].band': schema.BAND, 'modem[].type': schema.STR, diff --git a/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl b/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl index 763af08..d87e66a 100644 --- a/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl +++ b/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl @@ -229,5 +229,30 @@ /* DRB configuration */ drb_config: "amarisoft_drb.cfg", + +% if enb.enable_measurements: + /* measurement configuration */ + meas_config_desc: { + a1_report_type: "${enb.a1_report_type}", + a1_${enb.a1_report_type}: ${enb.a1_report_value}, + a1_hysteresis: ${enb.a1_hysteresis}, + a1_time_to_trigger: ${enb.a1_time_to_trigger}, + a2_report_type: "${enb.a2_report_type}", + a2_${enb.a2_report_type}: ${enb.a2_report_value}, + a2_hysteresis: ${enb.a2_hysteresis}, + a2_time_to_trigger: ${enb.a2_time_to_trigger}, + a3_report_type: "${enb.a3_report_type}", + a3_offset: ${enb.a3_report_value}, + a3_hysteresis: ${enb.a3_hysteresis}, + a3_time_to_trigger: ${enb.a3_time_to_trigger}, + }, + + /* measurement gap configuration */ + meas_gap_config: "gp0", + + /* if true, initiate a handover when a suitable measurement report + is received */ + ho_from_meas: true, +% endif }, } |