Commit 53641314 authored by Kirill Smelkov's avatar Kirill Smelkov

software/ors-amarisoft: ue: Switch UE type to be runtime parameter

Previously type of emulated UE was static parameter of particular software
release - it was possible to simulate UE and attach to cells only of the RAT of
particular template.

In MultiRU it will be possible to generally emulate all kind of UEs - both LTE
and NR all at the same time, and attach them to LTE and NR cells
simultaneously.

-> Switch type of UE to be runtime parameter as a preparatory step for that.

URLs of software releases changes (we remove lte and nr in names), but here we
do not care about backward compatibility because currently there are just a few
UEsim deployments and migration should be easy.
parent c3de8831
{#- do_lte/do_nr indicate whether we have LTE or NR UE/cells #}
{%- do assert(do_lte or do_nr) %}
{%- do assert(not (do_lte and do_nr)) %}
{#- ue_type indicates with which mode ue is instantiated with - lte | nr #}
{%- set ue_type = slapparameter_dict.ue_type %}
{%- do assert(ue_type in ('lte', 'nr'), ue_type) %}
{
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1,phy.level=info,file.rotate=1G,file.path=/dev/null",
......@@ -17,7 +17,7 @@ rf_driver: {
tx_gain: {{ slapparameter_dict.get('tx_gain', 60) }},
rx_gain: {{ slapparameter_dict.get('rx_gain', 40) }},
cell_groups: [
{%- if do_lte %}
{%- if ue_type == 'lte' %}
{
// LTE cell
multi_ue: true,
......@@ -34,7 +34,7 @@ rf_driver: {
pdcch_decode_opt_threshold: 0.1,
},
{%- endif %}
{%- if do_nr %}
{%- if ue_type == 'nr' %}
{
// NR cell
group_type: "nr",
......@@ -63,10 +63,10 @@ rf_driver: {
impi: "{{ slapparameter_dict.get('impi', '') }}",
imsi: "{{ slapparameter_dict.get('imsi', default_imsi) }}",
K: "{{ slapparameter_dict.get('k', default_k) }}",
{%- if do_lte %}
{%- if ue_type == 'lte' %}
ue_category: 12,
{%- endif %}
{%- if do_nr %}
{%- if ue_type == 'nr' %}
as_release: 15,
ue_category: "nr",
{%- endif %}
......
......@@ -3,13 +3,16 @@
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
"ue": {
"title": "UE",
"oneOf": [
{
"$ref": "ue/lte/input-schema.json"
},
{
"$ref": "ue/nr/input-schema.json"
}
]
},
"tx_gain": {
"title": "Tx gain",
......@@ -21,25 +24,6 @@
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth",
"type": "string",
"enum": [
"1.4 MHz",
"3 MHz",
"5 MHz",
"10 MHz",
"15 MHz",
"20 MHz"
],
"default": "20 MHz"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
......@@ -51,22 +35,6 @@
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number"
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"band": {
"title": "NR band",
"description": "NR band number",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": 40
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
......@@ -3,13 +3,16 @@
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
"ue": {
"title": "UE",
"oneOf": [
{
"$ref": "ue/lte/input-schema.json"
},
{
"$ref": "ue/nr/input-schema.json"
}
]
},
"tx_gain": {
"title": "Tx gain",
......@@ -21,25 +24,6 @@
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth",
"type": "string",
"enum": [
"1.4 MHz",
"3 MHz",
"5 MHz",
"10 MHz",
"15 MHz",
"20 MHz"
],
"default": "20 MHz"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
......@@ -51,22 +35,6 @@
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number"
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"band": {
"title": "NR band",
"description": "NR band number",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": 40
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
......@@ -10,8 +10,7 @@ enb-epc = $${:obsolete}
gnb-epc = $${:obsolete}
epc = $${:obsolete}
mme = $${:obsolete}
ue-lte =
ue-nr =
ue =
[dynamic-template-obsolete]
< = jinja2-template-base
......
......@@ -3,13 +3,16 @@
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
"ue": {
"title": "UE",
"oneOf": [
{
"$ref": "ue/lte/input-schema.json"
},
{
"$ref": "ue/nr/input-schema.json"
}
]
},
"tx_gain": {
"title": "Tx gain",
......@@ -21,25 +24,6 @@
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth",
"type": "string",
"enum": [
"1.4 MHz",
"3 MHz",
"5 MHz",
"10 MHz",
"15 MHz",
"20 MHz"
],
"default": "20 MHz"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
......@@ -51,22 +35,6 @@
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number"
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"band": {
"title": "NR band",
"description": "NR band number",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": 40
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
......@@ -3,13 +3,16 @@
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
"ue": {
"title": "UE",
"oneOf": [
{
"$ref": "ue/lte/input-schema.json"
},
{
"$ref": "ue/nr/input-schema.json"
}
]
},
"tx_gain": {
"title": "Tx gain",
......@@ -21,25 +24,6 @@
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth",
"type": "string",
"enum": [
"1.4 MHz",
"3 MHz",
"5 MHz",
"10 MHz",
"15 MHz",
"20 MHz"
],
"default": "20 MHz"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
......@@ -51,22 +35,6 @@
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number"
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"band": {
"title": "NR band",
"description": "NR band number",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": 40
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
......@@ -3,13 +3,16 @@
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
"ue": {
"title": "UE",
"oneOf": [
{
"$ref": "ue/lte/input-schema.json"
},
{
"$ref": "ue/nr/input-schema.json"
}
]
},
"tx_gain": {
"title": "Tx gain",
......@@ -21,25 +24,6 @@
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth",
"type": "string",
"enum": [
"1.4 MHz",
"3 MHz",
"5 MHz",
"10 MHz",
"15 MHz",
"20 MHz"
],
"default": "{{ default_lte_bandwidth }}"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
......@@ -51,22 +35,6 @@
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": {{ default_n_antenna_ul }}
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "{{ default_imsi }}"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "{{ default_k }}"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"$ref": "sim/input-schema.json#/properties",
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number"
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number"
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"band": {
"title": "NR band",
"description": "NR band number",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": {{ default_nr_bandwidth }}
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number"
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": {{ default_n_antenna_dl }}
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": {{ default_n_antenna_ul }}
},
"imsi": {
"$ref": "sim/input-schema.json#/properties/imsi",
"default": "{{ default_imsi }}"
},
"k": {
"$ref": "sim/input-schema.json#/properties/k",
"default": "{{ default_k }}"
},
"sim_algo": {
"$ref": "sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm.",
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{#- rat indicates with which mode ue is instantiated with - lte | nr #}
{%- set rat = slap_configuration['slap-software-type'] .removeprefix('ue-') %}
{%- do assert(rat in ('lte', 'nr'), rat) %}
{%- set do_lte = (rat == 'lte') %}
{%- set do_nr = (rat == 'nr') %}
[buildout]
parts =
directory
......@@ -106,8 +99,6 @@ context =
raw default_n_antenna_ul {{ default_n_antenna_ul }}
raw default_imsi {{ default_imsi }}
raw default_k {{default_k}}
json do_lte {{ do_lte | tojson }}
json do_nr {{ do_nr | tojson }}
[lte-ue-config]
<= config-base
......
......@@ -108,8 +108,7 @@ recipe = slapos.cookbook:switch-softwaretype
enb = dynamic-template-enb:output
gnb = dynamic-template-enb:output
core-network = dynamic-template-core-network:output
ue-lte = dynamic-template-ue:output
ue-nr = dynamic-template-ue:output
ue = dynamic-template-ue:output
RootSoftwareInstance = $${:core-network}
[dynamic-template-enb]
......@@ -181,7 +180,7 @@ extra-context =
[dynamic-template-ue]
< = jinja2-template-base
url = ${template-ue:target}
filename = instance-ue-lte.cfg
filename = instance-ue.cfg
extensions = jinja2.ext.do
extra-context =
section slap_configuration slap-configuration
......
......@@ -52,8 +52,7 @@ software_list = [
}
]
for i in range (len(software_list)):
software_list[i].update({
defaults = {
'default_lte_bandwidth' : "20 MHz",
'default_lte_inactivity_timer' : 10000,
'default_nr_bandwidth' : 40,
......@@ -63,13 +62,15 @@ for i in range (len(software_list)):
'default_nr_inactivity_timer' : 10000,
'default_imsi' : "001010123456789",
'default_k' : "00112233445566778899aabbccddeeff",
})
}
for i in range (len(software_list)):
software_list[i].update(defaults)
with open('software.cfg.json.jinja2', 'r') as f:
software_json_template = Template(f.read())
instance_json_template_map = {}
for software_type in ['enb', 'gnb', 'ue-lte', 'ue-nr']:
for software_type in ['enb', 'gnb', 'ue']:
with open('instance-{}-input-schema.json.jinja2'.format(software_type), 'r') as f:
instance_json_template_map[software_type] = Template(f.read())
......@@ -94,11 +95,20 @@ for software in software_list:
test_template.render(**software, **global_context))
emit('software-{}.cfg'.format(software['software_name']),
software_template.render(**software, **global_context))
for software_type in ['enb', 'gnb', 'ue-lte', 'ue-nr']:
for software_type in ['enb', 'gnb', 'ue']:
# no ue for ors
if software['bbu'] == 'ors' and software_type.startswith('ue-'):
if software['bbu'] == 'ors' and software_type == 'ue':
continue
emit('instance-{}-{}-input-schema.json'.format(
software['software_name'],
software_type),
instance_json_template_map[software_type].render(**software, **global_context))
# render emits file @ path from path.jinja2
def render(path):
with open('%s.jinja2' % path, 'r') as f:
template = Template(f.read())
emit(path, template.render(**defaults, **global_context))
for path in ('ue/common.json', 'ue/lte/input-schema.json', 'ue/nr/input-schema.json'):
render(path)
......@@ -130,8 +130,8 @@ def do_enb():
def do_ue():
do('ue.jinja2.cfg', 'ue-lte.cfg', 'lte', {'rue_addr': 'host1'})
do('ue.jinja2.cfg', 'ue-nr.cfg', 'nr', {'rue_addr': 'host2'})
do('ue.jinja2.cfg', 'ue-lte.cfg', 'lte', {'ue_type': 'lte', 'rue_addr': 'host1'})
do('ue.jinja2.cfg', 'ue-nr.cfg', 'nr', {'ue_type': 'nr', 'rue_addr': 'host2'})
def main():
......
......@@ -4,22 +4,14 @@
"serialisation": "json-in-xml",
"software-type": {
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-fdd-lopcomm-ue-lte-input-schema.json",
"response": "instance-fdd-lopcomm-ue-lte-schema.json",
"ue": {
"title": "UE",
"description": "UE Configuration",
"software-type": "ue",
"request": "instance-fdd-lopcomm-ue-input-schema.json",
"response": "instance-fdd-lopcomm-ue-schema.json",
"index": 4
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-fdd-lopcomm-ue-nr-input-schema.json",
"response": "instance-fdd-lopcomm-ue-nr-schema.json",
"index": 5
},
"enb": {
"title": "eNB",
......
......@@ -4,22 +4,14 @@
"serialisation": "json-in-xml",
"software-type": {
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-fdd-ue-lte-input-schema.json",
"response": "instance-fdd-ue-lte-schema.json",
"ue": {
"title": "UE",
"description": "UE Configuration",
"software-type": "ue",
"request": "instance-fdd-ue-input-schema.json",
"response": "instance-fdd-ue-schema.json",
"index": 4
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-fdd-ue-nr-input-schema.json",
"response": "instance-fdd-ue-nr-schema.json",
"index": 5
},
"enb": {
"title": "eNB",
......
......@@ -4,22 +4,14 @@
"serialisation": "json-in-xml",
"software-type": {
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-tdd-m2ru-ue-lte-input-schema.json",
"response": "instance-tdd-m2ru-ue-lte-schema.json",
"ue": {
"title": "UE",
"description": "UE Configuration",
"software-type": "ue",
"request": "instance-tdd-m2ru-ue-input-schema.json",
"response": "instance-tdd-m2ru-ue-schema.json",
"index": 4
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-tdd-m2ru-ue-nr-input-schema.json",
"response": "instance-tdd-m2ru-ue-nr-schema.json",
"index": 5
},
"enb": {
"title": "eNB",
......
......@@ -4,22 +4,14 @@
"serialisation": "json-in-xml",
"software-type": {
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-tdd-ue-lte-input-schema.json",
"response": "instance-tdd-ue-lte-schema.json",
"ue": {
"title": "UE",
"description": "UE Configuration",
"software-type": "ue",
"request": "instance-tdd-ue-input-schema.json",
"response": "instance-tdd-ue-schema.json",
"index": 4
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-tdd-ue-nr-input-schema.json",
"response": "instance-tdd-ue-nr-schema.json",
"index": 5
},
"enb": {
"title": "eNB",
......
......@@ -4,22 +4,14 @@
"serialisation": "json-in-xml",
"software-type": {
{% if bbu != 'ors' %}
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-{{ software_name }}-ue-lte-input-schema.json",
"response": "instance-{{ software_name }}-ue-lte-schema.json",
"ue": {
"title": "UE",
"description": "UE Configuration",
"software-type": "ue",
"request": "instance-{{ software_name }}-ue-input-schema.json",
"response": "instance-{{ software_name }}-ue-schema.json",
"index": 4
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-{{ software_name }}-ue-nr-input-schema.json",
"response": "instance-{{ software_name }}-ue-nr-schema.json",
"index": 5
},
{% endif %}
"enb": {
"title": "eNB",
......
......@@ -360,11 +360,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -372,11 +372,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -405,10 +405,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......@@ -433,10 +433,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
......@@ -356,11 +356,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -368,11 +368,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -401,10 +401,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......@@ -429,10 +429,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
......@@ -356,11 +356,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -368,11 +368,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -401,10 +401,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......@@ -429,10 +429,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
......@@ -356,11 +356,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -368,11 +368,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -401,10 +401,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......@@ -429,10 +429,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
......@@ -356,11 +356,11 @@ class TestCoreNetworkMonitorGadgetUrl(ORSTestCase):
class TestUELTEMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -368,11 +368,11 @@ class TestUELTEMonitorGadgetUrl(ORSTestCase):
class TestUENRMonitorGadgetUrl(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps({'testing': True})}
return {'_': json.dumps({'testing': True, 'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_monitor_gadget_url(self):
test_monitor_gadget_url(self)
......@@ -401,10 +401,10 @@ class TestSimCard(ORSTestCase):
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'lte'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
return "ue"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......@@ -429,10 +429,10 @@ class TestUELTEParameters(ORSTestCase):
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(param_dict)}
return {'_': json.dumps(param_dict | {'ue_type': 'nr'})}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
return "ue"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
......
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "UE. Common properties",
"type": "object",
"required": [
"ue_type",
"rue_addr"
],
"properties": {
"$ref": "../sim/input-schema.json#/properties",
"ue_type": {
"type": "string",
"options": { "hidden": true }
},
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"imsi": {
"$ref": "../sim/input-schema.json#/properties/imsi",
"default": "001010123456789"
},
"k": {
"$ref": "../sim/input-schema.json#/properties/k",
"default": "00112233445566778899aabbccddeeff"
},
"sim_algo": {
"$ref": "../sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm."
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "UE. Common properties",
"type": "object",
"required": [
"ue_type",
"rue_addr"
],
"properties": {
"$ref": "../sim/input-schema.json#/properties",
"ue_type": {
"type": "string",
"options": { "hidden": true }
},
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"imsi": {
"$ref": "../sim/input-schema.json#/properties/imsi",
"default": "{{ default_imsi }}"
},
"k": {
"$ref": "../sim/input-schema.json#/properties/k",
"default": "{{ default_k }}"
},
"sim_algo": {
"$ref": "../sim/input-schema.json#/properties/sim_algo",
"description": "Optional enumeration. xor, milenage or tuak (default = milenage). Set the USIM authentication algorithm. Note: test USIM cards use the XOR algorithm."
},
"opc": {
"$ref": "../sim/input-schema.json#/properties/opc",
"default": "milenage"
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "LTE UE",
"type": "object",
"properties": {
"$ref": "../../ue/common.json#/properties",
"ue_type": {
"$ref": "#/properties/ue_type",
"const": "lte",
"template": "lte"
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth",
"type": "string",
"enum": [
"1.4 MHz",
"3 MHz",
"5 MHz",
"10 MHz",
"15 MHz",
"20 MHz"
],
"default": "20 MHz"
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "LTE UE",
"type": "object",
"properties": {
"$ref": "../../ue/common.json#/properties",
"ue_type": {
"$ref": "#/properties/ue_type",
"const": "lte",
"template": "lte"
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth",
"type": "string",
"enum": [
"1.4 MHz",
"3 MHz",
"5 MHz",
"10 MHz",
"15 MHz",
"20 MHz"
],
"default": "{{ default_lte_bandwidth }}"
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "NR UE",
"type": "object",
"properties": {
"$ref": "../../ue/common.json#/properties",
"ue_type": {
"$ref": "#/properties/ue_type",
"const": "lte",
"template": "lte"
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"band": {
"title": "NR band",
"description": "NR band number",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": 40
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number"
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "NR UE",
"type": "object",
"properties": {
"$ref": "../../ue/common.json#/properties",
"ue_type": {
"$ref": "#/properties/ue_type",
"const": "lte",
"template": "lte"
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number"
},
"band": {
"title": "NR band",
"description": "NR band number",
"type": "number"
},
"bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": {{ default_nr_bandwidth }}
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number"
}
}
}
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