Commit a3da4718 authored by Joanne Hugé's avatar Joanne Hugé

ors-amarisoft: add RRH option to support Sunwave M2RU

parent 4141b811
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
[template] [template]
filename = instance.cfg filename = instance.cfg
md5sum = fe055b993754ca665b8249cbfb9bbc8b md5sum = 6e5c63c35b13f8920ea13e24c27d7b50
[template-lte-enb-epc] [template-lte-enb-epc]
_update_hash_filename_ = instance-enb-epc.jinja2.cfg _update_hash_filename_ = instance-enb-epc.jinja2.cfg
...@@ -24,7 +24,7 @@ md5sum = c9994f2ef03edd7d6773307a6385c47c ...@@ -24,7 +24,7 @@ md5sum = c9994f2ef03edd7d6773307a6385c47c
[template-lte-enb] [template-lte-enb]
_update_hash_filename_ = instance-enb.jinja2.cfg _update_hash_filename_ = instance-enb.jinja2.cfg
md5sum = 8f8c7295104757e0cccfab3811a4fb24 md5sum = 04dbc8396cb112e86d5d1564df033b82
[template-lte-gnb-epc] [template-lte-gnb-epc]
_update_hash_filename_ = instance-gnb-epc.jinja2.cfg _update_hash_filename_ = instance-gnb-epc.jinja2.cfg
...@@ -36,7 +36,7 @@ md5sum = b17674f523adce9b0dda942c1493674d ...@@ -36,7 +36,7 @@ md5sum = b17674f523adce9b0dda942c1493674d
[template-lte-gnb] [template-lte-gnb]
_update_hash_filename_ = instance-gnb.jinja2.cfg _update_hash_filename_ = instance-gnb.jinja2.cfg
md5sum = fdc012ad6f0d3d055450a4ff7efd15e4 md5sum = 01f4de736594a0810a66f847753fadf1
[template-lte-mme] [template-lte-mme]
_update_hash_filename_ = instance-mme.jinja2.cfg _update_hash_filename_ = instance-mme.jinja2.cfg
...@@ -44,11 +44,11 @@ md5sum = 728f4d3ae248710c23e4b73eea4d628e ...@@ -44,11 +44,11 @@ md5sum = 728f4d3ae248710c23e4b73eea4d628e
[template-lte-ue-lte] [template-lte-ue-lte]
_update_hash_filename_ = instance-ue-lte.jinja2.cfg _update_hash_filename_ = instance-ue-lte.jinja2.cfg
md5sum = 0808194507345550abc37118129fb757 md5sum = 4517baee6700afbf78de3b2d7dd4ba22
[template-lte-ue-nr] [template-lte-ue-nr]
_update_hash_filename_ = instance-ue-nr.jinja2.cfg _update_hash_filename_ = instance-ue-nr.jinja2.cfg
md5sum = ed4112748616803ec0eb3c30bde80856 md5sum = 45e7ade19a579d6750d2733a0659dc1a
[ue_db.jinja2.cfg] [ue_db.jinja2.cfg]
filename = config/ue_db.jinja2.cfg filename = config/ue_db.jinja2.cfg
...@@ -64,7 +64,7 @@ md5sum = b377dac7f1fcf94fb9ce9ebed617f36a ...@@ -64,7 +64,7 @@ md5sum = b377dac7f1fcf94fb9ce9ebed617f36a
[gnb.jinja2.cfg] [gnb.jinja2.cfg]
filename = config/gnb.jinja2.cfg filename = config/gnb.jinja2.cfg
md5sum = 0ad683812818a02ef5010d087ec7138b md5sum = 407c20d11c5417636b985fe4886bf135
[ltelogs.jinja2.sh] [ltelogs.jinja2.sh]
filename = ltelogs.jinja2.sh filename = ltelogs.jinja2.sh
...@@ -88,7 +88,7 @@ md5sum = b3078deab008d7e81ddd88ac02b8b698 ...@@ -88,7 +88,7 @@ md5sum = b3078deab008d7e81ddd88ac02b8b698
[sdr-busy-promise] [sdr-busy-promise]
_update_hash_filename_ = promise/check_sdr_busy.py _update_hash_filename_ = promise/check_sdr_busy.py
md5sum = a9d7a06c43410e02070b9ddae7b46b38 md5sum = 2e25144d1d952ed5bebb194360b60afb
[interface-up-promise] [interface-up-promise]
_update_hash_filename_ = promise/check_interface_up.py _update_hash_filename_ = promise/check_interface_up.py
......
#define FR2 0 // Values: 0 (FR1), 1 (FR2) #define FR2 0 // Values: 0 (FR1), 1 (FR2)
#define NR_TDD_CONFIG 2 // Values: FR1: 1, 2, 3, 4 (compatible with LTE TDD config 2) FR2: 10 #define NR_TDD_CONFIG 2 // Values: FR1: 1, 2, 3, 4 (compatible with LTE TDD config 2) FR2: 10
#define N_ANTENNA_DL 2 // Values: 1 (SISO), 2 (MIMO 2x2), 4 (MIMO 4x4) #define N_ANTENNA_DL 2 // Values: 1 (SISO), 2 (MIMO 2x2), 4 (MIMO 4x4)
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
#define N_ANTENNA_UL 1 // Values: 1, 2, 4
{% else %}
#define N_ANTENNA_UL 2 // Values: 1, 2, 4 #define N_ANTENNA_UL 2 // Values: 1, 2, 4
{% endif %}
#define NR_BANDWIDTH {{ slapparameter_dict.get('nr_bandwidth', slap_configuration['configuration.default_nr_bandwidth']) }} // NR cell bandwidth #define NR_BANDWIDTH {{ slapparameter_dict.get('nr_bandwidth', slap_configuration['configuration.default_nr_bandwidth']) }} // NR cell bandwidth
#define NR_LONG_PUCCH_FORMAT 2 // Values: 2, 3, 4 #define NR_LONG_PUCCH_FORMAT 2 // Values: 2, 3, 4
...@@ -9,6 +13,20 @@ ...@@ -9,6 +13,20 @@
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,ngap.level=debug,ngap.max_size=1,xnap.level=debug,xnap.max_size=1,rrc.level=debug,rrc.max_size=1,phy.level=info,file.rotate=1G,file.path=/dev/null", log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,ngap.level=debug,ngap.max_size=1,xnap.level=debug,xnap.max_size=1,rrc.level=debug,rrc.max_size=1,phy.level=info,file.rotate=1G,file.path=/dev/null",
log_filename: "{{ directory['log'] }}/gnb.log", log_filename: "{{ directory['log'] }}/gnb.log",
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
rf_driver: {
name: "sdr",
args: "dev0=/dev/sdr0@0",
cpri_mapping: "bf1",
cpri_mult: 16,
cpri_rx_delay: 11.0,
cpri_tx_delay: 0,
ifname: "cpri0",
cpri_tx_dbm: 42.0,
},
tx_gain: 0,
rx_gain: 0,
{% else %}
rf_driver: { rf_driver: {
name: "sdr", name: "sdr",
...@@ -19,6 +37,7 @@ ...@@ -19,6 +37,7 @@
}, },
tx_gain: {{ slapparameter_dict.get('tx_gain', slap_configuration['configuration.default_nr_tx_gain']) }}, tx_gain: {{ slapparameter_dict.get('tx_gain', slap_configuration['configuration.default_nr_tx_gain']) }},
rx_gain: {{ slapparameter_dict.get('rx_gain', slap_configuration['configuration.default_nr_rx_gain']) }}, rx_gain: {{ slapparameter_dict.get('rx_gain', slap_configuration['configuration.default_nr_rx_gain']) }},
{% endif %}
amf_list: [ amf_list: [
{% if slapparameter_dict.get('amf_list', '') %} {% if slapparameter_dict.get('amf_list', '') %}
...@@ -232,7 +251,11 @@ ...@@ -232,7 +251,11 @@
#endif #endif
msg1_subcarrier_spacing: 30, msg1_subcarrier_spacing: 30,
msg1_fdm: 1, msg1_fdm: 1,
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
msg1_frequency_start: 0,
{% else %}
msg1_frequency_start: -1, msg1_frequency_start: -1,
{% endif %}
zero_correlation_zone_config: 15, zero_correlation_zone_config: 15,
preamble_received_target_power: -110, preamble_received_target_power: -110,
preamble_trans_max: 7, preamble_trans_max: 7,
...@@ -245,12 +268,20 @@ ...@@ -245,12 +268,20 @@
}, },
pdcch: { pdcch: {
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
n_rb_coreset0: 48,
n_symb_coreset0: 1,
{% endif %}
search_space0_index: 0, search_space0_index: 0,
dedicated_coreset: { dedicated_coreset: {
rb_start: -1, rb_start: -1,
l_crb: -1, l_crb: -1,
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
duration: 1,
{% else %}
duration: 0, duration: 0,
{% endif %}
precoder_granularity: "sameAsREG_bundle", precoder_granularity: "sameAsREG_bundle",
}, },
...@@ -272,13 +303,13 @@ ...@@ -272,13 +303,13 @@
dmrs_add_pos: 1, dmrs_add_pos: 1,
dmrs_type: 1, dmrs_type: 1,
dmrs_max_len: 1, dmrs_max_len: 1,
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
k0: 0,
k1: [ 8, 7, 7, 6, 5, 4, 12, 11 ],
{% endif %}
mcs_table: "qam256", mcs_table: "qam256",
rar_mcs: 2, rar_mcs: 2,
si_mcs: 6, si_mcs: 6,
}, },
csi_rs: { csi_rs: {
...@@ -548,14 +579,14 @@ ...@@ -548,14 +579,14 @@
mcs_table: "qam256", mcs_table: "qam256",
mcs_table_tp: "qam256", mcs_table_tp: "qam256",
ldpc_max_its: 5, ldpc_max_its: 5,
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
k2: 4,
msg3_k2: 7,
{% endif %}
p0_nominal_with_grant: -76, p0_nominal_with_grant: -76,
msg3_mcs: 4, msg3_mcs: 4,
msg3_delta_power: 0, msg3_delta_power: 0,
beta_offset_ack_index: 9, beta_offset_ack_index: 9,
}, },
......
...@@ -137,3 +137,4 @@ eggs = slapos.core ...@@ -137,3 +137,4 @@ eggs = slapos.core
file = {{ sdr_busy_promise }} file = {{ sdr_busy_promise }}
output = ${directory:plugins}/check-sdr-busy.py output = ${directory:plugins}/check-sdr-busy.py
config-testing = {{ slapparameter_dict.get("testing", False) }} config-testing = {{ slapparameter_dict.get("testing", False) }}
config-sdr = {{ sdr }}
...@@ -23,6 +23,16 @@ ...@@ -23,6 +23,16 @@
"type": "boolean" "type": "boolean"
}, },
{%- endif %} {%- endif %}
"rrh": {
"title": "RRH",
"description": "RRH",
"type": "string",
"default": "SDR",
"enum": [
"SDR",
"M2RU Sunwave"
]
},
"tx_gain": { "tx_gain": {
"title": "Tx gain", "title": "Tx gain",
"description": "Tx gain (in dB)", "description": "Tx gain (in dB)",
......
...@@ -137,3 +137,4 @@ eggs = slapos.core ...@@ -137,3 +137,4 @@ eggs = slapos.core
file = {{ sdr_busy_promise }} file = {{ sdr_busy_promise }}
output = ${directory:plugins}/check-sdr-busy.py output = ${directory:plugins}/check-sdr-busy.py
config-testing = {{ slapparameter_dict.get("testing", False) }} config-testing = {{ slapparameter_dict.get("testing", False) }}
config-sdr = {{ sdr }}
...@@ -21,6 +21,16 @@ ...@@ -21,6 +21,16 @@
"description": "Activate iperf3 UDP server", "description": "Activate iperf3 UDP server",
"type": "boolean" "type": "boolean"
}, },
"rrh": {
"title": "RRH",
"description": "RRH",
"type": "string",
"default": "SDR",
"enum": [
"SDR",
"M2RU Sunwave"
]
},
"tx_gain": { "tx_gain": {
"title": "Tx gain", "title": "Tx gain",
"description": "Tx gain (in dB)", "description": "Tx gain (in dB)",
......
...@@ -3,6 +3,16 @@ ...@@ -3,6 +3,16 @@
"$schema": "http://json-schema.org/draft-04/schema", "$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters", "title": "Input Parameters",
"properties": { "properties": {
"rrh": {
"title": "RRH",
"description": "RRH",
"type": "string",
"default": "SDR",
"enum": [
"SDR",
"M2RU Sunwave"
]
},
"tx_gain": { "tx_gain": {
"title": "Tx gain", "title": "Tx gain",
"description": "Tx gain (in dB)", "description": "Tx gain (in dB)",
......
...@@ -21,6 +21,16 @@ ...@@ -21,6 +21,16 @@
"description": "Activate iperf3 UDP server", "description": "Activate iperf3 UDP server",
"type": "boolean" "type": "boolean"
}, },
"rrh": {
"title": "RRH",
"description": "RRH",
"type": "string",
"default": "SDR",
"enum": [
"SDR",
"M2RU Sunwave"
]
},
"tx_gain": { "tx_gain": {
"title": "Tx gain", "title": "Tx gain",
"description": "Tx gain (in dB)", "description": "Tx gain (in dB)",
......
...@@ -3,6 +3,16 @@ ...@@ -3,6 +3,16 @@
"$schema": "http://json-schema.org/draft-04/schema", "$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters", "title": "Input Parameters",
"properties": { "properties": {
"rrh": {
"title": "RRH",
"description": "RRH",
"type": "string",
"default": "SDR",
"enum": [
"SDR",
"M2RU Sunwave"
]
},
"tx_gain": { "tx_gain": {
"title": "Tx gain", "title": "Tx gain",
"description": "Tx gain (in dB)", "description": "Tx gain (in dB)",
......
...@@ -21,6 +21,16 @@ ...@@ -21,6 +21,16 @@
"description": "Activate iperf3 UDP server", "description": "Activate iperf3 UDP server",
"type": "boolean" "type": "boolean"
}, },
"rrh": {
"title": "RRH",
"description": "RRH",
"type": "string",
"default": "SDR",
"enum": [
"SDR",
"M2RU Sunwave"
]
},
"tx_gain": { "tx_gain": {
"title": "Tx gain", "title": "Tx gain",
"description": "Tx gain (in dB)", "description": "Tx gain (in dB)",
......
...@@ -3,6 +3,16 @@ ...@@ -3,6 +3,16 @@
"$schema": "http://json-schema.org/draft-04/schema", "$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters", "title": "Input Parameters",
"properties": { "properties": {
"rrh": {
"title": "RRH",
"description": "RRH",
"type": "string",
"default": "SDR",
"enum": [
"SDR",
"M2RU Sunwave"
]
},
"tx_gain": { "tx_gain": {
"title": "Tx gain", "title": "Tx gain",
"description": "Tx gain (in dB)", "description": "Tx gain (in dB)",
......
...@@ -21,6 +21,16 @@ ...@@ -21,6 +21,16 @@
"description": "Activate iperf3 UDP server", "description": "Activate iperf3 UDP server",
"type": "boolean" "type": "boolean"
}, },
"rrh": {
"title": "RRH",
"description": "RRH",
"type": "string",
"default": "SDR",
"enum": [
"SDR",
"M2RU Sunwave"
]
},
"tx_gain": { "tx_gain": {
"title": "Tx gain", "title": "Tx gain",
"description": "Tx gain (in dB)", "description": "Tx gain (in dB)",
......
...@@ -3,6 +3,16 @@ ...@@ -3,6 +3,16 @@
"$schema": "http://json-schema.org/draft-04/schema", "$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters", "title": "Input Parameters",
"properties": { "properties": {
"rrh": {
"title": "RRH",
"description": "RRH",
"type": "string",
"default": "SDR",
"enum": [
"SDR",
"M2RU Sunwave"
]
},
"tx_gain": { "tx_gain": {
"title": "Tx gain", "title": "Tx gain",
"description": "Tx gain (in dB)", "description": "Tx gain (in dB)",
......
...@@ -120,17 +120,11 @@ monitor-title = {{ slapparameter_dict['name'] | string }} ...@@ -120,17 +120,11 @@ monitor-title = {{ slapparameter_dict['name'] | string }}
password = {{ slapparameter_dict['monitor-password'] | string }} password = {{ slapparameter_dict['monitor-password'] | string }}
{% endif %} {% endif %}
[sdr-busy-promise-template]
recipe = slapos.recipe.template:jinja2
url = {{ sdr_busy_promise }}
output = ${directory:etc}/check-sdr-busy.py
extensions = jinja2.ext.do
context =
key slapparameter_dict slap-configuration:configuration
# Add custom promise to check if /dev/sdr0 is busy # Add custom promise to check if /dev/sdr0 is busy
[sdr-busy-promise] [sdr-busy-promise]
recipe = slapos.cookbook:promise.plugin recipe = slapos.cookbook:promise.plugin
eggs = slapos.core eggs = slapos.core
file = ${sdr-busy-promise-template:output} file = {{ sdr_busy_promise }}
output = ${directory:plugins}/check-sdr-busy.py output = ${directory:plugins}/check-sdr-busy.py
config-testing = {{ slapparameter_dict.get("testing", False) }}
config-sdr = {{ sdr }}
...@@ -123,17 +123,11 @@ monitor-title = {{ slapparameter_dict['name'] | string }} ...@@ -123,17 +123,11 @@ monitor-title = {{ slapparameter_dict['name'] | string }}
password = {{ slapparameter_dict['monitor-password'] | string }} password = {{ slapparameter_dict['monitor-password'] | string }}
{% endif %} {% endif %}
[sdr-busy-promise-template]
recipe = slapos.recipe.template:jinja2
url = {{ sdr_busy_promise }}
output = ${directory:etc}/check-sdr-busy.py
extensions = jinja2.ext.do
context =
key slapparameter_dict slap-configuration:configuration
# Add custom promise to check if /dev/sdr0 is busy # Add custom promise to check if /dev/sdr0 is busy
[sdr-busy-promise] [sdr-busy-promise]
recipe = slapos.cookbook:promise.plugin recipe = slapos.cookbook:promise.plugin
eggs = slapos.core eggs = slapos.core
file = ${sdr-busy-promise-template:output} file = {{ sdr_busy_promise }}
output = ${directory:plugins}/check-sdr-busy.py output = ${directory:plugins}/check-sdr-busy.py
config-testing = {{ slapparameter_dict.get("testing", False) }}
config-sdr = {{ sdr }}
...@@ -36,6 +36,7 @@ init = ...@@ -36,6 +36,7 @@ init =
path = "/opt/amarisoft/v" + lte_version path = "/opt/amarisoft/v" + lte_version
options['lte-version'] = lte_version options['lte-version'] = lte_version
options['path'] = path options['path'] = path
options['sdr'] = path + "/trx_sdr"
options['enb'] = path + "/enb" options['enb'] = path + "/enb"
options['mme'] = path + "/mme" options['mme'] = path + "/mme"
options['ims'] = path + "/ims" options['ims'] = path + "/ims"
...@@ -101,6 +102,7 @@ extensions = jinja2.ext.do ...@@ -101,6 +102,7 @@ extensions = jinja2.ext.do
extra-context = extra-context =
raw monitor_template ${monitor2-template:output} raw monitor_template ${monitor2-template:output}
key enb amarisoft:enb key enb amarisoft:enb
key sdr amarisoft:sdr
raw enb_template ${enb.jinja2.cfg:target} raw enb_template ${enb.jinja2.cfg:target}
raw sib23 ${sib23.asn:target} raw sib23 ${sib23.asn:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target} raw ltelogs_template ${ltelogs.jinja2.sh:target}
...@@ -124,6 +126,7 @@ extensions = jinja2.ext.do ...@@ -124,6 +126,7 @@ extensions = jinja2.ext.do
extra-context = extra-context =
raw monitor_template ${monitor2-template:output} raw monitor_template ${monitor2-template:output}
key enb amarisoft:enb key enb amarisoft:enb
key sdr amarisoft:sdr
raw gnb_template ${gnb.jinja2.cfg:target} raw gnb_template ${gnb.jinja2.cfg:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target} raw ltelogs_template ${ltelogs.jinja2.sh:target}
raw sdr_busy_promise ${sdr-busy-promise:target} raw sdr_busy_promise ${sdr-busy-promise:target}
...@@ -165,6 +168,7 @@ extra-context = ...@@ -165,6 +168,7 @@ extra-context =
raw monitor_template ${monitor2-template:output} raw monitor_template ${monitor2-template:output}
raw interface_up_promise ${interface-up-promise:target} raw interface_up_promise ${interface-up-promise:target}
key ue amarisoft:ue key ue amarisoft:ue
key sdr amarisoft:sdr
raw ue_lte_template ${ue-lte.jinja2.cfg:target} raw ue_lte_template ${ue-lte.jinja2.cfg:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target} raw ltelogs_template ${ltelogs.jinja2.sh:target}
raw sdr_busy_promise ${sdr-busy-promise:target} raw sdr_busy_promise ${sdr-busy-promise:target}
...@@ -188,6 +192,7 @@ extra-context = ...@@ -188,6 +192,7 @@ extra-context =
raw monitor_template ${monitor2-template:output} raw monitor_template ${monitor2-template:output}
raw interface_up_promise ${interface-up-promise:target} raw interface_up_promise ${interface-up-promise:target}
key ue amarisoft:ue key ue amarisoft:ue
key sdr amarisoft:sdr
raw ue_nr_template ${ue-nr.jinja2.cfg:target} raw ue_nr_template ${ue-nr.jinja2.cfg:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target} raw ltelogs_template ${ltelogs.jinja2.sh:target}
raw sdr_busy_promise ${sdr-busy-promise:target} raw sdr_busy_promise ${sdr-busy-promise:target}
......
import os import os
import errno import errno
import subprocess
from zope.interface import implementer from zope.interface import implementer
from slapos.grid.promise import interface from slapos.grid.promise import interface
...@@ -28,18 +29,22 @@ class RunPromise(GenericPromise): ...@@ -28,18 +29,22 @@ class RunPromise(GenericPromise):
In this case, check whether the file exists. In this case, check whether the file exists.
""" """
testing = self.getConfig('testing') == "True" testing = self.getConfig('testing') == "True"
sdr_dev = '/dev/sdr0' sdr = self.getConfig('sdr')
if testing: if testing:
self.logger.info("skipping promise") self.logger.info("skipping promise")
return return
try: try:
open(sdr_dev, 'w').close() out = subprocess.check_output([
self.logger.error("eNB is not using %s", sdr_dev) sdr + '/sdr_util', '-c', '0', 'version'], stderr=subprocess.STDOUT)
except IOError as e: except subprocess.CalledProcessError as e:
if e.errno == errno.EBUSY: if e.returncode == 1 and \
self.logger.info("eNB is using %s", sdr_dev) ("DMA channel is already opened" in e.output.decode() or \
"Device or resource busy" in e.output.decode()):
self.logger.info("eNB is using /dev/sdr0")
return
self.logger.error("eNB is not using /dev/sdr0")
def test(self): def test(self):
""" """
......
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