Merge remote-tracking branch 'origin/develop' into bupt-ulmimo-4

This commit is contained in:
francescomani
2022-04-08 16:50:02 +02:00
140 changed files with 8298 additions and 2654 deletions
+20
View File
@@ -238,6 +238,26 @@ pipeline {
}
}
}
stage ("5G L2 Simulators") {
when { expression {doMandatoryTests} }
steps {
script {
triggerSlaveJob ('RAN-L2-Sim-Test-5G', 'Test-L2-Sim-Container-5G')
}
}
post {
always {
script {
finalizeSlaveJob('RAN-L2-Sim-Test-5G')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
}
}
}
}
stage ("NSA B200 Sanity Check") {
when { expression {doMandatoryTests} }
steps {
+18
View File
@@ -0,0 +1,18 @@
#!/bin/bash
ue_id="$1" # UE id
duration="$2" # Sim duration
shift
shift
function end
{
exit 0
}
trap end INT TERM
echo "ip netns exec $ue_id $@ > /tmp/test_${ue_id}.log"
ip netns exec $ue_id $@ > /tmp/test_$ue_id.log
@@ -0,0 +1,172 @@
/* UE simulator configuration */
/* UE simulator configuration file version 2021-06-17
* LTE / 5G Non StandAlone
* Copyright (C) 2019-2021 Amarisoft
*/
{
#define N_ANTENNA_DL 1
#define TDD 1
#define CELL_BANDWIDTH 40
#define UE_COUNT 3 // number of simulated UEs 208970100001127, 208970100001128, 208970100001129
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
log_filename: "/tmp/ue0.log",
/* Enable remote API and Web interface */
com_addr: "0.0.0.0:9002",
include "rf_driver/1chan.cfg",
/* If true, allow the simulation of several UEs at the same time and allow dynamic UE creation from remote API */
cell_groups: [{
group_type: "nr",
multi_ue: true,
cells: [{
rf_port: 0,
bandwidth: CELL_BANDWIDTH,
#if TDD == 1
band: 78,
dl_nr_arfcn:621312,
ssb_nr_arfcn:621312,
//band: 41,
//dl_nr_arfcn:517020,
//ssb_nr_arfcn:516990,
#else
band: 7,
dl_nr_arfcn: 536020,
ssb_nr_arfcn: 535930,
ssb_subcarrier_spacing: 15,
#endif
subcarrier_spacing: 30,
n_antenna_dl: N_ANTENNA_DL,
n_antenna_ul: 1,
rx_to_tx_latency:2,
}],
}],
/* Enable it to allow sim_events to be handled remotely */
//rue_bind_addr: "127.0.10.11",
ue_list: [
{
/* UE capabilities */
/* USIM data */
"ue_id" : 0,
"imsi": "208970100001127",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [
{
sst: 1,
sd: 66051,
},
],
default_pdu_session_snssai: {
sst: 1,
sd: 66051,
},
/* Enable it to allow sim_events to be handled remotely */
//rue_addr: "127.1.0.0",
/* Enable it to create a TUN interface for each UE PDN */
tun_setup_script: "ue-ifup",
sim_events: [
{
event: "power_on",
start_time: 5,
},
{
event: "power_off",
start_time: 30,
}
] /*end sim events */
}, /*end UE object 0*/
{
/* UE capabilities */
/* USIM data */
"ue_id" : 1,
"imsi": "208970100001128",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [
{
sst: 1,
sd: 66051,
},
],
default_pdu_session_snssai: {
sst: 1,
sd: 66051,
},
/* Enable it to allow sim_events to be handled remotely */
//rue_addr: "127.1.0.0",
/* Enable it to create a TUN interface for each UE PDN */
tun_setup_script: "ue-ifup",
sim_events: [
{
event: "power_on",
start_time: 5,
},
{
event: "power_off",
start_time: 30,
}
] /*end sim events */
}, /*end UE object 1*/
{
/* UE capabilities */
/* USIM data */
"ue_id" : 2,
"imsi": "208970100001129",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [
{
sst: 1,
sd: 66051,
},
],
default_pdu_session_snssai: {
sst: 1,
sd: 66051,
},
/* Enable it to allow sim_events to be handled remotely */
//rue_addr: "127.1.0.0",
/* Enable it to create a TUN interface for each UE PDN */
tun_setup_script: "ue-ifup",
sim_events: [
{
event: "power_on",
start_time: 5,
},
{
event: "power_off",
start_time: 30,
}
] /*end sim events */
} /*end UE object 2*/
],/*end UE list*/
}/*end json*/
@@ -0,0 +1,142 @@
/* UE simulator configuration */
/* UE simulator configuration file version 2021-06-17
* LTE / 5G Non StandAlone
* Copyright (C) 2019-2021 Amarisoft
*/
{
#define N_ANTENNA_DL 1
#define TDD 1
#define CELL_BANDWIDTH 40
#define UE_COUNT 2 // number of simulated UEs 208970100001127, 208970100001128, 208970100001129
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
log_filename: "/tmp/ue0.log",
/* Enable remote API and Web interface */
com_addr: "0.0.0.0:9002",
include "rf_driver/1chan.cfg",
/* If true, allow the simulation of several UEs at the same time and allow dynamic UE creation from remote API */
cell_groups: [{
group_type: "nr",
multi_ue: true,
cells: [{
rf_port: 0,
bandwidth: CELL_BANDWIDTH,
#if TDD == 1
band: 78,
dl_nr_arfcn:621312,
ssb_nr_arfcn:621312,
//band: 41,
//dl_nr_arfcn:517020,
//ssb_nr_arfcn:516990,
#else
band: 7,
dl_nr_arfcn: 536020,
ssb_nr_arfcn: 535930,
ssb_subcarrier_spacing: 15,
#endif
subcarrier_spacing: 30,
n_antenna_dl: N_ANTENNA_DL,
n_antenna_ul: 1,
rx_to_tx_latency:2,
}],
}],
/* Enable it to allow sim_events to be handled remotely */
//rue_bind_addr: "127.0.10.11",
ue_list: [
{
/* UE capabilities */
/* USIM data */
"ue_id" : 1,
"imsi": "208970100001127",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [
{
sst: 1,
sd: 66051,
},
],
default_pdu_session_snssai: {
sst: 1,
sd: 66051,
},
/* Enable it to allow sim_events to be handled remotely */
//rue_addr: "127.1.0.0",
/* Enable it to create a TUN interface for each UE PDN */
tun_setup_script: "ue-ifup",
sim_events: [
{
event: "power_on",
start_time: 5,
},
{
event: "power_off",
start_time: 30,
}
] /*end sim events */
}, /*end UE object 0*/
{
/* UE capabilities */
/* USIM data */
"ue_id" : 2,
"imsi": "208970100001128",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [
{
sst: 1,
sd: 66051,
},
],
default_pdu_session_snssai: {
sst: 1,
sd: 66051,
},
/* Enable it to allow sim_events to be handled remotely */
//rue_addr: "127.1.0.0",
/* Enable it to create a TUN interface for each UE PDN */
tun_setup_script: "ue-ifup",
sim_events: [
{
event: "power_on",
start_time: 5,
},
{
"tag": "ping",
"prog":"oai_ext_app.sh",
start_time: 15,
end_time: 25,
"args":["ping 192.168.70.136"],
"event":"ext_app"
},
{
event: "power_off",
start_time: 30,
}
] /*end sim events */
} /*end UE object 1*/
],/*end UE list*/
}/*end json*/
@@ -0,0 +1,150 @@
/* UE simulator configuration */
/* UE simulator configuration file version 2021-06-17
* LTE / 5G Non StandAlone
* Copyright (C) 2019-2021 Amarisoft
*/
{
#define N_ANTENNA_DL 1
#define TDD 1
#define CELL_BANDWIDTH 40
#define UE_COUNT 2 // number of simulated UEs 208970100001127, 208970100001128, 208970100001129
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
log_filename: "/tmp/ue0.log",
/* Enable remote API and Web interface */
com_addr: "0.0.0.0:9002",
include "rf_driver/1chan.cfg",
/* If true, allow the simulation of several UEs at the same time and allow dynamic UE creation from remote API */
cell_groups: [{
group_type: "nr",
multi_ue: true,
cells: [{
rf_port: 0,
bandwidth: CELL_BANDWIDTH,
#if TDD == 1
band: 78,
dl_nr_arfcn:621312,
ssb_nr_arfcn:621312,
//band: 41,
//dl_nr_arfcn:517020,
//ssb_nr_arfcn:516990,
#else
band: 7,
dl_nr_arfcn: 536020,
ssb_nr_arfcn: 535930,
ssb_subcarrier_spacing: 15,
#endif
subcarrier_spacing: 30,
n_antenna_dl: N_ANTENNA_DL,
n_antenna_ul: 1,
rx_to_tx_latency:2,
}],
}],
/* Enable it to allow sim_events to be handled remotely */
//rue_bind_addr: "127.0.10.11",
ue_list: [
{
/* UE capabilities */
/* USIM data */
"ue_id" : 1,
"imsi": "208970100001127",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [
{
sst: 1,
sd: 66051,
},
],
default_pdu_session_snssai: {
sst: 1,
sd: 66051,
},
/* Enable it to allow sim_events to be handled remotely */
//rue_addr: "127.1.0.0",
/* Enable it to create a TUN interface for each UE PDN */
tun_setup_script: "ue-ifup",
sim_events: [
{
event: "power_on",
start_time: 5,
},
{
"tag": "ping",
"prog":"oai_ext_app.sh",
start_time: 15,
end_time: 25,
"args":["ping 192.168.70.136"],
"event":"ext_app"
},
{
event: "power_off",
start_time: 30,
}
] /*end sim events */
}, /*end UE object 0*/
{
/* UE capabilities */
/* USIM data */
"ue_id" : 2,
"imsi": "208970100001128",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [
{
sst: 1,
sd: 66051,
},
],
default_pdu_session_snssai: {
sst: 1,
sd: 66051,
},
/* Enable it to allow sim_events to be handled remotely */
//rue_addr: "127.1.0.0",
/* Enable it to create a TUN interface for each UE PDN */
tun_setup_script: "ue-ifup",
sim_events: [
{
event: "power_on",
start_time: 5,
},
{
"tag": "ping",
"prog":"oai_ext_app.sh",
start_time: 15,
end_time: 25,
"args":["ping 192.168.70.136"],
"event":"ext_app"
},
{
event: "power_off",
start_time: 30,
}
] /*end sim events */
} /*end UE object 1*/
],/*end UE list*/
}/*end json*/
@@ -0,0 +1,150 @@
/* UE simulator configuration */
/* UE simulator configuration file version 2021-06-17
* LTE / 5G Non StandAlone
* Copyright (C) 2019-2021 Amarisoft
*/
{
#define N_ANTENNA_DL 1
#define TDD 1
#define CELL_BANDWIDTH 40
#define UE_COUNT 2 // number of simulated UEs 208970100001127, 208970100001128, 208970100001129
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
log_filename: "/tmp/ue0.log",
/* Enable remote API and Web interface */
com_addr: "0.0.0.0:9002",
include "rf_driver/1chan.cfg",
/* If true, allow the simulation of several UEs at the same time and allow dynamic UE creation from remote API */
cell_groups: [{
group_type: "nr",
multi_ue: true,
cells: [{
rf_port: 0,
bandwidth: CELL_BANDWIDTH,
#if TDD == 1
band: 78,
dl_nr_arfcn:621312,
ssb_nr_arfcn:621312,
//band: 41,
//dl_nr_arfcn:517020,
//ssb_nr_arfcn:516990,
#else
band: 7,
dl_nr_arfcn: 536020,
ssb_nr_arfcn: 535930,
ssb_subcarrier_spacing: 15,
#endif
subcarrier_spacing: 30,
n_antenna_dl: N_ANTENNA_DL,
n_antenna_ul: 1,
rx_to_tx_latency:2,
}],
}],
/* Enable it to allow sim_events to be handled remotely */
//rue_bind_addr: "127.0.10.11",
ue_list: [
{
/* UE capabilities */
/* USIM data */
"ue_id" : 1,
"imsi": "208970100001127",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [
{
sst: 1,
sd: 66051,
},
],
default_pdu_session_snssai: {
sst: 1,
sd: 66051,
},
/* Enable it to allow sim_events to be handled remotely */
//rue_addr: "127.1.0.0",
/* Enable it to create a TUN interface for each UE PDN */
tun_setup_script: "ue-ifup",
sim_events: [
{
event: "power_on",
start_time: 5,
},
{
"tag": "ping",
"prog":"oai_ext_app.sh",
start_time: 20,
end_time: 30,
"args":["ping 192.168.70.136"],
"event":"ext_app"
},
{
event: "power_off",
start_time: 60,
}
] /*end sim events */
}, /*end UE object 0*/
{
/* UE capabilities */
/* USIM data */
"ue_id" : 2,
"imsi": "208970100001128",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [
{
sst: 1,
sd: 66051,
},
],
default_pdu_session_snssai: {
sst: 1,
sd: 66051,
},
/* Enable it to allow sim_events to be handled remotely */
//rue_addr: "127.1.0.0",
/* Enable it to create a TUN interface for each UE PDN */
tun_setup_script: "ue-ifup",
sim_events: [
{
event: "power_on",
start_time: 5,
},
{
"tag": "ping",
"prog":"oai_ext_app.sh",
start_time: 40,
end_time: 50,
"args":["ping 192.168.70.136"],
"event":"ext_app"
},
{
event: "power_off",
start_time: 60,
}
] /*end sim events */
} /*end UE object 1*/
],/*end UE list*/
}/*end json*/
+113
View File
@@ -0,0 +1,113 @@
/* UE simulator configuration */
/* UE simulator configuration file version 2021-06-17
* LTE / 5G Non StandAlone
* Copyright (C) 2019-2021 Amarisoft
*/
{
#define N_ANTENNA_DL 1
#define TDD 1
#define CELL_BANDWIDTH 40
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
log_filename: "/tmp/ue1.log",
/* Enable remote API and Web interface */
com_addr: "0.0.0.0:9002",
include "rf_driver/1chan.cfg",
/* If true, allow the simulation of several UEs at the same time and
allow dynamic UE creation from remote API */
cell_groups: [{
group_type: "nr",
multi_ue: false,
cells: [{
rf_port: 0,
bandwidth: CELL_BANDWIDTH,
#if TDD == 1
band: 78,
dl_nr_arfcn:621312,
ssb_nr_arfcn:621312,
//band: 41,
//dl_nr_arfcn:517020,
//ssb_nr_arfcn:516990,
#else
band: 7,
dl_nr_arfcn: 536020,
ssb_nr_arfcn: 535930,
ssb_subcarrier_spacing: 15,
#endif
subcarrier_spacing: 30,
n_antenna_dl: N_ANTENNA_DL,
n_antenna_ul: 1,
rx_to_tx_latency:2,
}],
}],
/* Enable it to allow sim_events to be handled remotely */
//rue_bind_addr: "127.0.10.11",
ue_list: [
{
/* UE capabilities */
/* USIM data */
"imsi": "208970100001127",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [
{
sst: 1,
sd: 66051,
},
],
default_pdu_session_snssai: {
sst: 1,
sd: 66051,
},
/* Enable it to allow sim_events to be handled remotely */
//rue_addr: "127.1.0.0",
/* Enable it to create a TUN interface for each UE PDN */
tun_setup_script: "ue-ifup",
sim_events: [{
event: "power_on",
start_time: 5,
}, {
"tag": "ping",
"prog":"oai_ext_app.sh",
start_time: 15,
end_time: 25,
"args":["ping 192.168.70.136"],
"event":"ext_app"
},
{
event: "power_off",
start_time: 30,
}]
}
],
}
@@ -0,0 +1,109 @@
/* UE simulator configuration */
/* UE simulator configuration file version 2021-06-17
* LTE / 5G Non StandAlone
* Copyright (C) 2019-2021 Amarisoft
*/
{
#define N_ANTENNA_DL 1
#define TDD 1
#define CELL_BANDWIDTH 20
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
log_filename: "/tmp/ue0.log",
/* Enable remote API and Web interface */
com_addr: "0.0.0.0:9002",
include "rf_driver/1chan.cfg",
/* If true, allow the simulation of several UEs at the same time and
allow dynamic UE creation from remote API */
cell_groups: [{
group_type: "nr",
multi_ue: false,
cells: [{
rf_port: 0,
bandwidth: CELL_BANDWIDTH,
#if TDD == 1
// band: 78,
// dl_nr_arfcn:621312,
// ssb_nr_arfcn:621312,*/
band: 41,
dl_nr_arfcn:517020,
ssb_nr_arfcn:516990,
#else
band: 7,
dl_nr_arfcn: 536020,
ssb_nr_arfcn: 535930,
ssb_subcarrier_spacing: 15,
#endif
subcarrier_spacing: 30,
n_antenna_dl: N_ANTENNA_DL,
n_antenna_ul: 1,
rx_to_tx_latency:2,
}],
}],
/* Enable it to allow sim_events to be handled remotely */
//rue_bind_addr: "127.0.10.11",
ue_list: [
{
/* UE capabilities */
/* USIM data */
"imsi": "208970100001127",
"K": "fec86ba6eb707ed08905757b1bb44b8f",
"sim_algo":"milenage",
"op": "1006020f0a478bf6b699f15c062e42b3",
as_release: 15,
ue_category: "nr",
apn:"oai",
attach_pdn_type:"ipv4",
default_nssai: [
{
sst: 1,
sd: 1,
},
],
default_pdu_session_snssai: {
sst: 1,
sd: 1,
},
/* Enable it to allow sim_events to be handled remotely */
//rue_addr: "127.1.0.0",
/* Enable it to create a TUN interface for each UE PDN */
tun_setup_script: "ue-ifup",
sim_events: [{
event: "power_on",
start_time: 5,
}, {
event: "ext_app",
start_time: 15,
end_time: 25,
prog: "ext_app.sh",
args: ["iperf", " -c 172.21.10.5", " -u"," -b 1M"," -i 1"," -t 10"]
}, {
event: "power_off",
start_time: 30,
}]
}
],
}
+47
View File
@@ -39,6 +39,53 @@ nrmodule2_quectel:
StartCommands :
- sudo -S ip link set dev wwan1 mtu 1500
MTU : 1500
#single UE single ping
amarisoft_ue_1:
ID: amarisoft_ue_1
State : enabled
Kind : amarisoft
#not required for AS config but needed for py script
WakeupScript : none
DetachScript : none
#end
Cmd : /root/NV17-12-21/ue/lteue
Config : /root/NV17-12-21/ue/config/oaicicd-ue-Ping-SATest.cfg
Duration : 60
Ping : /tmp/test_ue1.log
UELog : /tmp/ue1.log
HostIPAddress : 192.168.18.89
HostUsername : root
HostPassword : toor
HostSourceCodePath : /tmp
#an other scenario example
#notice : this will not work as such, only suggestion for multi ue scenario
amarisoft_ue_2:
ID: amarisoft_ue_2
State : enabled
Kind : amarisoft
#not required for AS config but needed for py script
WakeupScript : none
DetachScript : none
#end
Cmd : /root/NV17-12-21/ue/lteue
Config : /root/NV17-12-21/ue/config/xxxxxxx.cfg #to be updated for an other scenario
Duration : 60
Ping :
- /tmp/test_ue1.log #to be updated fo an other scenario
- /tmp/test_ue2.log #could be a list for a multi ue scenario
UELog :
- /tmp/ue1.log
- /tmp/ue1.log
HostIPAddress : 192.168.18.89
HostUsername : root
HostPassword : toor
HostSourceCodePath : /tmp
#do not remove
dummy:
ID: ''
State : ''
+81
View File
@@ -0,0 +1,81 @@
# * 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
# */
#---------------------------------------------------------------------
#
# Required Python Version
# Python 3.x
#
#---------------------------------------------------------------------
#to use isfile
import os
import sys
import logging
#to create a SSH object locally in the methods
import sshconnection
#time.sleep
import time
import re
import subprocess
from datetime import datetime
class AS_UE:
def __init__(self,Module):
#create attributes as in the UE dictionary
for k, v in Module.items():
setattr(self, k, v)
#-----------------$
#PUBLIC Methods$
#-----------------$
def WaitEndScenario(self):
logging.debug('waiting for scenario duration')
time.sleep(int(self.Duration))
def KillASUE(self):
mySSH = sshconnection.SSHConnection()
mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
mySSH.command('killall --signal SIGKILL lteue-avx2', '#', 5)
mySSH.close()
def RunScenario(self):
mySSH = sshconnection.SSHConnection()
mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
logging.debug("Deleting old artifacts :")
cmd='rm -rf ' + self.Ping + ' ' + self.UELog
mySSH.command(cmd,'#',5)
logging.debug("Running scenario :")
cmd='echo $USER; nohup '+self.Cmd + ' ' + self.Config + ' &'
mySSH.command(cmd,'#',5)
mySSH.close()
+76 -5
View File
@@ -93,6 +93,7 @@ class Containerize():
self.allImagesSize = {}
self.collectInfo = {}
self.deployedContainers = []
self.tsharkStarted = False
self.pingContName = ''
self.pingOptions = ''
@@ -682,12 +683,28 @@ class Containerize():
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps -a'
count = 0
healthy = 0
newContainers = []
while (count < 10):
count += 1
containerStatus = []
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
healthy = 0
for state in deployStatus.split('\n'):
res = re.search('Name|----------', state)
if res is not None:
continue
if len(state) == 0:
continue
res = re.search('^(?P<container_name>[a-zA-Z0-9\-\_]+) ', state)
if res is not None:
cName = res.group('container_name')
found = False
for alreadyDeployed in self.deployedContainers:
if cName == alreadyDeployed:
found = True
if not found:
newContainers.append(cName)
self.deployedContainers.append(cName)
if re.search('Up \(healthy\)', state) is not None:
healthy += 1
if re.search('rfsim4g-db-init.*Exit 0', state) is not None:
@@ -698,16 +715,33 @@ class Containerize():
else:
time.sleep(10)
imagesInfo = ''
for newCont in newContainers:
cmd = 'docker inspect -f "{{.Config.Image}}" ' + newCont
imageName = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
imageName = str(imageName).strip()
cmd = 'docker image inspect --format "{{.RepoTags}}\t{{.Size}}\t{{.Created}}" ' + imageName
imagesInfo += subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
html_queue = SimpleQueue()
html_cell = '<pre style="background-color:white">\n'
for imageInfo in imagesInfo.split('\n'):
html_cell += imageInfo[:-11] + '\n'
html_cell += '\n'
for cState in containerStatus:
html_cell += cState + '\n'
html_cell += '</pre>'
html_queue.put(html_cell)
if count == 100 and healthy == self.nb_healthy[0]:
if self.tsharkStarted == False:
logging.debug('Starting tshark on public network')
self.CaptureOnDockerNetworks()
HTML.CreateHtmlTestRow('n/a', 'OK', CONST.ALL_PROCESSES_OK)
HTML.CreateHtmlTestRowQueue('n/a', 'OK', 1, html_queue)
for cState in containerStatus:
logging.debug(cState)
logging.info('\u001B[1m Deploying OAI Object(s) PASS\u001B[0m')
else:
HTML.CreateHtmlTestRow('Could not deploy in time', 'KO', CONST.ALL_PROCESSES_OK)
HTML.CreateHtmlTestRowQueue('Could not deploy in time', 'KO', 1, html_queue)
for cState in containerStatus:
logging.debug(cState)
logging.error('\u001B[1m Deploying OAI Object(s) FAILED\u001B[0m')
@@ -726,10 +760,12 @@ class Containerize():
cmd = 'sudo nohup tshark -f "(host 192.168.61.11 and icmp) or (not host 192.168.61.11 and not host 192.168.61.30 and not arp and not port 53 and not port 2152)"'
elif re.search('5g.*rfsimulator', self.yamlPath[0]) is not None:
cmd = 'sudo nohup tshark -f "(host 192.168.72.135 and icmp) or (not host 192.168.72.135 and not host 192.168.71.150 and not arp and not port 53 and not port 2152 and not port 2153)"'
elif re.search('5g_l2sim', self.yamlPath[0]) is not None:
cmd = 'sudo nohup tshark -f "(host 192.168.72.135 and icmp) or (not host 192.168.72.135 and not arp and not port 53 and not port 2152 and not port 2153)"'
else:
return
for name in networkNames.split('\n'):
if re.search('rfsim', name) is not None:
if re.search('rfsim', name) is not None or re.search('l2sim', name) is not None:
cmd += ' -i ' + name
cmd += ' -w /tmp/capture_'
ymlPath = self.yamlPath[0].split('/')
@@ -781,7 +817,7 @@ class Containerize():
# Analyzing log file(s)!
listOfPossibleRanContainers = ['enb', 'gnb', 'cu', 'du']
for container in listOfPossibleRanContainers:
filename = self.yamlPath[0] + '/rfsim?g-oai-' + container + '.log'
filename = self.yamlPath[0] + '/*-oai-' + container + '.log'
cmd = 'ls ' + filename
containerStatus = True
try:
@@ -803,7 +839,7 @@ class Containerize():
listOfPossibleUeContainers = ['lte-ue*', 'nr-ue*']
for container in listOfPossibleUeContainers:
filename = self.yamlPath[0] + '/rfsim?g-oai-' + container + '.log'
filename = self.yamlPath[0] + '/*-oai-' + container + '.log'
cmd = 'ls ' + filename
containerStatus = True
try:
@@ -851,6 +887,7 @@ class Containerize():
logging.error('\u001B[1m Undeploying OAI Object(s) FAILED\u001B[0m')
return
self.deployedContainers = []
# Cleaning any created tmp volume
cmd = 'docker volume prune --force || true'
logging.debug(cmd)
@@ -863,6 +900,40 @@ class Containerize():
HTML.CreateHtmlTestRow('n/a', 'KO', CONST.ALL_PROCESSES_OK)
logging.info('\u001B[1m Undeploying OAI Object(s) FAIL\u001B[0m')
def StatsFromGenObject(self, HTML):
self.exitStatus = 0
ymlPath = self.yamlPath[0].split('/')
logPath = '../cmake_targets/log/' + ymlPath[1]
# if the containers are running, recover the logs!
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps --all'
logging.debug(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
cmd = 'docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}" '
anyLogs = False
for state in deployStatus.split('\n'):
res = re.search('Name|----------', state)
if res is not None:
continue
if len(state) == 0:
continue
res = re.search('^(?P<container_name>[a-zA-Z0-9\-\_]+) ', state)
if res is not None:
anyLogs = True
cmd += res.group('container_name') + ' '
message = ''
if anyLogs:
logging.debug(cmd)
stats = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
for statLine in stats.split('\n'):
logging.debug(statLine)
message += statLine + '\n'
html_queue = SimpleQueue()
html_cell = '<pre style="background-color:white">\n' + message + '</pre>'
html_queue.put(html_cell)
HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', 1, html_queue)
def PingFromContainer(self, HTML, RAN, UE):
self.exitStatus = 0
ymlPath = self.yamlPath[0].split('/')
+158 -81
View File
@@ -55,6 +55,7 @@ import constants as CONST
import sshconnection
import cls_module_ue
import cls_amarisoft_ue
import cls_ci_ueinfra #class defining the multi Ue infrastrucure
logging.getLogger("matplotlib").setLevel(logging.WARNING)
@@ -419,49 +420,63 @@ class OaiCiTest():
for job in multi_jobs:
job.join()
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
else: #if an ID is specified, it is a module from the yaml infrastructure file
#RH
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
Module_UE.ue_trace=ue_trace
is_module=Module_UE.CheckCMProcess(EPC.Type)
if is_module:
Module_UE.EnableTrace()
time.sleep(5)
else: #if an ID is specified, it is a UE from the yaml infrastructure file
ue_kind = InfraUE.ci_ue_infra[self.ue_id]['Kind']
logging.debug("Detected UE Kind : " + ue_kind)
# Looping attach / detach / wait to be successful at least once
cnt = 0
status = -1
while cnt < 4:
Module_UE.Command("wup")
logging.debug("Waiting for IP address to be assigned")
time.sleep(20)
logging.debug("Retrieve IP address")
status=Module_UE.GetModuleIPAddress()
if status==0:
cnt = 10
else:
cnt += 1
Module_UE.Command("detach")
#case it is a quectel module (only 1 at a time supported at the moment)
if ue_kind == 'quectel':
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
Module_UE.ue_trace=ue_trace
is_module=Module_UE.CheckCMProcess(EPC.Type)
if is_module:
Module_UE.EnableTrace()
time.sleep(5)
# Looping attach / detach / wait to be successful at least once
cnt = 0
status = -1
while cnt < 4:
Module_UE.Command("wup")
logging.debug("Waiting for IP address to be assigned")
time.sleep(20)
logging.debug("Retrieve IP address")
status=Module_UE.GetModuleIPAddress()
if status==0:
cnt = 10
else:
cnt += 1
Module_UE.Command("detach")
time.sleep(20)
if cnt == 10 and status == 0:
HTML.CreateHtmlTestRow(Module_UE.UEIPAddress, 'OK', CONST.ALL_PROCESSES_OK)
logging.debug('UE IP addresss : '+ Module_UE.UEIPAddress)
#execute additional commands from yaml file after UE attach
SSH = sshconnection.SSHConnection()
SSH.open(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword)
if hasattr(Module_UE,'StartCommands'):
for startcommand in Module_UE.StartCommands:
cmd = 'echo ' + Module_UE.HostPassword + ' | ' + startcommand
SSH.command(cmd,'\$',5)
SSH.close()
#check that the MTU is as expected / requested
Module_UE.CheckModuleMTU()
else: #status==-1 failed to retrieve IP address
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.UE_IP_ADDRESS_ISSUE)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS)
return
if cnt == 10 and status == 0:
HTML.CreateHtmlTestRow(Module_UE.UEIPAddress, 'OK', CONST.ALL_PROCESSES_OK)
logging.debug('UE IP addresss : '+ Module_UE.UEIPAddress)
#execute additional commands from yaml file after UE attach
SSH = sshconnection.SSHConnection()
SSH.open(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword)
if hasattr(Module_UE,'StartCommands'):
for startcommand in Module_UE.StartCommands:
cmd = 'echo ' + Module_UE.HostPassword + ' | ' + startcommand
SSH.command(cmd,'\$',5)
SSH.close()
#check that the MTU is as expected / requested
Module_UE.CheckModuleMTU()
else: #status==-1 failed to retrieve IP address
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.UE_IP_ADDRESS_ISSUE)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS)
return
#case it is a amarisoft ue (only 1 at a time supported at the moment)
elif ue_kind == 'amarisoft':
AS_UE = cls_amarisoft_ue.AS_UE(InfraUE.ci_ue_infra[self.ue_id])
HTML.CreateHtmlTestRow(AS_UE.Config, 'OK', CONST.ALL_PROCESSES_OK)
AS_UE.RunScenario()
AS_UE.WaitEndScenario()
AS_UE.KillASUE()
else:
logging.debug("Incorrect UE Kind was detected")
def InitializeOAIUE(self,HTML,RAN,EPC,COTS_UE,InfraUE,CONTAINERS):
@@ -1570,16 +1585,23 @@ class OaiCiTest():
SSH = sshconnection.SSHConnection()
# Launch ping on the EPC side (true for ltebox and old open-air-cn)
# But for OAI-Rel14-CUPS, we launch from python executor
ping_status = 0
launchFromEpc = True
launchFromModule = False
launchFromASUE = False
if re.match('OAI-Rel14-CUPS', EPC.Type, re.IGNORECASE):
launchFromEpc = False
#if module, ping from module to EPC
if self.ue_id!='':
launchFromEpc = False
launchfromModule = True
ping_time = re.findall("-c (\d+)",str(self.ping_args))
if (re.match('amarisoft', self.ue_id, re.IGNORECASE)):
launchFromEpc = False
launchFromASUE = True
else:
launchFromEpc = False
launchFromModule = True
#no ping args for ASUE
if self.ping_args!='':
ping_time = re.findall("-c (\d+)",str(self.ping_args))
if launchFromEpc:
SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password)
@@ -1597,14 +1619,14 @@ class OaiCiTest():
#copy the ping log file to have it locally for analysis (ping stats)
SSH.copyin(EPC.IPAddress, EPC.UserName, EPC.Password, EPC.SourceCodePath + '/scripts/ping_' + self.testCase_id + '_' + device_id + '.log', '.')
else:
if launchfromModule == False:
if (launchFromModule == False) and (launchFromASUE == False):
#ping log file is on the python executor
cmd = 'ping ' + self.ping_args + ' ' + UE_IPAddress + ' > ping_' + self.testCase_id + '_' + device_id + '.log 2>&1'
message = cmd + '\n'
logging.debug(cmd)
ret = subprocess.run(cmd, shell=True)
ping_status = ret.returncode
#copy the ping log file to an other folder for log collection (source and destination are EPC)
#copy the ping log file to an other folder for log collection (source and desti elif (launchfromModule == True) and (launchfromASUE == False): #launch from Modulenation are EPC)
SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, 'ping_' + self.testCase_id + '_' + device_id + '.log', EPC.SourceCodePath + '/scripts')
#copy the ping log file to have it locally for analysis (ping stats)
logging.debug(EPC.SourceCodePath + 'ping_' + self.testCase_id + '_' + device_id + '.log')
@@ -1614,7 +1636,8 @@ class OaiCiTest():
#cat is executed on EPC
SSH.command('cat ' + EPC.SourceCodePath + '/scripts/ping_' + self.testCase_id + '_' + device_id + '.log', '\$', 5)
ping_log_file='/scripts/ping_' + self.testCase_id + '_' + device_id + '.log'
else: #launch from Module
elif (launchFromModule == True) and (launchFromASUE == False): #launch from Module
SSH.open(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword)
#target address is different depending on EPC type
if re.match('OAI-Rel14-Docker', EPC.Type, re.IGNORECASE):
@@ -1626,13 +1649,27 @@ class OaiCiTest():
#ping from module NIC rather than IP address to make sure round trip is over the air
cmd = 'ping -I ' + Module_UE.UENetwork + ' ' + self.ping_args + ' ' + Target + ' > ping_' + self.testCase_id + '_' + self.ue_id + '.log 2>&1'
SSH.command(cmd,'\$',int(ping_time[0])*1.5)
#copy the ping log file to have it locally for analysis (ping stats)
SSH.copyin(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword, 'ping_' + self.testCase_id + '_' + self.ue_id + '.log', '.')
#cat is executed locally
SSH.command('cat ping_' + self.testCase_id + '_' + self.ue_id + '.log', '\$', 5)
ping_log_file='ping_' + self.testCase_id + '_' + self.ue_id + '.log'
ping_status=0
elif (launchFromASUE == True):
#ping was already executed when running scenario
#we only need to retrieve ping log file, whose location is in the ci_ueinfra.yaml
logging.debug("Get logs from AS server : " + Module_UE.Ping + ", " + Module_UE.UELog)
SSH.copyin(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword, Module_UE.Ping, '.')
SSH.copyin(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword, Module_UE.UELog, '.')
logging.debug("Ping analysis from Amarisoft scenario")
path,ping_log_file = os.path.split(Module_UE.Ping)
SSH.open(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword)
SSH.command('cat ' + Module_UE.Ping, '\#', 5)
else:
ping_status=-1
# TIMEOUT CASE
if ping_status < 0:
@@ -1680,28 +1717,30 @@ class OaiCiTest():
#adding extra ping stats from local file
#ping_log_file variable is defined above in this function, depending on device/ue
logging.debug('Analyzing Ping log file : ' + os.getcwd() + '/' + ping_log_file)
ping_stat=GetPingTimeAnalysis(RAN,ping_log_file,self.ping_rttavg_threshold)
ping_stat_msg=''
if (ping_stat!=-1) and (len(ping_stat)!=0):
ping_stat_msg+='Ping stats before removing largest value : \n'
ping_stat_msg+='RTT(Min) : ' + str("{:.2f}".format(ping_stat['min_0'])) + 'ms \n'
ping_stat_msg+='RTT(Mean) : ' + str("{:.2f}".format(ping_stat['mean_0'])) + 'ms \n'
ping_stat_msg+='RTT(Median) : ' + str("{:.2f}".format(ping_stat['median_0'])) + 'ms \n'
ping_stat_msg+='RTT(Max) : ' + str("{:.2f}".format(ping_stat['max_0'])) + 'ms \n'
ping_stat_msg+='Max Index : ' + str(ping_stat['max_loc']) + '\n'
ping_stat_msg+='Ping stats after removing largest value : \n'
ping_stat_msg+='RTT(Min) : ' + str("{:.2f}".format(ping_stat['min_1'])) + 'ms \n'
ping_stat_msg+='RTT(Mean) : ' + str("{:.2f}".format(ping_stat['mean_1'])) + 'ms \n'
ping_stat_msg+='RTT(Median) : ' + str("{:.2f}".format(ping_stat['median_1'])) + 'ms \n'
ping_stat_msg+='RTT(Max) : ' + str("{:.2f}".format(ping_stat['max_1'])) + 'ms \n'
if launchFromASUE == False : #skip in case of AS UE (for the moment)
logging.debug('Analyzing Ping log file : ' + os.getcwd() + '/' + ping_log_file)
ping_stat=GetPingTimeAnalysis(RAN,ping_log_file,self.ping_rttavg_threshold)
if (ping_stat!=-1) and (len(ping_stat)!=0):
ping_stat_msg+='Ping stats before removing largest value : \n'
ping_stat_msg+='RTT(Min) : ' + str("{:.2f}".format(ping_stat['min_0'])) + 'ms \n'
ping_stat_msg+='RTT(Mean) : ' + str("{:.2f}".format(ping_stat['mean_0'])) + 'ms \n'
ping_stat_msg+='RTT(Median) : ' + str("{:.2f}".format(ping_stat['median_0'])) + 'ms \n'
ping_stat_msg+='RTT(Max) : ' + str("{:.2f}".format(ping_stat['max_0'])) + 'ms \n'
ping_stat_msg+='Max Index : ' + str(ping_stat['max_loc']) + '\n'
ping_stat_msg+='Ping stats after removing largest value : \n'
ping_stat_msg+='RTT(Min) : ' + str("{:.2f}".format(ping_stat['min_1'])) + 'ms \n'
ping_stat_msg+='RTT(Mean) : ' + str("{:.2f}".format(ping_stat['mean_1'])) + 'ms \n'
ping_stat_msg+='RTT(Median) : ' + str("{:.2f}".format(ping_stat['median_1'])) + 'ms \n'
ping_stat_msg+='RTT(Max) : ' + str("{:.2f}".format(ping_stat['max_1'])) + 'ms \n'
#building html message
qMsg = pal_msg + '\n' + min_msg + '\n' + avg_msg + '\n' + max_msg + '\n' + ping_stat_msg
#checking packet loss compliance
packetLossOK = True
if packetloss is not None:
if (packetloss is not None) :
if float(packetloss) > float(self.ping_packetloss_threshold):
qMsg += '\nPacket Loss too high'
logging.debug('\u001B[1;37;41m Packet Loss too high; Target: '+ self.ping_packetloss_threshold + '%\u001B[0m')
@@ -1729,6 +1768,7 @@ class OaiCiTest():
lock.release()
SSH.close()
except:
logging.debug('exit from Ping_Common except')
os.kill(os.getppid(),signal.SIGUSR1)
def PingNoS1_wrong_exit(self, qMsg,HTML):
@@ -1856,11 +1896,21 @@ class OaiCiTest():
HTML.CreateHtmlTestRow(self.ping_args, 'KO', CONST.UE_IP_ADDRESS_ISSUE)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS)
return
else:
self.UEIPAddresses=[]
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
Module_UE.GetModuleIPAddress()
self.UEIPAddresses.append(Module_UE.UEIPAddress)
else: #if an ID is specified, it is a UE from the yaml infrastructure file
ue_kind = InfraUE.ci_ue_infra[self.ue_id]['Kind']
logging.debug("Detected UE Kind : " + ue_kind)
if ue_kind == 'quectel':
self.UEIPAddresses=[]
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
Module_UE.GetModuleIPAddress()
self.UEIPAddresses.append(Module_UE.UEIPAddress)
elif ue_kind == 'amarisoft':
self.UEIPAddresses=['AS UE IP']
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
else:
logging.debug("Incorrect UE Kind was detected")
logging.debug(self.UEIPAddresses)
multi_jobs = []
i = 0
@@ -1871,6 +1921,7 @@ class OaiCiTest():
device_id = self.UEDevices[i]
else:
device_id = Module_UE.ID + "-" + Module_UE.Kind
logging.debug(device_id)
p = Process(target = self.Ping_common, args = (lock,UE_IPAddress,device_id,status_queue,EPC,Module_UE,RAN,))
p.daemon = True
p.start()
@@ -3156,10 +3207,12 @@ class OaiCiTest():
nrFoundDCI = 0
nrCRCOK = 0
mbms_messages = 0
nbPduSessAccept = 0
nbPduDiscard = 0
HTML.htmlUEFailureMsg=''
global_status = CONST.ALL_PROCESSES_OK
for line in ue_log_file.readlines():
result = re.search('nr_synchro_time', str(line))
result = re.search('nr_synchro_time|Starting NR UE soft modem', str(line))
if result is not None:
nrUEFlag = True
if nrUEFlag:
@@ -3172,6 +3225,15 @@ class OaiCiTest():
result = re.search('CRC OK', str(line))
if result is not None:
nrCRCOK += 1
result = re.search('Received PDU Session Establishment Accept', str(line))
if result is not None:
nbPduSessAccept += 1
result = re.search('warning: discard PDU, sn out of window', str(line))
if result is not None:
nbPduDiscard += 1
result = re.search('--nfapi 5 --node-number 2 --sa', str(line))
if result is not None:
frequency_found = True
result = re.search('Exiting OAI softmodem', str(line))
if result is not None:
exitSignalReceived = True
@@ -3302,21 +3364,29 @@ class OaiCiTest():
HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n'
if nrUEFlag:
if nrDecodeMib > 0:
statMsg = 'UE showed ' + str(nrDecodeMib) + ' MIB decode message(s)'
statMsg = 'UE showed ' + str(nrDecodeMib) + ' "MIB decode" message(s)'
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n'
if nrFoundDCI > 0:
statMsg = 'UE showed ' + str(nrFoundDCI) + ' DCI found message(s)'
statMsg = 'UE showed ' + str(nrFoundDCI) + ' "DCI found" message(s)'
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n'
if nrCRCOK > 0:
statMsg = 'UE showed ' + str(nrCRCOK) + ' PDSCH decoding message(s)'
statMsg = 'UE showed ' + str(nrCRCOK) + ' "PDSCH decoding" message(s)'
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n'
if not frequency_found:
statMsg = 'NR-UE could NOT synch!'
logging.error('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n'
if nbPduSessAccept > 0:
statMsg = 'UE showed ' + str(nbPduSessAccept) + ' "Received PDU Session Establishment Accept" message(s)'
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n'
if nbPduDiscard > 0:
statMsg = 'UE showed ' + str(nbPduDiscard) + ' "warning: discard PDU, sn out of window" message(s)'
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n'
if uciStatMsgCount > 0:
statMsg = 'UE showed ' + str(uciStatMsgCount) + ' "uci->stat" message(s)'
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
@@ -3447,16 +3517,23 @@ class OaiCiTest():
job.join()
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
else: #if an ID is specified, it is a module from the yaml infrastructure file
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
Module_UE.ue_trace=ue_trace
Module_UE.Command("detach")
Module_UE.DisableTrace()
Module_UE.DisableCM()
archive_destination=Module_UE.LogCollect()
if Module_UE.ue_trace=='yes':
HTML.CreateHtmlTestRow('QLog at : '+archive_destination, 'OK', CONST.ALL_PROCESSES_OK)
ue_kind = InfraUE.ci_ue_infra[self.ue_id]['Kind']
logging.debug("Detected UE Kind : " + ue_kind)
if ue_kind == 'quectel':
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
Module_UE.ue_trace=ue_trace
Module_UE.Command("detach")
Module_UE.DisableTrace()
Module_UE.DisableCM()
archive_destination=Module_UE.LogCollect()
if Module_UE.ue_trace=='yes':
HTML.CreateHtmlTestRow('QLog at : '+archive_destination, 'OK', CONST.ALL_PROCESSES_OK)
else:
HTML.CreateHtmlTestRow('QLog trace is disabled', 'OK', CONST.ALL_PROCESSES_OK)
elif ue_kind == 'amarisoft':
HTML.CreateHtmlTestRow('AS UE is already terminated', 'OK', CONST.ALL_PROCESSES_OK)
else:
HTML.CreateHtmlTestRow('QLog trace is disabled', 'OK', CONST.ALL_PROCESSES_OK)
logging.debug("Incorrect UE Kind was detected")
def TerminateOAIUE(self,HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS):
SSH = sshconnection.SSHConnection()
@@ -231,7 +231,7 @@ RUs = (
local_rf = "yes"
nb_tx = 2
nb_rx = 2
att_tx = 0
att_tx = 10
att_rx = 5;
bands = [38];
max_pdschReferenceSignalPower = -27;
@@ -33,9 +33,6 @@ gNBs =
////////// Physical parameters:
ssb_SubcarrierOffset = 0;
pdsch_AntennaPorts = 1;
pusch_AntennaPorts = 1;
ul_prbblacklist = "51,52,53,54"
min_rxtxtime = 6;
pdcch_ConfigSIB1 = (
{
@@ -73,15 +70,6 @@ gNBs =
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 12;
initialDLBWPsearchSpaceZero = 0;
#pdsch-ConfigCommon
#pdschTimeDomainAllocationList (up to 16 entries)
initialDLBWPk0_0 = 0; #for DL slot
initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB
initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13
initialDLBWPk0_1 = 0; #for mixed slot
initialDLBWPmappingType_1 = 0;
initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5
#uplinkConfigCommon
#frequencyInfoUL
@@ -136,19 +124,6 @@ gNBs =
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig = 0,
# pusch-ConfigCommon (up to 16 elements)
initialULBWPk2_0 = 6; # used for UL slot
initialULBWPmappingType_0 = 1
initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13
initialULBWPk2_1 = 6; # used for mixed slot
initialULBWPmappingType_1 = 1;
initialULBWPstartSymbolAndLength_1 = 52; # this is SS=10 L=4
initialULBWPk2_2 = 7; # used for Msg.3 during RA
initialULBWPmappingType_2 = 1;
initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4
msg3_DeltaPreamble = 1;
p0_NominalWithGrant =-90;
@@ -1,45 +0,0 @@
log_config = {
global_log_level ="info";
hw_log_level ="info";
phy_log_level ="info";
mac_log_level ="info";
rlc_log_level ="info";
pdcp_log_level ="info";
rrc_log_level ="info";
};
uicc0 = {
imsi = "208950000000031";
key = "0c0a34601d4f07677303652c0462535b";
opc= "63bfa50ee6523365ff14c1f45f88737d";
dnn= "oai";
nssai_sst=222;
nssai_sd=123;
}
L1s = (
{
num_cc = 1;
tr_n_preference = "nfapi";
local_n_if_name = "ens3";
remote_n_address = "127.0.0.1"; //Proxy IP
local_n_address = "127.0.0.1";
local_n_portc = 50600;
remote_n_portc = 50601;
local_n_portd = 50610;
remote_n_portd = 50611;
}
);
RUs = (
{
local_rf = "yes"
nb_tx = 1
nb_rx = 1
att_tx = 90
att_rx = 0;
bands = [7,38,42,43];
max_pdschReferenceSignalPower = -27;
max_rxgain = 125;
}
);
@@ -1,45 +0,0 @@
log_config = {
global_log_level ="info";
hw_log_level ="info";
phy_log_level ="info";
mac_log_level ="info";
rlc_log_level ="info";
pdcp_log_level ="info";
rrc_log_level ="info";
};
uicc0 = {
imsi = "208950000000032";
key = "0c0a34601d4f07677303652c0462535b";
opc= "63bfa50ee6523365ff14c1f45f88737d";
dnn= "oai";
nssai_sst=222;
nssai_sd=123;
}
L1s = (
{
num_cc = 1;
tr_n_preference = "nfapi";
local_n_if_name = "ens3";
remote_n_address = "127.0.0.1"; //Proxy IP
local_n_address = "127.0.0.1";
local_n_portc = 50600;
remote_n_portc = 50601;
local_n_portd = 50610;
remote_n_portd = 50611;
}
);
RUs = (
{
local_rf = "yes"
nb_tx = 1
nb_rx = 1
att_tx = 90
att_rx = 0;
bands = [7,38,42,43];
max_pdschReferenceSignalPower = -27;
max_rxgain = 125;
}
);
@@ -1,45 +0,0 @@
log_config = {
global_log_level ="info";
hw_log_level ="info";
phy_log_level ="info";
mac_log_level ="info";
rlc_log_level ="info";
pdcp_log_level ="info";
rrc_log_level ="info";
};
uicc0 = {
imsi = "208950000000033";
key = "0c0a34601d4f07677303652c0462535b";
opc= "63bfa50ee6523365ff14c1f45f88737d";
dnn= "oai";
nssai_sst=222;
nssai_sd=123;
}
L1s = (
{
num_cc = 1;
tr_n_preference = "nfapi";
local_n_if_name = "ens3";
remote_n_address = "127.0.0.1"; //Proxy IP
local_n_address = "127.0.0.1";
local_n_portc = 50600;
remote_n_portc = 50601;
local_n_portd = 50610;
remote_n_portd = 50611;
}
);
RUs = (
{
local_rf = "yes"
nb_tx = 1
nb_rx = 1
att_tx = 90
att_rx = 0;
bands = [7,38,42,43];
max_pdschReferenceSignalPower = -27;
max_rxgain = 125;
}
);
@@ -1,45 +0,0 @@
log_config = {
global_log_level ="info";
hw_log_level ="info";
phy_log_level ="info";
mac_log_level ="info";
rlc_log_level ="info";
pdcp_log_level ="info";
rrc_log_level ="info";
};
uicc0 = {
imsi = "208950000000034";
key = "0c0a34601d4f07677303652c0462535b";
opc= "63bfa50ee6523365ff14c1f45f88737d";
dnn= "oai";
nssai_sst=222;
nssai_sd=123;
}
L1s = (
{
num_cc = 1;
tr_n_preference = "nfapi";
local_n_if_name = "ens3";
remote_n_address = "127.0.0.1"; //Proxy IP
local_n_address = "127.0.0.1";
local_n_portc = 50600;
remote_n_portc = 50601;
local_n_portd = 50610;
remote_n_portd = 50611;
}
);
RUs = (
{
local_rf = "yes"
nb_tx = 1
nb_rx = 1
att_tx = 90
att_rx = 0;
bands = [7,38,42,43];
max_pdschReferenceSignalPower = -27;
max_rxgain = 125;
}
);
@@ -22,9 +22,14 @@ gNBs =
////////// Physical parameters:
ssb_SubcarrierOffset = 31; //0;
pdsch_AntennaPorts = 1;
pusch_AntennaPorts = 1;
min_rxtxtime = 6;
pdcch_ConfigSIB1 = (
{
controlResourceSetZero = 12;
searchSpaceZero = 0;
}
);
servingCellConfigCommon = (
{
#spCellConfigCommon
@@ -54,15 +59,6 @@ gNBs =
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 0;
initialDLBWPsearchSpaceZero = 0;
#pdsch-ConfigCommon
#pdschTimeDomainAllocationList (up to 16 entries)
initialDLBWPk0_0 = 0; #for DL slot
initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB
initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13
initialDLBWPk0_1 = 0; #for mixed slot
initialDLBWPmappingType_1 = 0;
initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5
#uplinkConfigCommon
#frequencyInfoUL
@@ -117,18 +113,6 @@ gNBs =
# restrictedSetConfig
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig = 0,
# pusch-ConfigCommon (up to 16 elements)
initialULBWPk2_0 = 6; # used for UL slot
initialULBWPmappingType_0 = 1
initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13
initialULBWPk2_1 = 6; # used for mixed slot
initialULBWPmappingType_1 = 1;
initialULBWPstartSymbolAndLength_1 = 52; # this is SS=10 L=4
initialULBWPk2_2 = 7; # used for Msg.3 during RA
initialULBWPmappingType_2 = 1;
initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4
msg3_DeltaPreamble = 1;
p0_NominalWithGrant =-90;
@@ -33,9 +33,6 @@ gNBs =
////////// Physical parameters:
ssb_SubcarrierOffset = 0;
pdsch_AntennaPorts = 1;
pusch_AntennaPorts = 1;
ul_prbblacklist = "51,52,53,54"
min_rxtxtime = 6;
pdcch_ConfigSIB1 = (
@@ -74,15 +71,6 @@ gNBs =
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 12;
initialDLBWPsearchSpaceZero = 0;
#pdsch-ConfigCommon
#pdschTimeDomainAllocationList (up to 16 entries)
initialDLBWPk0_0 = 0; #for DL slot
initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB
initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13
initialDLBWPk0_1 = 0; #for mixed slot
initialDLBWPmappingType_1 = 0;
initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5
#uplinkConfigCommon
#frequencyInfoUL
@@ -137,19 +125,6 @@ gNBs =
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig = 0,
# pusch-ConfigCommon (up to 16 elements)
initialULBWPk2_0 = 6; # used for UL slot
initialULBWPmappingType_0 = 1
initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13
initialULBWPk2_1 = 6; # used for mixed slot
initialULBWPmappingType_1 = 1;
initialULBWPstartSymbolAndLength_1 = 52; # this is SS=10 L=4
initialULBWPk2_2 = 7; # used for Msg.3 during RA
initialULBWPmappingType_2 = 1;
initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4
msg3_DeltaPreamble = 1;
p0_NominalWithGrant =-90;
@@ -22,7 +22,7 @@ gNBs =
////////// Physical parameters:
ssb_SubcarrierOffset = 0;
pdsch_AntennaPorts = 1;
min_rxtxtime = 6;
servingCellConfigCommon = (
{
@@ -53,29 +53,6 @@ gNBs =
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 12;
initialDLBWPsearchSpaceZero = 0;
#pdsch-ConfigCommon
#pdschTimeDomainAllocationList (up to 16 entries)
initialDLBWPk0_0 = 0;
#initialULBWPmappingType
#0=typeA,1=typeB
initialDLBWPmappingType_0 = 0;
#this is SS=1,L=13
initialDLBWPstartSymbolAndLength_0 = 40;
initialDLBWPk0_1 = 0;
initialDLBWPmappingType_1 = 0;
#this is SS=2,L=12
initialDLBWPstartSymbolAndLength_1 = 53;
initialDLBWPk0_2 = 0;
initialDLBWPmappingType_2 = 0;
#this is SS=1,L=12
initialDLBWPstartSymbolAndLength_2 = 54;
initialDLBWPk0_3 = 0;
initialDLBWPmappingType_3 = 0;
#this is SS=1,L=5
initialDLBWPstartSymbolAndLength_3 = 57;
#uplinkConfigCommon
#frequencyInfoUL
@@ -130,22 +107,6 @@ gNBs =
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig = 0,
# pusch-ConfigCommon (up to 16 elements)
initialULBWPk2_0 = 6;
initialULBWPmappingType_0 = 1
# this is SS=0 L=11
initialULBWPstartSymbolAndLength_0 = 55;
initialULBWPk2_1 = 6;
initialULBWPmappingType_1 = 1;
# this is SS=0 L=12
initialULBWPstartSymbolAndLength_1 = 69;
initialULBWPk2_2 = 7;
initialULBWPmappingType_2 = 1;
# this is SS=10 L=4
initialULBWPstartSymbolAndLength_2 = 52;
msg3_DeltaPreamble = 1;
p0_NominalWithGrant =-90;
@@ -0,0 +1,308 @@
Active_gNBs = ( "gNB-OAI");
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity = "none";
gNBs =
(
{
////////// Identification parameters:
gNB_CU_ID = 0xe00;
# cell_type = "CELL_MACRO_GNB";
gNB_name = "gNB-OAI";
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 208;
mnc = 97;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L
# tr_s_preference = "local_mac"
////////// Physical parameters:
ssb_SubcarrierOffset = 0;
pdsch_AntennaPorts = 1;
pusch_AntennaPorts = 2;
ul_prbblacklist = "51,52,53,54"
do_SRS = 1;
pdcch_ConfigSIB1 = (
{
controlResourceSetZero = 11;
searchSpaceZero = 0;
}
);
servingCellConfigCommon = (
{
#spCellConfigCommon
physCellId = 0;
# downlinkConfigCommon
#frequencyInfoDL
# this is 3301.68 MHz + 22*12*30e-3 MHz = 3309.6
#absoluteFrequencySSB = 620640;
# this is 3300.60 MHz + 53*12*30e-3 MHz = 3319.68
absoluteFrequencySSB = 621312;
# this is 3503.28 MHz + 22*12*30e-3 MHz = 3511.2
#absoluteFrequencySSB = 634080;
# this is 3600.48 MHz
#absoluteFrequencySSB = 640032;
#dl_frequencyBand = 78;
# this is 3301.68 MHz
#dl_absoluteFrequencyPointA = 620112;
# this is 3300.60 MHz
dl_absoluteFrequencyPointA = 620040;
# this is 3502.56 MHz
#dl_absoluteFrequencyPointA = 633552;
# this is 3600.48 MHz
#dl_absoluteFrequencyPointA = 640032;
#scs-SpecificCarrierList
dl_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 106;
#initialDownlinkBWP
#genericParameters
# this is RBstart=0,L=106 (275*(L-1))+RBstart
initialDLBWPlocationAndBandwidth = 28875;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing = 1;
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 11;
initialDLBWPsearchSpaceZero = 0;
#uplinkConfigCommon
#frequencyInfoUL
ul_frequencyBand = 78;
#scs-SpecificCarrierList
ul_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing = 1;
ul_carrierBandwidth = 106;
pMax = 20;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth = 28875;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing = 1;
#rach-ConfigCommon
#rach-ConfigGeneric
prach_ConfigurationIndex = 98;
#prach_msg1_FDM
#0 = one, 1=two, 2=four, 3=eight
prach_msg1_FDM = 0;
prach_msg1_FrequencyStart = 0;
zeroCorrelationZoneConfig = 12;
preambleReceivedTargetPower = -104;
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
preambleTransMax = 6;
#powerRampingStep
# 0=dB0,1=dB2,2=dB4,3=dB6
powerRampingStep = 1;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow = 4;
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
#oneHalf (0..15) 4,8,12,16,...60,64
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
#ra_ContentionResolutionTimer
#(0..7) 8,16,24,32,40,48,56,64
ra_ContentionResolutionTimer = 7;
rsrp_ThresholdSSB = 19;
#prach-RootSequenceIndex_PR
#1 = 839, 2 = 139
prach_RootSequenceIndex_PR = 2;
prach_RootSequenceIndex = 1;
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
#
msg1_SubcarrierSpacing = 1,
# restrictedSetConfig
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig = 0,
msg3_DeltaPreamble = 1;
p0_NominalWithGrant =-90;
# pucch-ConfigCommon setup :
# pucchGroupHopping
# 0 = neither, 1= group hopping, 2=sequence hopping
pucchGroupHopping = 0;
hoppingId = 40;
p0_nominal = -90;
# ssb_PositionsInBurs_BitmapPR
# 1=short, 2=medium, 3=long
ssb_PositionsInBurst_PR = 2;
ssb_PositionsInBurst_Bitmap = 1;
# ssb_periodicityServingCell
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
ssb_periodicityServingCell = 2;
# dmrs_TypeA_position
# 0 = pos2, 1 = pos3
dmrs_TypeA_Position = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
subcarrierSpacing = 1;
#tdd-UL-DL-ConfigurationCommon
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
referenceSubcarrierSpacing = 1;
# pattern1
# dl_UL_TransmissionPeriodicity
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
dl_UL_TransmissionPeriodicity = 6;
nrofDownlinkSlots = 7;
nrofDownlinkSymbols = 6;
nrofUplinkSlots = 2;
nrofUplinkSymbols = 4;
ssPBCH_BlockPower = -25;
}
);
# ------- SCTP definitions
SCTP :
{
# Number of streams to use in input/output
SCTP_INSTREAMS = 2;
SCTP_OUTSTREAMS = 2;
};
////////// AMF parameters:
amf_ip_address = ( { ipv4 = "CI_MME_IP_ADDR";
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
}
);
NETWORK_INTERFACES :
{
GNB_INTERFACE_NAME_FOR_NG_AMF = "em1";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "CI_GNB_IP_ADDR";
GNB_INTERFACE_NAME_FOR_NGU = "em1";
GNB_IPV4_ADDRESS_FOR_NGU = "CI_GNB_IP_ADDR";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};
}
);
MACRLCs = (
{
num_cc = 1;
tr_s_preference = "local_L1";
tr_n_preference = "local_RRC";
# pusch_TargetSNRx10 = 200;
# pucch_TargetSNRx10 = 150;
ulsch_max_frame_inactivity = 0;
}
);
L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
prach_dtx_threshold = 120;
# pucch0_dtx_threshold = 150;
}
);
RUs = (
{
local_rf = "yes"
nb_tx = 2
nb_rx = 2
att_tx = 0
att_rx = 0;
bands = [78];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;
eNB_instances = [0];
##beamforming 1x2 matrix: 1 layer x 2 antennas
bf_weights = [0x00007fff, 0x0000];
##beamforming 1x4 matrix: 1 layer x 4 antennas
#bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000];
## beamforming 2x2 matrix:
# bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff];
## beamforming 4x4 matrix:
#bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff];
sf_extension = 0
sdr_addrs = "mgmt_addr=192.168.18.252,addr=192.168.10.2,second_addr=192.168.20.2,clock_source=internal,time_source=internal"
}
);
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_ENABLE";
}
);
#security = {
# preferred ciphering algorithms
# the first one of the list that an UE supports in chosen
# valid values: nea0, nea1, nea2, nea3
# ciphering_algorithms = ( "nea2" );
# preferred integrity algorithms
# the first one of the list that an UE supports in chosen
# valid values: nia0, nia1, nia2, nia3
# integrity_algorithms = ( "nia2", "nia0" );
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
# drb_ciphering = "yes";
# drb_integrity = "no";
#};
log_config :
{
global_log_level ="info";
hw_log_level ="info";
phy_log_level ="info";
mac_log_level ="info";
rlc_log_level ="info";
pdcp_log_level ="info";
rrc_log_level ="info";
f1ap_log_level ="debug";
};
+6 -4
View File
@@ -66,6 +66,8 @@ class EPCManagement():
self.mmeConfFile = 'mme.conf'
self.yamlPath = ''
self.isMagmaUsed = False
self.cfgDeploy = '--type start-mini --fqdn yes --scenario 1 --capture /tmp/oai-cn5g-v1.3.pcap' #from xml, 'mini' is default normal for docker-network.py
self.cfgUnDeploy = '--type stop-mini --fqdn yes --scenario 1' #from xml, 'mini' is default normal for docker-network.py
#-----------------------------------------------------------
@@ -251,8 +253,8 @@ class EPCManagement():
logging.debug('Starting OAI CN5G')
mySSH.command('if [ -d ' + self.SourceCodePath + '/scripts ]; then echo ' + self.Password + ' | sudo -S rm -Rf ' + self.SourceCodePath + '/scripts ; fi', '\$', 5)
mySSH.command('mkdir -p ' + self.SourceCodePath + '/scripts', '\$', 5)
mySSH.command('cd /opt/oai-cn5g-fed/docker-compose', '\$', 5)
mySSH.command('./core-network.sh start nrf spgwu', '\$', 60)
mySSH.command('cd /opt/oai-cn5g-fed-v1.3/docker-compose', '\$', 5)
mySSH.command('python3 ./core-network.py '+self.cfgDeploy, '\$', 60)
time.sleep(2)
mySSH.command('docker-compose -p 5gcn ps -a', '\$', 60)
if mySSH.getBefore().count('Up (healthy)') != 6:
@@ -530,8 +532,8 @@ class EPCManagement():
mySSH.command('docker logs ' + c + ' > ' + self.SourceCodePath + '/logs/' + c + '.log', '\$', 5)
logging.debug('Terminating OAI CN5G')
mySSH.command('cd /opt/oai-cn5g-fed/docker-compose', '\$', 5)
mySSH.command('./core-network.sh stop nrf spgwu', '\$', 60)
mySSH.command('cd /opt/oai-cn5g-fed-v1.3/docker-compose', '\$', 5)
mySSH.command('python3 ./core-network.py '+self.cfgUnDeploy, '\$', 60)
mySSH.command('docker volume prune --force || true', '\$', 60)
time.sleep(2)
mySSH.command('tshark -r /tmp/oai-cn5g.pcap | egrep --colour=never "Tracking area update" ','\$', 30)
+13 -1
View File
@@ -376,6 +376,16 @@ def GetParametersFromXML(action):
if (string_field is not None):
EPC.yamlPath = string_field
elif action == 'Initialize_5GCN':
string_field = test.findtext('args')
if (string_field is not None):
EPC.cfgDeploy = string_field
elif action == 'Terminate_5GCN':
string_field = test.findtext('args')
if (string_field is not None):
EPC.cfgUnDeploy = string_field
elif action == 'Deploy_Object' or action == 'Undeploy_Object':
eNB_instance=test.findtext('eNB_instance')
if (eNB_instance is None):
@@ -391,7 +401,7 @@ def GetParametersFromXML(action):
if (string_field is not None):
CONTAINERS.yamlPath[CONTAINERS.eNB_instance] = string_field
elif action == 'DeployGenObject' or action == 'UndeployGenObject':
elif action == 'DeployGenObject' or action == 'UndeployGenObject' or action == 'StatsFromGenObject':
string_field=test.findtext('yaml_path')
if (string_field is not None):
CONTAINERS.yamlPath[0] = string_field
@@ -931,6 +941,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
CONTAINERS.IperfFromContainer(HTML, RAN)
if CONTAINERS.exitStatus==1:
RAN.prematureExit = True
elif action == 'StatsFromGenObject':
CONTAINERS.StatsFromGenObject(HTML)
else:
sys.exit('Invalid class (action) from xml')
if RAN.prematureExit:
+21 -8
View File
@@ -677,13 +677,13 @@ class RANManagement():
# if T tracer was run with option 0 (no logs), analyze logs
# from textlog, otherwise do normal analysis (e.g., option 2)
result = re.search('T_stdout 0', str(self.Initialize_eNB_args))
enbLogFile = self.eNBLogFiles[int(self.eNB_instance)]
raw_record_file = enbLogFile.replace('.log', '_record.raw')
replay_log_file = enbLogFile.replace('.log', '_replay.log')
if (result is not None):
logging.debug('\u001B[1m Replaying RAW record file\u001B[0m')
mySSH.open(lIpAddr, lUserName, lPassWord)
mySSH.command('cd ' + lSourcePath + '/common/utils/T/tracer/', '\$', 5)
enbLogFile = self.eNBLogFiles[int(self.eNB_instance)]
raw_record_file = enbLogFile.replace('.log', '_record.raw')
replay_log_file = enbLogFile.replace('.log', '_replay.log')
extracted_txt_file = enbLogFile.replace('.log', '_extracted_messages.txt')
extracted_log_file = enbLogFile.replace('.log', '_extracted_messages.log')
mySSH.command('./extract_config -i ' + lSourcePath + '/cmake_targets/' + raw_record_file + ' > ' + lSourcePath + '/cmake_targets/' + extracted_txt_file, '\$', 5)
@@ -706,8 +706,6 @@ class RANManagement():
mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/*stats.log', '.')
mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/*.pickle', '.')
mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/*.png', '.')
mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/'+raw_record_file, '.')
mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/'+replay_log_file, '.')
#
copyin_res = mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/' + fileToAnalyze, '.')
if (copyin_res == -1):
@@ -723,9 +721,7 @@ class RANManagement():
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './nrL1_stats.log', self.eNBSourceCodePath + '/cmake_targets/')
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './nrMAC_stats.log', self.eNBSourceCodePath + '/cmake_targets/')
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './gnb_stats_monitor.pickle', self.eNBSourceCodePath + '/cmake_targets/')
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './gnb_stats_monitor.png', self.eNBSourceCodePath + '/cmake_targets/')#RH 21/02/2002 this does not work, there are more than 1 png file
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword,'./'+raw_record_file, self.eNBSourceCodePath + '/cmake_targets/')
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword,'./'+replay_log_file, self.eNBSourceCodePath + '/cmake_targets/')
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './gnb_stats_monitor.png', self.eNBSourceCodePath + '/cmake_targets/')
#
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './' + fileToAnalyze, self.eNBSourceCodePath + '/cmake_targets/')
logging.debug('\u001B[1m Analyzing ' + nodeB_prefix + 'NB logfile \u001B[0m ' + fileToAnalyze)
@@ -826,6 +822,8 @@ class RANManagement():
RealTimeProcessingIssue = False
DLRetxIssue = False
ULRetxIssue = False
nrRrcRcfgComplete = 0
harqFeedbackPast = 0
line_cnt=0 #log file line counter
for line in enb_log_file.readlines():
@@ -1002,6 +1000,13 @@ class RANManagement():
#remove 1- all useless char before relevant info (ulsch or dlsch) 2- trailing char
dlsch_ulsch_stats[k]=re.sub(r'^.*\]\s+', r'' , line.rstrip())
result = re.search('Received NR_RRCReconfigurationComplete from UE', str(line))
if result is not None:
nrRrcRcfgComplete += 1
result = re.search('HARQ feedback is in the past', str(line))
if result is not None:
harqFeedbackPast += 1
#count "problem receiving samples" msg
result = re.search('\[PHY\]\s+problem receiving samples', str(line))
@@ -1089,6 +1094,14 @@ class RANManagement():
statMsg = nodeB_prefix + 'NB ran with TX Write thread enabled'
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
htmleNBFailureMsg += statMsg + '\n'
if nrRrcRcfgComplete > 0:
statMsg = nodeB_prefix + 'NB showed ' + str(nrRrcRcfgComplete) + ' "Received NR_RRCReconfigurationComplete from UE" message(s)'
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
htmleNBFailureMsg += statMsg + '\n'
if harqFeedbackPast > 0:
statMsg = nodeB_prefix + 'NB showed ' + str(harqFeedbackPast) + ' "HARQ feedback is in the past" message(s)'
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
htmleNBFailureMsg += statMsg + '\n'
#FR1 NSA test : add new markers to make sure gNB is used
if NSA_RAPROC_PUSCH_check:
statMsg = '[RAPROC] PUSCH with TC_RNTI message check for ' + nodeB_prefix + 'NB : PASS '
+37 -6
View File
@@ -1899,7 +1899,7 @@ function run_test_on_vm {
CURRENT_NR_UE_LOG_FILE=tdd_${PRB}prb_${CN_CONFIG}_ue_sa_test.log
#last argument = 2 is to enable --sa for SA test for 106PRB
start_rf_sim_nr_ue $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR $GNB_VM_IP_ADDR $CURRENT_NR_UE_LOG_FILE $PRB $FREQUENCY $S1_NOS1_CFG 2
if [ $NR_UE_SYNC -eq 0 ]
if [ $GNB_SYNC -eq 0 ] || [ $NR_UE_SYNC -eq 0 ]
then
echo "Problem w/ gNB and NR-UE not syncing"
terminate_enb_ue_basic_sim $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR 2
@@ -1939,6 +1939,12 @@ function run_test_on_vm {
SA_106PRB_STATUS=0
fi
done
#manage SYNC issue after try_cnt
if [ $SYNC_STATUS -ne 0 ]
then
echo "SA 106PRB test NOT OK, NOT SYNC'ED"
SA_106PRB_STATUS=-1
fi
########### end SA test
sleep 30
@@ -1982,7 +1988,7 @@ function run_test_on_vm {
CURRENT_NR_UE_LOG_FILE=tdd_${PRB}prb_${CN_CONFIG}_ue_sa_test.log
#last argument = 3 is to enable --sa for SA test for 24PRB
start_rf_sim_nr_ue $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR $GNB_VM_IP_ADDR $CURRENT_NR_UE_LOG_FILE $PRB $FREQUENCY $S1_NOS1_CFG 3
if [ $NR_UE_SYNC -eq 0 ]
if [ $GNB_SYNC -eq 0 ] || [ $NR_UE_SYNC -eq 0 ]
then
echo "Problem w/ gNB and NR-UE not syncing"
terminate_enb_ue_basic_sim $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR 2
@@ -2022,6 +2028,12 @@ function run_test_on_vm {
SA_24PRB_STATUS=0
fi
done
#manage SYNC issue after try_cnt
if [ $SYNC_STATUS -ne 0 ]
then
echo "SA 24PRB test NOT OK, NOT SYNC'ED"
SA_24PRB_STATUS=-1
fi
########### end SA test
sleep 30
@@ -2070,7 +2082,7 @@ function run_test_on_vm {
CURRENT_NR_UE_LOG_FILE=tdd_${PRB}prb_${CN_CONFIG}_ue_ra_fr2_test.log
#last argument = 1 is to enable --do-ra for RA test
start_rf_sim_nr_ue $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR $GNB_VM_IP_ADDR $CURRENT_NR_UE_LOG_FILE $PRB $FREQUENCY $S1_NOS1_CFG 1
if [ $NR_UE_SYNC -eq 0 ]
if [ $GNB_SYNC -eq 0 ] || [ $NR_UE_SYNC -eq 0 ]
then
echo "Problem w/ gNB and NR-UE not syncing"
terminate_enb_ue_basic_sim $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR 2
@@ -2110,6 +2122,12 @@ function run_test_on_vm {
try_cnt=$((try_cnt+10))
fi
done
#manage SYNC issue after try_cnt
if [ $SYNC_STATUS -ne 0 ]
then
echo "RA FR2 test NOT OK, NOT SYNC'ED"
RA_FR2_STATUS=-1
fi
########### end RA FR2 test
sleep 30
@@ -2172,7 +2190,7 @@ function run_test_on_vm {
CURRENT_NR_UE_LOG_FILE=${TMODE}_${PRB}prb_${CN_CONFIG}_ue_ra_test.log
#last argument = 1 is to enable --do-ra for RA test
start_rf_sim_nr_ue $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR $GNB_VM_IP_ADDR $CURRENT_NR_UE_LOG_FILE $PRB $FREQUENCY $S1_NOS1_CFG 1
if [ $NR_UE_SYNC -eq 0 ]
if [ $GNB_SYNC -eq 0 ] || [ $NR_UE_SYNC -eq 0 ]
then
echo "Problem w/ gNB and NR-UE not syncing"
terminate_enb_ue_basic_sim $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR 2
@@ -2212,6 +2230,13 @@ function run_test_on_vm {
try_cnt=$((try_cnt+10))
fi
done
#manage SYNC issue after try_cnt
if [ $SYNC_STATUS -ne 0 ]
then
echo "RA FR1 test NOT OK, NOT SYNC'ED"
RA_FR1_STATUS=-1
fi
done
########### end RA test
@@ -2253,7 +2278,7 @@ function run_test_on_vm {
echo "############################################################"
CURRENT_NR_UE_LOG_FILE=${TMODE}_${PRB}prb_${CN_CONFIG}_ue.log
start_rf_sim_nr_ue $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR $GNB_VM_IP_ADDR $CURRENT_NR_UE_LOG_FILE $PRB $FREQUENCY $S1_NOS1_CFG 0
if [ $NR_UE_SYNC -eq 0 ]
if [ $GNB_SYNC -eq 0 ] || [ $NR_UE_SYNC -eq 0 ]
then
echo "Problem w/ gNB and NR-UE not syncing"
terminate_enb_ue_basic_sim $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR 2
@@ -2332,6 +2357,13 @@ function run_test_on_vm {
try_cnt=$((try_cnt+10))
fi
done
#manage SYNC issue after try_cnt
if [ $SYNC_STATUS -ne 0 ]
then
echo "PHY test NOT OK, NOT SYNC'ED"
IPERF_STATUS=-1
fi
done
######### end of loop
full_l2_sim_destroy
@@ -2345,7 +2377,6 @@ function run_test_on_vm {
if [ $SA_24PRB_STATUS -ne 0 ]; then NR_STATUS=-1; fi
if [ $RA_FR2_STATUS -ne 0 ]; then NR_STATUS=-1; fi
if [ $RA_FR1_STATUS -ne 0 ]; then NR_STATUS=-1; fi
if [ $SYNC_STATUS -ne 0 ]; then NR_STATUS=-1; fi
if [ $PING_STATUS -ne 0 ]; then NR_STATUS=-1; fi
if [ $IPERF_STATUS -ne 0 ]; then NR_STATUS=-1; fi
if [ $NR_STATUS -eq 0 ]
+5 -4
View File
@@ -56,6 +56,7 @@ class SSHConnection():
self.picocom_closure = True
def open(self, ipaddress, username, password):
prompt = "#" if username == "root" else "\$"
count = 0
connect_status = False
while count < 4:
@@ -68,7 +69,7 @@ class SSHConnection():
self.sshresponse = self.ssh.expect(['password:', username + '@'])
if self.sshresponse == 0:
self.ssh.sendline(password)
self.sshresponse = self.ssh.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
self.sshresponse = self.ssh.expect([prompt, 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
if self.sshresponse == 0:
count = 10
connect_status = True
@@ -76,7 +77,7 @@ class SSHConnection():
logging.debug('self.sshresponse = ' + str(self.sshresponse))
elif self.sshresponse == 1:
self.ssh.sendline(password)
self.sshresponse = self.ssh.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
self.sshresponse = self.ssh.expect([prompt, 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
if self.sshresponse == 0:
count = 10
connect_status = True
@@ -84,7 +85,7 @@ class SSHConnection():
logging.debug('self.sshresponse = ' + str(self.sshresponse))
elif self.sshresponse == 2:
# Checking if we are really on the remote client defined by its IP address
self.command('stdbuf -o0 ifconfig | egrep --color=never "inet addr:|inet "', '\$', 5)
self.command('stdbuf -o0 ifconfig | egrep --color=never "inet addr:|inet "', prompt, 5)
result = re.search(str(ipaddress), str(self.ssh.before))
if result is None:
self.close()
@@ -100,7 +101,7 @@ class SSHConnection():
time.sleep(1)
count += 1
if connect_status:
self.command('unset HISTFILE', '\$', 5, silent=True)
self.command('unset HISTFILE', prompt, 5, silent=True)
else:
sys.exit('SSH Connection Failed')
self.ipaddress = ipaddress
+1
View File
@@ -46,3 +46,4 @@
- UndeployGenObject
- PingFromContainer
- IperfFromContainer
- StatsFromGenObject
@@ -0,0 +1,115 @@
<!--
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
-->
<testCaseList>
<htmlTabRef>l2sim-5gnr-tdd</htmlTabRef>
<htmlTabName>Testing 5G NR L2 sim - TDD gNB</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>2</repeatCount>
<TestCaseRequestedList>
100001
000000
000001
000002
000003
000011
200000
020001
020002
200001
100001
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="000000">
<class>DeployGenObject</class>
<desc>Deploy MySql Database</desc>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
<services>mysql</services>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000001">
<class>DeployGenObject</class>
<desc>Deploy OAI 5G CoreNetwork</desc>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
<services>oai-nrf oai-amf oai-smf oai-spgwu oai-ext-dn</services>
<nb_healthy>6</nb_healthy>
</testCase>
<testCase id="000002">
<class>DeployGenObject</class>
<desc>Deploy OAI 5G gNB L2 sim SA</desc>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
<services>oai-gnb</services>
<nb_healthy>7</nb_healthy>
</testCase>
<testCase id="000003">
<class>DeployGenObject</class>
<desc>Deploy OAI 5G NR-UE L2 sim SA and Proxy</desc>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
<services>proxy oai-nr-ue0</services>
<nb_healthy>9</nb_healthy>
</testCase>
<testCase id="000011">
<class>IdleSleep</class>
<desc>Sleep</desc>
<idle_sleep_time_in_sec>10</idle_sleep_time_in_sec>
</testCase>
<testCase id="020001">
<class>PingFromContainer</class>
<desc>Ping ext-dn from NR-UE</desc>
<container_name>l2sim-oai-nr-ue0</container_name>
<options>-I oaitun_ue1 -c 20 192.168.72.135</options>
<loss_threshold>5</loss_threshold>
</testCase>
<testCase id="020002">
<class>PingFromContainer</class>
<desc>Ping NR-UE from ext-dn</desc>
<container_name>l2sim-oai-ext-dn</container_name>
<options>-c 20 12.1.1.2</options>
<loss_threshold>5</loss_threshold>
</testCase>
<testCase id="100001">
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
</testCase>
<testCase id="200000">
<class>StatsFromGenObject</class>
<desc>Statistics before Traffic Test</desc>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
</testCase>
<testCase id="200001">
<class>StatsFromGenObject</class>
<desc>Statistics after Traffic Test</desc>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
</testCase>
</testCaseList>
@@ -0,0 +1,38 @@
<!--
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
-->
<testCaseList>
<htmlTabRef>l2sim-5gnr-down</htmlTabRef>
<htmlTabName>CleanUp 5G L2 sim - TDD gNB</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100002
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
</testCase>
</testCaseList>
@@ -0,0 +1,87 @@
<!--
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
-->
<testCaseList>
<htmlTabRef>TEST-SA-FR1-Tab1</htmlTabRef>
<htmlTabName>SA Ping DL UL with 1 AS UE</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
040000
000001
010000
000002
050000
080000
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="010000">
<class>Initialize_UE</class>
<desc>Run AS UE Scenario</desc>
<id>amarisoft_ue_1</id>
</testCase>
<testCase id="040000">
<class>Initialize_eNB</class>
<desc>Initialize gNB</desc>
<Initialize_eNB_args>-O ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.asue.conf --sa -q --usrp-tx-thread-config 1 --T_stdout 2 --log_config.global_log_options level,nocolor,time</Initialize_eNB_args>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<air_interface>nr</air_interface>
<eNB_Trace>yes</eNB_Trace>
<eNB_Stats>yes</eNB_Stats>
<rt_stats_cfg>datalog_rt_stats.2x2.yaml</rt_stats_cfg>
<USRP_IPAddress>192.168.18.252</USRP_IPAddress>
</testCase>
<testCase id="050000">
<class>Ping</class>
<desc>Ping Log Analysis</desc>
<id>amarisoft_ue_1</id>
<ping_packetloss_threshold>1</ping_packetloss_threshold>
</testCase>
<testCase id="000001">
<class>IdleSleep</class>
<desc>Sleep</desc>
<idle_sleep_time_in_sec>60</idle_sleep_time_in_sec>
</testCase>
<testCase id="000002">
<class>IdleSleep</class>
<desc>Sleep</desc>
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
</testCase>
<testCase id="080000">
<class>Terminate_eNB</class>
<desc>Terminate gNB</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<air_interface>nr</air_interface>
</testCase>
</testCaseList>
@@ -0,0 +1,38 @@
<!--
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
-->
<testCaseList>
<htmlTabRef>cn5g-closure</htmlTabRef>
<htmlTabName>CN5G-Closure</htmlTabName>
<htmlTabIcon>log-out</htmlTabIcon>
<TestCaseRequestedList>
060000
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="060000">
<class>Terminate_5GCN</class>
<desc>Terminate 5G Core</desc>
<args>--type stop-mini-as-ue --fqdn yes --scenario 1</args>
</testCase>
</testCaseList>
@@ -0,0 +1,39 @@
<!--
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
-->
<testCaseList>
<htmlTabRef>cn5g-start-tab</htmlTabRef>
<htmlTabName>CN5G-Start</htmlTabName>
<htmlTabIcon>log-in</htmlTabIcon>
<TestCaseRequestedList>
000100
</TestCaseRequestedList>
<TestCaseExclusionList>
</TestCaseExclusionList>
<testCase id="000100">
<class>Initialize_5GCN</class>
<desc>Initialize 5G Core</desc>
<args>--type start-mini-as-ue --fqdn yes --scenario 1 --capture /tmp/oai-cn5g-v1.3.pcap</args>
</testCase>
</testCaseList>
@@ -0,0 +1,355 @@
<table style="border-collapse: collapse; border: none;">
<tr style="border-collapse: collapse; border: none;">
<td style="border-collapse: collapse; border: none;">
<a href="http://www.openairinterface.org/">
<img src="../../../doc/images/oai_final_logo.png" alt="" border=3 height=50 width=150>
</img>
</a>
</td>
<td style="border-collapse: collapse; border: none; vertical-align: center;">
<b><font size = "5">OAI Full Stack 5G-NR L2 simulation with containers and a proxy</font></b>
</td>
</tr>
</table>
This page is only valid for an `Ubuntu18` host.
This tutorial is only valid once this file is merged into the `develop` branch.
# 1. Retrieving the images on Docker-Hub #
Currently the images are hosted under the user account `rdefosseoai`.
This may change in the future.
Once again you may need to log on [docker-hub](https://hub.docker.com/) if your organization has reached pulling limit as `anonymous`.
```bash
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username:
Password:
```
Now pull images.
```bash
$ docker pull mysql:5.7
$ docker pull rdefosseoai/oai-amf:latest
$ docker pull rdefosseoai/oai-nrf:latest
$ docker pull rdefosseoai/oai-smf:latest
$ docker pull rdefosseoai/oai-spgwu-tiny:latest
$ docker pull rdefosseoai/oai-gnb:develop
$ docker pull rdefosseoai/oai-nr-ue:develop
$ docker pull rdefosseoai/proxy:latest
```
And **re-tag** them for tutorials' docker-compose file to work.
```bash
$ docker image tag rdefosseoai/oai-amf:latest oai-amf:latest
$ docker image tag rdefosseoai/oai-nrf:latest oai-nrf:latest
$ docker image tag rdefosseoai/oai-smf:latest oai-smf:latest
$ docker image tag rdefosseoai/oai-spgwu-tiny:latest oai-spgwu-tiny:latest
$ docker image tag rdefosseoai/oai-gnb:develop oai-gnb:develop
$ docker image tag rdefosseoai/oai-nr-ue:develop oai-nr-ue:develop
$ docker image tag rdefosseoai/proxy:latest oai-lte-multi-ue-proxy:latest
```
```bash
$ docker logout
```
Note that the proxy image is based on the source available at [https://github.com/EpiSci/oai-lte-5g-multi-ue-proxy](https://github.com/EpiSci/oai-lte-5g-multi-ue-proxy).
At time of writing, the `latest` tag corresponded to `56cfdc046a5f96d5e67d42a2fc2bf6ba2fe58b41` commit.
# 2. Deploy containers #
**CAUTION: this SHALL be done in multiple steps.**
**Just `docker-compose up -d` WILL NOT WORK!**
All the following commands **SHALL** be run from the `ci-scripts/yaml_files/5g_l2sim_tdd` folder.
The `gNB`, `proxy` and `NR-UE` containers will be deployed in `host`-mode. It will use the host loopback interface to connect.
```bash
sudo ifconfig lo: 127.0.0.2 netmask 255.0.0.0 up
```
## 2.1. Deploy OAI 5G Core Network ##
```bash
$ cd ci-scripts/yaml_files/5g_l2sim_tdd
$ docker-compose up -d mysql oai-nrf oai-amf oai-smf oai-spgwu oai-ext-dn
Creating network "l2sim-oai-public-net" with driver "bridge"
Creating network "l2sim-oai-traffic_net-net" with driver "bridge"
Creating l2sim-oai-nrf ... done
Creating l2sim-mysql ... done
Creating l2sim-oai-spgwu ... done
Creating l2sim-oai-amf ... done
Creating l2sim-oai-smf ... done
Creating l2sim-oai-ext-dn ... done
```
Wait for a bit.
```bash
$ docker-compose ps -a
Name Command State Ports
-------------------------------------------------------------------------------------------------
l2sim-mysql docker-entrypoint.sh mysqld Up (healthy) 3306/tcp, 33060/tcp
l2sim-oai-amf /bin/bash /openair-amf/bin ... Up (healthy) 38412/sctp, 80/tcp, 9090/tcp
l2sim-oai-ext-dn /bin/bash -c apt update; ... Up (healthy)
l2sim-oai-nrf /bin/bash /openair-nrf/bin ... Up (healthy) 80/tcp, 9090/tcp
l2sim-oai-smf /bin/bash /openair-smf/bin ... Up (healthy) 80/tcp, 8805/udp, 9090/tcp
l2sim-oai-spgwu /openair-spgwu-tiny/bin/en ... Up (healthy) 2152/udp, 8805/udp
```
At this point, you can prepare a capture on the newly-created public docker bridges:
```bash
$ ifconfig
...
l2sim-public: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.71.129 netmask 255.255.255.192 broadcast 192.168.71.191
inet6 fe80::42:c4ff:fe2b:3d38 prefixlen 64 scopeid 0x20<link>
ether 02:42:c4:2b:3d:38 txqueuelen 0 (Ethernet)
RX packets 4 bytes 112 (112.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7 bytes 626 (626.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
l2sim-traffic: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.72.129 netmask 255.255.255.192 broadcast 192.168.72.191
inet6 fe80::42:b5ff:fed3:e732 prefixlen 64 scopeid 0x20<link>
ether 02:42:b5:d3:e7:32 txqueuelen 0 (Ethernet)
RX packets 2652 bytes 142335 (142.3 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3999 bytes 23367972 (23.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
...
$ sudo nohup tshark -f "(host 192.168.72.135 and icmp) or (not host 192.168.72.135 and not arp and not port 53 and not port 2152 and not port 2153)" -i l2sim-public -i l2sim-traffic -w /tmp/capture_5g_l2sim_tdd.pcap > /tmp/tshark.log 2>&1 &
```
## 2.2. Deploy OAI gNB in Standalone Mode as a VNF ##
**CAUTION: To execute this 2nd step, the whole `CN5G` SHALL be in `healthy` state (especially the `mysql` container).**
```bash
$ docker-compose up -d oai-gnb
l2sim-oai-nrf is up-to-date
l2sim-oai-spgwu is up-to-date
l2sim-oai-ext-dn is up-to-date
Creating l2sim-oai-gnb ... done
```
Wait for a bit.
```bash
$ docker-compose ps -a
Name Command State Ports
-------------------------------------------------------------------------------------------------
l2sim-mysql docker-entrypoint.sh mysqld Up (healthy) 3306/tcp, 33060/tcp
l2sim-oai-amf /bin/bash /openair-amf/bin ... Up (healthy) 38412/sctp, 80/tcp, 9090/tcp
l2sim-oai-ext-dn /bin/bash -c apt update; ... Up (healthy)
l2sim-oai-gnb /opt/oai-gnb/bin/entrypoin ... Up (healthy)
l2sim-oai-nrf /bin/bash /openair-nrf/bin ... Up (healthy) 80/tcp, 9090/tcp
l2sim-oai-smf /bin/bash /openair-smf/bin ... Up (healthy) 80/tcp, 8805/udp, 9090/tcp
l2sim-oai-spgwu /openair-spgwu-tiny/bin/en ... Up (healthy) 2152/udp, 8805/udp
```
You can verify that the `gNB` is connected with the `AMF`:
```bagh
$ docker logs rfsim5g-oai-amf
...
[AMF] [amf_app] [info ] |----------------------------------------------------gNBs' information-------------------------------------------|
[AMF] [amf_app] [info ] | Index | Status | Global ID | gNB Name | PLMN |
[AMF] [amf_app] [info ] | 1 | Connected | 0x0 | gnb-l2sim-vnf | 208, 99 |
[AMF] [amf_app] [info ] |----------------------------------------------------------------------------------------------------------------|
...
```
## 2.3. Deploy OAI NR-UE and proxy
```bash
$ docker-compose up -d proxy oai-nr-ue0
l2sim-mysql is up-to-date
l2sim-oai-nrf is up-to-date
l2sim-oai-amf is up-to-date
l2sim-oai-smf is up-to-date
l2sim-oai-spgwu is up-to-date
l2sim-oai-ext-dn is up-to-date
l2sim-oai-gnb is up-to-date
Creating l2sim-oai-nr-ue ... done
Creating l2sim-proxy ... done
```
Wait for a bit.
```bash
$ docker-compose ps -a
Name Command State Ports
-------------------------------------------------------------------------------------------------
l2sim-mysql docker-entrypoint.sh mysqld Up (healthy) 3306/tcp, 33060/tcp
l2sim-oai-amf /bin/bash /openair-amf/bin ... Up (healthy) 38412/sctp, 80/tcp, 9090/tcp
l2sim-oai-ext-dn /bin/bash -c apt update; ... Up (healthy)
l2sim-oai-gnb /opt/oai-gnb/bin/entrypoin ... Up (healthy)
l2sim-oai-nr-ue0 /opt/oai-nr-ue/bin/entrypo ... Up (healthy)
l2sim-oai-nrf /bin/bash /openair-nrf/bin ... Up (healthy) 80/tcp, 9090/tcp
l2sim-oai-smf /bin/bash /openair-smf/bin ... Up (healthy) 80/tcp, 8805/udp, 9090/tcp
l2sim-oai-spgwu /openair-spgwu-tiny/bin/en ... Up (healthy) 2152/udp, 8805/udp
l2sim-proxy /oai-lte-multi-ue-proxy/bi ... Up (healthy)
$ docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}} {{.MemUsage}}\t{{.MemPerc}}" l2sim-mysql l2sim-oai-amf l2sim-oai-ext-dn l2sim-oai-gnb l2sim-oai-nr-ue0 l2sim-oai-nrf l2sim-oai-smf l2sim-oai-spgwu l2sim-proxy
CONTAINER CPU % MEM USAGE / LIMIT MEM %
l2sim-mysql 0.03% 206.7MiB / 62.54GiB 0.32%
l2sim-oai-amf 4.05% 29.49MiB / 62.54GiB 0.05%
l2sim-oai-ext-dn 0.00% 31.27MiB / 62.54GiB 0.05%
l2sim-oai-gnb 1.29% 1.853GiB / 62.54GiB 2.96%
l2sim-oai-nr-ue0 1.43% 350.8MiB / 62.54GiB 0.55%
l2sim-oai-nrf 0.21% 9.105MiB / 62.54GiB 0.01%
l2sim-oai-smf 3.24% 30.23MiB / 62.54GiB 0.05%
l2sim-oai-spgwu 0.00% 11.78MiB / 62.54GiB 0.02%
l2sim-proxy 6.97% 290.4MiB / 62.54GiB 0.45%
```
**CAUTION: As you can see the CPU usage is not that important compared to a 5G RF simulator equivalent.**
But the CPU speed matters; I am running on a fast server:
```bash
$ lscpu
Architecture: x86_64
CPU(s): 16
...
Model name: Intel(R) Xeon(R) Silver 4215R CPU @ 3.20GHz
```
I tried on a slower server with more CPUs and it did not work:
```bash
oaici@orion:~$ lscpu
Architecture: x86_64
CPU(s): 48
...
Model name: Intel(R) Xeon(R) CPU E5-2658 v3 @ 2.20GHz
```
We will work on this issue.
Making sure the OAI UE is connected:
```bash
$ docker exec -it l2sim-oai-nr-ue /bin/bash
root@bb4d400a832d:/opt/oai-nr-ue# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.71.137 netmask 255.255.255.192 broadcast 192.168.71.191
ether 02:42:c0:a8:47:89 txqueuelen 0 (Ethernet)
RX packets 224259 bytes 5821372018 (5.8 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 235916 bytes 7848786376 (7.8 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
oaitun_ue1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 12.1.1.2 netmask 255.255.255.0 destination 12.1.1.2
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
```
# 3. Check traffic #
## 3.1. Check your Internet connectivity ##
You can also check with the `ext-dn` container (IP address is `192.168.72.135` in docker-compose)
```bash
$ docker exec -it l2sim-oai-nr-ue /bin/bash
root@bb4d400a832d# ping -I oaitun_ue1 -c 20 192.168.72.135
PING 192.168.72.135 (192.168.72.135) from 12.1.1.2 oaitun_ue1: 56(84) bytes of data.
64 bytes from 192.168.72.135: icmp_seq=1 ttl=63 time=65.1 ms
64 bytes from 192.168.72.135: icmp_seq=2 ttl=63 time=74.2 ms
...
64 bytes from 192.168.72.135: icmp_seq=19 ttl=63 time=25.0 ms
64 bytes from 192.168.72.135: icmp_seq=20 ttl=63 time=34.7 ms
--- 192.168.72.135 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19025ms
rtt min/avg/max/mdev = 16.413/120.639/209.673/57.159 ms
```
# 4. Un-deployment #
```bash
$ docker-compose down
Stopping l2sim-oai-nr-ue2 ... done
Stopping l2sim-oai-nr-ue ... done
Stopping l2sim-oai-gnb ... done
Stopping l2sim-oai-ext-dn ... done
Stopping l2sim-oai-spgwu ... done
Stopping l2sim-oai-smf ... done
Stopping l2sim-oai-amf ... done
Stopping l2sim-oai-nrf ... done
Stopping l2sim-mysql ... done
Removing l2sim-oai-nr-ue2 ... done
Removing l2sim-oai-nr-ue ... done
Removing l2sim-oai-gnb ... done
Removing l2sim-oai-ext-dn ... done
Removing l2sim-oai-spgwu ... done
Removing l2sim-oai-smf ... done
Removing l2sim-oai-amf ... done
Removing l2sim-oai-nrf ... done
Removing l2sim-mysql ... done
Removing network l2sim-oai-public-net
Removing network l2sim-oai-traffic-net
```
# 5. Adapt the `docker-compose` to your environment #
In the `SMF` section, provide your own DNS IP address:
```yaml
DEFAULT_DNS_IPV4_ADDRESS=192.168.18.129
```
In the `gNB` section, provide your docker-host primary IP address and interface name: in our case `192.168.18.193` and `eno1`.
```yaml
GNB_NGA_IF_NAME: eno1
GNB_NGA_IP_ADDRESS: 192.168.18.193
GNB_NGU_IF_NAME: eno1
GNB_NGU_IP_ADDRESS: 192.168.18.193
```
Same thing in the `nr-ue` section:
```yaml
NR_UE_NFAPI_IF_NAME: eno1
```
This tutorial is a first draft. This nFAPI feature and the proxy are still under development.
At time of writing, we were able to run in `host-mode`, 1 `NR-UE` and just ping traffic.
Later development will include:
- deploying `gNB-VNF`, `proxy` and `UE` in isolated containers (with their own IP address)
- more UEs
- more traffic (`UDP` and `TCP`)
@@ -0,0 +1,322 @@
version: '3.8'
services:
oai-nrf:
container_name: "l2sim-oai-nrf"
image: oai-nrf:latest
environment:
- NRF_INTERFACE_NAME_FOR_SBI=eth0
- NRF_INTERFACE_PORT_FOR_SBI=80
- NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
- NRF_API_VERSION=v1
- INSTANCE=0
- PID_DIRECTORY=/var/run
networks:
public_net:
ipv4_address: 192.168.71.130
volumes:
- ../5g_rfsimulator/nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh
healthcheck:
test: /bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh"
interval: 10s
timeout: 5s
retries: 5
mysql:
container_name: "l2sim-mysql"
image: mysql:5.7
volumes:
- ../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
- ../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
environment:
- TZ=Europe/Paris
- MYSQL_DATABASE=oai_db
- MYSQL_USER=test
- MYSQL_PASSWORD=test
- MYSQL_ROOT_PASSWORD=linux
healthcheck:
test: /bin/bash -c "/tmp/mysql-healthcheck.sh"
interval: 10s
timeout: 5s
retries: 5
networks:
public_net:
ipv4_address: 192.168.71.131
oai-amf:
container_name: "l2sim-oai-amf"
image: oai-amf:latest
environment:
- TZ=Europe/paris
- INSTANCE=0
- PID_DIRECTORY=/var/run
- MCC=208
- MNC=99
- REGION_ID=128
- AMF_SET_ID=1
- SERVED_GUAMI_MCC_0=208
- SERVED_GUAMI_MNC_0=99
- SERVED_GUAMI_REGION_ID_0=128
- SERVED_GUAMI_AMF_SET_ID_0=1
- SERVED_GUAMI_MCC_1=460
- SERVED_GUAMI_MNC_1=11
- SERVED_GUAMI_REGION_ID_1=10
- SERVED_GUAMI_AMF_SET_ID_1=1
- PLMN_SUPPORT_MCC=208
- PLMN_SUPPORT_MNC=99
- PLMN_SUPPORT_TAC=0x0001
- SST_0=1
- SD_0=1
- SST_1=1
- SD_1=12
- AMF_INTERFACE_NAME_FOR_NGAP=eth0
- AMF_INTERFACE_NAME_FOR_N11=eth0
- SMF_INSTANCE_ID_0=1
- SMF_FQDN_0=oai-smf
- SMF_IPV4_ADDR_0=0.0.0.0
- SMF_HTTP_VERSION_0=v1
- SELECTED_0=true
- SMF_INSTANCE_ID_1=2
- SMF_FQDN_1=oai-smf
- SMF_IPV4_ADDR_1=0.0.0.0
- SMF_HTTP_VERSION_1=v1
- SELECTED_1=false
- MYSQL_SERVER=192.168.71.131
- MYSQL_USER=root
- MYSQL_PASS=linux
- MYSQL_DB=oai_db
- OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1
- NRF_IPV4_ADDRESS=192.168.71.130
- NRF_PORT=80
- NF_REGISTRATION=yes
- SMF_SELECTION=yes
- USE_FQDN_DNS=yes
- NRF_API_VERSION=v1
- NRF_FQDN=oai-nrf
- EXTERNAL_AUSF=no
- AUSF_IPV4_ADDRESS=0.0.0.0
- AUSF_PORT=80
- AUSF_API_VERSION=v1
- AUSF_FQDN=localhost
depends_on:
- oai-nrf
- mysql
volumes:
- ../5g_rfsimulator/amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh
healthcheck:
test: /bin/bash -c "/openair-amf/bin/amf-healthcheck.sh"
interval: 10s
timeout: 15s
retries: 5
networks:
public_net:
ipv4_address: 192.168.71.132
oai-smf:
container_name: "l2sim-oai-smf"
image: oai-smf:latest
environment:
- TZ=Europe/Paris
- INSTANCE=0
- PID_DIRECTORY=/var/run
- SMF_INTERFACE_NAME_FOR_N4=eth0
- SMF_INTERFACE_NAME_FOR_SBI=eth0
- SMF_INTERFACE_PORT_FOR_SBI=80
- SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
- SMF_API_VERSION=v1
- DEFAULT_DNS_IPV4_ADDRESS=192.168.18.129
- DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4
- AMF_IPV4_ADDRESS=0.0.0.0
- AMF_PORT=80
- AMF_API_VERSION=v1
- AMF_FQDN=oai-amf
- UDM_IPV4_ADDRESS=127.0.0.1
- UDM_PORT=80
- UDM_API_VERSION=v1
- UDM_FQDN=localhost
- UPF_IPV4_ADDRESS=192.168.71.134
- UPF_FQDN_0=oai-spgwu
- NRF_IPV4_ADDRESS=192.168.71.130
- NRF_PORT=80
- NRF_API_VERSION=v1
- NRF_FQDN=oai-nrf
- REGISTER_NRF=yes
- DISCOVER_UPF=yes
- USE_FQDN_DNS=yes
- DNN_NI0=oai
- DNN_NI2=oai.ipv4
depends_on:
- oai-nrf
- oai-amf
volumes:
- ../5g_rfsimulator/smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh
healthcheck:
test: /bin/bash -c "/openair-smf/bin/smf-healthcheck.sh"
interval: 10s
timeout: 5s
retries: 5
networks:
public_net:
ipv4_address: 192.168.71.133
oai-spgwu:
container_name: "l2sim-oai-spgwu"
image: oai-spgwu-tiny:latest
environment:
- TZ=Europe/Paris
- PID_DIRECTORY=/var/run
- SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
- SGW_INTERFACE_NAME_FOR_SX=eth0
- PGW_INTERFACE_NAME_FOR_SGI=eth0
- NETWORK_UE_NAT_OPTION=yes
- NETWORK_UE_IP=12.1.1.0/24
- SPGWC0_IP_ADDRESS=192.168.71.133
- BYPASS_UL_PFCP_RULES=no
- MCC=208
- MNC=99
- MNC03=099
- TAC=1
- GTP_EXTENSION_HEADER_PRESENT=yes
- GW_ID=1
- REALM=openairinterface.org
- ENABLE_5G_FEATURES=yes
- REGISTER_NRF=yes
- USE_FQDN_NRF=yes
- UPF_FQDN_5G=oai-spgwu
- NRF_IPV4_ADDRESS=192.168.71.130
- NRF_PORT=80
- NRF_API_VERSION=v1
- NRF_FQDN=oai-nrf
- NSSAI_SST_0=1
- NSSAI_SD_0=1
- DNN_0=oai
depends_on:
- oai-nrf
- oai-smf
cap_add:
- NET_ADMIN
- SYS_ADMIN
cap_drop:
- ALL
privileged: true
volumes:
- ../5g_rfsimulator/spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh
healthcheck:
test: /bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh"
interval: 10s
timeout: 5s
retries: 5
networks:
public_net:
ipv4_address: 192.168.71.134
traffic_net:
ipv4_address: 192.168.72.134
oai-ext-dn:
image: ubuntu:bionic
privileged: true
container_name: "l2sim-oai-ext-dn"
entrypoint: /bin/bash -c \
"apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\
"ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity"
depends_on:
- oai-spgwu
networks:
traffic_net:
ipv4_address: 192.168.72.135
healthcheck:
test: /bin/bash -c "ping -c 2 192.168.72.134"
interval: 10s
timeout: 5s
retries: 5
oai-gnb:
image: oai-gnb:develop
privileged: true
container_name: "l2sim-oai-gnb"
network_mode: "host"
environment:
TZ: Europe/Paris
USE_SA_NFAPI_VNF: 'yes'
GNB_NAME: gnb-l2sim-vnf
TAC: 1
MCC: '208'
MNC: '99'
MNC_LENGTH: 2
NSSAI_SST: 1
NSSAI_SD0: 1
NSSAI_SD1: 112233
AMF_IP_ADDRESS: 192.168.71.132
GNB_NGA_IF_NAME: eno1
GNB_NGA_IP_ADDRESS: 192.168.18.193
GNB_NGU_IF_NAME: eno1
GNB_NGU_IP_ADDRESS: 192.168.18.193
LOCAL_S_IF_NAME: 'lo:'
REMOTE_S_ADDRESS: 127.0.0.1
LOCAL_S_ADDRESS: 127.0.0.2
USE_ADDITIONAL_OPTIONS: --sa --nfapi 2 --emulate-l1 --log_config.global_log_options level,time,thread_id,nocolor
depends_on:
- oai-spgwu
- oai-amf
healthcheck:
test: /bin/bash -c "pgrep nr-softmodem"
interval: 10s
timeout: 5s
retries: 5
proxy:
image: oai-lte-multi-ue-proxy:latest
privileged: true
container_name: "l2sim-proxy"
network_mode: "host"
environment:
TZ: Europe/Paris
command: "/oai-lte-multi-ue-proxy/bin/proxy 1 --nr"
depends_on:
- oai-gnb
healthcheck:
test: /bin/bash -c "pgrep proxy"
interval: 10s
timeout: 5s
retries: 5
oai-nr-ue0:
image: oai-nr-ue:develop
privileged: true
container_name: "l2sim-oai-nr-ue0"
network_mode: "host"
environment:
TZ: Europe/Paris
USE_NFAPI: 'yes'
OPENAIR_DIR: /opt/oai-nr-ue
FULL_IMSI: '208990100001100'
FULL_KEY: 'fec86ba6eb707ed08905757b1bb44b8f'
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
DNN: oai
NSSAI_SST: 1
NSSAI_SD: 1
NR_UE_NFAPI_IF_NAME: eno1
GNB_IP_ADDRESS: 127.0.0.1
NR_UE_IP_ADDRESS: 127.0.0.1
USE_ADDITIONAL_OPTIONS: --nokrnmod 1 --nfapi 5 --node-number 2 --sa --emulate-l1 --log_config.global_log_options level,time,thread_id,nocolor
volumes:
- ../../../openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results:/opt/oai-nr-ue/openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
depends_on:
- oai-gnb
- proxy
healthcheck:
test: /bin/bash -c "pgrep nr-uesoftmodem"
interval: 10s
timeout: 5s
retries: 5
networks:
public_net:
driver: bridge
name: l2sim-oai-public-net
ipam:
config:
- subnet: 192.168.71.128/26
driver_opts:
com.docker.network.bridge.name: "l2sim-public"
traffic_net:
driver: bridge
name: l2sim-oai-traffic-net
ipam:
config:
- subnet: 192.168.72.128/26
driver_opts:
com.docker.network.bridge.name: "l2sim-traffic"
+2 -1
View File
@@ -1781,7 +1781,8 @@ set(NR_PDCP_SRC
)
set(NR_SDAP_SRC
${OPENAIR2_DIR}/SDAP/nr_sdap/nr_sdap_gnb.c
${OPENAIR2_DIR}/SDAP/nr_sdap/nr_sdap.c
${OPENAIR2_DIR}/SDAP/nr_sdap/nr_sdap_entity.c
)
set(L2_SRC
+1
View File
@@ -478,6 +478,7 @@ int logInit (void)
register_log_component("NAS","log",NAS);
register_log_component("UDP","",UDP_);
register_log_component("GTPU","",GTPU);
register_log_component("SDAP","",SDAP);
register_log_component("S1AP","",S1AP);
register_log_component("F1AP","",F1AP);
register_log_component("M2AP","",M2AP);
+1
View File
@@ -215,6 +215,7 @@ typedef enum {
OCM,
UDP_,
GTPU,
SDAP,
SPGW,
S1AP,
F1AP,
+21
View File
@@ -944,6 +944,27 @@ ID = LEGACY_GTPU_TRACE
GROUP = ALL:LEGACY_GTPU:LEGACY_GROUP_TRACE:LEGACY
FORMAT = string,log
ID = LEGACY_SDAP_INFO
DESC = SDAP legacy logs - info level
GROUP = ALL:LEGACY_SDAP:LEGACY_GROUP_INFO:LEGACY
FORMAT = string,log
ID = LEGACY_SDAP_ERROR
DESC = SDAP legacy logs - error level
GROUP = ALL:LEGACY_SDAP:LEGACY_GROUP_ERROR:LEGACY
FORMAT = string,log
ID = LEGACY_SDAP_WARNING
DESC = SDAP legacy logs - warning level
GROUP = ALL:LEGACY_SDAP:LEGACY_GROUP_WARNING:LEGACY
FORMAT = string,log
ID = LEGACY_SDAP_DEBUG
DESC = SDAP legacy logs - debug level
GROUP = ALL:LEGACY_SDAP:LEGACY_GROUP_DEBUG:LEGACY
FORMAT = string,log
ID = LEGACY_SDAP_TRACE
DESC = SDAP legacy logs - trace level
GROUP = ALL:LEGACY_SDAP:LEGACY_GROUP_TRACE:LEGACY
FORMAT = string,log
ID = LEGACY_TMR_INFO
DESC = TMR legacy logs - info level
GROUP = ALL:LEGACY_TMR:LEGACY_GROUP_INFO:LEGACY
+16
View File
@@ -351,6 +351,14 @@ The following features are valid for the gNB and the 5G-NR UE.
- Interfaces with RRC, RLC
- Interfaces with gtp-u (data Tx/Rx over N3 and F1-U interfaces)
**gNB SDAP**
- Send/Receive operations according to 37.324 Rel.15
- Establishment/Handling of SDAP entities.
- Transfer of User Plane Data
- Mapping between a QoS flow and a DRB for both DL and UL
- Marking QoS flow ID in both DL and UL packets
- Reflective QoS flow to DRB mapping for UL SDAP data PDUs
**gNB RRC**
- NR RRC (38.331) Rel 16 messages using new asn1c
- LTE RRC (36.331) also updated to Rel 15
@@ -400,6 +408,7 @@ The following features are valid for the gNB and the 5G-NR UE.
- New gtp-u implementation supporting both N3 and F1-U interfaces according to 29.281 Rel.15
- Interfaces with RRC, F1AP for tunnel creation
- Interfaces with PDCP and RLC for data send/receive at the CU and DU respectively (F1-U interface)
- Interface with SDAP for data send/receive, capture of GTP-U Optional Header, GTP-U Extension Header and PDU Session Container.
# OpenAirInterface 5G-NR UE Feature Set #
@@ -502,6 +511,13 @@ The following features are valid for the gNB and the 5G-NR UE.
- Radio bearer establishment/handling and association with PDCP entities
- Interfaces with RRC, RLC
**UE SDAP**
* Tx/Rx operations operations according to 37.324 Rel.15
- Establishment/Handling of SDAP entities.
- Transfer of User Plane Data
- Reflective Mapping
- RRC Signaling Mapping
**UE RRC**
* Integration of RRC messages and procedures supporting UE 5G SA connection according to 38.331 Rel.16
- RRCSetupRequest/RRCSetup/RRCSetupComplete
+2
View File
@@ -46,6 +46,8 @@ This proxy allows to perform L2 nFAPI simulator for:
* 5G-NSA
* 5G-SA
Another tutorial for 5G SA mode with 1 User is available [here](../ci-scripts/yaml_files/5g_l2sim_tdd/README.md).
----
[oai wiki home](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/home)
+7 -3
View File
@@ -29,7 +29,8 @@ FROM ran-base:latest AS nr-ue-base
FROM ran-build:latest AS nr-ue-build
RUN cp /oai-ran/docker/scripts/nr_ue_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/nr_ue_parameters.yaml && \
cp /oai-ran/docker/scripts/nr_ue_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
#start from scratch for target executable
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-nr-ue
@@ -62,7 +63,10 @@ COPY --from=nr-ue-build \
./
WORKDIR /opt/oai-nr-ue/etc
COPY --from=nr-ue-build /oai-ran/ci-scripts/conf_files/nr-ue-sim.conf .
COPY --from=nr-ue-build \
/oai-ran/ci-scripts/conf_files/nr-ue-sim.conf \
/oai-ran/docker/etc/nr-ue.nfapi.conf \
./
COPY --from=nr-ue-build \
/oai-ran/cmake_targets/ran_build/build/liboai_eth_transpro.so \
@@ -118,5 +122,5 @@ WORKDIR /opt/oai-nr-ue/etc
COPY --from=nr-ue-build /oai-ran/ci-scripts/conf_files/ue.* .
WORKDIR /opt/oai-nr-ue
CMD ["/opt/oai-nr-ue/bin/nr-uesoftmodem.Rel15", "-O", "/opt/oai-nr-ue/etc/nr-ue-sim.conf"]
CMD ["/opt/oai-nr-ue/bin/nr-uesoftmodem.Rel15", "-O", "/opt/oai-nr-ue/etc/nr-ue.conf"]
ENTRYPOINT ["/opt/oai-nr-ue/bin/entrypoint.sh"]
+7 -3
View File
@@ -29,7 +29,8 @@ FROM ran-base:latest AS nr-ue-base
FROM ran-build:latest AS nr-ue-build
RUN cp /oai-ran/docker/scripts/nr_ue_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/nr_ue_parameters.yaml && \
cp /oai-ran/docker/scripts/nr_ue_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
#start from scratch for target executable
FROM ubuntu:bionic as oai-nr-ue
@@ -67,7 +68,10 @@ COPY --from=nr-ue-build \
./
WORKDIR /opt/oai-nr-ue/etc
COPY --from=nr-ue-build /oai-ran/ci-scripts/conf_files/nr-ue-sim.conf .
COPY --from=nr-ue-build \
/oai-ran/ci-scripts/conf_files/nr-ue-sim.conf \
/oai-ran/docker/etc/nr-ue.nfapi.conf \
./
COPY --from=nr-ue-build \
/oai-ran/cmake_targets/ran_build/build/liboai_eth_transpro.so \
@@ -106,5 +110,5 @@ RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so /usr/local/lib/liboai
ldconfig
WORKDIR /opt/oai-nr-ue
CMD ["/opt/oai-nr-ue/bin/nr-uesoftmodem.Rel15", "-O", "/opt/oai-nr-ue/etc/nr-ue-sim.conf"]
CMD ["/opt/oai-nr-ue/bin/nr-uesoftmodem.Rel15", "-O", "/opt/oai-nr-ue/etc/nr-ue.conf"]
ENTRYPOINT ["/opt/oai-nr-ue/bin/entrypoint.sh"]
+10 -2
View File
@@ -23,6 +23,7 @@
#-----------------------------------------------------------
# Import
#-----------------------------------------------------------
import glob
import re
import yaml
import os
@@ -33,7 +34,8 @@ def main():
#read yaml input parameters
f = open(f'{sys.argv[1]}',)
data = yaml.full_load(f)
dir = os.listdir(f'{data[0]["paths"]["source_dir"]}')
initial_path = f'{data[0]["paths"]["source_dir"]}'
dir = glob.glob(initial_path + '/**/*.conf', recursive=True)
#identify configs, read and replace corresponding values
for config in data[1]["configurations"]:
@@ -42,7 +44,10 @@ def main():
print('================================================')
print('filePrefix = ' + filePrefix)
print('outputfilename = ' + outputfilename)
found = False
for inputfile in dir:
if found:
continue
if inputfile.find(filePrefix) >=0:
prefix_outputfile = {"cu.band7.tm1.25PRB": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
"du.band7.tm1.25PRB": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
@@ -58,10 +63,13 @@ def main():
"gnb.sa.band66.fr1.106PRB.usrpn300.conf": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
"gNB_SA_CU.conf": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
"gNB_SA_DU.conf": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
"proxy_gnb.band78.sa.fr1.106PRB.usrpn310.conf": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
"proxy_nr-ue.nfapi.conf": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
"ue.nfapi": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
"ue_sim_ci": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}'
}
print('inputfile = ' + inputfile)
found = True
if filePrefix in prefix_outputfile:
outputfile1 = prefix_outputfile[filePrefix]
@@ -69,7 +77,7 @@ def main():
if not os.path.exists(directory):
os.makedirs(directory, exist_ok=True)
with open(f'{data[0]["paths"]["source_dir"]}{inputfile}', mode='r') as inputfile, \
with open(f'{inputfile}', mode='r') as inputfile, \
open(outputfile1, mode='w') as outputfile:
for line in inputfile:
count = 0
+2 -1
View File
@@ -11,8 +11,9 @@ THREAD_PARALLEL_CONFIG=${THREAD_PARALLEL_CONFIG:-PARALLEL_SINGLE_THREAD}
if [[ -v USE_NSA_TDD_MONO ]]; then cp $PREFIX/etc/gnb.nsa.tdd.conf $PREFIX/etc/gnb.conf; fi
if [[ -v USE_SA_TDD_MONO ]]; then cp $PREFIX/etc/gnb.sa.tdd.conf $PREFIX/etc/gnb.conf; fi
if [[ -v USE_SA_FDD_MONO ]]; then cp $PREFIX/etc/gnb.sa.fdd.conf $PREFIX/etc/gnb.conf; fi
if [[ -v USE_SA_CU ]]; then ln -s $PREFIX/etc/gnb.sa.cu.conf $PREFIX/etc/gnb.conf; fi
if [[ -v USE_SA_CU ]]; then cp $PREFIX/etc/gnb.sa.cu.conf $PREFIX/etc/gnb.conf; fi
if [[ -v USE_SA_TDD_CU ]]; then cp $PREFIX/etc/gnb.sa.du.tdd.conf $PREFIX/etc/gnb.conf; fi
if [[ -v USE_SA_NFAPI_VNF ]]; then cp $PREFIX/etc/gnb.sa.nfapi.vnf.conf $PREFIX/etc/gnb.conf; fi
# Sometimes, the templates are not enough. We mount a conf file on $PREFIX/etc. It can be a template itself.
if [[ -v USE_VOLUMED_CONF ]]; then cp $PREFIX/etc/mounted.conf $PREFIX/etc/gnb.conf; fi
+36
View File
@@ -202,3 +202,39 @@
- key: remote_n_portd
env: "@F1_CU_D_PORT@"
- filePrefix: proxy_gnb.band78.sa.fr1.106PRB.usrpn310.conf
outputfilename: "gnb.sa.nfapi.vnf.conf"
config:
- key: Active_gNBs
env: "@GNB_NAME@"
- key: gNB_name
env: "@GNB_NAME@"
- key: mcc
env: "@MCC@"
- key: mnc
env: "@MNC@"
- key: mnc_length
env: "@MNC_LENGTH@"
- key: tracking_area_code
env: "@TAC@"
- key: sst
env: "@NSSAI_SST@"
- key: ipv4
env: "@AMF_IP_ADDRESS@"
- key: GNB_INTERFACE_NAME_FOR_NG_AMF
env: "@GNB_NGA_IF_NAME@"
- key: GNB_IPV4_ADDRESS_FOR_NG_AMF
env: "@GNB_NGA_IP_ADDRESS@"
- key: GNB_INTERFACE_NAME_FOR_NGU
env: "@GNB_NGU_IF_NAME@"
- key: GNB_IPV4_ADDRESS_FOR_NGU
env: "@GNB_NGU_IP_ADDRESS@"
- key: parallel_config
env: "@THREAD_PARALLEL_CONFIG@"
- key: local_s_if_name
env: "@LOCAL_S_IF_NAME@"
- key: remote_s_address
env: "@REMOTE_S_ADDRESS@"
- key: local_s_address
env: "@LOCAL_S_ADDRESS@"
+13 -3
View File
@@ -5,12 +5,22 @@ set -euo pipefail
PREFIX=/opt/oai-nr-ue
# Based another env var, pick one template to use
#if [[ -v USE_NFAPI ]]; then cp $PREFIX/etc/ue.nfapi.conf $PREFIX/etc/ue.conf; fi
if [[ -v USE_NFAPI ]]; then cp $PREFIX/etc/nr-ue.nfapi.conf $PREFIX/etc/nr-ue.conf; fi
# Sometimes, the templates are not enough. We mount a conf file on $PREFIX/etc. It can be a template itself.
if [[ -v USE_VOLUMED_CONF ]]; then cp $PREFIX/etc/mounted.conf $PREFIX/etc/nr-ue.conf; fi
# if none, pick the default
if [ ! -f $PREFIX/etc/nr-ue.conf ]; then cp $PREFIX/etc/nr-ue-sim.conf $PREFIX/etc/nr-ue.conf; fi
# Only this template will be manipulated and the USIM one!
CONFIG_FILES=`ls $PREFIX/etc/ue.conf $PREFIX/etc/nr-ue-sim.conf || true`
# Only this template will be manipulated
CONFIG_FILES=`ls $PREFIX/etc/nr-ue.conf || true`
for c in ${CONFIG_FILES}; do
# Sometimes templates have no pattern to be replaced.
if ! grep -oP '@[a-zA-Z0-9_]+@' ${c}; then
echo "Configuration is already set"
break
fi
# grep variable names (format: ${VAR}) from template to be rendered
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${c} | sort | uniq | xargs)
+49
View File
@@ -0,0 +1,49 @@
#/*
# * 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
# */
---
- paths:
source_dir: "ci-scripts/conf_files/"
dest_dir: docker/etc
- configurations:
- filePrefix: proxy_nr-ue.nfapi.conf
outputfilename: "nr-ue.nfapi.conf"
config:
- key: imsi
env: "@FULL_IMSI@"
- key: key
env: "@FULL_KEY@"
- key: opc
env: "@OPC@"
- key: dnn
env: "@DNN@"
- key: nssai_sst
env: "@NSSAI_SST@"
- key: nssai_sd
env: "@NSSAI_SD@"
- key: remote_n_address
env: "@GNB_IP_ADDRESS@"
- key: local_n_address
env: "@NR_UE_IP_ADDRESS@"
- key: local_n_if_name
env: "@NR_UE_NFAPI_IF_NAME@"
+23 -104
View File
@@ -19,7 +19,7 @@
* contact@openairinterface.org
*/
#define _GNU_SOURCE
#define _GNU_SOURCE // For pthread_setname_np
#include <pthread.h>
#include <openair1/PHY/impl_defs_top.h>
#include "executables/nr-uesoftmodem.h"
@@ -239,84 +239,21 @@ static void L1_nsa_prach_procedures(frame_t frame, int slot, fapi_nr_ul_config_p
LOG_D(NR_MAC, "We have successfully filled the rach_ind queue with the recently filled rach ind\n");
}
static bool sfn_slot_matcher(void *wanted, void *candidate)
{
nfapi_p7_message_header_t *msg = candidate;
int sfn_sf = *(int*)wanted;
switch (msg->message_id)
{
case NFAPI_NR_PHY_MSG_TYPE_RACH_INDICATION:
{
nfapi_nr_rach_indication_t *ind = candidate;
return NFAPI_SFNSLOT2SFN(sfn_sf) == ind->sfn && NFAPI_SFNSLOT2SLOT(sfn_sf) == ind->slot;
}
case NFAPI_NR_PHY_MSG_TYPE_RX_DATA_INDICATION:
{
nfapi_nr_rx_data_indication_t *ind = candidate;
return NFAPI_SFNSLOT2SFN(sfn_sf) == ind->sfn && NFAPI_SFNSLOT2SLOT(sfn_sf) == ind->slot;
}
case NFAPI_NR_PHY_MSG_TYPE_CRC_INDICATION:
{
nfapi_nr_crc_indication_t *ind = candidate;
return NFAPI_SFNSLOT2SFN(sfn_sf) == ind->sfn && NFAPI_SFNSLOT2SLOT(sfn_sf) == ind->slot;
}
case NFAPI_NR_PHY_MSG_TYPE_UCI_INDICATION:
{
nfapi_nr_uci_indication_t *ind = candidate;
return NFAPI_SFNSLOT2SFN(sfn_sf) == ind->sfn && NFAPI_SFNSLOT2SLOT(sfn_sf) == ind->slot;
}
case NFAPI_NR_PHY_MSG_TYPE_DL_TTI_REQUEST:
{
nfapi_nr_dl_tti_request_t *ind = candidate;
return NFAPI_SFNSLOT2SFN(sfn_sf) == ind->SFN && NFAPI_SFNSLOT2SLOT(sfn_sf) == ind->Slot;
}
case NFAPI_NR_PHY_MSG_TYPE_TX_DATA_REQUEST:
{
nfapi_nr_tx_data_request_t *ind = candidate;
return NFAPI_SFNSLOT2SFN(sfn_sf) == ind->SFN && NFAPI_SFNSLOT2SLOT(sfn_sf) == ind->Slot;
}
case NFAPI_NR_PHY_MSG_TYPE_UL_DCI_REQUEST:
{
nfapi_nr_ul_dci_request_t *ind = candidate;
return NFAPI_SFNSLOT2SFN(sfn_sf) == ind->SFN && NFAPI_SFNSLOT2SLOT(sfn_sf) == ind->Slot;
}
case NFAPI_NR_PHY_MSG_TYPE_UL_TTI_REQUEST:
{
nfapi_nr_ul_tti_request_t *ind = candidate;
return NFAPI_SFNSLOT2SFN(sfn_sf) == ind->SFN && NFAPI_SFNSLOT2SLOT(sfn_sf) == ind->Slot;
}
default:
LOG_E(NR_MAC, "sfn_slot_match bad ID: %d\n", msg->message_id);
}
return false;
}
static void process_queued_nr_nfapi_msgs(NR_UE_MAC_INST_t *mac, int sfn_slot)
{
nfapi_nr_rach_indication_t *rach_ind = unqueue_matching(&nr_rach_ind_queue, MAX_QUEUE_SIZE, sfn_slot_matcher, &sfn_slot);
nfapi_nr_rx_data_indication_t *rx_ind = unqueue_matching(&nr_rx_ind_queue, MAX_QUEUE_SIZE, sfn_slot_matcher, &sfn_slot);
nfapi_nr_crc_indication_t *crc_ind = unqueue_matching(&nr_crc_ind_queue, MAX_QUEUE_SIZE, sfn_slot_matcher, &sfn_slot);
nfapi_nr_dl_tti_request_t *dl_tti_request = get_queue(&nr_dl_tti_req_queue);
nfapi_nr_ul_dci_request_t *ul_dci_request = get_queue(&nr_ul_dci_req_queue);
LOG_D(NR_MAC, "Try to get a ul_tti_req for sfn/slot %d %d from queue with %lu items\n",
NFAPI_SFNSLOT2SFN(mac->nr_ue_emul_l1.active_harq_sfn_slot),NFAPI_SFNSLOT2SLOT(mac->nr_ue_emul_l1.active_harq_sfn_slot), nr_ul_tti_req_queue.num_items);
nfapi_nr_ul_tti_request_t *ul_tti_request = unqueue_matching(&nr_ul_tti_req_queue, MAX_QUEUE_SIZE, sfn_slot_matcher, &mac->nr_ue_emul_l1.active_harq_sfn_slot);
if (!ul_tti_request)
{
LOG_D(NR_MAC, "Try to get a ul_tti_req from seprate queue because dl_tti_req was late\n");
ul_tti_request = unqueue_matching(&nr_wait_ul_tti_req_queue, MAX_QUEUE_SIZE, sfn_slot_matcher, &mac->nr_ue_emul_l1.active_harq_sfn_slot);
for (int i = 0; i < NR_MAX_HARQ_PROCESSES; i++) {
LOG_D(NR_MAC, "Try to get a ul_tti_req by matching CRC active SFN %d/SLOT %d from queue with %lu items\n",
NFAPI_SFNSLOT2SFN(mac->nr_ue_emul_l1.harq[i].active_ul_harq_sfn_slot),
NFAPI_SFNSLOT2SLOT(mac->nr_ue_emul_l1.harq[i].active_ul_harq_sfn_slot), nr_ul_tti_req_queue.num_items);
nfapi_nr_ul_tti_request_t *ul_tti_request_crc = unqueue_matching(&nr_ul_tti_req_queue, MAX_QUEUE_SIZE, sfn_slot_matcher, &mac->nr_ue_emul_l1.harq[i].active_ul_harq_sfn_slot);
if (ul_tti_request_crc && ul_tti_request_crc->n_pdus > 0)
{
check_and_process_dci(NULL, NULL, NULL, ul_tti_request_crc);
}
}
if (rach_ind && rach_ind->number_of_pdus > 0)
@@ -333,24 +270,6 @@ static void process_queued_nr_nfapi_msgs(NR_UE_MAC_INST_t *mac, int sfn_slot)
free(rach_ind);
nr_Msg1_transmitted(0, 0, NFAPI_SFNSLOT2SFN(sfn_slot), 0);
}
if (crc_ind && crc_ind->number_crcs > 0)
{
NR_UL_IND_t UL_INFO = {
.crc_ind = *crc_ind,
};
send_nsa_standalone_msg(&UL_INFO, crc_ind->header.message_id);
free(crc_ind->crc_list);
free(crc_ind);
}
if (rx_ind && rx_ind->number_of_pdus > 0)
{
NR_UL_IND_t UL_INFO = {
.rx_ind = *rx_ind,
};
send_nsa_standalone_msg(&UL_INFO, rx_ind->header.message_id);
free(rx_ind->pdu_list);
free(rx_ind);
}
if (dl_tti_request)
{
int dl_tti_sfn_slot = NFAPI_SFNSLOT2HEX(dl_tti_request->SFN, dl_tti_request->Slot);
@@ -380,10 +299,6 @@ static void process_queued_nr_nfapi_msgs(NR_UE_MAC_INST_t *mac, int sfn_slot)
{
check_and_process_dci(NULL, NULL, ul_dci_request, NULL);
}
if (ul_tti_request && ul_tti_request->n_pdus > 0)
{
check_and_process_dci(NULL, NULL, NULL, ul_tti_request);
}
}
static void check_nr_prach(NR_UE_MAC_INST_t *mac, nr_uplink_indication_t *ul_info, NR_PRACH_RESOURCES_t *prach_resources)
@@ -434,7 +349,6 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg)
reset_queue(&nr_tx_req_queue);
reset_queue(&nr_ul_dci_req_queue);
reset_queue(&nr_ul_tti_req_queue);
reset_queue(&nr_wait_ul_tti_req_queue);
NR_PRACH_RESOURCES_t prach_resources;
memset(&prach_resources, 0, sizeof(prach_resources));
@@ -443,6 +357,13 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg)
int last_sfn_slot = -1;
uint16_t sfn_slot = 0;
module_id_t mod_id = 0;
NR_UE_MAC_INST_t *mac = get_mac_inst(mod_id);
for (int i = 0; i < NR_MAX_HARQ_PROCESSES; i++) {
mac->nr_ue_emul_l1.harq[i].active = false;
mac->nr_ue_emul_l1.harq[i].active_ul_harq_sfn_slot = -1;
}
while (!oai_exit)
{
if (sem_wait(&sfn_slot_semaphore) != 0)
@@ -459,9 +380,11 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg)
}
if (slot_ind) {
sfn_slot = *slot_ind;
free_and_zero(slot_ind);
}
else if (ch_info) {
sfn_slot = ch_info->sfn_slot;
free_and_zero(ch_info);
}
frame_t frame = NFAPI_SFNSLOT2SFN(sfn_slot);
@@ -477,8 +400,6 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg)
LOG_D(NR_MAC, "The received sfn/slot [%d %d] from proxy\n",
frame, slot);
module_id_t mod_id = 0;
NR_UE_MAC_INST_t *mac = get_mac_inst(mod_id);
if (get_softmodem_params()->sa && mac->mib == NULL)
{
LOG_D(NR_MAC, "We haven't gotten MIB. Lets see if we received it\n");
@@ -533,8 +454,10 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg)
mac->scc_SIB->tdd_UL_DL_ConfigurationCommon,
ul_info.slot_tx, mac->frame_type))
{
LOG_D(NR_MAC, "Slot %d. calling nr_ue_ul_ind() from %s\n", ul_info.slot_tx, __FUNCTION__);
nr_ue_ul_indication(&ul_info);
LOG_D(NR_MAC, "Slot %d. calling nr_ue_ul_ind() and nr_ue_pucch_scheduler() from %s\n", ul_info.slot_tx, __FUNCTION__);
nr_ue_scheduler(NULL, &ul_info);
nr_ue_prach_scheduler(mod_id, ul_info.frame_tx, ul_info.slot_tx, ul_info.thread_id);
nr_ue_pucch_scheduler(mod_id, ul_info.frame_tx, ul_info.slot_tx, ul_info.thread_id);
check_nr_prach(mac, &ul_info, &prach_resources);
}
if (!IS_SOFTMODEM_NOS1 && get_softmodem_params()->sa) {
@@ -544,10 +467,6 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg)
pdcp_run(&ctxt);
}
process_queued_nr_nfapi_msgs(mac, sfn_slot);
free(slot_ind);
slot_ind = NULL;
free(ch_info);
ch_info = NULL;
}
return NULL;
}
+58 -1
View File
@@ -50,6 +50,7 @@
#include "LAYER2/MAC/mac_vars.h"
#include "RRC/LTE/rrc_vars.h"
#include "PHY_INTERFACE/phy_interface_vars.h"
#include "NR_IF_Module.h"
#include "openair1/SIMULATION/TOOLS/sim.h"
#ifdef SMBV
@@ -156,6 +157,9 @@ uint32_t N_RB_DL = 106;
*/
uint8_t abstraction_flag=0;
nr_bler_struct nr_bler_data[NR_NUM_MCS];
static void init_bler_table(void);
/*---------------------BMC: timespec helpers -----------------------------*/
@@ -250,7 +254,6 @@ void init_tpools(uint8_t nun_dlsch_threads) {
free(params);
init_dlsch_tpool( nun_dlsch_threads);
}
static void get_options(void) {
nrUE_params.ofdm_offset_divisor = 8;
@@ -472,6 +475,7 @@ int main( int argc, char **argv ) {
PHY_vars_UE_g[0] = malloc(sizeof(PHY_VARS_NR_UE *)*MAX_NUM_CCs);
if (get_softmodem_params()->emulate_l1) {
RCconfig_nr_ue_L1();
init_bler_table();
}
if (get_softmodem_params()->do_ra)
@@ -552,3 +556,56 @@ int main( int argc, char **argv ) {
return 0;
}
// Read in each MCS file and build BLER-SINR-TB table
static void init_bler_table(void) {
memset(nr_bler_data, 0, sizeof(nr_bler_data));
const char *awgn_results_dir = getenv("AWGN_RESULTS_DIR");
if (!awgn_results_dir) {
LOG_W(NR_MAC, "No $AWGN_RESULTS_DIR\n");
return;
}
for (unsigned int i = 0; i < NR_NUM_MCS; i++) {
char fName[1024];
snprintf(fName, sizeof(fName), "%s/mcs%d_awgn_5G.csv", awgn_results_dir, i);
FILE *pFile = fopen(fName, "r");
if (!pFile) {
LOG_E(NR_MAC, "%s: open %s: %s\n", __func__, fName, strerror(errno));
continue;
}
size_t bufSize = 1024;
char * line = NULL;
char * token;
char * temp = NULL;
int nlines = 0;
while (getline(&line, &bufSize, pFile) > 0) {
if (!strncmp(line, "SNR", 3)) {
continue;
}
if (nlines > NUM_SINR) {
LOG_E(NR_MAC, "BLER FILE ERROR - num lines greater than expected - file: %s\n", fName);
abort();
}
token = strtok_r(line, ";", &temp);
int ncols = 0;
while (token != NULL) {
if (ncols > NUM_BLER_COL) {
LOG_E(NR_MAC, "BLER FILE ERROR - num of cols greater than expected\n");
abort();
}
nr_bler_data[i].bler_table[nlines][ncols] = strtof(token, NULL);
ncols++;
token = strtok_r(NULL, ";", &temp);
}
nlines++;
}
nr_bler_data[i].length = nlines;
fclose(pFile);
}
}
+36 -30
View File
@@ -244,13 +244,13 @@ void oai_create_gnb(void) {
if (RC.gNB == NULL) {
RC.gNB = (PHY_VARS_gNB **) calloc(1, sizeof(PHY_VARS_gNB *));
LOG_I(PHY,"gNB L1 structure RC.gNB allocated @ %p\n",RC.gNB);
LOG_D(PHY,"gNB L1 structure RC.gNB allocated @ %p\n",RC.gNB);
}
if (RC.gNB[0] == NULL) {
RC.gNB[0] = (PHY_VARS_gNB *) calloc(1, sizeof(PHY_VARS_gNB));
LOG_I(PHY,"[nr-gnb.c] gNB structure RC.gNB[%d] allocated @ %p\n",0,RC.gNB[0]);
LOG_D(PHY,"[nr-gnb.c] gNB structure RC.gNB[%d] allocated @ %p\n",0,RC.gNB[0]);
}
PHY_VARS_gNB *gNB = RC.gNB[0];
@@ -491,7 +491,7 @@ int wake_gNB_rxtx(PHY_VARS_gNB *gNB, uint16_t sfn, uint16_t slot) {
L1_proc->frame_tx = (L1_proc->slot_rx > (19-slot_ahead)) ? (L1_proc->frame_rx+1)&1023 : L1_proc->frame_rx;
L1_proc->slot_tx = (L1_proc->slot_rx + slot_ahead)%20;
//LOG_I(PHY, "sfn/sf:%d%d proc[rx:%d%d] rx:%d%d] About to wake rxtx thread\n\n", sfn, slot, proc->frame_rx, proc->slot_rx, L1_proc->frame_rx, L1_proc->slot_rx);
//LOG_D(PHY, "sfn/sf:%d%d proc[rx:%d%d] rx:%d%d] About to wake rxtx thread\n\n", sfn, slot, proc->frame_rx, proc->slot_rx, L1_proc->frame_rx, L1_proc->slot_rx);
//NFAPI_TRACE(NFAPI_TRACE_INFO, "\nEntering wake_gNB_rxtx sfn %d slot %d\n",L1_proc->frame_rx,L1_proc->slot_rx);
// the thread can now be woken up
if (pthread_cond_signal(&L1_proc->cond) != 0) {
@@ -757,7 +757,7 @@ int phy_nr_rach_indication(nfapi_nr_rach_indication_t *ind)
int phy_nr_uci_indication(nfapi_nr_uci_indication_t *ind)
{
LOG_I(NR_MAC, "In %s() NFAPI SFN/SF: %d/%d number_of_pdus :%u\n",
LOG_D(NR_MAC, "In %s() NFAPI SFN/SF: %d/%d number_of_pdus :%u\n",
__FUNCTION__,ind->sfn, ind->slot, ind->num_ucis);
if(NFAPI_MODE == NFAPI_MODE_VNF)
{
@@ -787,12 +787,12 @@ int phy_nr_uci_indication(nfapi_nr_uci_indication_t *ind)
if (ind_pdu->harq) {
uci_ind_pdu->harq = CALLOC(1, sizeof(*uci_ind_pdu->harq));
AssertFatal(uci_ind_pdu->harq != NULL, "Memory not allocated for uci_ind_pdu->harq in phy_nr_uci_indication.");
*uci_ind_pdu->harq = *ind_pdu->harq;
uci_ind_pdu->harq->harq_list = CALLOC(uci_ind_pdu->harq->num_harq, sizeof(*uci_ind_pdu->harq->harq_list));
AssertFatal(uci_ind_pdu->harq->harq_list != NULL, "Memory not allocated for uci_ind_pdu->harq->harq_list in phy_nr_uci_indication.");
for (int j = 0; j < uci_ind_pdu->harq->num_harq; j++)
uci_ind_pdu->harq->harq_list[j].harq_value = ind_pdu->harq->harq_list[j].harq_value;
uci_ind_pdu->harq->harq_list[j].harq_value = ind_pdu->harq->harq_list[j].harq_value;
}
break;
}
@@ -800,21 +800,27 @@ int phy_nr_uci_indication(nfapi_nr_uci_indication_t *ind)
case NFAPI_NR_UCI_FORMAT_2_3_4_PDU_TYPE: {
nfapi_nr_uci_pucch_pdu_format_2_3_4_t *uci_ind_pdu = &uci_ind->uci_list[i].pucch_pdu_format_2_3_4;
nfapi_nr_uci_pucch_pdu_format_2_3_4_t *ind_pdu = &ind->uci_list[i].pucch_pdu_format_2_3_4;
uci_ind_pdu->harq.harq_payload = CALLOC(1, sizeof(*uci_ind_pdu->harq.harq_payload));
AssertFatal(uci_ind_pdu->harq.harq_payload != NULL, "Memory not allocated for uci_ind_pdu->harq.harq_payload in phy_nr_uci_indication.");
*uci_ind_pdu->harq.harq_payload = *ind_pdu->harq.harq_payload;
uci_ind_pdu->csi_part1.csi_part1_payload = CALLOC(1, sizeof(*uci_ind_pdu->csi_part1.csi_part1_payload));
AssertFatal(uci_ind_pdu->csi_part1.csi_part1_payload != NULL, "Memory not allocated for uci_ind_pdu->csi_part1.csi_part1_payload in phy_nr_uci_indication.");
*uci_ind_pdu->csi_part1.csi_part1_payload = *ind_pdu->csi_part1.csi_part1_payload;
uci_ind_pdu->csi_part2.csi_part2_payload = CALLOC(1, sizeof(*uci_ind_pdu->csi_part2.csi_part2_payload));
AssertFatal(uci_ind_pdu->csi_part2.csi_part2_payload != NULL, "Memory not allocated for uci_ind_pdu->csi_part2.csi_part2_payload in phy_nr_uci_indication.");
*uci_ind_pdu->csi_part2.csi_part2_payload = *ind_pdu->csi_part2.csi_part2_payload;
*uci_ind_pdu = *ind_pdu;
if (ind_pdu->harq.harq_payload) {
uci_ind_pdu->harq.harq_payload = CALLOC(1, sizeof(*uci_ind_pdu->harq.harq_payload));
AssertFatal(uci_ind_pdu->harq.harq_payload != NULL, "Memory not allocated for uci_ind_pdu->harq.harq_payload in phy_nr_uci_indication.");
*uci_ind_pdu->harq.harq_payload = *ind_pdu->harq.harq_payload;
}
if (ind_pdu->sr.sr_payload) {
uci_ind_pdu->sr.sr_payload = CALLOC(1, sizeof(*uci_ind_pdu->sr.sr_payload));
AssertFatal(uci_ind_pdu->sr.sr_payload != NULL, "Memory not allocated for uci_ind_pdu->sr.sr_payload in phy_nr_uci_indication.");
*uci_ind_pdu->sr.sr_payload = *ind_pdu->sr.sr_payload;
}
if (ind_pdu->csi_part1.csi_part1_payload) {
uci_ind_pdu->csi_part1.csi_part1_payload = CALLOC(1, sizeof(*uci_ind_pdu->csi_part1.csi_part1_payload));
AssertFatal(uci_ind_pdu->csi_part1.csi_part1_payload != NULL, "Memory not allocated for uci_ind_pdu->csi_part1.csi_part1_payload in phy_nr_uci_indication.");
*uci_ind_pdu->csi_part1.csi_part1_payload = *ind_pdu->csi_part1.csi_part1_payload;
}
if (ind_pdu->csi_part2.csi_part2_payload) {
uci_ind_pdu->csi_part2.csi_part2_payload = CALLOC(1, sizeof(*uci_ind_pdu->csi_part2.csi_part2_payload));
AssertFatal(uci_ind_pdu->csi_part2.csi_part2_payload != NULL, "Memory not allocated for uci_ind_pdu->csi_part2.csi_part2_payload in phy_nr_uci_indication.");
*uci_ind_pdu->csi_part2.csi_part2_payload = *ind_pdu->csi_part2.csi_part2_payload;
}
break;
}
}
@@ -944,7 +950,7 @@ int phy_crc_indication(struct nfapi_vnf_p7_config *config, nfapi_crc_indication_
int phy_nr_crc_indication(nfapi_nr_crc_indication_t *ind) {
LOG_I(NR_MAC, "In %s() NFAPI SFN/SF: %d/%d number_of_pdus :%u\n",
LOG_D(NR_MAC, "In %s() NFAPI SFN/SF: %d/%d number_of_pdus :%u\n",
__FUNCTION__,ind->sfn, ind->slot, ind->number_crcs);
if(NFAPI_MODE == NFAPI_MODE_VNF)
@@ -967,7 +973,7 @@ int phy_nr_crc_indication(nfapi_nr_crc_indication_t *ind) {
crc_ind->crc_list[j].tb_crc_status = ind->crc_list[j].tb_crc_status;
crc_ind->crc_list[j].timing_advance = ind->crc_list[j].timing_advance;
crc_ind->crc_list[j].ul_cqi = ind->crc_list[j].ul_cqi;
LOG_I(NR_MAC, "Received crc_ind.harq_id = %d for %d index SFN SLot %u %u with rnti %x\n",
LOG_D(NR_MAC, "Received crc_ind.harq_id = %d for %d index SFN SLot %u %u with rnti %x\n",
ind->crc_list[j].harq_id, j, ind->sfn, ind->slot, ind->crc_list[j].rnti);
}
if (!put_queue(&gnb_crc_ind_queue, crc_ind))
@@ -1063,7 +1069,7 @@ int phy_rx_indication(struct nfapi_vnf_p7_config *config, nfapi_rx_indication_t
int phy_nr_rx_data_indication(nfapi_nr_rx_data_indication_t *ind) {
LOG_I(NR_MAC, "In %s() NFAPI SFN/SF: %d/%d number_of_pdus :%u, and pdu %p\n",
LOG_D(NR_MAC, "In %s() NFAPI SFN/SF: %d/%d number_of_pdus :%u, and pdu %p\n",
__FUNCTION__,ind->sfn, ind->slot, ind->number_of_pdus, ind->pdu_list[0].pdu);
if(NFAPI_MODE == NFAPI_MODE_VNF)
@@ -1165,7 +1171,7 @@ static void analyze_cqi_pdus_for_duplicates(nfapi_cqi_indication_t *ind)
{
nfapi_cqi_indication_pdu_t *src_pdu = &ind->cqi_indication_body.cqi_pdu_list[i];
LOG_I(MAC, "CQI_IND[PDU:%d][rnti:%x cqi:%d channel:%d]\n", i, src_pdu->rx_ue_information.rnti,
LOG_D(MAC, "CQI_IND[PDU:%d][rnti:%x cqi:%d channel:%d]\n", i, src_pdu->rx_ue_information.rnti,
src_pdu->ul_cqi_information.ul_cqi, src_pdu->ul_cqi_information.channel);
for (int j = i + 1; j < num_cqis; j++)
@@ -1887,7 +1893,7 @@ int oai_nfapi_dl_config_req(nfapi_dl_config_request_t *dl_config_req) {
nfapi_vnf_p7_config_t *p7_config = vnf.p7_vnfs[0].config;
dl_config_req->header.phy_id = 1; // DJP HACK TODO FIXME - need to pass this around!!!!
dl_config_req->header.message_id = NFAPI_DL_CONFIG_REQUEST;
LOG_I(PHY, "[VNF] %s() DL_CONFIG_REQ sfn_sf:%d_%d number_of_pdus:%d\n", __FUNCTION__,
LOG_D(PHY, "[VNF] %s() DL_CONFIG_REQ sfn_sf:%d_%d number_of_pdus:%d\n", __FUNCTION__,
NFAPI_SFNSF2SFN(dl_config_req->sfn_sf),NFAPI_SFNSF2SF(dl_config_req->sfn_sf), dl_config_req->dl_config_request_body.number_pdu);
if (dl_config_req->dl_config_request_body.number_pdu > 0)
{
@@ -1898,7 +1904,7 @@ int oai_nfapi_dl_config_req(nfapi_dl_config_request_t *dl_config_req) {
{
uint16_t dl_rnti = dl_config_req->dl_config_request_body.dl_config_pdu_list[i].dlsch_pdu.dlsch_pdu_rel8.rnti;
uint16_t numPDUs = dl_config_req->dl_config_request_body.number_pdu;
LOG_I(MAC, "(OAI eNB) Sending dl_config_req at VNF during Frame: %d and Subframe: %d,"
LOG_D(MAC, "(OAI eNB) Sending dl_config_req at VNF during Frame: %d and Subframe: %d,"
" with a RNTI value of: %x and with number of PDUs: %u\n",
NFAPI_SFNSF2SFN(dl_config_req->sfn_sf),NFAPI_SFNSF2SF(dl_config_req->sfn_sf), dl_rnti, numPDUs);
}
@@ -1919,8 +1925,7 @@ int oai_nfapi_dl_config_req(nfapi_dl_config_request_t *dl_config_req) {
int oai_nfapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req)
{
//LOG_I(PHY, "sfn:%d,slot:%d\n",dl_config_req->SFN,dl_config_req->Slot);
//printf("\nEntering oai_nfapi_nr_dl_config_req sfn:%d,slot:%d\n",dl_config_req->SFN,dl_config_req->Slot);
LOG_D(NR_PHY, "Entering oai_nfapi_nr_dl_config_req sfn:%d,slot:%d\n", dl_config_req->SFN, dl_config_req->Slot);
nfapi_vnf_p7_config_t *p7_config = vnf.p7_vnfs[0].config;
dl_config_req->header.message_id= NFAPI_NR_PHY_MSG_TYPE_DL_TTI_REQUEST;
dl_config_req->header.phy_id = 1; // DJP HACK TODO FIXME - need to pass this around!!!!
@@ -1939,6 +1944,7 @@ int oai_nfapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req)
int oai_nfapi_tx_data_req(nfapi_nr_tx_data_request_t *tx_data_req)
{
LOG_D(NR_PHY, "Entering oai_nfapi_nr_tx_data_req sfn:%d,slot:%d\n", tx_data_req->SFN, tx_data_req->Slot);
nfapi_vnf_p7_config_t *p7_config = vnf.p7_vnfs[0].config;
tx_data_req->header.phy_id = 1; // DJP HACK TODO FIXME - need to pass this around!!!!
tx_data_req->header.message_id = NFAPI_NR_PHY_MSG_TYPE_TX_DATA_REQUEST;
@@ -2056,7 +2062,7 @@ int oai_nfapi_ul_config_req(nfapi_ul_config_request_t *ul_config_req) {
{
uint8_t pdu_type = pdu_list[i].pdu_type;
LOG_I(MAC, "ul_config_req num_pdus: %u pdu_number: %d pdu_type: %u SFN.SF: %d.%d\n",
LOG_D(MAC, "ul_config_req num_pdus: %u pdu_number: %d pdu_type: %u SFN.SF: %d.%d\n",
num_pdus, i, pdu_type, ul_config_req->sfn_sf >> 4, ul_config_req->sfn_sf & 15);
if (pdu_type != NFAPI_UL_CONFIG_ULSCH_CQI_RI_PDU_TYPE)
+10 -2
View File
@@ -44,13 +44,21 @@ uint8_t pulls32(uint8_t **in, int32_t *out, uint8_t *end);
uint32_t pullarray8(uint8_t **in, uint8_t out[], uint32_t max_len, uint32_t len, uint8_t *end);
uint32_t pullarray16(uint8_t **in, uint16_t out[], uint32_t max_len, uint32_t len, uint8_t *end);
uint32_t pullarrays16(uint8_t **in, int16_t out[], uint32_t max_len, uint32_t len, uint8_t *end);
uint32_t pullarray32(uint8_t **in, uint32_t out[], uint32_t max_len, uint32_t len, uint8_t *end);
uint32_t pullarray32(uint8_t **values_to_pull,
uint32_t out[],
uint32_t max_num_values_to_pull,
uint32_t num_values_to_pull,
uint8_t *out_end);
uint32_t pullarrays32(uint8_t **in, int32_t out[], uint32_t max_len, uint32_t len, uint8_t *end);
uint32_t pusharray8(uint8_t in[], uint32_t max_len, uint32_t len, uint8_t **out, uint8_t *end);
uint32_t pusharray16(uint16_t in[], uint32_t max_len, uint32_t len, uint8_t **out, uint8_t *end);
uint32_t pusharrays16(int16_t in[], uint32_t max_len, uint32_t len, uint8_t **out, uint8_t *end);
uint32_t pusharray32(uint32_t in[], uint32_t max_len, uint32_t len, uint8_t **out, uint8_t *end);
uint32_t pusharray32(const uint32_t *values_to_push,
uint32_t max_num_values_to_push,
uint32_t num_values_to_push,
uint8_t **out,
uint8_t *out_end);
uint32_t pusharrays32(int32_t in[], uint32_t max_len, uint32_t len, uint8_t **out, uint8_t *end);
typedef uint8_t (*pack_array_elem_fn)(void* elem, uint8_t **ppWritePackedMsg, uint8_t *end);
File diff suppressed because it is too large Load Diff
+239 -145
View File
@@ -1048,7 +1048,7 @@ static uint8_t pack_ul_tti_request_srs_pdu(nfapi_nr_srs_pdu_t *srs_pdu, uint8_t
push8(srs_pdu->comb_offset, ppWritePackedMsg, end) &&
push8(srs_pdu->cyclic_shift, ppWritePackedMsg, end) &&
push8(srs_pdu->frequency_position, ppWritePackedMsg, end) &&
push8(srs_pdu->frequency_shift, ppWritePackedMsg, end) &&
push16(srs_pdu->frequency_shift, ppWritePackedMsg, end) &&
push8(srs_pdu->frequency_hopping, ppWritePackedMsg, end) &&
push8(srs_pdu->group_or_sequence_hopping, ppWritePackedMsg, end) &&
push8(srs_pdu->resource_type, ppWritePackedMsg, end) &&
@@ -1583,13 +1583,19 @@ static uint8_t pack_ul_config_request_body_value(void *tlv, uint8_t **ppWritePac
static uint8_t pack_ul_tti_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p7_codec_config_t *config) {
nfapi_nr_ul_tti_request_t *pNfapiMsg = (nfapi_nr_ul_tti_request_t *)msg;
if (!(push16(pNfapiMsg->SFN, ppWritePackedMsg, end) &&
push16(pNfapiMsg->Slot, ppWritePackedMsg, end) &&
push8(pNfapiMsg->n_pdus, ppWritePackedMsg, end) &&
push8(pNfapiMsg->rach_present, ppWritePackedMsg, end) &&
push8(pNfapiMsg->n_ulsch, ppWritePackedMsg, end) &&
push8(pNfapiMsg->n_ulcch, ppWritePackedMsg, end) &&
push8(pNfapiMsg->n_group, ppWritePackedMsg, end) ))
if (!push16(pNfapiMsg->SFN, ppWritePackedMsg, end))
return 0;
if (!push16(pNfapiMsg->Slot, ppWritePackedMsg, end))
return 0;
if (!push8(pNfapiMsg->n_pdus, ppWritePackedMsg, end))
return 0;
if (!push8(pNfapiMsg->n_group, ppWritePackedMsg, end))
return 0;
if (!push8(pNfapiMsg->rach_present, ppWritePackedMsg, end))
return 0;
if (!push8(pNfapiMsg->n_ulsch, ppWritePackedMsg, end))
return 0;
if (!push8(pNfapiMsg->n_ulcch, ppWritePackedMsg, end))
return 0;
for(int i=0; i<pNfapiMsg->n_pdus; i++) {
@@ -1893,15 +1899,23 @@ static uint8_t pack_tx_data_pdu_list_value(void *tlv, uint8_t **ppWritePackedMsg
switch(value->TLVs[i].tag) {
case 0: {
if(!pusharray32(value->TLVs[i].value.direct, 16384, value->TLVs[i].length, ppWritePackedMsg, end))
if (!pusharray32(value->TLVs[i].value.direct, sizeof(value->TLVs[i].value.direct) / sizeof(uint32_t),
value->TLVs[i].length / sizeof(uint32_t), ppWritePackedMsg, end)) {
NFAPI_TRACE(NFAPI_TRACE_ERROR, "%s():%d. value->TLVs[i].length %d \n",
__FUNCTION__, __LINE__, value->TLVs[i].length);
return 0;
}
break;
}
case 1: {
if(!pusharray32(value->TLVs[i].value.ptr, value->TLVs[i].length, value->TLVs[i].length, ppWritePackedMsg, end))
if (!pusharray32(value->TLVs[i].value.ptr, value->TLVs[i].length / sizeof(uint32_t),
value->TLVs[i].length / sizeof(uint32_t), ppWritePackedMsg, end)) {
NFAPI_TRACE(NFAPI_TRACE_ERROR, "%s():%d. value->TLVs[i].length %d \n",
__FUNCTION__, __LINE__, value->TLVs[i].length);
return 0;
}
break;
}
@@ -3008,10 +3022,8 @@ return 1;
//RX DATA INDICATION
static uint8_t pack_nr_rx_data_indication_body(void* tlv, uint8_t **ppWritePackedMsg, uint8_t *end)
static uint8_t pack_nr_rx_data_indication_body(nfapi_nr_rx_data_pdu_t *value, uint8_t **ppWritePackedMsg, uint8_t *end)
{
nfapi_nr_rx_data_pdu_t* value = (nfapi_nr_rx_data_pdu_t*)tlv;
if(!(push32(value->handle, ppWritePackedMsg, end) &&
push16(value->rnti, ppWritePackedMsg, end) &&
push8(value->harq_id, ppWritePackedMsg, end) &&
@@ -3041,7 +3053,7 @@ static uint8_t pack_nr_rx_data_indication(void *msg, uint8_t **ppWritePackedMsg,
for (int i = 0; i < pNfapiMsg->number_of_pdus; i++)
{
if(!pack_nr_rx_data_indication_body(&(pNfapiMsg->pdu_list[i]), ppWritePackedMsg, end))
if(!pack_nr_rx_data_indication_body(&(pNfapiMsg->pdu_list[i]), ppWritePackedMsg, end))
return 0;
}
@@ -3089,10 +3101,8 @@ return 1;
//SRS INDICATION
static uint8_t pack_nr_srs_indication_body(void* tlv, uint8_t **ppWritePackedMsg, uint8_t *end)
static uint8_t pack_nr_srs_indication_body(nfapi_nr_srs_indication_pdu_t *value, uint8_t **ppWritePackedMsg, uint8_t *end)
{
nfapi_nr_srs_indication_pdu_t* value = (nfapi_nr_srs_indication_pdu_t*)tlv;
if(!(push32(value->handle, ppWritePackedMsg, end) &&
push16(value->rnti, ppWritePackedMsg, end) &&
push16(value->timing_advance, ppWritePackedMsg, end) &&
@@ -3104,8 +3114,7 @@ static uint8_t pack_nr_srs_indication_body(void* tlv, uint8_t **ppWritePackedMsg
return 0;
for(int i = 0; i < value->reported_symbol_list->num_rbs; i++)
{
if(!(push8(value->reported_symbol_list->rb_list->rb_snr, ppWritePackedMsg, end)
))
if (!push8(value->reported_symbol_list->rb_list[i].rb_snr, ppWritePackedMsg, end))
return 0;
}
return 1;
@@ -3181,32 +3190,36 @@ return 1;
static uint8_t pack_nr_uci_pucch_0_1(void* tlv, uint8_t **ppWritePackedMsg, uint8_t *end) {
nfapi_nr_uci_pucch_pdu_format_0_1_t* value = (nfapi_nr_uci_pucch_pdu_format_0_1_t*)tlv;
if(!(push8(value->pduBitmap, ppWritePackedMsg, end) &&
push32(value->handle, ppWritePackedMsg, end) &&
push16(value->rnti, ppWritePackedMsg, end) &&
push8(value->pucch_format, ppWritePackedMsg, end) &&
push8(value->ul_cqi, ppWritePackedMsg, end) &&
push16(value->timing_advance, ppWritePackedMsg, end) &&
push16(value->rssi, ppWritePackedMsg, end)
))
return 0;
if (!push8(value->pduBitmap, ppWritePackedMsg, end))
return 0;
if (!push32(value->handle, ppWritePackedMsg, end))
return 0;
if (!push16(value->rnti, ppWritePackedMsg, end))
return 0;
if (!push8(value->pucch_format, ppWritePackedMsg, end))
return 0;
if (!push8(value->ul_cqi, ppWritePackedMsg, end))
return 0;
if (!push16(value->timing_advance, ppWritePackedMsg, end))
return 0;
if (!push16(value->rssi, ppWritePackedMsg, end))
return 0;
if (value->pduBitmap & 0x01) { //SR
if (!(push8(value->sr->sr_indication, ppWritePackedMsg, end) &&
push8(value->sr->sr_confidence_level, ppWritePackedMsg, end)
))
return 0;
if (!push8(value->sr->sr_indication, ppWritePackedMsg, end))
return 0;
if (!push8(value->sr->sr_confidence_level, ppWritePackedMsg, end))
return 0;
}
if (((value->pduBitmap >> 1) & 0x01)) { //HARQ
if (!(push8(value->harq->num_harq, ppWritePackedMsg, end) &&
push8(value->harq->harq_confidence_level, ppWritePackedMsg, end)
))
if (!push8(value->harq->num_harq, ppWritePackedMsg, end))
return 0;
if (!push8(value->harq->harq_confidence_level, ppWritePackedMsg, end))
return 0;
for (int i = 0; i < value->harq->num_harq; i++)
{
if (!(push8(value->harq->harq_list[i].harq_value, ppWritePackedMsg, end)
))
return 0;
if (!push8(value->harq->harq_list[i].harq_value, ppWritePackedMsg, end))
return 0;
}
}
@@ -3216,57 +3229,79 @@ static uint8_t pack_nr_uci_pucch_0_1(void* tlv, uint8_t **ppWritePackedMsg, uint
static uint8_t pack_nr_uci_pucch_2_3_4(void* tlv, uint8_t **ppWritePackedMsg, uint8_t *end) {
nfapi_nr_uci_pucch_pdu_format_2_3_4_t* value = (nfapi_nr_uci_pucch_pdu_format_2_3_4_t*) tlv;
if(!(push8(value->pduBitmap, ppWritePackedMsg, end) &&
push32(value->handle, ppWritePackedMsg, end) &&
push16(value->rnti, ppWritePackedMsg, end) &&
push8(value->pucch_format, ppWritePackedMsg, end) &&
push8(value->ul_cqi, ppWritePackedMsg, end) &&
push16(value->timing_advance, ppWritePackedMsg, end) &&
push16(value->rssi, ppWritePackedMsg, end)
))
return 0;
if (!push8(value->pduBitmap, ppWritePackedMsg, end))
return 0;
if (!push32(value->handle, ppWritePackedMsg, end))
return 0;
if (!push16(value->rnti, ppWritePackedMsg, end))
return 0;
if (!push8(value->pucch_format, ppWritePackedMsg, end))
return 0;
if (!push8(value->ul_cqi, ppWritePackedMsg, end))
return 0;
if (!push16(value->timing_advance, ppWritePackedMsg, end))
return 0;
if (!push16(value->rssi, ppWritePackedMsg, end))
return 0;
if (value->pduBitmap & 0x01) { //SR
if(!(push8(value->sr.sr_bit_len, ppWritePackedMsg, end) &&
pusharray8(value->sr.sr_payload, (int)(value->sr.sr_bit_len / 8) + 1, (int)(value->sr.sr_bit_len / 8) + 1, ppWritePackedMsg, end)
))
return 0;
}
if (((value->pduBitmap >> 1) & 0x01)) { //HARQ
if(!(push8(value->harq.harq_crc, ppWritePackedMsg, end) &&
push8(value->harq.harq_bit_len, ppWritePackedMsg, end) &&
pusharray8(value->harq.harq_payload, (int)(value->harq.harq_bit_len / 8) + 1, (int)(value->harq.harq_bit_len / 8) + 1, ppWritePackedMsg, end)
))
if (!push16(value->sr.sr_bit_len, ppWritePackedMsg, end))
return 0;
if (!pusharray8(value->sr.sr_payload,
(int)((value->sr.sr_bit_len / 8) + 1),
(int)((value->sr.sr_bit_len / 8) + 1),
ppWritePackedMsg,
end))
return 0;
}
if (((value->pduBitmap >> 2) & 0x01)) { //CSI-1
if(!(push8(value->csi_part1.csi_part1_crc, ppWritePackedMsg, end) &&
push8(value->csi_part1.csi_part1_bit_len, ppWritePackedMsg, end) &&
pusharray8(value->csi_part1.csi_part1_payload, (int)(value->csi_part1.csi_part1_bit_len / 8) + 1, (int)(value->csi_part1.csi_part1_bit_len / 8) + 1, ppWritePackedMsg, end)
))
if ((value->pduBitmap >> 1) & 0x01) { //HARQ
if (!push8(value->harq.harq_crc, ppWritePackedMsg, end))
return 0;
if (!push16(value->harq.harq_bit_len, ppWritePackedMsg, end))
return 0;
if (!pusharray8(value->harq.harq_payload,
(int)((value->harq.harq_bit_len / 8) + 1),
(int)((value->harq.harq_bit_len / 8) + 1),
ppWritePackedMsg,
end))
return 0;
}
if (((value->pduBitmap >> 3) & 0x01)) { //CSI-2
if(!(push8(value->csi_part2.csi_part2_crc, ppWritePackedMsg, end) &&
push8(value->csi_part2.csi_part2_bit_len, ppWritePackedMsg, end) &&
pusharray8(value->csi_part2.csi_part2_payload, (int)(value->csi_part2.csi_part2_bit_len / 8) + 1, (int)(value->csi_part2.csi_part2_bit_len / 8) + 1, ppWritePackedMsg, end)
))
if ((value->pduBitmap >> 2) & 0x01) { //CSI-1
if (!push8(value->csi_part1.csi_part1_crc, ppWritePackedMsg, end))
return 0;
if (!push16(value->csi_part1.csi_part1_bit_len, ppWritePackedMsg, end))
return 0;
if (!pusharray8(value->csi_part1.csi_part1_payload,
(int)((value->csi_part1.csi_part1_bit_len / 8) + 1),
(int)((value->csi_part1.csi_part1_bit_len / 8) + 1),
ppWritePackedMsg,
end))
return 0;
}
if ((value->pduBitmap >> 3) & 0x01) { //CSI-2
if (!push8(value->csi_part2.csi_part2_crc, ppWritePackedMsg, end))
return 0;
if (!push16(value->csi_part2.csi_part2_bit_len, ppWritePackedMsg, end))
return 0;
if (!pusharray8(value->csi_part2.csi_part2_payload,
(int)((value->csi_part2.csi_part2_bit_len / 8) + 1),
(int)((value->csi_part2.csi_part2_bit_len / 8) + 1),
ppWritePackedMsg,
end))
return 0;
}
return 1;
}
static uint8_t pack_nr_uci_indication_body(void* tlv, uint8_t **ppWritePackedMsg, uint8_t *end)
static uint8_t pack_nr_uci_indication_body(nfapi_nr_uci_t* value, uint8_t **ppWritePackedMsg, uint8_t *end)
{
nfapi_nr_uci_t* value = (nfapi_nr_uci_t*)tlv;
if(!(push16(value->pdu_type, ppWritePackedMsg, end) &&
push16(value->pdu_size, ppWritePackedMsg, end)
))
if (!push16(value->pdu_type, ppWritePackedMsg, end))
return 0;
if (!push16(value->pdu_size, ppWritePackedMsg, end))
return 0;
switch (value->pdu_type) {
@@ -3290,13 +3325,14 @@ static uint8_t pack_nr_uci_indication(void *msg, uint8_t **ppWritePackedMsg, uin
{
nfapi_nr_uci_indication_t *pNfapiMsg = (nfapi_nr_uci_indication_t*)msg;
if (!(push16(pNfapiMsg->sfn , ppWritePackedMsg, end) &&
push16(pNfapiMsg->slot , ppWritePackedMsg, end) &&
push16(pNfapiMsg->num_ucis, ppWritePackedMsg, end)
))
if (!push16(pNfapiMsg->sfn , ppWritePackedMsg, end))
return 0;
if (!push16(pNfapiMsg->slot , ppWritePackedMsg, end))
return 0;
if (!push16(pNfapiMsg->num_ucis, ppWritePackedMsg, end))
return 0;
for(int i=0; i<pNfapiMsg->num_ucis;i++)
for (int i = 0; i < pNfapiMsg->num_ucis; i++)
{
if (!pack_nr_uci_indication_body(&pNfapiMsg->uci_list[i], ppWritePackedMsg, end))
return 0;
@@ -4620,14 +4656,19 @@ static uint8_t unpack_ul_tti_groups_list_value(uint8_t **ppReadPackedMsg, uint8_
static uint8_t unpack_ul_tti_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p7_codec_config_t *config) {
nfapi_nr_ul_tti_request_t *pNfapiMsg = (nfapi_nr_ul_tti_request_t *)msg;
if (!(
pull16(ppReadPackedMsg, &pNfapiMsg->SFN, end) &&
pull16(ppReadPackedMsg, &pNfapiMsg->Slot, end) &&
pull8(ppReadPackedMsg, &pNfapiMsg->n_pdus, end) &&
pull8(ppReadPackedMsg, &pNfapiMsg->n_group, end) &&
pull8(ppReadPackedMsg, &pNfapiMsg->rach_present, end) &&
pull8(ppReadPackedMsg, &pNfapiMsg->n_ulcch, end) &&
pull8(ppReadPackedMsg, &pNfapiMsg->n_ulsch, end) ))
if (!pull16(ppReadPackedMsg, &pNfapiMsg->SFN, end))
return 0;
if (!pull16(ppReadPackedMsg, &pNfapiMsg->Slot, end))
return 0;
if (!pull8(ppReadPackedMsg, &pNfapiMsg->n_pdus, end))
return 0;
if (!pull8(ppReadPackedMsg, &pNfapiMsg->n_group, end))
return 0;
if (!pull8(ppReadPackedMsg, &pNfapiMsg->rach_present, end))
return 0;
if (!pull8(ppReadPackedMsg, &pNfapiMsg->n_ulcch, end))
return 0;
if (!pull8(ppReadPackedMsg, &pNfapiMsg->n_ulsch, end))
return 0;
for(int i=0; i< pNfapiMsg->n_pdus; i++) {
@@ -5510,14 +5551,18 @@ static uint8_t unpack_tx_data_pdu_list_value(uint8_t **ppReadPackedMsg, uint8_t
switch(pNfapiMsg->TLVs[i].tag) {
case 0: {
if(!pullarray32(ppReadPackedMsg, pNfapiMsg->TLVs[i].value.direct, 16384, pNfapiMsg->TLVs[i].length, end))
if (!pullarray32(ppReadPackedMsg, pNfapiMsg->TLVs[i].value.direct,
sizeof(pNfapiMsg->TLVs[i].value.direct) / sizeof(uint32_t),
pNfapiMsg->TLVs[i].length / sizeof(uint32_t), end))
return 0;
break;
}
case 1: {
if(!pullarray32(ppReadPackedMsg, pNfapiMsg->TLVs[i].value.ptr, pNfapiMsg->TLVs[i].length, pNfapiMsg->TLVs[i].length, end))
if (!pullarray32(ppReadPackedMsg,pNfapiMsg->TLVs[i].value.ptr,
pNfapiMsg->TLVs[i].length / sizeof(uint32_t),
pNfapiMsg->TLVs[i].length / sizeof(uint32_t), end))
return 0;
break;
@@ -5671,7 +5716,7 @@ static uint8_t unpack_nr_rx_data_indication_body(nfapi_nr_rx_data_pdu_t* value,
return 0;
uint16_t length = value->pdu_length;
value->pdu = nfapi_p7_allocate(length, config);
value->pdu = nfapi_p7_allocate(sizeof(*value->pdu) * length, config);
if (pullarray8(ppReadPackedMsg, value->pdu, length, length, end) == 0)
{
@@ -5752,10 +5797,8 @@ return 1;
//SRS INDICATION
static uint8_t unpack_nr_srs_indication_body(void* tlv, uint8_t **ppReadPackedMsg, uint8_t *end)
static uint8_t unpack_nr_srs_indication_body(nfapi_nr_srs_indication_pdu_t* value, uint8_t **ppReadPackedMsg, uint8_t *end)
{
nfapi_nr_srs_indication_pdu_t* value = (nfapi_nr_srs_indication_pdu_t*)tlv;
if(!(pull32(ppReadPackedMsg, &value->handle, end) &&
pull16(ppReadPackedMsg, &value->rnti, end) &&
pull16(ppReadPackedMsg, &value->timing_advance, end) &&
@@ -5767,17 +5810,14 @@ static uint8_t unpack_nr_srs_indication_body(void* tlv, uint8_t **ppReadPackedMs
return 0;
for(int i = 0; i < value->reported_symbol_list->num_rbs; i++)
{
if(!(pull8(ppReadPackedMsg, &value->reported_symbol_list->rb_list->rb_snr, end)
))
if (!pull8(ppReadPackedMsg, &value->reported_symbol_list->rb_list[i].rb_snr, end))
return 0;
}
return 1;
}
static uint8_t unpack_nr_srs_indication(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p7_codec_config_t* config)
static uint8_t unpack_nr_srs_indication(uint8_t **ppReadPackedMsg, uint8_t *end, nfapi_nr_srs_indication_t *pNfapiMsg, nfapi_p7_codec_config_t* config)
{
nfapi_nr_srs_indication_t *pNfapiMsg = (nfapi_nr_srs_indication_t*)msg;
if (!(pull16(ppReadPackedMsg,&pNfapiMsg->sfn , end) &&
pull16(ppReadPackedMsg,&pNfapiMsg->slot , end) &&
pull8(ppReadPackedMsg,&pNfapiMsg->number_of_pdus, end)
@@ -5786,7 +5826,7 @@ static uint8_t unpack_nr_srs_indication(uint8_t **ppReadPackedMsg, uint8_t *end,
for(int i=0; i<pNfapiMsg->number_of_pdus;i++)
{
if(!unpack_nr_srs_indication_body(&pNfapiMsg->pdu_list,ppReadPackedMsg,end))
if (!unpack_nr_srs_indication_body(&pNfapiMsg->pdu_list[i], ppReadPackedMsg, end))
return 0;
}
@@ -5907,58 +5947,111 @@ static uint8_t unpack_nr_uci_pucch_0_1(nfapi_nr_uci_pucch_pdu_format_0_1_t *valu
}
static uint8_t unpack_nr_uci_pucch_2_3_4(nfapi_nr_uci_pucch_pdu_format_2_3_4_t* tlv, uint8_t **ppReadPackedMsg, uint8_t *end) {
nfapi_nr_uci_pucch_pdu_format_2_3_4_t* value = (nfapi_nr_uci_pucch_pdu_format_2_3_4_t*) tlv;
static uint8_t unpack_nr_uci_pucch_2_3_4(nfapi_nr_uci_pucch_pdu_format_2_3_4_t* value,
uint8_t **ppReadPackedMsg,
uint8_t *end,
nfapi_p7_codec_config_t *config) {
if (!pull8(ppReadPackedMsg, &value->pduBitmap, end))
return 0;
if (!pull32(ppReadPackedMsg, &value->handle, end))
return 0;
if (!pull16(ppReadPackedMsg, &value->rnti, end))
return 0;
if (!pull8(ppReadPackedMsg, &value->pucch_format, end))
return 0;
if (!pull8(ppReadPackedMsg, &value->ul_cqi, end))
return 0;
if (!pull16(ppReadPackedMsg, &value->timing_advance, end))
return 0;
if (!pull16(ppReadPackedMsg, &value->rssi, end))
return 0;
if(!(pull8(ppReadPackedMsg, &value->pduBitmap, end) &&
pull32(ppReadPackedMsg, &value->handle, end) &&
pull16(ppReadPackedMsg, &value->rnti, end) &&
pull8(ppReadPackedMsg, &value->pucch_format, end) &&
pull8(ppReadPackedMsg, &value->ul_cqi, end) &&
pull16(ppReadPackedMsg, &value->timing_advance, end) &&
pull16(ppReadPackedMsg, &value->rssi, end)
))
return 0;
if (value->pduBitmap & 0x01) { //SR
if(!(pull16(ppReadPackedMsg, &value->sr.sr_bit_len, end)))
if (!pull16(ppReadPackedMsg, &value->sr.sr_bit_len, end))
return 0;
value->sr.sr_payload = (uint8_t*) malloc(sizeof(uint8_t) * ((value->sr.sr_bit_len/8)));
if(!(pullarray8(ppReadPackedMsg, &value->sr.sr_payload[0], (int)(value->sr.sr_bit_len / 8), (int)(value->sr.sr_bit_len / 8), end)))
return 0;
}
if (((value->pduBitmap >> 1) & 0x01)) { //HARQ
if(!(pull8(ppReadPackedMsg, &value->harq.harq_crc, end)) &&
(pull16(ppReadPackedMsg, &value->harq.harq_bit_len, end)))
value->sr.sr_payload = nfapi_p7_allocate(sizeof(*value->sr.sr_payload) *
(int)((value->sr.sr_bit_len / 8) + 1),
config);
if (value->sr.sr_payload == NULL)
{
NFAPI_TRACE(NFAPI_TRACE_ERROR, "%s failed to allocate value->sr.sr_payload\n", __FUNCTION__);
return 0;
}
value->harq.harq_payload = (uint8_t*) malloc(sizeof(uint8_t) * ((value->harq.harq_bit_len/8 )));
if(!(pullarray8(ppReadPackedMsg, value->harq.harq_payload, (int)(value->harq.harq_bit_len / 8), (int)(value->harq.harq_bit_len / 8), end)))
if (!pullarray8(ppReadPackedMsg, value->sr.sr_payload,
(int)((value->sr.sr_bit_len / 8) + 1),
(int)((value->sr.sr_bit_len / 8) + 1),
end))
return 0;
}
if (((value->pduBitmap >> 2) & 0x01)) { //CSI-1
if(!(pull8(ppReadPackedMsg, &value->csi_part1.csi_part1_crc, end)) &&
(pull16(ppReadPackedMsg, &value->csi_part1.csi_part1_bit_len, end)))
if ((value->pduBitmap >> 1) & 0x01) { //HARQ
if (!pull8(ppReadPackedMsg, &value->harq.harq_crc, end))
return 0;
if (!pull16(ppReadPackedMsg, &value->harq.harq_bit_len, end))
return 0;
value->csi_part1.csi_part1_payload = (uint8_t*) malloc(sizeof(uint8_t) * ((value->csi_part1.csi_part1_bit_len/8)));
value->harq.harq_payload = nfapi_p7_allocate(sizeof(*value->harq.harq_payload) *
(int)((value->harq.harq_bit_len / 8) + 1),
config);
if (value->harq.harq_payload == NULL)
{
NFAPI_TRACE(NFAPI_TRACE_ERROR, "%s failed to allocate value->harq.harq_payload\n", __FUNCTION__);
return 0;
}
// if(!(pullarray8(ppReadPackedMsg, value->csi_part1.csi_part1_payload, (int)(value->csi_part1.csi_part1_bit_len / 8), (int)(value->csi_part1.csi_part1_bit_len / 8), end)))
// return 0;
if (!pullarray8(ppReadPackedMsg, value->harq.harq_payload,
(int)((value->harq.harq_bit_len / 8) + 1),
(int)((value->harq.harq_bit_len / 8) + 1),
end))
return 0;
}
if (((value->pduBitmap >> 3) & 0x01)) { //CSI-2
if(!(pull8(ppReadPackedMsg, &value->csi_part2.csi_part2_crc, end)) &&
(pull16(ppReadPackedMsg, &value->csi_part2.csi_part2_bit_len, end)))
if ((value->pduBitmap >> 2) & 0x01) { //CSI-1
if (!pull8(ppReadPackedMsg, &value->csi_part1.csi_part1_crc, end))
return 0;
if (!pull16(ppReadPackedMsg, &value->csi_part1.csi_part1_bit_len, end))
return 0;
value->csi_part2.csi_part2_payload = (uint8_t*) malloc(sizeof(uint8_t) * ((value->csi_part2.csi_part2_bit_len/8 )));
value->csi_part1.csi_part1_payload = nfapi_p7_allocate(sizeof(*value->csi_part1.csi_part1_payload) *
(int)((value->csi_part1.csi_part1_bit_len / 8) + 1),
config);
if (value->csi_part1.csi_part1_payload == NULL)
{
NFAPI_TRACE(NFAPI_TRACE_ERROR, "%s failed to allocate value->csi_part1.csi_part1_payload\n",
__FUNCTION__);
return 0;
}
if(!(pullarray8(ppReadPackedMsg, value->csi_part2.csi_part2_payload, (int)(value->csi_part2.csi_part2_bit_len / 8) , (int)(value->csi_part2.csi_part2_bit_len / 8) , end)))
if (!pullarray8(ppReadPackedMsg, value->csi_part1.csi_part1_payload,
(int)((value->csi_part1.csi_part1_bit_len / 8) + 1),
(int)((value->csi_part1.csi_part1_bit_len / 8) + 1),
end))
return 0;
}
if ((value->pduBitmap >> 3) & 0x01) { //CSI-2
if (!pull8(ppReadPackedMsg, &value->csi_part2.csi_part2_crc, end))
return 0;
if (!pull16(ppReadPackedMsg, &value->csi_part2.csi_part2_bit_len, end))
return 0;
value->csi_part2.csi_part2_payload = nfapi_p7_allocate(sizeof(*value->csi_part2.csi_part2_payload) *
(int)((value->csi_part2.csi_part2_bit_len / 8) + 1),
config);
if (value->csi_part2.csi_part2_payload == NULL)
{
NFAPI_TRACE(NFAPI_TRACE_ERROR, "%s failed to allocate value->csi_part2.csi_part2_payload\n",
__FUNCTION__);
return 0;
}
if (!pullarray8(ppReadPackedMsg, value->csi_part2.csi_part2_payload,
(int)((value->csi_part2.csi_part2_bit_len / 8) + 1),
(int)((value->csi_part2.csi_part2_bit_len / 8) + 1),
end))
return 0;
}
@@ -5970,9 +6063,9 @@ static uint8_t unpack_nr_uci_indication_body(nfapi_nr_uci_t *value,
uint8_t *end,
nfapi_p7_codec_config_t *config)
{
if(!(pull16(ppReadPackedMsg, &value->pdu_type, end) &&
pull16(ppReadPackedMsg, &value->pdu_size, end)
))
if (!pull16(ppReadPackedMsg, &value->pdu_type, end))
return 0;
if (!pull16(ppReadPackedMsg, &value->pdu_size, end))
return 0;
switch (value->pdu_type) {
@@ -5988,7 +6081,7 @@ static uint8_t unpack_nr_uci_indication_body(nfapi_nr_uci_t *value,
}
case NFAPI_NR_UCI_FORMAT_2_3_4_PDU_TYPE: {
nfapi_nr_uci_pucch_pdu_format_2_3_4_t *uci_pdu = &value->pucch_pdu_format_2_3_4;
if (!unpack_nr_uci_pucch_2_3_4(uci_pdu, ppReadPackedMsg, end))
if (!unpack_nr_uci_pucch_2_3_4(uci_pdu, ppReadPackedMsg, end, config))
return 0;
break;
}
@@ -6004,17 +6097,18 @@ static uint8_t unpack_nr_uci_indication(uint8_t **ppReadPackedMsg, uint8_t *end,
{
nfapi_nr_uci_indication_t *pNfapiMsg = (nfapi_nr_uci_indication_t*)msg;
if (!(pull16(ppReadPackedMsg, &pNfapiMsg->sfn , end) &&
pull16(ppReadPackedMsg, &pNfapiMsg->slot , end) &&
pull16(ppReadPackedMsg, &pNfapiMsg->num_ucis, end)
))
return 0;
if (!pull16(ppReadPackedMsg, &pNfapiMsg->sfn , end))
return 0;
if (!pull16(ppReadPackedMsg, &pNfapiMsg->slot , end))
return 0;
if (!pull16(ppReadPackedMsg, &pNfapiMsg->num_ucis, end))
return 0;
pNfapiMsg->uci_list = nfapi_p7_allocate(sizeof(*pNfapiMsg->uci_list) * pNfapiMsg->num_ucis, config);
for (int i = 0; i < pNfapiMsg->num_ucis; i++)
{
if(!unpack_nr_uci_indication_body(&pNfapiMsg->uci_list[i], ppReadPackedMsg, end, config))
return 0;
if (!unpack_nr_uci_indication_body(&pNfapiMsg->uci_list[i], ppReadPackedMsg, end, config))
return 0;
}
return 1;
+13 -17
View File
@@ -1473,7 +1473,7 @@ void vnf_handle_nr_slot_indication(void *pRecvMsg, int recvMsgLen, vnf_p7_t* vnf
}
else
{
NFAPI_TRACE(NFAPI_TRACE_INFO, "%s: Handling NR SLOT Indication\n", __FUNCTION__);
NFAPI_TRACE(NFAPI_TRACE_DEBUG, "%s: Handling NR SLOT Indication\n", __FUNCTION__);
if(vnf_p7->_public.nr_slot_indication)
{
(vnf_p7->_public.nr_slot_indication)(&ind);
@@ -2574,32 +2574,28 @@ int vnf_p7_read_dispatch_message(vnf_p7_t* vnf_p7)
// resize the buffer if we have a large segment
if(header.message_length > vnf_p7->rx_message_buffer_size)
{
NFAPI_TRACE(NFAPI_TRACE_NOTE, "reallocing rx buffer %d\n", header.message_length);
NFAPI_TRACE(NFAPI_TRACE_NOTE, "reallocing rx buffer %d\n", header.message_length);
vnf_p7->rx_message_buffer = realloc(vnf_p7->rx_message_buffer, header.message_length);
vnf_p7->rx_message_buffer_size = header.message_length;
}
// read the segment
recvfrom_result = recvfrom(vnf_p7->socket, vnf_p7->rx_message_buffer, header.message_length, MSG_WAITALL, (struct sockaddr*)&remote_addr, &remote_addr_size);
recvfrom_result = recvfrom(vnf_p7->socket, vnf_p7->rx_message_buffer, header.message_length, MSG_WAITALL | MSG_TRUNC, (struct sockaddr*)&remote_addr, &remote_addr_size);
NFAPI_TRACE(NFAPI_TRACE_INFO, "recvfrom_result = %d from %s():%d\n", recvfrom_result, __FUNCTION__, __LINE__);
// todo : how to handle incomplete readfroms, need some sort of buffer/select
if(recvfrom_result == 0)
{
NFAPI_TRACE(NFAPI_TRACE_ERROR, "recvfrom returned 0\n");
}
else if(recvfrom_result != -1 && recvfrom_result != header.message_length)
{
NFAPI_TRACE(NFAPI_TRACE_ERROR, "Received unexpected number of bytes %d %d\n", recvfrom_result, header.message_length);
recvfrom_result += recvfrom(vnf_p7->socket, &vnf_p7->rx_message_buffer[recvfrom_result], header.message_length - recvfrom_result, MSG_WAITALL, (struct sockaddr*)&remote_addr, &remote_addr_size);
}
if(recvfrom_result > 0)
if (recvfrom_result > 0)
{
if (recvfrom_result != header.message_length)
{
NFAPI_TRACE(NFAPI_TRACE_ERROR, "(%d) Received unexpected number of bytes. %d != %d",
__LINE__, recvfrom_result, header.message_length);
break;
}
NFAPI_TRACE(NFAPI_TRACE_INFO, "Calling vnf_nr_handle_p7_message from %d\n", __LINE__);
vnf_handle_p7_message(vnf_p7->rx_message_buffer, recvfrom_result, vnf_p7);
return 0;
}
else
{
+1
View File
@@ -1,6 +1,7 @@
export OPENAIR_HOME=$(pwd)
export OPENAIR_DIR=$(pwd)
export AWGN_RESULTS_DIR=$OPENAIR_DIR/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
export OPENAIR1_DIR=$OPENAIR_HOME/openair1
export OPENAIR2_DIR=$OPENAIR_HOME/openair2
export OPENAIR3_DIR=$OPENAIR_HOME/openair3
+101 -145
View File
@@ -31,6 +31,7 @@
#include "openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.h"
#include "openair1/PHY/defs_nr_common.h"
#include "coding_unitary_defs.h"
#include "common/utils/LOG/log.h"
#define MAX_BLOCK_LENGTH 8448
@@ -79,16 +80,19 @@ char quantize8bit(double D,double x)
}
typedef struct {
double n_iter_mean;
double n_iter_std;
int n_iter_max;
double n_iter_mean[400];
double n_iter_std[400];
int n_iter_max[400];
double snr[400];
double ber[400];
double bler[400];
} n_iter_stats_t;
nrLDPC_encoderfunc_t encoder_orig;
short lift_size[51]= {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,20,22,24,26,28,30,32,36,40,44,48,52,56,60,64,72,80,88,96,104,112,120,128,144,160,176,192,208,224,240,256,288,320,352,384};
int test_ldpc(short No_iteration,
int test_ldpc(short max_iterations,
int nom_rate,
int denom_rate,
double SNR,
@@ -102,8 +106,8 @@ int test_ldpc(short No_iteration,
unsigned int *crc_misses,
time_stats_t *time_optim,
time_stats_t *time_decoder,
n_iter_stats_t *dec_iter
)
n_iter_stats_t *dec_iter,
int nsnr)
{
//clock initiate
//time_stats_t time,time_optim,tinput,tprep,tparity,toutput, time_decoder;
@@ -126,7 +130,6 @@ int test_ldpc(short No_iteration,
//double channel_output[68 * 384];
double modulated_input[MAX_NUM_DLSCH_SEGMENTS][68 * 384] = { 0 };
char channel_output_fixed[MAX_NUM_DLSCH_SEGMENTS][68 * 384] = { 0 };
unsigned int i,j,trial=0;
short BG=0,nrows=0;//,ncols;
int no_punctured_columns,removed_bit;
int i1,Zc,Kb=0;
@@ -137,12 +140,9 @@ int test_ldpc(short No_iteration,
int code_rate_vec[8] = {15, 13, 25, 12, 23, 34, 56, 89};
//double code_rate_actual_vec[8] = {0.2, 0.33333, 0.4, 0.5, 0.66667, 0.73333, 0.81481, 0.88};
t_nrLDPC_dec_params decParams;
t_nrLDPC_procBuf nrLDPC_procBuf;
t_nrLDPC_procBuf* p_nrLDPC_procBuf = &nrLDPC_procBuf;
t_nrLDPC_dec_params decParams[MAX_NUM_DLSCH_SEGMENTS]={0};
t_nrLDPC_time_stats decoder_profiler = {0};
t_nrLDPC_time_stats* p_decoder_profiler =&decoder_profiler ;
int32_t n_iter = 0;
@@ -152,7 +152,7 @@ int test_ldpc(short No_iteration,
*crc_misses=0;
// generate input block
for(j=0;j<MAX_NUM_DLSCH_SEGMENTS;j++) {
for(int j=0;j<MAX_NUM_DLSCH_SEGMENTS;j++) {
test_input[j]=(unsigned char *)malloc16(sizeof(unsigned char) * block_length/8);
memset(test_input[j], 0, sizeof(unsigned char) * block_length / 8);
channel_input[j] = (unsigned char *)malloc16(sizeof(unsigned char) * 68*384);
@@ -181,11 +181,8 @@ int test_ldpc(short No_iteration,
reset_meas(&decoder_profiler.llr2bit);
//reset_meas(&decoder_profiler.total);
// Allocate LDPC decoder buffers
p_nrLDPC_procBuf = nrLDPC_init_mem();
for (j=0;j<MAX_NUM_DLSCH_SEGMENTS;j++) {
for (i=0; i<block_length/8; i++) {
for (int j=0;j<MAX_NUM_DLSCH_SEGMENTS;j++) {
for (int i=0; i<block_length/8; i++) {
test_input[j][i]=(unsigned char) rand();
//test_input[j][i]=j%256;
//test_input[j][i]=252;
@@ -272,17 +269,17 @@ int test_ldpc(short No_iteration,
// printf("puncture:%d\n",no_punctured_columns);
removed_bit=(nrows-no_punctured_columns-2) * Zc+block_length-(int)(block_length/((float)nom_rate/(float)denom_rate));
encoder_implemparams_t impp=INIT0_LDPCIMPLEMPARAMS;
impp.gen_code=1;
if (ntrials==0)
encoder_orig(test_input,channel_input, Zc, BG, block_length, BG, &impp);
impp.gen_code=0;
for (trial=0; trial < ntrials; trial++)
for (int trial=0; trial < ntrials; trial++)
{
segment_bler = 0;
//// encoder
start_meas(&time);
for(j=0;j<n_segments;j++) {
for(int j=0;j<n_segments;j++) {
encoder_orig(&(test_input[j]), &(channel_input[j]),Zc,Kb,block_length,BG,&impp);
}
stop_meas(&time);
@@ -294,7 +291,7 @@ int test_ldpc(short No_iteration,
}
stop_meas(time_optim);*/
impp.n_segments=n_segments;
for(j=0;j<(n_segments/8+1);j++) {
for(int j=0;j<(n_segments/8+1);j++) {
start_meas(time_optim);
impp.macro_num=j;
nrLDPC_encoder(test_input,channel_input_optim,Zc,Kb,block_length, BG, &impp);
@@ -302,8 +299,8 @@ int test_ldpc(short No_iteration,
}
if (ntrials==1)
for (j=0;j<n_segments;j++)
for (i = 0; i < block_length+(nrows-no_punctured_columns) * Zc - removed_bit; i++)
for (int j=0;j<n_segments;j++)
for (int i = 0; i < block_length+(nrows-no_punctured_columns) * Zc - removed_bit; i++)
if (channel_input[j][i]!=channel_input_optim[j][i]) {
printf("differ in seg %u pos %u (%u,%u)\n", j, i, channel_input[j][i], channel_input_optim[j][i]);
return (-1);
@@ -319,92 +316,60 @@ int test_ldpc(short No_iteration,
printf("number of undecoded bits: %d\n", (Kb+nrows-no_punctured_columns-2) * Zc-removed_bit);
}
//print_meas_now(&time, "", stdout);
// for (i=0;i<6400;i++)
//printf("channel_input[%d]=%d\n",i,channel_input[i]);
//printf("%d ",channel_input[i]);
//if ((BG==2) && (Zc==128||Zc==256))
if (1) { // Transmitting one segment
for(j=0;j<n_segments;j++) {
for (i = 2*Zc; i < (Kb+nrows-no_punctured_columns) * Zc-removed_bit; i++) {
for(int j=0;j<n_segments;j++) {
for (int i = 2*Zc; i < (Kb+nrows-no_punctured_columns) * Zc-removed_bit; i++) {
#ifdef DEBUG_CODER
if ((i&0xf)==0)
printf("\ne %u..%u: ",i,i+15);
if ((i&0xf)==0)
printf("\ne %u..%u: ",i,i+15);
#endif
if (channel_input_optim[j][i-2*Zc]==0)
modulated_input[j][i]=1.0;///sqrt(2); //QPSK
else
modulated_input[j][i]=-1.0;///sqrt(2);
if (channel_input_optim[j][i-2*Zc]==0)
modulated_input[j][i]=1.0;///sqrt(2); //QPSK
else
modulated_input[j][i]=-1.0;///sqrt(2);
///channel_output[i] = modulated_input[i] + gaussdouble(0.0,1.0) * 1/sqrt(2*SNR);
//channel_output_fixed[i] = (char) ((channel_output[i]*128)<0?(channel_output[i]*128-0.5):(channel_output[i]*128+0.5)); //fixed point 9-7
//printf("llr[%d]=%d\n",i,channel_output_fixed[i]);
///channel_output[i] = modulated_input[i] + gaussdouble(0.0,1.0) * 1/sqrt(2*SNR);
//channel_output_fixed[i] = (char) ((channel_output[i]*128)<0?(channel_output[i]*128-0.5):(channel_output[i]*128+0.5)); //fixed point 9-7
//printf("llr[%d]=%d\n",i,channel_output_fixed[i]);
//channel_output_fixed[i] = (char)quantize(sigma/4.0,(2.0*modulated_input[i]) - 1.0 + sigma*gaussdouble(0.0,1.0),qbits);
channel_output_fixed[j][i] = (char)quantize(sigma/4.0/4.0,modulated_input[j][i] + sigma*gaussdouble(0.0,1.0),qbits);
//channel_output_fixed[i] = (char)quantize8bit(sigma/4.0,(2.0*modulated_input[i]) - 1.0 + sigma*gaussdouble(0.0,1.0));
//printf("llr[%d]=%d\n",i,channel_output_fixed[i]);
//printf("channel_output_fixed[%d]: %d\n",i,channel_output_fixed[i]);
//channel_output_fixed[i] = (char)quantize(sigma/4.0,(2.0*modulated_input[i]) - 1.0 + sigma*gaussdouble(0.0,1.0),qbits);
channel_output_fixed[j][i] = (char)quantize(sigma/4.0/4.0,modulated_input[j][i] + sigma*gaussdouble(0.0,1.0),qbits);
//channel_output_fixed[i] = (char)quantize8bit(sigma/4.0,(2.0*modulated_input[i]) - 1.0 + sigma*gaussdouble(0.0,1.0));
//printf("llr[%d]=%d\n",i,channel_output_fixed[i]);
//printf("channel_output_fixed[%d]: %d\n",i,channel_output_fixed[i]);
//channel_output_fixed[i] = (char)quantize(1,channel_output_fixed[i],qbits);
//Uncoded BER
unsigned char channel_output_uncoded = channel_output_fixed[j][i]<0 ? 1 /* QPSK demod */ : 0;
//Uncoded BER
unsigned char channel_output_uncoded = channel_output_fixed[j][i]<0 ? 1 /* QPSK demod */ : 0;
if (channel_output_uncoded != channel_input_optim[j][i-2*Zc])
*errors_bit_uncoded = (*errors_bit_uncoded) + 1;
if (channel_output_uncoded != channel_input_optim[j][i-2*Zc])
*errors_bit_uncoded = (*errors_bit_uncoded) + 1;
}
} // End segments
//for (i=(Kb+nrows) * Zc-5;i<(Kb+nrows) * Zc;i++)
//{
// printf("channel_input[%d]=%d\n",i,channel_input[i]);
//printf("%lf %d\n",channel_output[i], channel_output_fixed[i]);
//printf("v[%d]=%lf\n",i,modulated_input[i]);}
#ifdef DEBUG_CODER
printf("\n");
exit(-1);
#endif
decParams.BG=BG;
decParams.Z=Zc;
decParams.R=code_rate_vec[R_ind];//13;
decParams.numMaxIter=No_iteration;
decParams.outMode = nrLDPC_outMode_BIT;
decParams.block_length=block_length;
//decParams.outMode =nrLDPC_outMode_LLRINT8;
nrLDPC_initcall(&decParams, (int8_t*)channel_output_fixed[j], (int8_t*)estimated_output[j]);
for(j=0;j<n_segments;j++) {
start_meas(time_decoder);
n_iter = nrLDPC_decoder(&decParams, (int8_t*)channel_output_fixed[j], (int8_t*)estimated_output[j], p_nrLDPC_procBuf, p_decoder_profiler);
stop_meas(time_decoder);
}
//for (i=(Kb+nrows) * Zc-5;i<(Kb+nrows) * Zc;i++)
// printf("esimated_output[%d]=%d\n",i,esimated_output[i]);
//count errors
for(j=0;j<n_segments;j++) {
for (i=0; i<block_length>>3; i++)
{
//printf("block_length>>3: %d \n",block_length>>3);
/// printf("i: %d \n",i);
///printf("estimated_output[%d]: %d \n",i,estimated_output[i]);
///printf("test_input[0][%d]: %d \n",i,test_input[0][i]);
if (estimated_output[j][i] != test_input[j][i])
{
//////printf("error pos %d (%d, %d)\n\n",i,estimated_output[i],test_input[0][i]);
segment_bler = segment_bler + 1;
break;
}
}
#ifdef DEBUG_CODER
printf("\n");
exit(-1);
#endif
for (i=0; i<block_length; i++)
decParams[j].BG=BG;
decParams[j].Z=Zc;
decParams[j].R=code_rate_vec[R_ind];//13;
decParams[j].numMaxIter=max_iterations;
decParams[j].outMode = nrLDPC_outMode_BIT;
decParams[j].block_length=block_length;
nrLDPC_initcall(&decParams[j], (int8_t*)channel_output_fixed[j], (int8_t*)estimated_output[j]);
}
for(int j=0;j<n_segments;j++) {
start_meas(time_decoder);
n_iter = nrLDPC_decoder(&decParams[j], (int8_t*)channel_output_fixed[j], (int8_t*)estimated_output[j], &decoder_profiler);
stop_meas(time_decoder);
//count errors
if ( memcmp(estimated_output[j], test_input[j], block_length/8 ) != 0 ) {
segment_bler++;
}
for (int i=0; i<block_length; i++)
{
unsigned char estoutputbit = (estimated_output[j][i/8]&(1<<(i&7)))>>(i&7);
unsigned char inputbit = (test_input[j][i/8]&(1<<(i&7)))>>(i&7); // Further correct for multiple segments
@@ -412,40 +377,33 @@ int test_ldpc(short No_iteration,
*errors_bit = (*errors_bit) + 1;
}
//if (*errors == 1000)
//break;
n_iter_mean += n_iter;
n_iter_std += pow(n_iter-1,2);
n_iter_mean = n_iter_mean + n_iter;
n_iter_std = n_iter_std + pow(n_iter-1,2);
if ( n_iter > n_iter_max )
n_iter_max = n_iter;
if ( n_iter > n_iter_max )
n_iter_max = n_iter;
} // end segments
} // end segments
if (segment_bler != 0)
*errors = (*errors) + 1;
*errors = (*errors) + 1;
}
/*else if (trial==0)
printf("decoder is not supported\n");*/
}
dec_iter->n_iter_mean = n_iter_mean/(double)ntrials/(double)n_segments - 1;
dec_iter->n_iter_std = sqrt(n_iter_std/(double)ntrials/(double)n_segments - pow(n_iter_mean/(double)ntrials/(double)n_segments - 1,2));
dec_iter->n_iter_max = n_iter_max -1;
dec_iter->n_iter_mean[nsnr] = n_iter_mean/(double)ntrials/(double)n_segments - 1;
dec_iter->n_iter_std[nsnr] = sqrt(n_iter_std/(double)ntrials/(double)n_segments - pow(n_iter_mean/(double)ntrials/(double)n_segments - 1,2));
dec_iter->n_iter_max[nsnr] = n_iter_max -1;
*errors_bit_uncoded = *errors_bit_uncoded / (double)((Kb+nrows-no_punctured_columns-2) * Zc-removed_bit);
for(j=0;j<MAX_NUM_DLSCH_SEGMENTS;j++) {
for(int j=0;j<MAX_NUM_DLSCH_SEGMENTS;j++) {
free(test_input[j]);
free(channel_input[j]);
free(channel_input_optim[j]);
}
nrLDPC_free_mem(p_nrLDPC_procBuf);
print_meas(&time,"ldpc_encoder",NULL,NULL);
print_meas(time_optim,"ldpc_encoder_optim",NULL,NULL);
print_meas(&tinput,"ldpc_encoder_optim(input)",NULL,NULL);
@@ -476,7 +434,7 @@ int main(int argc, char *argv[])
double errors_bit_uncoded;
short block_length=8448; // decoder supports length: 1201 -> 1280, 2401 -> 2560
char *ldpc_version=NULL; /* version of the ldpc decoder library to use (XXX suffix to use when loading libldpc_XXX.so */
short No_iteration=5;
short max_iterations=5;
int n_segments=1;
//double rate=0.333;
@@ -486,7 +444,7 @@ int main(int argc, char *argv[])
unsigned char qbits=8;
unsigned int decoded_errors[10000]; // initiate the size of matrix equivalent to size of SNR
int c,i=0, i1 = 0;
int loglvl=OAILOG_WARNING;
int n_trials = 1;
double SNR_step = 0.1;
@@ -494,14 +452,11 @@ int main(int argc, char *argv[])
int test_uncoded= 0;
time_stats_t time_optim[10], time_decoder[10];
n_iter_stats_t dec_iter[3];
n_iter_stats_t dec_iter;
short BG=0,Zc,Kb=0;
if ( load_configmodule(argc,argv,CONFIG_ENABLECMDLINEONLY) == 0) {
exit_fun(" Error, configuration module init failed\n");
} // must be done before specific options parsing to prevent errasing them
while ((c = getopt (argc, argv, "q:r:s:S:l:L:G:n:d:i:t:u:hv:")) != -1)
while ((c = getopt (argc, argv, "q:r:s:S:l:G:n:d:i:t:u:hv:")) != -1)
switch (c)
{
case 'q':
@@ -519,10 +474,6 @@ int main(int argc, char *argv[])
case 'l':
block_length = atoi(optarg);
break;
case 'L':
loglvl = atoi(optarg);
break;
case 'G':
ldpc_version="_cuda";
@@ -545,7 +496,7 @@ int main(int argc, char *argv[])
break;
case 'i':
No_iteration = atoi(optarg);
max_iterations = atoi(optarg);
break;
case 'u':
@@ -560,11 +511,10 @@ int main(int argc, char *argv[])
printf("BG1 (blocklength > 3840): 1/3, 2/3, 22/25 (8/9) \n");
printf("BG2 (blocklength <= 3840): 1/5, 1/3, 2/3 \n\n");
printf("-h This message\n");
printf("-L <log level, 0(errors), 1(warning), 2(info) 3(debug) 4 (trace)>\n");
printf("-q Quantization bits, Default: 8\n");
printf("-r Nominator rate, (1, 2, 22), Default: 1\n");
printf("-d Denominator rate, (3, 5, 25), Default: 1\n");
printf("-l Block length (l > 3840 -> BG1, rest BG2 ), Default: 8448\n");
printf("-l Block length (l > 3840 -> BG1, rest BG2 ), Default: 8448\n");
printf("-G give 1 to run cuda for LDPC, Default: 0\n");
printf("-n Number of simulation trials, Default: 1\n");
//printf("-M MCS2 for TB 2\n");
@@ -583,8 +533,6 @@ int main(int argc, char *argv[])
printf("n_trials %d: \n", n_trials);
printf("SNR0 %f: \n", SNR0);
logInit();
set_glog(loglvl);
if (ldpc_version != NULL)
load_nrLDPClib(ldpc_version);
@@ -632,7 +580,7 @@ int main(int argc, char *argv[])
}
char fname[200];
sprintf(fname,"ldpctest_BG_%d_Zc_%d_rate_%d-%d_block_length_%d_maxit_%d.txt",BG,Zc,nom_rate,denom_rate,block_length, No_iteration);
sprintf(fname,"ldpctest_BG_%d_Zc_%d_rate_%d-%d_block_length_%d_maxit_%d.txt",BG,Zc,nom_rate,denom_rate,block_length, max_iterations);
FILE *fd=fopen(fname,"w");
AssertFatal(fd!=NULL,"cannot open %s\n",fname);
@@ -647,7 +595,7 @@ int main(int argc, char *argv[])
else
SNR_lin = pow(10,SNR/10.0)*nom_rate/denom_rate;
printf("Linear SNR: %f\n", SNR_lin);
decoded_errors[i]=test_ldpc(No_iteration,
decoded_errors[i]=test_ldpc(max_iterations,
nom_rate,
denom_rate,
SNR_lin, // noise standard deviation
@@ -661,14 +609,18 @@ int main(int argc, char *argv[])
&crc_misses,
time_optim,
time_decoder,
dec_iter);
&dec_iter,
i);
printf("SNR %f, BLER %f (%u/%d)\n", SNR, (float)decoded_errors[i]/(float)n_trials, decoded_errors[i], n_trials);
printf("SNR %f, BER %f (%u/%d)\n", SNR, (float)errors_bit/(float)n_trials/(float)block_length/(double)n_segments, decoded_errors[i], n_trials);
dec_iter.snr[i] = SNR;
dec_iter.ber[i] = (float)errors_bit/(float)n_trials/(float)block_length/(double)n_segments;
dec_iter.bler[i] = (float)decoded_errors[i]/(float)n_trials;
printf("SNR %f, BLER %f (%u/%d)\n", SNR, dec_iter.bler[i], decoded_errors[i], n_trials);
printf("SNR %f, BER %f (%u/%d)\n", SNR, dec_iter.ber[i], decoded_errors[i], n_trials);
printf("SNR %f, Uncoded BER %f (%u/%d)\n",SNR, errors_bit_uncoded/(float)n_trials/(double)n_segments, decoded_errors[i], n_trials);
printf("SNR %f, Mean iterations: %f\n",SNR, dec_iter->n_iter_mean);
printf("SNR %f, Std iterations: %f\n",SNR, dec_iter->n_iter_std);
printf("SNR %f, Max iterations: %d\n",SNR, dec_iter->n_iter_max);
printf("SNR %f, Mean iterations: %f\n",SNR, dec_iter.n_iter_mean[i]);
printf("SNR %f, Std iterations: %f\n",SNR, dec_iter.n_iter_std[i]);
printf("SNR %f, Max iterations: %d\n",SNR, dec_iter.n_iter_max[i]);
printf("\n");
printf("Encoding time mean: %15.3f us\n",(double)time_optim->diff/time_optim->trials/1000.0/get_cpu_freq_GHz());
printf("Encoding time std: %15.3f us\n",sqrt((double)time_optim->diff_square/time_optim->trials/pow(1000,2)/pow(get_cpu_freq_GHz(),2)-pow((double)time_optim->diff/time_optim->trials/1000.0/get_cpu_freq_GHz(),2)));
@@ -689,16 +641,20 @@ int main(int argc, char *argv[])
(double)time_decoder->diff/time_decoder->trials/1000.0/get_cpu_freq_GHz(),
sqrt((double)time_decoder->diff_square/time_decoder->trials/pow(1000,2)/pow(get_cpu_freq_GHz(),2)-pow((double)time_decoder->diff/time_decoder->trials/1000.0/get_cpu_freq_GHz(),2)),
(double)time_decoder->max/1000.0/get_cpu_freq_GHz(),
dec_iter->n_iter_mean,
dec_iter->n_iter_std,
dec_iter->n_iter_max
dec_iter.n_iter_mean[i],
dec_iter.n_iter_std[i],
dec_iter.n_iter_max[i]
);
if (decoded_errors[i] == 0) break;
i=i+1;
if (decoded_errors[i-1] == 0) break;
}
fclose(fd);
LOG_M("ldpctestStats.m","SNR",&dec_iter.snr[0],i,1,7);
LOG_MM("ldpctestStats.m","BLER",&dec_iter.bler[0],i,1,7);
LOG_MM("ldpctestStats.m","BER",&dec_iter.ber[0],i,1,7);
LOG_MM("ldpctestStats.m","meanIter",&dec_iter.n_iter_mean[0],i,1,7);
loader_reset();
logTerm();
@@ -37,17 +37,12 @@
\param p_lut Pointer to decoder LUTs
\param Z Lifting size
*/
static inline void nrLDPC_bnProcPc(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z)
static inline void nrLDPC_bnProcPc(t_nrLDPC_lut* p_lut, int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrProcBuf, int8_t* llrRes, uint16_t Z)
{
const uint8_t* lut_numBnInBnGroups = p_lut->numBnInBnGroups;
const uint32_t* lut_startAddrBnGroups = p_lut->startAddrBnGroups;
const uint16_t* lut_startAddrBnGroupsLlr = p_lut->startAddrBnGroupsLlr;
int8_t* bnProcBuf = p_procBuf->bnProcBuf;
int8_t* bnProcBufRes = p_procBuf->bnProcBufRes;
int8_t* llrRes = p_procBuf->llrRes;
int8_t* llrProcBuf = p_procBuf->llrProcBuf;
__m128i* p_bnProcBuf;
__m256i* p_bnProcBufRes;
__m128i* p_llrProcBuf;
@@ -1681,7 +1676,7 @@ static inline void nrLDPC_bnProcPc(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_proc
\param p_lut Pointer to decoder LUTs
\param Z Lifting size
*/
static inline void nrLDPC_bnProc(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z)
static inline void nrLDPC_bnProc(t_nrLDPC_lut* p_lut, int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z)
{
// BN Processing calculating the values to send back to the CNs for next iteration
// bnProcBufRes contains the sum of all edges to each BN at the start of each group
@@ -1690,10 +1685,6 @@ static inline void nrLDPC_bnProc(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBu
const uint32_t* lut_startAddrBnGroups = p_lut->startAddrBnGroups;
const uint16_t* lut_startAddrBnGroupsLlr = p_lut->startAddrBnGroupsLlr;
int8_t* bnProcBuf = p_procBuf->bnProcBuf;
int8_t* bnProcBufRes = p_procBuf->bnProcBufRes;
int8_t* llrRes = p_procBuf->llrRes;
__m256i* p_bnProcBuf;
__m256i* p_bnProcBufRes;
__m256i* p_llrRes;
@@ -37,14 +37,11 @@
\param p_procBuf Pointer to processing buffers
\param Z Lifting size
*/
static inline void nrLDPC_cnProc_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z)
static inline void nrLDPC_cnProc_BG2(t_nrLDPC_lut* p_lut, int8_t* cnProcBuf, int8_t* cnProcBufRes, uint16_t Z)
{
const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups;
const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups;
int8_t* cnProcBuf = p_procBuf->cnProcBuf;
int8_t* cnProcBufRes = p_procBuf->cnProcBufRes;
__m256i* p_cnProcBuf;
__m256i* p_cnProcBufRes;
@@ -372,14 +369,11 @@ static inline void nrLDPC_cnProc_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_pr
\param p_lut Pointer to decoder LUTs
\param Z Lifting size
*/
static inline void nrLDPC_cnProc_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z)
static inline void nrLDPC_cnProc_BG1(t_nrLDPC_lut* p_lut, int8_t* cnProcBuf, int8_t* cnProcBufRes, uint16_t Z)
{
const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups;
const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups;
int8_t* cnProcBuf = p_procBuf->cnProcBuf;
int8_t* cnProcBufRes = p_procBuf->cnProcBufRes;
__m256i* p_cnProcBuf;
__m256i* p_cnProcBufRes;
@@ -871,14 +865,11 @@ static inline void nrLDPC_cnProc_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_pr
\param Z Lifting size
\return 32-bit parity check indicator
*/
static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z)
static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, int8_t* cnProcBuf, int8_t* cnProcBufRes, uint16_t Z)
{
const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups;
const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups;
int8_t* cnProcBuf = p_procBuf->cnProcBuf;
int8_t* cnProcBufRes = p_procBuf->cnProcBufRes;
__m256i* p_cnProcBuf;
__m256i* p_cnProcBufRes;
@@ -1506,14 +1497,11 @@ static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
\param Z Lifting size
\return 32-bit parity check indicator
*/
static inline uint32_t nrLDPC_cnProcPc_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z)
static inline uint32_t nrLDPC_cnProcPc_BG2(t_nrLDPC_lut* p_lut, int8_t* cnProcBuf, int8_t* cnProcBufRes, uint16_t Z)
{
const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups;
const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups;
int8_t* cnProcBuf = p_procBuf->cnProcBuf;
int8_t* cnProcBufRes = p_procBuf->cnProcBufRes;
__m256i* p_cnProcBuf;
__m256i* p_cnProcBufRes;
@@ -45,22 +45,22 @@
#include "nrLDPC_tools/nrLDPC_debug.h"
#endif
static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDPC_procBuf* p_procBuf, uint32_t numLLR, t_nrLDPC_lut* p_lut, t_nrLDPC_dec_params* p_decParams, t_nrLDPC_time_stats* p_profiler);
static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, uint32_t numLLR, t_nrLDPC_lut* p_lut, t_nrLDPC_dec_params* p_decParams, t_nrLDPC_time_stats* p_profiler);
int check_crc(uint8_t* decoded_bytes, uint32_t n, uint32_t F, uint8_t crc_type);
void nrLDPC_initcall(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_out) {
}
int32_t nrLDPC_decod(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_out, t_nrLDPC_procBuf* p_procBuf, t_nrLDPC_time_stats* p_profiler)
int32_t nrLDPC_decod(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_out, t_nrLDPC_time_stats* p_profiler)
{
uint32_t numLLR;
uint32_t numIter = 0;
t_nrLDPC_lut lut;
t_nrLDPC_lut* p_lut = &lut;
//printf("p_procBuf->cnProcBuf = %p\n", p_procBuf->cnProcBuf);
// Initialize decoder core(s) with correct LUTs
numLLR = nrLDPC_init(p_decParams, p_lut);
// Launch LDPC decoder core for one segment
numIter = nrLDPC_decoder_core(p_llr, p_out, p_procBuf, numLLR, p_lut, p_decParams, p_profiler);
numIter = nrLDPC_decoder_core(p_llr, p_out, numLLR, p_lut, p_decParams, p_profiler);
return numIter;
}
@@ -74,13 +74,20 @@ int32_t nrLDPC_decod(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_
\param p_decParams LDPC decoder parameters
\param p_profiler LDPC profiler statistics
*/
static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDPC_procBuf* p_procBuf, uint32_t numLLR, t_nrLDPC_lut* p_lut, t_nrLDPC_dec_params* p_decParams, t_nrLDPC_time_stats* p_profiler)
static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, uint32_t numLLR, t_nrLDPC_lut* p_lut, t_nrLDPC_dec_params* p_decParams, t_nrLDPC_time_stats* p_profiler)
{
uint16_t Z = p_decParams->Z;
uint8_t BG = p_decParams->BG;
uint8_t numMaxIter = p_decParams->numMaxIter;
e_nrLDPC_outMode outMode = p_decParams->outMode;
int8_t cnProcBuf[NR_LDPC_SIZE_CN_PROC_BUF] __attribute__ ((aligned(32))) = {0};
int8_t cnProcBufRes[NR_LDPC_SIZE_CN_PROC_BUF] __attribute__ ((aligned(32))) = {0};
int8_t bnProcBuf[NR_LDPC_SIZE_BN_PROC_BUF] __attribute__ ((aligned(32))) = {0};
int8_t bnProcBufRes[NR_LDPC_SIZE_BN_PROC_BUF] __attribute__ ((aligned(32))) = {0};
int8_t llrRes[NR_LDPC_MAX_NUM_LLR] __attribute__ ((aligned(32))) = {0};
int8_t llrProcBuf[NR_LDPC_MAX_NUM_LLR] __attribute__ ((aligned(32))) = {0};
int8_t llrOut[NR_LDPC_MAX_NUM_LLR] __attribute__ ((aligned(32))) = {0};
// Minimum number of iterations is 1
// 0 iterations means hard-decision on input LLRs
uint32_t i = 1;
@@ -95,9 +102,7 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
else
{
// Use LLR processing buffer as temporary output buffer
p_llrOut = p_procBuf->llrProcBuf;
// Clear llrProcBuf
memset(p_llrOut,0, NR_LDPC_MAX_NUM_LLR*sizeof(int8_t));
p_llrOut = llrOut;
}
@@ -105,14 +110,14 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#ifdef NR_LDPC_PROFILER_DETAIL
start_meas(&p_profiler->llr2llrProcBuf);
#endif
nrLDPC_llr2llrProcBuf(p_lut, p_llr, p_procBuf, Z, BG);
nrLDPC_llr2llrProcBuf(p_lut, p_llr, llrProcBuf, Z, BG);
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->llr2llrProcBuf);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_initBuffer2File(nrLDPC_buffers_LLR_PROC);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_LLR_PROC, p_procBuf);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_LLR_PROC, llrProcBuf);
#endif
#ifdef NR_LDPC_PROFILER_DETAIL
@@ -120,11 +125,11 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#endif
if (BG == 1)
{
nrLDPC_llr2CnProcBuf_BG1(p_lut, p_llr, p_procBuf, Z);
nrLDPC_llr2CnProcBuf_BG1(p_lut, p_llr, cnProcBuf, Z);
}
else
{
nrLDPC_llr2CnProcBuf_BG2(p_lut, p_llr, p_procBuf, Z);
nrLDPC_llr2CnProcBuf_BG2(p_lut, p_llr, cnProcBuf, Z);
}
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->llr2CnProcBuf);
@@ -132,7 +137,7 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_initBuffer2File(nrLDPC_buffers_CN_PROC);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC, p_procBuf);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC, cnProcBuf);
#endif
// First iteration
@@ -143,11 +148,11 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#endif
if (BG == 1)
{
nrLDPC_cnProc_BG1(p_lut, p_procBuf, Z);
nrLDPC_cnProc_BG1(p_lut, cnProcBuf, cnProcBufRes, Z);
}
else
{
nrLDPC_cnProc_BG2(p_lut, p_procBuf, Z);
nrLDPC_cnProc_BG2(p_lut, cnProcBuf, cnProcBufRes, Z);
}
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->cnProc);
@@ -155,7 +160,7 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_initBuffer2File(nrLDPC_buffers_CN_PROC_RES);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC_RES, p_procBuf);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC_RES, cnProcBufRes);
#endif
#ifdef NR_LDPC_PROFILER_DETAIL
@@ -163,11 +168,11 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#endif
if (BG == 1)
{
nrLDPC_cn2bnProcBuf_BG1(p_lut, p_procBuf, Z);
nrLDPC_cn2bnProcBuf_BG1(p_lut, cnProcBufRes, bnProcBuf, Z);
}
else
{
nrLDPC_cn2bnProcBuf_BG2(p_lut, p_procBuf, Z);
nrLDPC_cn2bnProcBuf_BG2(p_lut, cnProcBufRes, bnProcBuf, Z);
}
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->cn2bnProcBuf);
@@ -175,34 +180,34 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_initBuffer2File(nrLDPC_buffers_BN_PROC);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC, p_procBuf);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC, bnProcBuf);
#endif
// BN processing
#ifdef NR_LDPC_PROFILER_DETAIL
start_meas(&p_profiler->bnProcPc);
#endif
nrLDPC_bnProcPc(p_lut, p_procBuf, Z);
nrLDPC_bnProcPc(p_lut, bnProcBuf, bnProcBufRes, llrProcBuf, llrRes, Z);
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->bnProcPc);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_initBuffer2File(nrLDPC_buffers_LLR_RES);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_LLR_RES, p_procBuf);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_LLR_RES, llrRes);
#endif
#ifdef NR_LDPC_PROFILER_DETAIL
start_meas(&p_profiler->bnProc);
#endif
nrLDPC_bnProc(p_lut, p_procBuf, Z);
nrLDPC_bnProc(p_lut, bnProcBuf, bnProcBufRes, llrRes, Z);
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->bnProc);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_initBuffer2File(nrLDPC_buffers_BN_PROC_RES);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC_RES, p_procBuf);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC_RES, bnProcBufRes);
#endif
// BN results to CN processing buffer
@@ -211,18 +216,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#endif
if (BG == 1)
{
nrLDPC_bn2cnProcBuf_BG1(p_lut, p_procBuf, Z);
nrLDPC_bn2cnProcBuf_BG1(p_lut, bnProcBufRes, cnProcBuf, Z);
}
else
{
nrLDPC_bn2cnProcBuf_BG2(p_lut, p_procBuf, Z);
nrLDPC_bn2cnProcBuf_BG2(p_lut, bnProcBufRes, cnProcBuf, Z);
}
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->bn2cnProcBuf);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC, p_procBuf);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC, cnProcBuf);
#endif
// Parity Check not necessary here since it will fail
@@ -242,18 +247,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#endif
if (BG == 1)
{
nrLDPC_cnProc_BG1(p_lut, p_procBuf, Z);
nrLDPC_cnProc_BG1(p_lut, cnProcBuf, cnProcBufRes, Z);
}
else
{
nrLDPC_cnProc_BG2(p_lut, p_procBuf, Z);
nrLDPC_cnProc_BG2(p_lut, cnProcBuf, cnProcBufRes, Z);
}
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->cnProc);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC_RES, p_procBuf);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC_RES, cnProcBufRes);
#endif
// Send CN results back to BNs
@@ -262,43 +267,43 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#endif
if (BG == 1)
{
nrLDPC_cn2bnProcBuf_BG1(p_lut, p_procBuf, Z);
nrLDPC_cn2bnProcBuf_BG1(p_lut, cnProcBufRes, bnProcBuf, Z);
}
else
{
nrLDPC_cn2bnProcBuf_BG2(p_lut, p_procBuf, Z);
nrLDPC_cn2bnProcBuf_BG2(p_lut, cnProcBufRes, bnProcBuf, Z);
}
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->cn2bnProcBuf);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC, p_procBuf);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC, bnProcBuf);
#endif
// BN Processing
#ifdef NR_LDPC_PROFILER_DETAIL
start_meas(&p_profiler->bnProcPc);
#endif
nrLDPC_bnProcPc(p_lut, p_procBuf, Z);
nrLDPC_bnProcPc(p_lut, bnProcBuf, bnProcBufRes, llrProcBuf, llrRes, Z);
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->bnProcPc);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_LLR_RES, p_procBuf);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_LLR_RES, llrRes);
#endif
#ifdef NR_LDPC_PROFILER_DETAIL
start_meas(&p_profiler->bnProc);
#endif
nrLDPC_bnProc(p_lut, p_procBuf, Z);
nrLDPC_bnProc(p_lut, bnProcBuf, bnProcBufRes, llrRes, Z);
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->bnProc);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC_RES, p_procBuf);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC_RES, bnProcBufRes);
#endif
// BN results to CN processing buffer
@@ -307,18 +312,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#endif
if (BG == 1)
{
nrLDPC_bn2cnProcBuf_BG1(p_lut, p_procBuf, Z);
nrLDPC_bn2cnProcBuf_BG1(p_lut, bnProcBufRes, cnProcBuf, Z);
}
else
{
nrLDPC_bn2cnProcBuf_BG2(p_lut, p_procBuf, Z);
nrLDPC_bn2cnProcBuf_BG2(p_lut, bnProcBufRes, cnProcBuf, Z);
}
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->bn2cnProcBuf);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC, p_procBuf);
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC, cnProcBuf);
#endif
// Parity Check
@@ -328,123 +333,11 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#endif
if (BG == 1)
{
pcRes = nrLDPC_cnProcPc_BG1(p_lut, p_procBuf, Z);
pcRes = nrLDPC_cnProcPc_BG1(p_lut, cnProcBuf, cnProcBufRes, Z);
}
else
{
pcRes = nrLDPC_cnProcPc_BG2(p_lut, p_procBuf, Z);
}
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->cnProcPc);
#endif
#endif
}
// Last iteration
if ( (i < numMaxIter) && (pcRes != 0) )
{
// Increase iteration counter
i++;
// CN processing
#ifdef NR_LDPC_PROFILER_DETAIL
start_meas(&p_profiler->cnProc);
#endif
if (BG == 1)
{
nrLDPC_cnProc_BG1(p_lut, p_procBuf, Z);
}
else
{
nrLDPC_cnProc_BG2(p_lut, p_procBuf, Z);
}
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->cnProc);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC_RES, p_procBuf);
#endif
// Send CN results back to BNs
#ifdef NR_LDPC_PROFILER_DETAIL
start_meas(&p_profiler->cn2bnProcBuf);
#endif
if (BG == 1)
{
nrLDPC_cn2bnProcBuf_BG1(p_lut, p_procBuf, Z);
}
else
{
nrLDPC_cn2bnProcBuf_BG2(p_lut, p_procBuf, Z);
}
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->cn2bnProcBuf);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC, p_procBuf);
#endif
// BN Processing
#ifdef NR_LDPC_PROFILER_DETAIL
start_meas(&p_profiler->bnProcPc);
#endif
nrLDPC_bnProcPc(p_lut, p_procBuf, Z);
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->bnProcPc);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_LLR_RES, p_procBuf);
#endif
// If parity check not enabled, no need to send the BN proc results
// back to CNs
#ifdef NR_LDPC_ENABLE_PARITY_CHECK
#ifdef NR_LDPC_PROFILER_DETAIL
start_meas(&p_profiler->bnProc);
#endif
nrLDPC_bnProc(p_lut, p_procBuf, Z);
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->bnProc);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC_RES, p_procBuf);
#endif
// BN results to CN processing buffer
#ifdef NR_LDPC_PROFILER_DETAIL
start_meas(&p_profiler->bn2cnProcBuf);
#endif
if (BG == 1)
{
nrLDPC_bn2cnProcBuf_BG1(p_lut, p_procBuf, Z);
}
else
{
nrLDPC_bn2cnProcBuf_BG2(p_lut, p_procBuf, Z);
}
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->bn2cnProcBuf);
#endif
#ifdef NR_LDPC_DEBUG_MODE
nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC, p_procBuf);
#endif
// Parity Check
#ifdef NR_LDPC_PROFILER_DETAIL
start_meas(&p_profiler->cnProcPc);
#endif
if (BG == 1)
{
pcRes = nrLDPC_cnProcPc_BG1(p_lut, p_procBuf, Z);
}
else
{
pcRes = nrLDPC_cnProcPc_BG2(p_lut, p_procBuf, Z);
pcRes = nrLDPC_cnProcPc_BG2(p_lut, cnProcBuf, cnProcBufRes, Z);
}
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->cnProcPc);
@@ -466,7 +359,7 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#ifdef NR_LDPC_PROFILER_DETAIL
start_meas(&p_profiler->llrRes2llrOut);
#endif
nrLDPC_llrRes2llrOut(p_lut, p_llrOut, p_procBuf, Z, BG);
nrLDPC_llrRes2llrOut(p_lut, p_llrOut, llrRes, Z, BG);
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas(&p_profiler->llrRes2llrOut);
#endif
@@ -1,83 +0,0 @@
/*
* 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 nrLDPC_init_mem.h
* \brief Defines the function to initialize the LDPC decoder and sets correct LUTs.
* \author Sebastian Wagner (TCL Communications) Email: <mailto:sebastian.wagner@tcl.com>
* \date 07-12-2018
* \version 1.0
* \note
* \warning
*/
#ifndef __NR_LDPC_INIT_MEM__H__
#define __NR_LDPC_INIT_MEM__H__
#include <stdlib.h>
#include "nrLDPC_types.h"
/**
\brief Allocates 32 byte aligned memory and initializes to zero
\param size Input size in bytes
\return Pointer to memory
*/
static inline void* malloc32_clear(size_t size)
{
void* ptr = (void*) memalign(32, size+32);
memset(ptr, 0, size);
return ptr;
}
/**
\brief Allocates and initializes the internal decoder processing buffers
\param p_decParams Pointer to decoder parameters
\param p_lut Pointer to decoder LUTs
\return Number of LLR values
*/
static inline t_nrLDPC_procBuf* nrLDPC_init_mem(void)
{
t_nrLDPC_procBuf* p_procBuf = (t_nrLDPC_procBuf*) malloc32_clear(sizeof(t_nrLDPC_procBuf));
if (p_procBuf)
{
p_procBuf->cnProcBuf = (int8_t*) malloc32_clear(NR_LDPC_SIZE_CN_PROC_BUF*sizeof(int8_t));
p_procBuf->cnProcBufRes = (int8_t*) malloc32_clear(NR_LDPC_SIZE_CN_PROC_BUF*sizeof(int8_t));
p_procBuf->bnProcBuf = (int8_t*) malloc32_clear(NR_LDPC_SIZE_BN_PROC_BUF*sizeof(int8_t));
p_procBuf->bnProcBufRes = (int8_t*) malloc32_clear(NR_LDPC_SIZE_BN_PROC_BUF*sizeof(int8_t));
p_procBuf->llrRes = (int8_t*) malloc32_clear(NR_LDPC_MAX_NUM_LLR *sizeof(int8_t));
p_procBuf->llrProcBuf = (int8_t*) malloc32_clear(NR_LDPC_MAX_NUM_LLR *sizeof(int8_t));
}
return(p_procBuf);
}
static inline void nrLDPC_free_mem(t_nrLDPC_procBuf* p_procBuf)
{
free(p_procBuf->cnProcBuf);
free(p_procBuf->cnProcBufRes);
free(p_procBuf->bnProcBuf);
free(p_procBuf->bnProcBufRes);
free(p_procBuf->llrRes);
free(p_procBuf->llrProcBuf);
free(p_procBuf);
}
#endif
@@ -97,7 +97,7 @@ static inline void *nrLDPC_circ_memcpy(int8_t *str1, const int8_t *str2, uint16_
\param Z Lifting size
\param BG Base graph
*/
static inline void nrLDPC_llr2llrProcBuf(t_nrLDPC_lut* p_lut, int8_t* llr, t_nrLDPC_procBuf* p_procBuf, uint16_t Z, uint8_t BG)
static inline void nrLDPC_llr2llrProcBuf(t_nrLDPC_lut* p_lut, int8_t* llr, int8_t* llrProcBuf, uint16_t Z, uint8_t BG)
{
uint32_t i;
const uint8_t numBn2CnG1 = p_lut->numBnInBnGroups[0];
@@ -109,7 +109,6 @@ static inline void nrLDPC_llr2llrProcBuf(t_nrLDPC_lut* p_lut, int8_t* llr, t_nrL
const uint8_t* lut_llr2llrProcBufBnPos = p_lut->llr2llrProcBufBnPos;
uint32_t idxBn;
int8_t* llrProcBuf = p_procBuf->llrProcBuf;
// Copy LLRs connected to 1 CN
if (numBn2CnG1 > 0)
@@ -133,7 +132,7 @@ static inline void nrLDPC_llr2llrProcBuf(t_nrLDPC_lut* p_lut, int8_t* llr, t_nrL
\param p_procBuf Pointer to the processing buffers
\param Z Lifting size
*/
static inline void nrLDPC_llr2CnProcBuf_BG1(t_nrLDPC_lut* p_lut, int8_t* llr, t_nrLDPC_procBuf* p_procBuf, uint16_t Z)
static inline void nrLDPC_llr2CnProcBuf_BG1(t_nrLDPC_lut* p_lut, int8_t* llr, int8_t* cnProcBuf, uint16_t Z)
{
const uint16_t (*lut_circShift_CNG3) [lut_numCnInCnGroups_BG1_R13[0]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[0]]) p_lut->circShift[0];
const uint16_t (*lut_circShift_CNG4) [lut_numCnInCnGroups_BG1_R13[1]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[1]]) p_lut->circShift[1];
@@ -158,7 +157,6 @@ static inline void nrLDPC_llr2CnProcBuf_BG1(t_nrLDPC_lut* p_lut, int8_t* llr, t_
const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups;
const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups;
int8_t* cnProcBuf = p_procBuf->cnProcBuf;
uint32_t i;
uint32_t j;
@@ -342,7 +340,7 @@ static inline void nrLDPC_llr2CnProcBuf_BG1(t_nrLDPC_lut* p_lut, int8_t* llr, t_
\param p_procBuf Pointer to the processing buffers
\param Z Lifting size
*/
static inline void nrLDPC_llr2CnProcBuf_BG2(t_nrLDPC_lut* p_lut, int8_t* llr, t_nrLDPC_procBuf* p_procBuf, uint16_t Z)
static inline void nrLDPC_llr2CnProcBuf_BG2(t_nrLDPC_lut* p_lut, int8_t* llr, int8_t* cnProcBuf, uint16_t Z)
{
const uint16_t (*lut_circShift_CNG3) [lut_numCnInCnGroups_BG2_R15[0]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[0]]) p_lut->circShift[0];
const uint16_t (*lut_circShift_CNG4) [lut_numCnInCnGroups_BG2_R15[1]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[1]]) p_lut->circShift[1];
@@ -361,7 +359,6 @@ static inline void nrLDPC_llr2CnProcBuf_BG2(t_nrLDPC_lut* p_lut, int8_t* llr, t_
const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups;
const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups;
int8_t* cnProcBuf = p_procBuf->cnProcBuf;
uint32_t i;
uint32_t j;
@@ -478,7 +475,7 @@ static inline void nrLDPC_llr2CnProcBuf_BG2(t_nrLDPC_lut* p_lut, int8_t* llr, t_
\param p_procBuf Pointer to the processing buffers
\param Z Lifting size
*/
static inline void nrLDPC_cn2bnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z)
static inline void nrLDPC_cn2bnProcBuf_BG2(t_nrLDPC_lut* p_lut, int8_t* cnProcBufRes, int8_t* bnProcBuf, uint16_t Z)
{
const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups;
const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups;
@@ -504,9 +501,6 @@ static inline void nrLDPC_cn2bnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
const uint8_t (*lut_bnPosBnProcBuf_CNG8) [lut_numCnInCnGroups[4]] = (const uint8_t(*)[lut_numCnInCnGroups[4]]) p_lut->bnPosBnProcBuf[4];
const uint8_t (*lut_bnPosBnProcBuf_CNG10) [lut_numCnInCnGroups[5]] = (const uint8_t(*)[lut_numCnInCnGroups[5]]) p_lut->bnPosBnProcBuf[5];
int8_t* cnProcBufRes = p_procBuf->cnProcBufRes;
int8_t* bnProcBuf = p_procBuf->bnProcBuf;
int8_t* p_cnProcBufRes;
uint32_t bitOffsetInGroup;
uint32_t i;
@@ -621,7 +615,7 @@ static inline void nrLDPC_cn2bnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
\param p_procBuf Pointer to the processing buffers
\param Z Lifting size
*/
static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z)
static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, int8_t* cnProcBufRes, int8_t* bnProcBuf, uint16_t Z)
{
const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups;
const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups;
@@ -655,9 +649,6 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
const uint8_t (*lut_bnPosBnProcBuf_CNG10)[lut_numCnInCnGroups[7]] = (const uint8_t(*)[lut_numCnInCnGroups[7]]) p_lut->bnPosBnProcBuf[7];
const uint8_t (*lut_bnPosBnProcBuf_CNG19)[lut_numCnInCnGroups[8]] = (const uint8_t(*)[lut_numCnInCnGroups[8]]) p_lut->bnPosBnProcBuf[8];
int8_t* cnProcBufRes = p_procBuf->cnProcBufRes;
int8_t* bnProcBuf = p_procBuf->bnProcBuf;
int8_t* p_cnProcBufRes;
uint32_t bitOffsetInGroup;
uint32_t i;
@@ -819,7 +810,7 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
\param p_procBuf Pointer to the processing buffers
\param Z Lifting size
*/
static inline void nrLDPC_bn2cnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z)
static inline void nrLDPC_bn2cnProcBuf_BG2(t_nrLDPC_lut* p_lut, int8_t* bnProcBufRes, int8_t* cnProcBuf, uint16_t Z)
{
const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups;
const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups;
@@ -845,9 +836,6 @@ static inline void nrLDPC_bn2cnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
const uint8_t (*lut_bnPosBnProcBuf_CNG8) [lut_numCnInCnGroups[4]] = (const uint8_t(*)[lut_numCnInCnGroups[4]]) p_lut->bnPosBnProcBuf[4];
const uint8_t (*lut_bnPosBnProcBuf_CNG10) [lut_numCnInCnGroups[5]] = (const uint8_t(*)[lut_numCnInCnGroups[5]]) p_lut->bnPosBnProcBuf[5];
int8_t* cnProcBuf = p_procBuf->cnProcBuf;
int8_t* bnProcBufRes = p_procBuf->bnProcBufRes;
int8_t* p_cnProcBuf;
uint32_t bitOffsetInGroup;
uint32_t i;
@@ -961,7 +949,7 @@ static inline void nrLDPC_bn2cnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
\param p_procBuf Pointer to the processing buffers
\param Z Lifting size
*/
static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z)
static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, int8_t* bnProcBufRes, int8_t* cnProcBuf, uint16_t Z)
{
const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups;
const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups;
@@ -995,9 +983,6 @@ static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
const uint8_t (*lut_bnPosBnProcBuf_CNG10)[lut_numCnInCnGroups[7]] = (const uint8_t(*)[lut_numCnInCnGroups[7]]) p_lut->bnPosBnProcBuf[7];
const uint8_t (*lut_bnPosBnProcBuf_CNG19)[lut_numCnInCnGroups[8]] = (const uint8_t(*)[lut_numCnInCnGroups[8]]) p_lut->bnPosBnProcBuf[8];
int8_t* cnProcBuf = p_procBuf->cnProcBuf;
int8_t* bnProcBufRes = p_procBuf->bnProcBufRes;
int8_t* p_cnProcBuf;
uint32_t bitOffsetInGroup;
uint32_t i;
@@ -1157,7 +1142,7 @@ static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
\param Z Lifting size
\param BG Base graph
*/
static inline void nrLDPC_llrRes2llrOut(t_nrLDPC_lut* p_lut, int8_t* llrOut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z, uint8_t BG)
static inline void nrLDPC_llrRes2llrOut(t_nrLDPC_lut* p_lut, int8_t* llrOut, int8_t* llrRes, uint16_t Z, uint8_t BG)
{
uint32_t i;
const uint8_t numBn2CnG1 = p_lut->numBnInBnGroups[0];
@@ -1168,7 +1153,6 @@ static inline void nrLDPC_llrRes2llrOut(t_nrLDPC_lut* p_lut, int8_t* llrOut, t_n
const uint16_t* lut_llr2llrProcBufAddr = p_lut->llr2llrProcBufAddr;
const uint8_t* lut_llr2llrProcBufBnPos = p_lut->llr2llrProcBufBnPos;
int8_t* llrRes = p_procBuf->llrRes;
int8_t* p_llrOut = &llrOut[0];
uint32_t idxBn;
@@ -87,38 +87,38 @@ static inline void nrLDPC_initFile(const char* fileName)
\brief Writes data of predefined buffers to file
\param buffer Enum of buffer name to write
*/
static inline void nrLDPC_debug_writeBuffer2File(e_nrLDPC_buffers buffer, t_nrLDPC_procBuf* p_procBuf)
static inline void nrLDPC_debug_writeBuffer2File(e_nrLDPC_buffers buffer, int8_t* p_buffer)
{
switch (buffer)
{
case nrLDPC_buffers_LLR_PROC:
{
nrLDPC_writeFile("llrProcBuf.txt", p_procBuf->llrProcBuf, NR_LDPC_MAX_NUM_LLR);
nrLDPC_writeFile("llrProcBuf.txt", p_buffer, NR_LDPC_MAX_NUM_LLR);
break;
}
case nrLDPC_buffers_CN_PROC:
{
nrLDPC_writeFile("cnProcBuf.txt", p_procBuf->cnProcBuf, NR_LDPC_SIZE_CN_PROC_BUF);
nrLDPC_writeFile("cnProcBuf.txt", p_buffer, NR_LDPC_SIZE_CN_PROC_BUF);
break;
}
case nrLDPC_buffers_CN_PROC_RES:
{
nrLDPC_writeFile("cnProcBufRes.txt", p_procBuf->cnProcBufRes, NR_LDPC_SIZE_CN_PROC_BUF);
nrLDPC_writeFile("cnProcBufRes.txt", p_buffer, NR_LDPC_SIZE_CN_PROC_BUF);
break;
}
case nrLDPC_buffers_BN_PROC:
{
nrLDPC_writeFile("bnProcBuf.txt", p_procBuf->bnProcBuf, NR_LDPC_SIZE_BN_PROC_BUF);
nrLDPC_writeFile("bnProcBuf.txt", p_buffer, NR_LDPC_SIZE_BN_PROC_BUF);
break;
}
case nrLDPC_buffers_BN_PROC_RES:
{
nrLDPC_writeFile("bnProcBufRes.txt", p_procBuf->bnProcBufRes, NR_LDPC_SIZE_BN_PROC_BUF);
nrLDPC_writeFile("bnProcBufRes.txt", p_buffer, NR_LDPC_SIZE_BN_PROC_BUF);
break;
}
case nrLDPC_buffers_LLR_RES:
{
nrLDPC_writeFile("llrRes.txt", p_procBuf->llrRes, NR_LDPC_MAX_NUM_LLR);
nrLDPC_writeFile("llrRes.txt", p_buffer, NR_LDPC_MAX_NUM_LLR);
break;
}
}
+1 -1
View File
@@ -71,5 +71,5 @@ typedef int(*nrLDPC_encoderfunc_t)(unsigned char **,unsigned char **,int,int,sho
\param p_llrOut Output vector
\param p_profiler LDPC profiler statistics
*/
typedef int32_t(*nrLDPC_decoderfunc_t)(t_nrLDPC_dec_params *, int8_t *, int8_t *, t_nrLDPC_procBuf *, t_nrLDPC_time_stats * );
typedef int32_t(*nrLDPC_decoderfunc_t)(t_nrLDPC_dec_params* , int8_t*, int8_t* , t_nrLDPC_time_stats* );
#endif
-1
View File
@@ -34,5 +34,4 @@ extern nrLDPC_initcallfunc_t nrLDPC_initcall;
extern nrLDPC_decoderfunc_t nrLDPC_decoder;
extern nrLDPC_encoderfunc_t nrLDPC_encoder;
// inline functions:
#include "openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_init_mem.h"
#endif
+4 -12
View File
@@ -74,12 +74,9 @@ void free_gNB_ulsch(NR_gNB_ULSCH_t **ulschptr, uint16_t N_RB_UL)
for (int r=0; r<a_segments; r++) {
free_and_zero(ulsch->harq_processes[i]->c[r]);
free_and_zero(ulsch->harq_processes[i]->d[r]);
nrLDPC_free_mem(ulsch->harq_processes[i]->p_nrLDPC_procBuf[r]);
ulsch->harq_processes[i]->p_nrLDPC_procBuf[r] = NULL;
}
free_and_zero(ulsch->harq_processes[i]->c);
free_and_zero(ulsch->harq_processes[i]->d);
free_and_zero(ulsch->harq_processes[i]->p_nrLDPC_procBuf);
free_and_zero(ulsch->harq_processes[i]);
ulsch->harq_processes[i] = NULL;
}
@@ -102,24 +99,22 @@ NR_gNB_ULSCH_t *new_gNB_ulsch(uint8_t max_ldpc_iterations, uint16_t N_RB_UL)
uint32_t ulsch_bytes = a_segments*1056; // allocated bytes per segment
ulsch = (NR_gNB_ULSCH_t *)malloc16_clear(sizeof(NR_gNB_ULSCH_t));
ulsch->max_ldpc_iterations = max_ldpc_iterations;
ulsch->Mlimit = 4;
for (i=0; i<NR_MAX_ULSCH_HARQ_PROCESSES; i++) {
ulsch->harq_processes[i] = (NR_UL_gNB_HARQ_t *)malloc16_clear(sizeof(NR_UL_gNB_HARQ_t));
ulsch->harq_processes[i]->b = (uint8_t*)malloc16_clear(ulsch_bytes);
ulsch->harq_processes[i]->c = (uint8_t**)malloc16_clear(a_segments*sizeof(uint8_t *));
ulsch->harq_processes[i]->d = (int16_t**)malloc16_clear(a_segments*sizeof(int16_t *));
ulsch->harq_processes[i]->p_nrLDPC_procBuf = (t_nrLDPC_procBuf **)malloc16_clear(a_segments*sizeof(t_nrLDPC_procBuf *));
for (r=0; r<a_segments; r++) {
ulsch->harq_processes[i]->p_nrLDPC_procBuf[r] = nrLDPC_init_mem();
ulsch->harq_processes[i]->c[r] = (uint8_t*)malloc16_clear(8448*sizeof(uint8_t));
ulsch->harq_processes[i]->d[r] = (int16_t*)malloc16_clear((68*384)*sizeof(int16_t));
}
}
return(ulsch);
}
@@ -174,8 +169,6 @@ void clean_gNB_ulsch(NR_gNB_ULSCH_t *ulsch)
ulsch->harq_processes[i]->C=0;
/// Pointers to code blocks after LDPC coding (38.212 V15.4.0 section 5.3.2)
//int16_t *d[MAX_NUM_NR_ULSCH_SEGMENTS];
/// LDPC processing buffer
//t_nrLDPC_procBuf* p_nrLDPC_procBuf[MAX_NUM_NR_ULSCH_SEGMENTS];
ulsch->harq_processes[i]->Z=0;
/// code blocks after bit selection in rate matching for LDPC code (38.212 V15.4.0 section 5.4.2.1)
//int16_t e[MAX_NUM_NR_ULSCH_SEGMENTS][3*8448];
@@ -357,7 +350,6 @@ void nr_processULSegment(void* arg) {
no_iteration_ldpc = nrLDPC_decoder(p_decoderParms,
(int8_t*)&pl[0],
llrProcBuf,
ulsch_harq->p_nrLDPC_procBuf[r],
p_procTime);
if (check_crc((uint8_t*)llrProcBuf,length_dec,ulsch_harq->F,crc_type)) {
@@ -36,7 +36,8 @@
void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
PHY_VARS_NR_UE *ue,
module_id_t gNB_id,
const int estimateSz, struct complex16 dl_ch_estimates_time[][estimateSz],
const int estimateSz,
struct complex16 dl_ch_estimates_time[][estimateSz],
uint8_t frame,
uint8_t subframe,
unsigned char clear,
@@ -197,9 +197,9 @@ int nr_pbch_dmrs_correlation(PHY_VARS_NR_UE *ue,
int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
int estimateSz,
struct complex16 dl_ch_estimates [][estimateSz],
struct complex16 dl_ch_estimates_time [][estimateSz],
int estimateSz,
struct complex16 dl_ch_estimates [][estimateSz],
struct complex16 dl_ch_estimates_time [][ue->frame_parms.ofdm_symbol_size],
UE_nr_rxtx_proc_t *proc,
uint8_t gNB_id,
unsigned char Ns,
@@ -320,7 +320,7 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+k+re_offset)];
dl_ch = (int16_t *)&dl_ch_estimates[aarx][ch_offset];
memset(dl_ch,0,sizeof(*dl_ch)*(ue->frame_parms.ofdm_symbol_size));
memset(dl_ch,0,sizeof(struct complex16)*(ue->frame_parms.ofdm_symbol_size));
#ifdef DEBUG_CH
printf("pbch ch est pilot addr %p RB_DL %d\n",&pilot[0], ue->frame_parms.N_RB_DL);
@@ -387,10 +387,10 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
// in 2nd symbol, skip middle REs (48 with DMRS, 144 for SSS, and another 48 with DMRS)
if (dmrss == 1 && pilot_cnt == 12) {
pilot_cnt=48;
re_offset = (re_offset+144) % ue->frame_parms.ofdm_symbol_size;
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+k+re_offset)];
dl_ch += 288;
pilot_cnt=48;
re_offset = (re_offset+144) % ue->frame_parms.ofdm_symbol_size;
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+k+re_offset)];
dl_ch += 288;
}
ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
@@ -452,10 +452,12 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
(int16_t*) &dl_ch_estimates[aarx][ch_offset],
(int16_t*) dl_ch_estimates_time[aarx],
1);
}
}
}
}
if (dmrss == 2)
UEscopeCopy(ue, pbchDlChEstimateTime, (void*)dl_ch_estimates_time, sizeof(struct complex16), ue->frame_parms.nb_antennas_rx, idftsizeidx);
return(0);
}
+104 -112
View File
@@ -104,11 +104,9 @@ void free_nr_ue_dlsch(NR_UE_DLSCH_t **dlschptr, uint16_t N_RB_DL) {
dlsch->harq_processes[i]->c[r] = NULL;
free16(dlsch->harq_processes[i]->d[r],5*8448);
dlsch->harq_processes[i]->d[r] = NULL;
nrLDPC_free_mem(dlsch->harq_processes[i]->p_nrLDPC_procBuf[r]);
}
free16(dlsch->harq_processes[i]->c,a_segments);
free16(dlsch->harq_processes[i]->d,a_segments);
free16(dlsch->harq_processes[i]->p_nrLDPC_procBuf,a_segments);
free16(dlsch->harq_processes[i],sizeof(NR_DL_UE_HARQ_t));
dlsch->harq_processes[i] = NULL;
@@ -161,9 +159,7 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint
dlsch->harq_processes[i]->c = (uint8_t **)malloc16(a_segments*sizeof(uint8_t *));
dlsch->harq_processes[i]->d = (int16_t **)malloc16(a_segments*sizeof(int16_t *));
dlsch->harq_processes[i]->p_nrLDPC_procBuf = (t_nrLDPC_procBuf **)malloc16(a_segments*sizeof(t_nrLDPC_procBuf *));
for (int r=0; r<a_segments; r++) {
dlsch->harq_processes[i]->p_nrLDPC_procBuf[r] = nrLDPC_init_mem();
dlsch->harq_processes[i]->c[r] = (uint8_t *)malloc16(1056);
dlsch->harq_processes[i]->d[r] = (int16_t *)malloc16(5*8448*sizeof(int16_t));
if (dlsch->harq_processes[i]->c[r])
@@ -301,132 +297,128 @@ void nr_processDLSegment(void* arg) {
t_nrLDPC_time_stats procTime = {0};
t_nrLDPC_time_stats* p_procTime = &procTime ;
t_nrLDPC_procBuf **p_nrLDPC_procBuf = harq_process->p_nrLDPC_procBuf;
int16_t w[5*8448];
memset(w,0,(5*8448)*sizeof(short));
start_meas(&rdata->ts_deinterleave);
int16_t w[5*8448];
memset(w,0,(5*8448)*sizeof(short));
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DEINTERLEAVING, VCD_FUNCTION_IN);
nr_deinterleaving_ldpc(E,
Qm,
w, // [hna] w is e
dlsch_llr+r_offset);
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DEINTERLEAVING, VCD_FUNCTION_OUT);
stop_meas(&rdata->ts_deinterleave);
start_meas(&rdata->ts_deinterleave);
start_meas(&rdata->ts_rate_unmatch);
/* LOG_D(PHY,"HARQ_PID %d Rate Matching Segment %d (coded bits %d,E %d, F %d,unpunctured/repeated bits %d, TBS %d, mod_order %d, nb_rb %d, Nl %d, rv %d, round %d)...\n",
harq_pid,r, G,E,harq_process->F,
Kr*3,
harq_process->TBS,
Qm,
harq_process->nb_rb,
harq_process->Nl,
harq_process->rvidx,
harq_process->round); */
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_RATE_MATCHING, VCD_FUNCTION_IN);
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DEINTERLEAVING, VCD_FUNCTION_IN);
nr_deinterleaving_ldpc(E,
Qm,
w, // [hna] w is e
dlsch_llr+r_offset);
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DEINTERLEAVING, VCD_FUNCTION_OUT);
stop_meas(&rdata->ts_deinterleave);
start_meas(&rdata->ts_rate_unmatch);
/* LOG_D(PHY,"HARQ_PID %d Rate Matching Segment %d (coded bits %d,E %d, F %d,unpunctured/repeated bits %d, TBS %d, mod_order %d, nb_rb %d, Nl %d, rv %d, round %d)...\n",
harq_pid,r, G,E,harq_process->F,
Kr*3,
harq_process->TBS,
Qm,
harq_process->nb_rb,
harq_process->Nl,
harq_process->rvidx,
harq_process->round); */
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_RATE_MATCHING, VCD_FUNCTION_IN);
if (nr_rate_matching_ldpc_rx(Ilbrm,
Tbslbrm,
p_decoderParms->BG,
p_decoderParms->Z,
harq_process->d[r],
w,
harq_process->C,
harq_process->rvidx,
(harq_process->first_rx==1)?1:0,
E,
harq_process->F,
Kr-harq_process->F-2*(p_decoderParms->Z))==-1) {
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_RATE_MATCHING, VCD_FUNCTION_OUT);
stop_meas(&rdata->ts_rate_unmatch);
LOG_E(PHY,"dlsch_decoding.c: Problem in rate_matching\n");
rdata->decodeIterations = dlsch->max_ldpc_iterations + 1;
return;
}
if (nr_rate_matching_ldpc_rx(Ilbrm,
Tbslbrm,
p_decoderParms->BG,
p_decoderParms->Z,
harq_process->d[r],
w,
harq_process->C,
harq_process->rvidx,
(harq_process->first_rx==1)?1:0,
E,
harq_process->F,
Kr-harq_process->F-2*(p_decoderParms->Z))==-1) {
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_RATE_MATCHING, VCD_FUNCTION_OUT);
stop_meas(&rdata->ts_rate_unmatch);
LOG_E(PHY,"dlsch_decoding.c: Problem in rate_matching\n");
rdata->decodeIterations = dlsch->max_ldpc_iterations + 1;
return;
}
stop_meas(&rdata->ts_rate_unmatch);
r_offset += E;
r_offset += E;
if (LOG_DEBUGFLAG(DEBUG_DLSCH_DECOD)) {
LOG_D(PHY,"decoder input(segment %u) :",r);
if (LOG_DEBUGFLAG(DEBUG_DLSCH_DECOD)) {
LOG_D(PHY,"decoder input(segment %u) :",r);
for (int i=0; i<E; i++)
LOG_D(PHY,"%d : %d\n",i,harq_process->d[r][i]);
for (int i=0; i<E; i++)
LOG_D(PHY,"%d : %d\n",i,harq_process->d[r][i]);
LOG_D(PHY,"\n");
LOG_D(PHY,"\n");
}
memset(harq_process->c[r],0,Kr_bytes);
if (harq_process->C == 1) {
if (A > NR_MAX_PDSCH_TBS)
crc_type = CRC24_A;
else
crc_type = CRC16;
length_dec = harq_process->B;
} else {
crc_type = CRC24_B;
length_dec = (harq_process->B+24*harq_process->C)/harq_process->C;
}
{
start_meas(&rdata->ts_ldpc_decode);
//set first 2*Z_c bits to zeros
memset(&z[0],0,2*harq_process->Z*sizeof(int16_t));
//set Filler bits
memset((&z[0]+K_bits_F),127,harq_process->F*sizeof(int16_t));
//Move coded bits before filler bits
memcpy((&z[0]+2*harq_process->Z),harq_process->d[r],(K_bits_F-2*harq_process->Z)*sizeof(int16_t));
//skip filler bits
memcpy((&z[0]+Kr),harq_process->d[r]+(Kr-2*harq_process->Z),(kc*harq_process->Z-Kr)*sizeof(int16_t));
//Saturate coded bits before decoding into 8 bits values
for (i=0, j=0; j < ((kc*harq_process->Z)>>4)+1; i+=2, j++) {
pl[j] = _mm_packs_epi16(pv[i],pv[i+1]);
}
memset(harq_process->c[r],0,Kr_bytes);
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_LDPC, VCD_FUNCTION_IN);
p_decoderParms->block_length=length_dec;
nrLDPC_initcall(p_decoderParms, (int8_t*)&pl[0], llrProcBuf);
no_iteration_ldpc = nrLDPC_decoder(p_decoderParms,
(int8_t *)&pl[0],
llrProcBuf,
p_procTime);
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_LDPC, VCD_FUNCTION_OUT);
if (harq_process->C == 1) {
if (A > NR_MAX_PDSCH_TBS)
crc_type = CRC24_A;
else
crc_type = CRC16;
// Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int
if (check_crc((uint8_t *)llrProcBuf,length_dec,harq_process->F,crc_type)) {
LOG_D(PHY,"Segment %u CRC OK\n\033[0m",r);
length_dec = harq_process->B;
if (r==0) {
for (int i=0; i<10; i++) LOG_D(PHY,"byte %d : %x\n",i,((uint8_t *)llrProcBuf)[i]);
}
//Temporary hack
no_iteration_ldpc = dlsch->max_ldpc_iterations;
rdata->decodeIterations = no_iteration_ldpc;
} else {
crc_type = CRC24_B;
length_dec = (harq_process->B+24*harq_process->C)/harq_process->C;
LOG_D(PHY,"CRC NOT OK\n\033[0m");
}
{
start_meas(&rdata->ts_ldpc_decode);
//set first 2*Z_c bits to zeros
memset(&z[0],0,2*harq_process->Z*sizeof(int16_t));
//set Filler bits
memset((&z[0]+K_bits_F),127,harq_process->F*sizeof(int16_t));
//Move coded bits before filler bits
memcpy((&z[0]+2*harq_process->Z),harq_process->d[r],(K_bits_F-2*harq_process->Z)*sizeof(int16_t));
//skip filler bits
memcpy((&z[0]+Kr),harq_process->d[r]+(Kr-2*harq_process->Z),(kc*harq_process->Z-Kr)*sizeof(int16_t));
nb_total_decod++;
//Saturate coded bits before decoding into 8 bits values
for (i=0, j=0; j < ((kc*harq_process->Z)>>4)+1; i+=2, j++) {
pl[j] = _mm_packs_epi16(pv[i],pv[i+1]);
}
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_LDPC, VCD_FUNCTION_IN);
p_decoderParms->block_length=length_dec;
nrLDPC_initcall(p_decoderParms, (int8_t*)&pl[0], llrProcBuf);
no_iteration_ldpc = nrLDPC_decoder(p_decoderParms,
(int8_t *)&pl[0],
llrProcBuf,
p_nrLDPC_procBuf[r],
p_procTime);
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_LDPC, VCD_FUNCTION_OUT);
// Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int
if (check_crc((uint8_t *)llrProcBuf,length_dec,harq_process->F,crc_type)) {
LOG_D(PHY,"Segment %u CRC OK\n",r);
if (r==0) {
for (int i=0; i<10; i++) LOG_D(PHY,"byte %d : %x\n",i,((uint8_t *)llrProcBuf)[i]);
}
//Temporary hack
no_iteration_ldpc = dlsch->max_ldpc_iterations;
rdata->decodeIterations = no_iteration_ldpc;
} else {
LOG_D(PHY,"CRC NOT OK\n");
}
nb_total_decod++;
if (no_iteration_ldpc > dlsch->max_ldpc_iterations) {
nb_error_decod++;
}
for (int m=0; m < Kr>>3; m ++) {
harq_process->c[r][m]= (uint8_t) llrProcBuf[m];
}
stop_meas(&rdata->ts_ldpc_decode);
if (no_iteration_ldpc > dlsch->max_ldpc_iterations) {
nb_error_decod++;
}
for (int m=0; m < Kr>>3; m ++) {
harq_process->c[r][m]= (uint8_t) llrProcBuf[m];
}
stop_meas(&rdata->ts_ldpc_decode);
}
}
uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
@@ -146,23 +146,26 @@ int nr_pbch_detection(UE_nr_rxtx_proc_t * proc, PHY_VARS_NR_UE *ue, int pbch_ini
start_meas(&ue->dlsch_channel_estimation_stats);
// computing channel estimation for selected best ssb
const int estimateSz=7*2*frame_parms->ofdm_symbol_size;
const int estimateSz = frame_parms->symbols_per_slot * frame_parms->ofdm_symbol_size;
__attribute__ ((aligned(32))) struct complex16 dl_ch_estimates[frame_parms->nb_antennas_rx][estimateSz];
__attribute__ ((aligned(32))) struct complex16 dl_ch_estimates_time[frame_parms->nb_antennas_rx][estimateSz];
__attribute__ ((aligned(32))) struct complex16 dl_ch_estimates_time[frame_parms->nb_antennas_rx][frame_parms->ofdm_symbol_size];
for(int i=pbch_initial_symbol; i<pbch_initial_symbol+3;i++)
nr_pbch_channel_estimation(ue,estimateSz, dl_ch_estimates, dl_ch_estimates_time,
proc,0,0,i,i-pbch_initial_symbol,temp_ptr->i_ssb,temp_ptr->n_hf);
stop_meas(&ue->dlsch_channel_estimation_stats);
fapiPbch_t result;
ret = nr_rx_pbch(ue,
proc,
estimateSz, dl_ch_estimates,
ue->pbch_vars[0],
estimateSz,
dl_ch_estimates,
ue->pbch_vars[0],
frame_parms,
0,
temp_ptr->i_ssb,
SISO,
&result);
&result);
temp_ptr=temp_ptr->next_ssb;
}
@@ -196,8 +196,6 @@ typedef struct {
uint8_t rvidx;
/// MIMO mode for this DLSCH
MIMO_nrmode_t mimo_mode;
/// LDPC processing buffers
t_nrLDPC_procBuf **p_nrLDPC_procBuf;
/// Number of code segments
uint32_t C;
/// Number of bits in code segments
-2
View File
@@ -280,8 +280,6 @@ typedef struct {
uint32_t C;
/// Pointers to code blocks after LDPC coding (38.212 V15.4.0 section 5.3.2)
int16_t **d;
/// LDPC processing buffer
t_nrLDPC_procBuf** p_nrLDPC_procBuf;
/// LDPC lifting size (38.212 V15.4.0 table 5.3.2-1)
uint32_t Z;
/// Number of bits in each code block after rate matching for LDPC code (38.212 V15.4.0 section 5.4.2.1)
+123 -51
View File
@@ -36,10 +36,11 @@
#include "fapi_nr_ue_l1.h"
#include "harq_nr.h"
//#include "PHY/phy_vars_nr_ue.h"
#include "openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h"
#include "PHY/defs_nr_UE.h"
#include "PHY/impl_defs_nr.h"
#include "utils.h"
#include "openair2/PHY_INTERFACE/queue_t.h"
extern PHY_VARS_NR_UE ***PHY_vars_UE_g;
@@ -49,8 +50,64 @@ queue_t nr_rx_ind_queue;
queue_t nr_crc_ind_queue;
queue_t nr_uci_ind_queue;
int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response) {
static void fill_uci_2_3_4(nfapi_nr_uci_pucch_pdu_format_2_3_4_t *pdu_2_3_4,
fapi_nr_ul_config_pucch_pdu *pucch_pdu)
{
memset(pdu_2_3_4, 0, sizeof(*pdu_2_3_4));
pdu_2_3_4->handle = 0;
pdu_2_3_4->rnti = pucch_pdu->rnti;
pdu_2_3_4->pucch_format = 2;
pdu_2_3_4->ul_cqi = 255;
pdu_2_3_4->timing_advance = 0;
pdu_2_3_4->rssi = 0;
// TODO: Eventually check 38.212:Sect.631 to know when to use csi_part2, for now only using csi_part1
pdu_2_3_4->pduBitmap = 4;
pdu_2_3_4->csi_part1.csi_part1_bit_len = pucch_pdu->nr_of_symbols;
int csi_part1_byte_len = (int)((pdu_2_3_4->csi_part1.csi_part1_bit_len / 8) + 1);
AssertFatal(!pdu_2_3_4->csi_part1.csi_part1_payload, "pdu_2_3_4->csi_part1.csi_part1_payload != NULL\n");
pdu_2_3_4->csi_part1.csi_part1_payload = CALLOC(csi_part1_byte_len,
sizeof(pdu_2_3_4->csi_part1.csi_part1_payload));
for (int k = 0; k < csi_part1_byte_len; k++)
{
pdu_2_3_4->csi_part1.csi_part1_payload[k] = (pucch_pdu->payload >> (k * 8)) & 0xff;
}
pdu_2_3_4->csi_part1.csi_part1_crc = 0;
}
static void free_uci_inds(nfapi_nr_uci_indication_t *uci_ind)
{
for (int k = 0; k < uci_ind->num_ucis; k++)
{
if (uci_ind->uci_list[k].pdu_type == NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE)
{
nfapi_nr_uci_pucch_pdu_format_0_1_t *pdu_0_1 = &uci_ind->uci_list[k].pucch_pdu_format_0_1;
free(pdu_0_1->sr);
pdu_0_1->sr = NULL;
if (pdu_0_1->harq)
{
free(pdu_0_1->harq->harq_list);
pdu_0_1->harq->harq_list = NULL;
}
free(pdu_0_1->harq);
pdu_0_1->harq = NULL;
}
if (uci_ind->uci_list[k].pdu_type == NFAPI_NR_UCI_FORMAT_2_3_4_PDU_TYPE)
{
nfapi_nr_uci_pucch_pdu_format_2_3_4_t *pdu_2_3_4 = &uci_ind->uci_list[k].pucch_pdu_format_2_3_4;
free(pdu_2_3_4->sr.sr_payload);
pdu_2_3_4->sr.sr_payload = NULL;
free(pdu_2_3_4->harq.harq_payload);
pdu_2_3_4->harq.harq_payload = NULL;
}
}
free(uci_ind->uci_list);
uci_ind->uci_list = NULL;
free(uci_ind);
uci_ind = NULL;
}
int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response) {
NR_UE_MAC_INST_t *mac = get_mac_inst(0);
if(scheduled_response != NULL)
{
if (scheduled_response->ul_config != NULL)
@@ -60,7 +117,7 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
"Too many ul_config pdus %d", ul_config->number_pdus);
for (int i = 0; i < ul_config->number_pdus; ++i)
{
LOG_I(PHY, "In %s: processing type %d PDU of %d total UL PDUs (ul_config %p) \n",
LOG_D(NR_PHY, "In %s: processing type %d PDU of %d total UL PDUs (ul_config %p) \n",
__FUNCTION__, ul_config->ul_config_list[i].pdu_type, ul_config->number_pdus, ul_config);
uint8_t pdu_type = ul_config->ul_config_list[i].pdu_type;
@@ -95,10 +152,6 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
abstracting L1. */
rx_ind->pdu_list[j].timing_advance = 31;
rx_ind->pdu_list[j].ul_cqi = 255;
char buffer[1024];
hexdump(rx_ind->pdu_list[j].pdu, rx_ind->pdu_list[j].pdu_length, buffer, sizeof(buffer));
LOG_D(NR_MAC, "Hexdump of pdu %s before queuing rx_ind\n",
buffer);
}
crc_ind->header.message_id = NFAPI_NR_PHY_MSG_TYPE_CRC_INDICATION;
@@ -118,6 +171,11 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
crc_ind->crc_list[j].tb_crc_status = 0;
crc_ind->crc_list[j].timing_advance = 31;
crc_ind->crc_list[j].ul_cqi = 255;
AssertFatal(mac->nr_ue_emul_l1.harq[crc_ind->crc_list[j].harq_id].active_ul_harq_sfn_slot == -1,
"We did not send an active CRC when we should have!\n");
mac->nr_ue_emul_l1.harq[crc_ind->crc_list[j].harq_id].active_ul_harq_sfn_slot = NFAPI_SFNSLOT2HEX(crc_ind->sfn, crc_ind->slot);
LOG_D(NR_MAC, "This is sched sfn/sl [%d %d] and crc sfn/sl [%d %d] with mcs_index in ul_cqi -> %d\n",
scheduled_response->frame, scheduled_response->slot, crc_ind->sfn, crc_ind->slot,pusch_config_pdu->mcs_index);
}
if (!put_queue(&nr_rx_ind_queue, rx_ind))
@@ -150,28 +208,7 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
break;
}
default:
LOG_I(NR_MAC, "Unknown ul_config->pdu_type %d\n", pdu_type);
break;
}
}
scheduled_response->ul_config->number_pdus = 0;
}
if (scheduled_response->dl_config != NULL)
{
fapi_nr_dl_config_request_t *dl_config = scheduled_response->dl_config;
AssertFatal(dl_config->number_pdus < sizeof(dl_config->dl_config_list) / sizeof(dl_config->dl_config_list[0]),
"Too many dl_config pdus %d", dl_config->number_pdus);
for (int i = 0; i < dl_config->number_pdus; ++i)
{
LOG_D(PHY, "In %s: processing %s PDU of %d total DL PDUs (dl_config %p) \n",
__FUNCTION__, dl_pdu_type[dl_config->dl_config_list[i].pdu_type - 1], dl_config->number_pdus, dl_config);
uint8_t pdu_type = dl_config->dl_config_list[i].pdu_type;
switch (pdu_type)
{
case (FAPI_NR_DL_CONFIG_TYPE_DLSCH):
case FAPI_NR_UL_CONFIG_TYPE_PUCCH:
{
nfapi_nr_uci_indication_t *uci_ind = CALLOC(1, sizeof(*uci_ind));
uci_ind->header.message_id = NFAPI_NR_PHY_MSG_TYPE_UCI_INDICATION;
@@ -181,35 +218,70 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
uci_ind->uci_list = CALLOC(uci_ind->num_ucis, sizeof(*uci_ind->uci_list));
for (int j = 0; j < uci_ind->num_ucis; j++)
{
nfapi_nr_uci_pucch_pdu_format_0_1_t *pdu_0_1 = &uci_ind->uci_list[j].pucch_pdu_format_0_1;
uci_ind->uci_list[j].pdu_type = NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE;
uci_ind->uci_list[j].pdu_size = sizeof(nfapi_nr_uci_pucch_pdu_format_0_1_t);
memset(pdu_0_1, 0, sizeof(*pdu_0_1));
pdu_0_1->handle = 0;
pdu_0_1->rnti = dl_config->dl_config_list[i].dlsch_config_pdu.rnti;
pdu_0_1->pucch_format = 1;
pdu_0_1->ul_cqi = 255;
pdu_0_1->timing_advance = 0;
pdu_0_1->rssi = 0;
LOG_D(NR_MAC, "ul_config->ul_config_list[%d].pucch_config_pdu.n_bit = %d\n", i, ul_config->ul_config_list[i].pucch_config_pdu.n_bit);
if (ul_config->ul_config_list[i].pucch_config_pdu.n_bit > 3 && mac->nr_ue_emul_l1.num_csi_reports > 0)
{
uci_ind->uci_list[j].pdu_type = NFAPI_NR_UCI_FORMAT_2_3_4_PDU_TYPE;
uci_ind->uci_list[j].pdu_size = sizeof(nfapi_nr_uci_pucch_pdu_format_2_3_4_t);
nfapi_nr_uci_pucch_pdu_format_2_3_4_t *pdu_2_3_4 = &uci_ind->uci_list[j].pucch_pdu_format_2_3_4;
fill_uci_2_3_4(pdu_2_3_4, &ul_config->ul_config_list[i].pucch_config_pdu);
}
else
{
nfapi_nr_uci_pucch_pdu_format_0_1_t *pdu_0_1 = &uci_ind->uci_list[j].pucch_pdu_format_0_1;
uci_ind->uci_list[j].pdu_type = NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE;
uci_ind->uci_list[j].pdu_size = sizeof(nfapi_nr_uci_pucch_pdu_format_0_1_t);
memset(pdu_0_1, 0, sizeof(*pdu_0_1));
pdu_0_1->handle = 0;
pdu_0_1->rnti = ul_config->ul_config_list[i].pucch_config_pdu.rnti;
pdu_0_1->pucch_format = 1;
pdu_0_1->ul_cqi = 255;
pdu_0_1->timing_advance = 0;
pdu_0_1->rssi = 0;
if (mac->nr_ue_emul_l1.num_harqs > 0) {
int harq_index = 0;
pdu_0_1->pduBitmap = 2; // (value->pduBitmap >> 1) & 0x01) == HARQ and (value->pduBitmap) & 0x01) == SR
pdu_0_1->harq = CALLOC(1, sizeof(*pdu_0_1->harq));
pdu_0_1->harq->num_harq = mac->nr_ue_emul_l1.num_harqs;
pdu_0_1->harq->harq_confidence_level = 0;
pdu_0_1->harq->harq_list = CALLOC(pdu_0_1->harq->num_harq, sizeof(*pdu_0_1->harq->harq_list));
int harq_pid = -1;
for (int k = 0; k < NR_MAX_HARQ_PROCESSES; k++)
{
if (mac->nr_ue_emul_l1.harq[k].active &&
mac->nr_ue_emul_l1.harq[k].active_dl_harq_sfn == uci_ind->sfn &&
mac->nr_ue_emul_l1.harq[k].active_dl_harq_slot == uci_ind->slot)
{
mac->nr_ue_emul_l1.harq[k].active = false;
harq_pid = k;
AssertFatal(harq_index < pdu_0_1->harq->num_harq, "Invalid harq_index %d\n", harq_index);
pdu_0_1->harq->harq_list[harq_index].harq_value = !mac->dl_harq_info[k].ack;
harq_index++;
}
}
AssertFatal(harq_pid != -1, "No active harq_pid, sfn_slot = %u.%u", uci_ind->sfn, uci_ind->slot);
}
}
}
LOG_I(NR_PHY, "In %s: Filled queue uci_ind which was filled by dlconfig.\n"
"uci_num %d, SFN/SLOT: [%d, %d]\n",
__FUNCTION__, uci_ind->num_ucis, uci_ind->sfn, uci_ind->slot);
if (!put_queue(&nr_uci_ind_queue, uci_ind))
{
LOG_E(NR_MAC, "Put_queue failed for uci_ind\n");
free(uci_ind->uci_list);
free(uci_ind);
}
LOG_D(NR_PHY, "Sending UCI with %d PDUs in sfn.slot %d/%d\n",
uci_ind->num_ucis, uci_ind->sfn, uci_ind->slot);
NR_UL_IND_t ul_info = {
.uci_ind = *uci_ind,
};
send_nsa_standalone_msg(&ul_info, uci_ind->header.message_id);
free_uci_inds(uci_ind);
break;
}
default:
LOG_W(NR_MAC, "Unknown ul_config->pdu_type %d\n", pdu_type);
break;
}
}
dl_config->number_pdus = 0;
scheduled_response->ul_config->number_pdus = 0;
}
}
return 0;
}
+6 -4
View File
@@ -1408,9 +1408,11 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
if (slot_ssb) {
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP_PBCH, VCD_FUNCTION_IN);
LOG_D(PHY," ------ PBCH ChannelComp/LLR: frame.slot %d.%d ------ \n", frame_rx%1024, nr_slot_rx);
const int estimateSz=7*2*sizeof(int)*fp->ofdm_symbol_size;
const int estimateSz = fp->symbols_per_slot * fp->ofdm_symbol_size;
__attribute__ ((aligned(32))) struct complex16 dl_ch_estimates[fp->nb_antennas_rx][estimateSz];
__attribute__ ((aligned(32))) struct complex16 dl_ch_estimates_time[fp->nb_antennas_rx][estimateSz];
__attribute__ ((aligned(32))) struct complex16 dl_ch_estimates_time[fp->nb_antennas_rx][fp->ofdm_symbol_size];
for (int i=1; i<4; i++) {
nr_slot_fep(ue,
@@ -1418,7 +1420,6 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
(ue->symbol_offset+i)%(fp->symbols_per_slot),
nr_slot_rx);
start_meas(&ue->dlsch_channel_estimation_stats);
nr_pbch_channel_estimation(ue, estimateSz, dl_ch_estimates, dl_ch_estimates_time,proc,gNB_id,nr_slot_rx,(ue->symbol_offset+i)%(fp->symbols_per_slot),i-1,(fp->ssb_index)&7,fp->half_frame_bit);
stop_meas(&ue->dlsch_channel_estimation_stats);
@@ -1436,7 +1437,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
nr_adjust_synch_ue(fp,
ue,
gNB_id,
estimateSz, dl_ch_estimates_time,
fp->ofdm_symbol_size,
dl_ch_estimates_time,
frame_rx,
nr_slot_rx,
0,
@@ -0,0 +1,21 @@
SNR; MCS; TBS; rate; err0; trials0; err1; trials1; err2; trials2; err3; trials3; dci_err
16.000000;27;15840;0.704000;5002;5002;0;0;0;0;0;0;0
16.100000;27;15840;0.704000;5002;5002;0;0;0;0;0;0;0
16.200000;27;15840;0.704000;5002;5002;0;0;0;0;0;0;0
16.300000;27;15840;0.704000;5002;5002;0;0;0;0;0;0;0
16.400000;27;15840;0.704000;4999;5002;0;0;0;0;0;0;0
16.500000;27;15840;0.704000;4981;5002;0;0;0;0;0;0;0
16.600000;27;15840;0.704000;4887;5002;0;0;0;0;0;0;0
16.700000;27;15840;0.704000;4688;5002;0;0;0;0;0;0;0
16.800000;27;15840;0.704000;4176;5002;0;0;0;0;0;0;0
16.900000;27;15840;0.704000;3340;5002;0;0;0;0;0;0;0
17.000000;27;15840;0.704000;2386;5002;0;0;0;0;0;0;0
17.100000;27;15840;0.704000;1510;5002;0;0;0;0;0;0;0
17.200000;27;15840;0.704000;1000;5552;0;0;0;0;0;0;0
17.300000;27;15840;0.704000;926;10000;0;0;0;0;0;0;0
17.400000;27;15840;0.704000;516;10000;0;0;0;0;0;0;0
17.500000;27;15840;0.704000;287;10000;0;0;0;0;0;0;0
17.600000;27;15840;0.704000;198;10000;0;0;0;0;0;0;0
17.700000;27;15840;0.704000;135;10000;0;0;0;0;0;0;0
17.800000;27;15840;0.704000;102;10000;0;0;0;0;0;0;0
17.900000;27;15840;0.704000;94;10000;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 16.000000 27 15840 0.704000 5002 5002 0 0 0 0 0 0 0
3 16.100000 27 15840 0.704000 5002 5002 0 0 0 0 0 0 0
4 16.200000 27 15840 0.704000 5002 5002 0 0 0 0 0 0 0
5 16.300000 27 15840 0.704000 5002 5002 0 0 0 0 0 0 0
6 16.400000 27 15840 0.704000 4999 5002 0 0 0 0 0 0 0
7 16.500000 27 15840 0.704000 4981 5002 0 0 0 0 0 0 0
8 16.600000 27 15840 0.704000 4887 5002 0 0 0 0 0 0 0
9 16.700000 27 15840 0.704000 4688 5002 0 0 0 0 0 0 0
10 16.800000 27 15840 0.704000 4176 5002 0 0 0 0 0 0 0
11 16.900000 27 15840 0.704000 3340 5002 0 0 0 0 0 0 0
12 17.000000 27 15840 0.704000 2386 5002 0 0 0 0 0 0 0
13 17.100000 27 15840 0.704000 1510 5002 0 0 0 0 0 0 0
14 17.200000 27 15840 0.704000 1000 5552 0 0 0 0 0 0 0
15 17.300000 27 15840 0.704000 926 10000 0 0 0 0 0 0 0
16 17.400000 27 15840 0.704000 516 10000 0 0 0 0 0 0 0
17 17.500000 27 15840 0.704000 287 10000 0 0 0 0 0 0 0
18 17.600000 27 15840 0.704000 198 10000 0 0 0 0 0 0 0
19 17.700000 27 15840 0.704000 135 10000 0 0 0 0 0 0 0
20 17.800000 27 15840 0.704000 102 10000 0 0 0 0 0 0 0
21 17.900000 27 15840 0.704000 94 10000 0 0 0 0 0 0 0
@@ -0,0 +1,62 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
-4;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-3.9;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-3.8;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-3.7;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-3.6;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-3.5;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-3.4;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-3.3;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-3.2;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-3.1;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-3;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-2.9;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-2.8;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-2.7;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-2.6;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-2.5;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-2.4;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-2.3;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-2.2;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-2.1;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-2;0;1864;0.2344;1500;1500;0;0;0;0;0;0;0
-1.9;0;1864;0.2344;1499;1500;0;0;0;0;0;0;0
-1.8;0;1864;0.2344;1499;1500;0;0;0;0;0;0;0
-1.7;0;1864;0.2344;1498;1500;0;0;0;0;0;0;0
-1.6;0;1864;0.2344;1498;1500;0;0;0;0;0;0;0
-1.5;0;1864;0.2344;1497;1500;0;0;0;0;0;0;0
-1.4;0;1864;0.2344;1445;1500;0;0;0;0;0;0;0
-1.3;0;1864;0.2344;1394;1500;0;0;0;0;0;0;0
-1.2;0;1864;0.2344;1346;1500;0;0;0;0;0;0;0
-1.1;0;1864;0.2344;1299;1500;0;0;0;0;0;0;0
-1;0;1864;0.2344;1253;1500;0;0;0;0;0;0;0
-0.9;0;1864;0.2344;980;1500;0;0;0;0;0;0;0
-0.8;0;1864;0.2344;767;1500;0;0;0;0;0;0;0
-0.7;0;1864;0.2344;600;1500;0;0;0;0;0;0;0
-0.6;0;1864;0.2344;469;1500;0;0;0;0;0;0;0
-0.5;0;1864;0.2344;367;1500;0;0;0;0;0;0;0
-0.4;0;1864;0.2344;215;1500;0;0;0;0;0;0;0
-0.3;0;1864;0.2344;126;1500;0;0;0;0;0;0;0
-0.2;0;1864;0.2344;74;1500;0;0;0;0;0;0;0
-0.1;0;1864;0.2344;43;1500;0;0;0;0;0;0;0
0;0;1864;0.2344;26;1500;0;0;0;0;0;0;0
0.1;0;1864;0.2344;12;1500;0;0;0;0;0;0;0
0.2;0;1864;0.2344;5;1500;0;0;0;0;0;0;0
0.3;0;1864;0.2344;2;1500;0;0;0;0;0;0;0
0.4;0;1864;0.2344;1;1500;0;0;0;0;0;0;0
0.5;0;1864;0.2344;1;1500;0;0;0;0;0;0;0
0.6;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
0.7;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
0.8;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
0.9;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
1;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
1.1;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
1.2;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
1.3;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
1.4;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
1.5;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
1.6;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
1.7;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
1.8;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
1.9;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
2;0;1864;0.2344;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 -4 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
3 -3.9 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
4 -3.8 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
5 -3.7 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
6 -3.6 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
7 -3.5 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
8 -3.4 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
9 -3.3 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
10 -3.2 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
11 -3.1 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
12 -3 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
13 -2.9 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
14 -2.8 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
15 -2.7 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
16 -2.6 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
17 -2.5 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
18 -2.4 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
19 -2.3 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
20 -2.2 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
21 -2.1 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
22 -2 0 1864 0.2344 1500 1500 0 0 0 0 0 0 0
23 -1.9 0 1864 0.2344 1499 1500 0 0 0 0 0 0 0
24 -1.8 0 1864 0.2344 1499 1500 0 0 0 0 0 0 0
25 -1.7 0 1864 0.2344 1498 1500 0 0 0 0 0 0 0
26 -1.6 0 1864 0.2344 1498 1500 0 0 0 0 0 0 0
27 -1.5 0 1864 0.2344 1497 1500 0 0 0 0 0 0 0
28 -1.4 0 1864 0.2344 1445 1500 0 0 0 0 0 0 0
29 -1.3 0 1864 0.2344 1394 1500 0 0 0 0 0 0 0
30 -1.2 0 1864 0.2344 1346 1500 0 0 0 0 0 0 0
31 -1.1 0 1864 0.2344 1299 1500 0 0 0 0 0 0 0
32 -1 0 1864 0.2344 1253 1500 0 0 0 0 0 0 0
33 -0.9 0 1864 0.2344 980 1500 0 0 0 0 0 0 0
34 -0.8 0 1864 0.2344 767 1500 0 0 0 0 0 0 0
35 -0.7 0 1864 0.2344 600 1500 0 0 0 0 0 0 0
36 -0.6 0 1864 0.2344 469 1500 0 0 0 0 0 0 0
37 -0.5 0 1864 0.2344 367 1500 0 0 0 0 0 0 0
38 -0.4 0 1864 0.2344 215 1500 0 0 0 0 0 0 0
39 -0.3 0 1864 0.2344 126 1500 0 0 0 0 0 0 0
40 -0.2 0 1864 0.2344 74 1500 0 0 0 0 0 0 0
41 -0.1 0 1864 0.2344 43 1500 0 0 0 0 0 0 0
42 0 0 1864 0.2344 26 1500 0 0 0 0 0 0 0
43 0.1 0 1864 0.2344 12 1500 0 0 0 0 0 0 0
44 0.2 0 1864 0.2344 5 1500 0 0 0 0 0 0 0
45 0.3 0 1864 0.2344 2 1500 0 0 0 0 0 0 0
46 0.4 0 1864 0.2344 1 1500 0 0 0 0 0 0 0
47 0.5 0 1864 0.2344 1 1500 0 0 0 0 0 0 0
48 0.6 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
49 0.7 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
50 0.8 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
51 0.9 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
52 1 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
53 1.1 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
54 1.2 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
55 1.3 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
56 1.4 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
57 1.5 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
58 1.6 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
59 1.7 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
60 1.8 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
61 1.9 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
62 2 0 1864 0.2344 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,92 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
3;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
3.1;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
3.2;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
3.3;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
3.4;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
3.5;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
3.6;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
3.7;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
3.8;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
3.9;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
4;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
4.1;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
4.2;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
4.3;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
4.4;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
4.5;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
4.6;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
4.7;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
4.8;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
4.9;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
5;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
5.1;10;10504;1.3281;1454;1500;0;0;0;0;0;0;0
5.2;10;10504;1.3281;1410;1500;0;0;0;0;0;0;0
5.3;10;10504;1.3281;1367;1500;0;0;0;0;0;0;0
5.4;10;10504;1.3281;1325;1500;0;0;0;0;0;0;0
5.5;10;10504;1.3281;1285;1500;0;0;0;0;0;0;0
5.6;10;10504;1.3281;1026;1500;0;0;0;0;0;0;0
5.7;10;10504;1.3281;819;1500;0;0;0;0;0;0;0
5.8;10;10504;1.3281;654;1500;0;0;0;0;0;0;0
5.9;10;10504;1.3281;522;1500;0;0;0;0;0;0;0
6;10;10504;1.3281;417;1500;0;0;0;0;0;0;0
6.1;10;10504;1.3281;309;1500;0;0;0;0;0;0;0
6.2;10;10504;1.3281;229;1500;0;0;0;0;0;0;0
6.3;10;10504;1.3281;169;1500;0;0;0;0;0;0;0
6.4;10;10504;1.3281;125;1500;0;0;0;0;0;0;0
6.5;10;10504;1.3281;93;1500;0;0;0;0;0;0;0
6.6;10;10504;1.3281;64;1500;0;0;0;0;0;0;0
6.7;10;10504;1.3281;44;1500;0;0;0;0;0;0;0
6.8;10;10504;1.3281;31;1500;0;0;0;0;0;0;0
6.9;10;10504;1.3281;21;1500;0;0;0;0;0;0;0
7;10;10504;1.3281;15;1500;0;0;0;0;0;0;0
7.1;10;10504;1.3281;7;1500;0;0;0;0;0;0;0
7.2;10;10504;1.3281;3;1500;0;0;0;0;0;0;0
7.3;10;10504;1.3281;1;1500;0;0;0;0;0;0;0
7.4;10;10504;1.3281;1;1500;0;0;0;0;0;0;0
7.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
7.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
7.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
7.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
7.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
8.1;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
8.2;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
8.3;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
8.4;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
8.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
8.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
8.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
8.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
8.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
9.1;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
9.2;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
9.3;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
9.4;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
9.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
9.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
9.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
9.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
9.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
10;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
10.1;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
10.2;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
10.3;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
10.4;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
10.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
10.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
10.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
10.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
10.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
11;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
11.1;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
11.2;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
11.3;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
11.4;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
11.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
11.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
11.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
11.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
11.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
12;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 3 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
3 3.1 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
4 3.2 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
5 3.3 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
6 3.4 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
7 3.5 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
8 3.6 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
9 3.7 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
10 3.8 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
11 3.9 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
12 4 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
13 4.1 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
14 4.2 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
15 4.3 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
16 4.4 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
17 4.5 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
18 4.6 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
19 4.7 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
20 4.8 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
21 4.9 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
22 5 10 10504 1.3281 1500 1500 0 0 0 0 0 0 0
23 5.1 10 10504 1.3281 1454 1500 0 0 0 0 0 0 0
24 5.2 10 10504 1.3281 1410 1500 0 0 0 0 0 0 0
25 5.3 10 10504 1.3281 1367 1500 0 0 0 0 0 0 0
26 5.4 10 10504 1.3281 1325 1500 0 0 0 0 0 0 0
27 5.5 10 10504 1.3281 1285 1500 0 0 0 0 0 0 0
28 5.6 10 10504 1.3281 1026 1500 0 0 0 0 0 0 0
29 5.7 10 10504 1.3281 819 1500 0 0 0 0 0 0 0
30 5.8 10 10504 1.3281 654 1500 0 0 0 0 0 0 0
31 5.9 10 10504 1.3281 522 1500 0 0 0 0 0 0 0
32 6 10 10504 1.3281 417 1500 0 0 0 0 0 0 0
33 6.1 10 10504 1.3281 309 1500 0 0 0 0 0 0 0
34 6.2 10 10504 1.3281 229 1500 0 0 0 0 0 0 0
35 6.3 10 10504 1.3281 169 1500 0 0 0 0 0 0 0
36 6.4 10 10504 1.3281 125 1500 0 0 0 0 0 0 0
37 6.5 10 10504 1.3281 93 1500 0 0 0 0 0 0 0
38 6.6 10 10504 1.3281 64 1500 0 0 0 0 0 0 0
39 6.7 10 10504 1.3281 44 1500 0 0 0 0 0 0 0
40 6.8 10 10504 1.3281 31 1500 0 0 0 0 0 0 0
41 6.9 10 10504 1.3281 21 1500 0 0 0 0 0 0 0
42 7 10 10504 1.3281 15 1500 0 0 0 0 0 0 0
43 7.1 10 10504 1.3281 7 1500 0 0 0 0 0 0 0
44 7.2 10 10504 1.3281 3 1500 0 0 0 0 0 0 0
45 7.3 10 10504 1.3281 1 1500 0 0 0 0 0 0 0
46 7.4 10 10504 1.3281 1 1500 0 0 0 0 0 0 0
47 7.5 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
48 7.6 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
49 7.7 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
50 7.8 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
51 7.9 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
52 8 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
53 8.1 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
54 8.2 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
55 8.3 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
56 8.4 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
57 8.5 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
58 8.6 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
59 8.7 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
60 8.8 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
61 8.9 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
62 9 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
63 9.1 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
64 9.2 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
65 9.3 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
66 9.4 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
67 9.5 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
68 9.6 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
69 9.7 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
70 9.8 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
71 9.9 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
72 10 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
73 10.1 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
74 10.2 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
75 10.3 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
76 10.4 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
77 10.5 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
78 10.6 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
79 10.7 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
80 10.8 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
81 10.9 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
82 11 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
83 11.1 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
84 11.2 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
85 11.3 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
86 11.4 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
87 11.5 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
88 11.6 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
89 11.7 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
90 11.8 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
91 11.9 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
92 12 10 10504 1.3281 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,92 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
3;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
3.1;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
3.2;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
3.3;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
3.4;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
3.5;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
3.6;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
3.7;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
3.8;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
3.9;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
4;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
4.1;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
4.2;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
4.3;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
4.4;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
4.5;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
4.6;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
4.7;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
4.8;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
4.9;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
5;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
5.1;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
5.2;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
5.3;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
5.4;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
5.5;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
5.6;11;11784;1.4766;1494;1500;0;0;0;0;0;0;0
5.7;11;11784;1.4766;1489;1500;0;0;0;0;0;0;0
5.8;11;11784;1.4766;1483;1500;0;0;0;0;0;0;0
5.9;11;11784;1.4766;1477;1500;0;0;0;0;0;0;0
6;11;11784;1.4766;1472;1500;0;0;0;0;0;0;0
6.1;11;11784;1.4766;1367;1500;0;0;0;0;0;0;0
6.2;11;11784;1.4766;1269;1500;0;0;0;0;0;0;0
6.3;11;11784;1.4766;1179;1500;0;0;0;0;0;0;0
6.4;11;11784;1.4766;1095;1500;0;0;0;0;0;0;0
6.5;11;11784;1.4766;1016;1500;0;0;0;0;0;0;0
6.6;11;11784;1.4766;762;1500;0;0;0;0;0;0;0
6.7;11;11784;1.4766;571;1500;0;0;0;0;0;0;0
6.8;11;11784;1.4766;428;1500;0;0;0;0;0;0;0
6.9;11;11784;1.4766;320;1500;0;0;0;0;0;0;0
7;11;11784;1.4766;240;1500;0;0;0;0;0;0;0
7.1;11;11784;1.4766;169;1500;0;0;0;0;0;0;0
7.2;11;11784;1.4766;119;1500;0;0;0;0;0;0;0
7.3;11;11784;1.4766;83;1500;0;0;0;0;0;0;0
7.4;11;11784;1.4766;59;1500;0;0;0;0;0;0;0
7.5;11;11784;1.4766;41;1500;0;0;0;0;0;0;0
7.6;11;11784;1.4766;24;1500;0;0;0;0;0;0;0
7.7;11;11784;1.4766;14;1500;0;0;0;0;0;0;0
7.8;11;11784;1.4766;8;1500;0;0;0;0;0;0;0
7.9;11;11784;1.4766;5;1500;0;0;0;0;0;0;0
8;11;11784;1.4766;3;1500;0;0;0;0;0;0;0
8.1;11;11784;1.4766;1;1500;0;0;0;0;0;0;0
8.2;11;11784;1.4766;1;1500;0;0;0;0;0;0;0
8.3;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
8.4;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
8.5;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
8.6;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
8.7;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
8.8;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
8.9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
9.1;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
9.2;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
9.3;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
9.4;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
9.5;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
9.6;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
9.7;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
9.8;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
9.9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
10;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
10.1;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
10.2;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
10.3;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
10.4;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
10.5;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
10.6;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
10.7;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
10.8;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
10.9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
11;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
11.1;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
11.2;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
11.3;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
11.4;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
11.5;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
11.6;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
11.7;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
11.8;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
11.9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
12;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 3 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
3 3.1 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
4 3.2 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
5 3.3 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
6 3.4 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
7 3.5 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
8 3.6 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
9 3.7 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
10 3.8 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
11 3.9 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
12 4 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
13 4.1 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
14 4.2 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
15 4.3 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
16 4.4 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
17 4.5 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
18 4.6 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
19 4.7 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
20 4.8 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
21 4.9 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
22 5 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
23 5.1 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
24 5.2 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
25 5.3 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
26 5.4 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
27 5.5 11 11784 1.4766 1500 1500 0 0 0 0 0 0 0
28 5.6 11 11784 1.4766 1494 1500 0 0 0 0 0 0 0
29 5.7 11 11784 1.4766 1489 1500 0 0 0 0 0 0 0
30 5.8 11 11784 1.4766 1483 1500 0 0 0 0 0 0 0
31 5.9 11 11784 1.4766 1477 1500 0 0 0 0 0 0 0
32 6 11 11784 1.4766 1472 1500 0 0 0 0 0 0 0
33 6.1 11 11784 1.4766 1367 1500 0 0 0 0 0 0 0
34 6.2 11 11784 1.4766 1269 1500 0 0 0 0 0 0 0
35 6.3 11 11784 1.4766 1179 1500 0 0 0 0 0 0 0
36 6.4 11 11784 1.4766 1095 1500 0 0 0 0 0 0 0
37 6.5 11 11784 1.4766 1016 1500 0 0 0 0 0 0 0
38 6.6 11 11784 1.4766 762 1500 0 0 0 0 0 0 0
39 6.7 11 11784 1.4766 571 1500 0 0 0 0 0 0 0
40 6.8 11 11784 1.4766 428 1500 0 0 0 0 0 0 0
41 6.9 11 11784 1.4766 320 1500 0 0 0 0 0 0 0
42 7 11 11784 1.4766 240 1500 0 0 0 0 0 0 0
43 7.1 11 11784 1.4766 169 1500 0 0 0 0 0 0 0
44 7.2 11 11784 1.4766 119 1500 0 0 0 0 0 0 0
45 7.3 11 11784 1.4766 83 1500 0 0 0 0 0 0 0
46 7.4 11 11784 1.4766 59 1500 0 0 0 0 0 0 0
47 7.5 11 11784 1.4766 41 1500 0 0 0 0 0 0 0
48 7.6 11 11784 1.4766 24 1500 0 0 0 0 0 0 0
49 7.7 11 11784 1.4766 14 1500 0 0 0 0 0 0 0
50 7.8 11 11784 1.4766 8 1500 0 0 0 0 0 0 0
51 7.9 11 11784 1.4766 5 1500 0 0 0 0 0 0 0
52 8 11 11784 1.4766 3 1500 0 0 0 0 0 0 0
53 8.1 11 11784 1.4766 1 1500 0 0 0 0 0 0 0
54 8.2 11 11784 1.4766 1 1500 0 0 0 0 0 0 0
55 8.3 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
56 8.4 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
57 8.5 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
58 8.6 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
59 8.7 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
60 8.8 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
61 8.9 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
62 9 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
63 9.1 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
64 9.2 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
65 9.3 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
66 9.4 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
67 9.5 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
68 9.6 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
69 9.7 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
70 9.8 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
71 9.9 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
72 10 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
73 10.1 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
74 10.2 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
75 10.3 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
76 10.4 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
77 10.5 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
78 10.6 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
79 10.7 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
80 10.8 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
81 10.9 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
82 11 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
83 11.1 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
84 11.2 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
85 11.3 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
86 11.4 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
87 11.5 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
88 11.6 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
89 11.7 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
90 11.8 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
91 11.9 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
92 12 11 11784 1.4766 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,92 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
3;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
3.1;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
3.2;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
3.3;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
3.4;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
3.5;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
3.6;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
3.7;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
3.8;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
3.9;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
4;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
4.1;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
4.2;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
4.3;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
4.4;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
4.5;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
4.6;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
4.7;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
4.8;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
4.9;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
5;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
5.1;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
5.2;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
5.3;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
5.4;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
5.5;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
5.6;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
5.7;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
5.8;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
5.9;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
6;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
6.1;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
6.2;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
6.3;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
6.4;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
6.5;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
6.6;12;13576;1.6953;1498;1500;0;0;0;0;0;0;0
6.7;12;13576;1.6953;1495;1500;0;0;0;0;0;0;0
6.8;12;13576;1.6953;1493;1500;0;0;0;0;0;0;0
6.9;12;13576;1.6953;1491;1500;0;0;0;0;0;0;0
7;12;13576;1.6953;1488;1500;0;0;0;0;0;0;0
7.1;12;13576;1.6953;1357;1500;0;0;0;0;0;0;0
7.2;12;13576;1.6953;1238;1500;0;0;0;0;0;0;0
7.3;12;13576;1.6953;1129;1500;0;0;0;0;0;0;0
7.4;12;13576;1.6953;1029;1500;0;0;0;0;0;0;0
7.5;12;13576;1.6953;939;1500;0;0;0;0;0;0;0
7.6;12;13576;1.6953;632;1500;0;0;0;0;0;0;0
7.7;12;13576;1.6953;425;1500;0;0;0;0;0;0;0
7.8;12;13576;1.6953;286;1500;0;0;0;0;0;0;0
7.9;12;13576;1.6953;193;1500;0;0;0;0;0;0;0
8;12;13576;1.6953;130;1500;0;0;0;0;0;0;0
8.1;12;13576;1.6953;91;1500;0;0;0;0;0;0;0
8.2;12;13576;1.6953;64;1500;0;0;0;0;0;0;0
8.3;12;13576;1.6953;45;1500;0;0;0;0;0;0;0
8.4;12;13576;1.6953;32;1500;0;0;0;0;0;0;0
8.5;12;13576;1.6953;23;1500;0;0;0;0;0;0;0
8.6;12;13576;1.6953;12;1500;0;0;0;0;0;0;0
8.7;12;13576;1.6953;6;1500;0;0;0;0;0;0;0
8.8;12;13576;1.6953;3;1500;0;0;0;0;0;0;0
8.9;12;13576;1.6953;2;1500;0;0;0;0;0;0;0
9;12;13576;1.6953;1;1500;0;0;0;0;0;0;0
9.1;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
9.2;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
9.3;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
9.4;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
9.5;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
9.6;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
9.7;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
9.8;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
9.9;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
10;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
10.1;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
10.2;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
10.3;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
10.4;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
10.5;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
10.6;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
10.7;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
10.8;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
10.9;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
11;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
11.1;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
11.2;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
11.3;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
11.4;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
11.5;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
11.6;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
11.7;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
11.8;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
11.9;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
12;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 3 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
3 3.1 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
4 3.2 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
5 3.3 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
6 3.4 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
7 3.5 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
8 3.6 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
9 3.7 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
10 3.8 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
11 3.9 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
12 4 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
13 4.1 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
14 4.2 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
15 4.3 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
16 4.4 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
17 4.5 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
18 4.6 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
19 4.7 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
20 4.8 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
21 4.9 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
22 5 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
23 5.1 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
24 5.2 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
25 5.3 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
26 5.4 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
27 5.5 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
28 5.6 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
29 5.7 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
30 5.8 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
31 5.9 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
32 6 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
33 6.1 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
34 6.2 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
35 6.3 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
36 6.4 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
37 6.5 12 13576 1.6953 1500 1500 0 0 0 0 0 0 0
38 6.6 12 13576 1.6953 1498 1500 0 0 0 0 0 0 0
39 6.7 12 13576 1.6953 1495 1500 0 0 0 0 0 0 0
40 6.8 12 13576 1.6953 1493 1500 0 0 0 0 0 0 0
41 6.9 12 13576 1.6953 1491 1500 0 0 0 0 0 0 0
42 7 12 13576 1.6953 1488 1500 0 0 0 0 0 0 0
43 7.1 12 13576 1.6953 1357 1500 0 0 0 0 0 0 0
44 7.2 12 13576 1.6953 1238 1500 0 0 0 0 0 0 0
45 7.3 12 13576 1.6953 1129 1500 0 0 0 0 0 0 0
46 7.4 12 13576 1.6953 1029 1500 0 0 0 0 0 0 0
47 7.5 12 13576 1.6953 939 1500 0 0 0 0 0 0 0
48 7.6 12 13576 1.6953 632 1500 0 0 0 0 0 0 0
49 7.7 12 13576 1.6953 425 1500 0 0 0 0 0 0 0
50 7.8 12 13576 1.6953 286 1500 0 0 0 0 0 0 0
51 7.9 12 13576 1.6953 193 1500 0 0 0 0 0 0 0
52 8 12 13576 1.6953 130 1500 0 0 0 0 0 0 0
53 8.1 12 13576 1.6953 91 1500 0 0 0 0 0 0 0
54 8.2 12 13576 1.6953 64 1500 0 0 0 0 0 0 0
55 8.3 12 13576 1.6953 45 1500 0 0 0 0 0 0 0
56 8.4 12 13576 1.6953 32 1500 0 0 0 0 0 0 0
57 8.5 12 13576 1.6953 23 1500 0 0 0 0 0 0 0
58 8.6 12 13576 1.6953 12 1500 0 0 0 0 0 0 0
59 8.7 12 13576 1.6953 6 1500 0 0 0 0 0 0 0
60 8.8 12 13576 1.6953 3 1500 0 0 0 0 0 0 0
61 8.9 12 13576 1.6953 2 1500 0 0 0 0 0 0 0
62 9 12 13576 1.6953 1 1500 0 0 0 0 0 0 0
63 9.1 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
64 9.2 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
65 9.3 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
66 9.4 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
67 9.5 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
68 9.6 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
69 9.7 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
70 9.8 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
71 9.9 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
72 10 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
73 10.1 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
74 10.2 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
75 10.3 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
76 10.4 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
77 10.5 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
78 10.6 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
79 10.7 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
80 10.8 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
81 10.9 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
82 11 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
83 11.1 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
84 11.2 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
85 11.3 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
86 11.4 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
87 11.5 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
88 11.6 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
89 11.7 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
90 11.8 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
91 11.9 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
92 12 12 13576 1.6953 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,72 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
7;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
7.1;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
7.2;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
7.3;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
7.4;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
7.5;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
7.6;13;15112;1.9141;1444;1500;0;0;0;0;0;0;0
7.7;13;15112;1.9141;1391;1500;0;0;0;0;0;0;0
7.8;13;15112;1.9141;1340;1500;0;0;0;0;0;0;0
7.9;13;15112;1.9141;1290;1500;0;0;0;0;0;0;0
8;13;15112;1.9141;1243;1500;0;0;0;0;0;0;0
8.1;13;15112;1.9141;878;1500;0;0;0;0;0;0;0
8.2;13;15112;1.9141;620;1500;0;0;0;0;0;0;0
8.3;13;15112;1.9141;438;1500;0;0;0;0;0;0;0
8.4;13;15112;1.9141;309;1500;0;0;0;0;0;0;0
8.5;13;15112;1.9141;219;1500;0;0;0;0;0;0;0
8.6;13;15112;1.9141;173;1500;0;0;0;0;0;0;0
8.7;13;15112;1.9141;137;1500;0;0;0;0;0;0;0
8.8;13;15112;1.9141;109;1500;0;0;0;0;0;0;0
8.9;13;15112;1.9141;86;1500;0;0;0;0;0;0;0
9;13;15112;1.9141;68;1500;0;0;0;0;0;0;0
9.1;13;15112;1.9141;47;1500;0;0;0;0;0;0;0
9.2;13;15112;1.9141;33;1500;0;0;0;0;0;0;0
9.3;13;15112;1.9141;23;1500;0;0;0;0;0;0;0
9.4;13;15112;1.9141;16;1500;0;0;0;0;0;0;0
9.5;13;15112;1.9141;11;1500;0;0;0;0;0;0;0
9.6;13;15112;1.9141;5;1500;0;0;0;0;0;0;0
9.7;13;15112;1.9141;2;1500;0;0;0;0;0;0;0
9.8;13;15112;1.9141;1;1500;0;0;0;0;0;0;0
9.9;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
10;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
10.1;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
10.2;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
10.3;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
10.4;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
10.5;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
10.6;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
10.7;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
10.8;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
10.9;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
11;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
11.1;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
11.2;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
11.3;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
11.4;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
11.5;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
11.6;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
11.7;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
11.8;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
11.9;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
12;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
12.1;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
12.2;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
12.3;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
12.4;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
12.5;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
12.6;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
12.7;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
12.8;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
12.9;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
13;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
13.1;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
13.2;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
13.3;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
13.4;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
13.5;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
13.6;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
13.7;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
13.8;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
13.9;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
14;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 7 13 15112 1.9141 1500 1500 0 0 0 0 0 0 0
3 7.1 13 15112 1.9141 1500 1500 0 0 0 0 0 0 0
4 7.2 13 15112 1.9141 1500 1500 0 0 0 0 0 0 0
5 7.3 13 15112 1.9141 1500 1500 0 0 0 0 0 0 0
6 7.4 13 15112 1.9141 1500 1500 0 0 0 0 0 0 0
7 7.5 13 15112 1.9141 1500 1500 0 0 0 0 0 0 0
8 7.6 13 15112 1.9141 1444 1500 0 0 0 0 0 0 0
9 7.7 13 15112 1.9141 1391 1500 0 0 0 0 0 0 0
10 7.8 13 15112 1.9141 1340 1500 0 0 0 0 0 0 0
11 7.9 13 15112 1.9141 1290 1500 0 0 0 0 0 0 0
12 8 13 15112 1.9141 1243 1500 0 0 0 0 0 0 0
13 8.1 13 15112 1.9141 878 1500 0 0 0 0 0 0 0
14 8.2 13 15112 1.9141 620 1500 0 0 0 0 0 0 0
15 8.3 13 15112 1.9141 438 1500 0 0 0 0 0 0 0
16 8.4 13 15112 1.9141 309 1500 0 0 0 0 0 0 0
17 8.5 13 15112 1.9141 219 1500 0 0 0 0 0 0 0
18 8.6 13 15112 1.9141 173 1500 0 0 0 0 0 0 0
19 8.7 13 15112 1.9141 137 1500 0 0 0 0 0 0 0
20 8.8 13 15112 1.9141 109 1500 0 0 0 0 0 0 0
21 8.9 13 15112 1.9141 86 1500 0 0 0 0 0 0 0
22 9 13 15112 1.9141 68 1500 0 0 0 0 0 0 0
23 9.1 13 15112 1.9141 47 1500 0 0 0 0 0 0 0
24 9.2 13 15112 1.9141 33 1500 0 0 0 0 0 0 0
25 9.3 13 15112 1.9141 23 1500 0 0 0 0 0 0 0
26 9.4 13 15112 1.9141 16 1500 0 0 0 0 0 0 0
27 9.5 13 15112 1.9141 11 1500 0 0 0 0 0 0 0
28 9.6 13 15112 1.9141 5 1500 0 0 0 0 0 0 0
29 9.7 13 15112 1.9141 2 1500 0 0 0 0 0 0 0
30 9.8 13 15112 1.9141 1 1500 0 0 0 0 0 0 0
31 9.9 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
32 10 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
33 10.1 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
34 10.2 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
35 10.3 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
36 10.4 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
37 10.5 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
38 10.6 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
39 10.7 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
40 10.8 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
41 10.9 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
42 11 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
43 11.1 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
44 11.2 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
45 11.3 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
46 11.4 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
47 11.5 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
48 11.6 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
49 11.7 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
50 11.8 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
51 11.9 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
52 12 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
53 12.1 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
54 12.2 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
55 12.3 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
56 12.4 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
57 12.5 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
58 12.6 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
59 12.7 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
60 12.8 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
61 12.9 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
62 13 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
63 13.1 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
64 13.2 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
65 13.3 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
66 13.4 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
67 13.5 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
68 13.6 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
69 13.7 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
70 13.8 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
71 13.9 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
72 14 13 15112 1.9141 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,72 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
7;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
7.1;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
7.2;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
7.3;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
7.4;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
7.5;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
7.6;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
7.7;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
7.8;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
7.9;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
8;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
8.1;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
8.2;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
8.3;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
8.4;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
8.5;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
8.6;14;17424;2.1602;1497;1500;0;0;0;0;0;0;0
8.7;14;17424;2.1602;1493;1500;0;0;0;0;0;0;0
8.8;14;17424;2.1602;1490;1500;0;0;0;0;0;0;0
8.9;14;17424;2.1602;1487;1500;0;0;0;0;0;0;0
9;14;17424;2.1602;1484;1500;0;0;0;0;0;0;0
9.1;14;17424;2.1602;1291;1500;0;0;0;0;0;0;0
9.2;14;17424;2.1602;1123;1500;0;0;0;0;0;0;0
9.3;14;17424;2.1602;977;1500;0;0;0;0;0;0;0
9.4;14;17424;2.1602;850;1500;0;0;0;0;0;0;0
9.5;14;17424;2.1602;739;1500;0;0;0;0;0;0;0
9.6;14;17424;2.1602;508;1500;0;0;0;0;0;0;0
9.7;14;17424;2.1602;349;1500;0;0;0;0;0;0;0
9.8;14;17424;2.1602;239;1500;0;0;0;0;0;0;0
9.9;14;17424;2.1602;164;1500;0;0;0;0;0;0;0
10;14;17424;2.1602;113;1500;0;0;0;0;0;0;0
10.1;14;17424;2.1602;85;1500;0;0;0;0;0;0;0
10.2;14;17424;2.1602;63;1500;0;0;0;0;0;0;0
10.3;14;17424;2.1602;47;1500;0;0;0;0;0;0;0
10.4;14;17424;2.1602;35;1500;0;0;0;0;0;0;0
10.5;14;17424;2.1602;27;1500;0;0;0;0;0;0;0
10.6;14;17424;2.1602;12;1500;0;0;0;0;0;0;0
10.7;14;17424;2.1602;6;1500;0;0;0;0;0;0;0
10.8;14;17424;2.1602;3;1500;0;0;0;0;0;0;0
10.9;14;17424;2.1602;1;1500;0;0;0;0;0;0;0
11;14;17424;2.1602;1;1500;0;0;0;0;0;0;0
11.1;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
11.2;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
11.3;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
11.4;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
11.5;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
11.6;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
11.7;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
11.8;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
11.9;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
12;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
12.1;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
12.2;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
12.3;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
12.4;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
12.5;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
12.6;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
12.7;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
12.8;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
12.9;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
13;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
13.1;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
13.2;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
13.3;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
13.4;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
13.5;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
13.6;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
13.7;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
13.8;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
13.9;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
14;14;17424;2.1602;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 7 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
3 7.1 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
4 7.2 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
5 7.3 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
6 7.4 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
7 7.5 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
8 7.6 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
9 7.7 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
10 7.8 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
11 7.9 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
12 8 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
13 8.1 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
14 8.2 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
15 8.3 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
16 8.4 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
17 8.5 14 17424 2.1602 1500 1500 0 0 0 0 0 0 0
18 8.6 14 17424 2.1602 1497 1500 0 0 0 0 0 0 0
19 8.7 14 17424 2.1602 1493 1500 0 0 0 0 0 0 0
20 8.8 14 17424 2.1602 1490 1500 0 0 0 0 0 0 0
21 8.9 14 17424 2.1602 1487 1500 0 0 0 0 0 0 0
22 9 14 17424 2.1602 1484 1500 0 0 0 0 0 0 0
23 9.1 14 17424 2.1602 1291 1500 0 0 0 0 0 0 0
24 9.2 14 17424 2.1602 1123 1500 0 0 0 0 0 0 0
25 9.3 14 17424 2.1602 977 1500 0 0 0 0 0 0 0
26 9.4 14 17424 2.1602 850 1500 0 0 0 0 0 0 0
27 9.5 14 17424 2.1602 739 1500 0 0 0 0 0 0 0
28 9.6 14 17424 2.1602 508 1500 0 0 0 0 0 0 0
29 9.7 14 17424 2.1602 349 1500 0 0 0 0 0 0 0
30 9.8 14 17424 2.1602 239 1500 0 0 0 0 0 0 0
31 9.9 14 17424 2.1602 164 1500 0 0 0 0 0 0 0
32 10 14 17424 2.1602 113 1500 0 0 0 0 0 0 0
33 10.1 14 17424 2.1602 85 1500 0 0 0 0 0 0 0
34 10.2 14 17424 2.1602 63 1500 0 0 0 0 0 0 0
35 10.3 14 17424 2.1602 47 1500 0 0 0 0 0 0 0
36 10.4 14 17424 2.1602 35 1500 0 0 0 0 0 0 0
37 10.5 14 17424 2.1602 27 1500 0 0 0 0 0 0 0
38 10.6 14 17424 2.1602 12 1500 0 0 0 0 0 0 0
39 10.7 14 17424 2.1602 6 1500 0 0 0 0 0 0 0
40 10.8 14 17424 2.1602 3 1500 0 0 0 0 0 0 0
41 10.9 14 17424 2.1602 1 1500 0 0 0 0 0 0 0
42 11 14 17424 2.1602 1 1500 0 0 0 0 0 0 0
43 11.1 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
44 11.2 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
45 11.3 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
46 11.4 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
47 11.5 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
48 11.6 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
49 11.7 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
50 11.8 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
51 11.9 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
52 12 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
53 12.1 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
54 12.2 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
55 12.3 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
56 12.4 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
57 12.5 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
58 12.6 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
59 12.7 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
60 12.8 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
61 12.9 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
62 13 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
63 13.1 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
64 13.2 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
65 13.3 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
66 13.4 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
67 13.5 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
68 13.6 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
69 13.7 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
70 13.8 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
71 13.9 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
72 14 14 17424 2.1602 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,72 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
7;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
7.1;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
7.2;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
7.3;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
7.4;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
7.5;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
7.6;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
7.7;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
7.8;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
7.9;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
8;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
8.1;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
8.2;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
8.3;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
8.4;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
8.5;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
8.6;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
8.7;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
8.8;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
8.9;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
9;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
9.1;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
9.2;15;18960;2.4063;1499;1500;0;0;0;0;0;0;0
9.3;15;18960;2.4063;1499;1500;0;0;0;0;0;0;0
9.4;15;18960;2.4063;1499;1500;0;0;0;0;0;0;0
9.5;15;18960;2.4063;1498;1500;0;0;0;0;0;0;0
9.6;15;18960;2.4063;1377;1500;0;0;0;0;0;0;0
9.7;15;18960;2.4063;1265;1500;0;0;0;0;0;0;0
9.8;15;18960;2.4063;1163;1500;0;0;0;0;0;0;0
9.9;15;18960;2.4063;1069;1500;0;0;0;0;0;0;0
10;15;18960;2.4063;982;1500;0;0;0;0;0;0;0
10.1;15;18960;2.4063;664;1500;0;0;0;0;0;0;0
10.2;15;18960;2.4063;450;1500;0;0;0;0;0;0;0
10.3;15;18960;2.4063;304;1500;0;0;0;0;0;0;0
10.4;15;18960;2.4063;206;1500;0;0;0;0;0;0;0
10.5;15;18960;2.4063;139;1500;0;0;0;0;0;0;0
10.6;15;18960;2.4063;113;1500;0;0;0;0;0;0;0
10.7;15;18960;2.4063;92;1500;0;0;0;0;0;0;0
10.8;15;18960;2.4063;75;1500;0;0;0;0;0;0;0
10.9;15;18960;2.4063;61;1500;0;0;0;0;0;0;0
11;15;18960;2.4063;50;1500;0;0;0;0;0;0;0
11.1;15;18960;2.4063;29;1500;0;0;0;0;0;0;0
11.2;15;18960;2.4063;17;1500;0;0;0;0;0;0;0
11.3;15;18960;2.4063;10;1500;0;0;0;0;0;0;0
11.4;15;18960;2.4063;6;1500;0;0;0;0;0;0;0
11.5;15;18960;2.4063;3;1500;0;0;0;0;0;0;0
11.6;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
11.7;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
11.8;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
11.9;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
12;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
12.1;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
12.2;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
12.3;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
12.4;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
12.5;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
12.6;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
12.7;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
12.8;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
12.9;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
13;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
13.1;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
13.2;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
13.3;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
13.4;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
13.5;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
13.6;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
13.7;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
13.8;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
13.9;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
14;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 7 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
3 7.1 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
4 7.2 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
5 7.3 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
6 7.4 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
7 7.5 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
8 7.6 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
9 7.7 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
10 7.8 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
11 7.9 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
12 8 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
13 8.1 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
14 8.2 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
15 8.3 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
16 8.4 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
17 8.5 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
18 8.6 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
19 8.7 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
20 8.8 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
21 8.9 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
22 9 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
23 9.1 15 18960 2.4063 1500 1500 0 0 0 0 0 0 0
24 9.2 15 18960 2.4063 1499 1500 0 0 0 0 0 0 0
25 9.3 15 18960 2.4063 1499 1500 0 0 0 0 0 0 0
26 9.4 15 18960 2.4063 1499 1500 0 0 0 0 0 0 0
27 9.5 15 18960 2.4063 1498 1500 0 0 0 0 0 0 0
28 9.6 15 18960 2.4063 1377 1500 0 0 0 0 0 0 0
29 9.7 15 18960 2.4063 1265 1500 0 0 0 0 0 0 0
30 9.8 15 18960 2.4063 1163 1500 0 0 0 0 0 0 0
31 9.9 15 18960 2.4063 1069 1500 0 0 0 0 0 0 0
32 10 15 18960 2.4063 982 1500 0 0 0 0 0 0 0
33 10.1 15 18960 2.4063 664 1500 0 0 0 0 0 0 0
34 10.2 15 18960 2.4063 450 1500 0 0 0 0 0 0 0
35 10.3 15 18960 2.4063 304 1500 0 0 0 0 0 0 0
36 10.4 15 18960 2.4063 206 1500 0 0 0 0 0 0 0
37 10.5 15 18960 2.4063 139 1500 0 0 0 0 0 0 0
38 10.6 15 18960 2.4063 113 1500 0 0 0 0 0 0 0
39 10.7 15 18960 2.4063 92 1500 0 0 0 0 0 0 0
40 10.8 15 18960 2.4063 75 1500 0 0 0 0 0 0 0
41 10.9 15 18960 2.4063 61 1500 0 0 0 0 0 0 0
42 11 15 18960 2.4063 50 1500 0 0 0 0 0 0 0
43 11.1 15 18960 2.4063 29 1500 0 0 0 0 0 0 0
44 11.2 15 18960 2.4063 17 1500 0 0 0 0 0 0 0
45 11.3 15 18960 2.4063 10 1500 0 0 0 0 0 0 0
46 11.4 15 18960 2.4063 6 1500 0 0 0 0 0 0 0
47 11.5 15 18960 2.4063 3 1500 0 0 0 0 0 0 0
48 11.6 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
49 11.7 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
50 11.8 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
51 11.9 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
52 12 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
53 12.1 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
54 12.2 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
55 12.3 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
56 12.4 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
57 12.5 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
58 12.6 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
59 12.7 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
60 12.8 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
61 12.9 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
62 13 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
63 13.1 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
64 13.2 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
65 13.3 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
66 13.4 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
67 13.5 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
68 13.6 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
69 13.7 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
70 13.8 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
71 13.9 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
72 14 15 18960 2.4063 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,72 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
7;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
7.1;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
7.2;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
7.3;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
7.4;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
7.5;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
7.6;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
7.7;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
7.8;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
7.9;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
8;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
8.1;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
8.2;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
8.3;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
8.4;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
8.5;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
8.6;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
8.7;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
8.8;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
8.9;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
9;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
9.1;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
9.2;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
9.3;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
9.4;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
9.5;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
9.6;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
9.7;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
9.8;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
9.9;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
10;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
10.1;16;20496;2.5703;1424;1500;0;0;0;0;0;0;0
10.2;16;20496;2.5703;1352;1500;0;0;0;0;0;0;0
10.3;16;20496;2.5703;1283;1500;0;0;0;0;0;0;0
10.4;16;20496;2.5703;1218;1500;0;0;0;0;0;0;0
10.5;16;20496;2.5703;1157;1500;0;0;0;0;0;0;0
10.6;16;20496;2.5703;775;1500;0;0;0;0;0;0;0
10.7;16;20496;2.5703;519;1500;0;0;0;0;0;0;0
10.8;16;20496;2.5703;348;1500;0;0;0;0;0;0;0
10.9;16;20496;2.5703;233;1500;0;0;0;0;0;0;0
11;16;20496;2.5703;156;1500;0;0;0;0;0;0;0
11.1;16;20496;2.5703;132;1500;0;0;0;0;0;0;0
11.2;16;20496;2.5703;111;1500;0;0;0;0;0;0;0
11.3;16;20496;2.5703;94;1500;0;0;0;0;0;0;0
11.4;16;20496;2.5703;79;1500;0;0;0;0;0;0;0
11.5;16;20496;2.5703;67;1500;0;0;0;0;0;0;0
11.6;16;20496;2.5703;44;1500;0;0;0;0;0;0;0
11.7;16;20496;2.5703;29;1500;0;0;0;0;0;0;0
11.8;16;20496;2.5703;19;1500;0;0;0;0;0;0;0
11.9;16;20496;2.5703;12;1500;0;0;0;0;0;0;0
12;16;20496;2.5703;8;1500;0;0;0;0;0;0;0
12.1;16;20496;2.5703;4;1500;0;0;0;0;0;0;0
12.2;16;20496;2.5703;2;1500;0;0;0;0;0;0;0
12.3;16;20496;2.5703;1;1500;0;0;0;0;0;0;0
12.4;16;20496;2.5703;1;1500;0;0;0;0;0;0;0
12.5;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
12.6;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
12.7;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
12.8;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
12.9;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
13;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
13.1;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
13.2;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
13.3;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
13.4;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
13.5;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
13.6;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
13.7;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
13.8;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
13.9;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
14;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 7 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
3 7.1 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
4 7.2 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
5 7.3 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
6 7.4 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
7 7.5 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
8 7.6 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
9 7.7 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
10 7.8 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
11 7.9 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
12 8 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
13 8.1 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
14 8.2 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
15 8.3 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
16 8.4 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
17 8.5 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
18 8.6 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
19 8.7 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
20 8.8 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
21 8.9 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
22 9 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
23 9.1 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
24 9.2 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
25 9.3 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
26 9.4 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
27 9.5 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
28 9.6 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
29 9.7 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
30 9.8 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
31 9.9 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
32 10 16 20496 2.5703 1500 1500 0 0 0 0 0 0 0
33 10.1 16 20496 2.5703 1424 1500 0 0 0 0 0 0 0
34 10.2 16 20496 2.5703 1352 1500 0 0 0 0 0 0 0
35 10.3 16 20496 2.5703 1283 1500 0 0 0 0 0 0 0
36 10.4 16 20496 2.5703 1218 1500 0 0 0 0 0 0 0
37 10.5 16 20496 2.5703 1157 1500 0 0 0 0 0 0 0
38 10.6 16 20496 2.5703 775 1500 0 0 0 0 0 0 0
39 10.7 16 20496 2.5703 519 1500 0 0 0 0 0 0 0
40 10.8 16 20496 2.5703 348 1500 0 0 0 0 0 0 0
41 10.9 16 20496 2.5703 233 1500 0 0 0 0 0 0 0
42 11 16 20496 2.5703 156 1500 0 0 0 0 0 0 0
43 11.1 16 20496 2.5703 132 1500 0 0 0 0 0 0 0
44 11.2 16 20496 2.5703 111 1500 0 0 0 0 0 0 0
45 11.3 16 20496 2.5703 94 1500 0 0 0 0 0 0 0
46 11.4 16 20496 2.5703 79 1500 0 0 0 0 0 0 0
47 11.5 16 20496 2.5703 67 1500 0 0 0 0 0 0 0
48 11.6 16 20496 2.5703 44 1500 0 0 0 0 0 0 0
49 11.7 16 20496 2.5703 29 1500 0 0 0 0 0 0 0
50 11.8 16 20496 2.5703 19 1500 0 0 0 0 0 0 0
51 11.9 16 20496 2.5703 12 1500 0 0 0 0 0 0 0
52 12 16 20496 2.5703 8 1500 0 0 0 0 0 0 0
53 12.1 16 20496 2.5703 4 1500 0 0 0 0 0 0 0
54 12.2 16 20496 2.5703 2 1500 0 0 0 0 0 0 0
55 12.3 16 20496 2.5703 1 1500 0 0 0 0 0 0 0
56 12.4 16 20496 2.5703 1 1500 0 0 0 0 0 0 0
57 12.5 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
58 12.6 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
59 12.7 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
60 12.8 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
61 12.9 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
62 13 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
63 13.1 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
64 13.2 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
65 13.3 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
66 13.4 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
67 13.5 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
68 13.6 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
69 13.7 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
70 13.8 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
71 13.9 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
72 14 16 20496 2.5703 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,72 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
10;17;20496;2.5664;1500;1500;0;0;0;0;0;0;0
10.1;17;20496;2.5664;1500;1500;0;0;0;0;0;0;0
10.2;17;20496;2.5664;1500;1500;0;0;0;0;0;0;0
10.3;17;20496;2.5664;1500;1500;0;0;0;0;0;0;0
10.4;17;20496;2.5664;1500;1500;0;0;0;0;0;0;0
10.5;17;20496;2.5664;1500;1500;0;0;0;0;0;0;0
10.6;17;20496;2.5664;1498;1500;0;0;0;0;0;0;0
10.7;17;20496;2.5664;1496;1500;0;0;0;0;0;0;0
10.8;17;20496;2.5664;1494;1500;0;0;0;0;0;0;0
10.9;17;20496;2.5664;1493;1500;0;0;0;0;0;0;0
11;17;20496;2.5664;1491;1500;0;0;0;0;0;0;0
11.1;17;20496;2.5664;1336;1500;0;0;0;0;0;0;0
11.2;17;20496;2.5664;1197;1500;0;0;0;0;0;0;0
11.3;17;20496;2.5664;1072;1500;0;0;0;0;0;0;0
11.4;17;20496;2.5664;961;1500;0;0;0;0;0;0;0
11.5;17;20496;2.5664;861;1500;0;0;0;0;0;0;0
11.6;17;20496;2.5664;603;1500;0;0;0;0;0;0;0
11.7;17;20496;2.5664;423;1500;0;0;0;0;0;0;0
11.8;17;20496;2.5664;296;1500;0;0;0;0;0;0;0
11.9;17;20496;2.5664;208;1500;0;0;0;0;0;0;0
12;17;20496;2.5664;146;1500;0;0;0;0;0;0;0
12.1;17;20496;2.5664;125;1500;0;0;0;0;0;0;0
12.2;17;20496;2.5664;107;1500;0;0;0;0;0;0;0
12.3;17;20496;2.5664;92;1500;0;0;0;0;0;0;0
12.4;17;20496;2.5664;79;1500;0;0;0;0;0;0;0
12.5;17;20496;2.5664;68;1500;0;0;0;0;0;0;0
12.6;17;20496;2.5664;50;1500;0;0;0;0;0;0;0
12.7;17;20496;2.5664;37;1500;0;0;0;0;0;0;0
12.8;17;20496;2.5664;28;1500;0;0;0;0;0;0;0
12.9;17;20496;2.5664;20;1500;0;0;0;0;0;0;0
13;17;20496;2.5664;15;1500;0;0;0;0;0;0;0
13.1;17;20496;2.5664;9;1500;0;0;0;0;0;0;0
13.2;17;20496;2.5664;5;1500;0;0;0;0;0;0;0
13.3;17;20496;2.5664;3;1500;0;0;0;0;0;0;0
13.4;17;20496;2.5664;2;1500;0;0;0;0;0;0;0
13.5;17;20496;2.5664;1;1500;0;0;0;0;0;0;0
13.6;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
13.7;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
13.8;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
13.9;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
14;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
14.1;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
14.2;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
14.3;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
14.4;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
14.5;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
14.6;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
14.7;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
14.8;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
14.9;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
15;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
15.1;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
15.2;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
15.3;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
15.4;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
15.5;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
15.6;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
15.7;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
15.8;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
15.9;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
16;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
16.1;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
16.2;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
16.3;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
16.4;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
16.5;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
16.6;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
16.7;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
16.8;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
16.9;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
17;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 10 17 20496 2.5664 1500 1500 0 0 0 0 0 0 0
3 10.1 17 20496 2.5664 1500 1500 0 0 0 0 0 0 0
4 10.2 17 20496 2.5664 1500 1500 0 0 0 0 0 0 0
5 10.3 17 20496 2.5664 1500 1500 0 0 0 0 0 0 0
6 10.4 17 20496 2.5664 1500 1500 0 0 0 0 0 0 0
7 10.5 17 20496 2.5664 1500 1500 0 0 0 0 0 0 0
8 10.6 17 20496 2.5664 1498 1500 0 0 0 0 0 0 0
9 10.7 17 20496 2.5664 1496 1500 0 0 0 0 0 0 0
10 10.8 17 20496 2.5664 1494 1500 0 0 0 0 0 0 0
11 10.9 17 20496 2.5664 1493 1500 0 0 0 0 0 0 0
12 11 17 20496 2.5664 1491 1500 0 0 0 0 0 0 0
13 11.1 17 20496 2.5664 1336 1500 0 0 0 0 0 0 0
14 11.2 17 20496 2.5664 1197 1500 0 0 0 0 0 0 0
15 11.3 17 20496 2.5664 1072 1500 0 0 0 0 0 0 0
16 11.4 17 20496 2.5664 961 1500 0 0 0 0 0 0 0
17 11.5 17 20496 2.5664 861 1500 0 0 0 0 0 0 0
18 11.6 17 20496 2.5664 603 1500 0 0 0 0 0 0 0
19 11.7 17 20496 2.5664 423 1500 0 0 0 0 0 0 0
20 11.8 17 20496 2.5664 296 1500 0 0 0 0 0 0 0
21 11.9 17 20496 2.5664 208 1500 0 0 0 0 0 0 0
22 12 17 20496 2.5664 146 1500 0 0 0 0 0 0 0
23 12.1 17 20496 2.5664 125 1500 0 0 0 0 0 0 0
24 12.2 17 20496 2.5664 107 1500 0 0 0 0 0 0 0
25 12.3 17 20496 2.5664 92 1500 0 0 0 0 0 0 0
26 12.4 17 20496 2.5664 79 1500 0 0 0 0 0 0 0
27 12.5 17 20496 2.5664 68 1500 0 0 0 0 0 0 0
28 12.6 17 20496 2.5664 50 1500 0 0 0 0 0 0 0
29 12.7 17 20496 2.5664 37 1500 0 0 0 0 0 0 0
30 12.8 17 20496 2.5664 28 1500 0 0 0 0 0 0 0
31 12.9 17 20496 2.5664 20 1500 0 0 0 0 0 0 0
32 13 17 20496 2.5664 15 1500 0 0 0 0 0 0 0
33 13.1 17 20496 2.5664 9 1500 0 0 0 0 0 0 0
34 13.2 17 20496 2.5664 5 1500 0 0 0 0 0 0 0
35 13.3 17 20496 2.5664 3 1500 0 0 0 0 0 0 0
36 13.4 17 20496 2.5664 2 1500 0 0 0 0 0 0 0
37 13.5 17 20496 2.5664 1 1500 0 0 0 0 0 0 0
38 13.6 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
39 13.7 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
40 13.8 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
41 13.9 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
42 14 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
43 14.1 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
44 14.2 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
45 14.3 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
46 14.4 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
47 14.5 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
48 14.6 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
49 14.7 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
50 14.8 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
51 14.9 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
52 15 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
53 15.1 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
54 15.2 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
55 15.3 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
56 15.4 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
57 15.5 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
58 15.6 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
59 15.7 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
60 15.8 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
61 15.9 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
62 16 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
63 16.1 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
64 16.2 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
65 16.3 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
66 16.4 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
67 16.5 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
68 16.6 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
69 16.7 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
70 16.8 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
71 16.9 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
72 17 17 20496 2.5664 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,72 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
10;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
10.1;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
10.2;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
10.3;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
10.4;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
10.5;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
10.6;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
10.7;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
10.8;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
10.9;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
11;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
11.1;18;21504;2.7305;1499;1500;0;0;0;0;0;0;0
11.2;18;21504;2.7305;1499;1500;0;0;0;0;0;0;0
11.3;18;21504;2.7305;1498;1500;0;0;0;0;0;0;0
11.4;18;21504;2.7305;1498;1500;0;0;0;0;0;0;0
11.5;18;21504;2.7305;1497;1500;0;0;0;0;0;0;0
11.6;18;21504;2.7305;1399;1500;0;0;0;0;0;0;0
11.7;18;21504;2.7305;1307;1500;0;0;0;0;0;0;0
11.8;18;21504;2.7305;1221;1500;0;0;0;0;0;0;0
11.9;18;21504;2.7305;1141;1500;0;0;0;0;0;0;0
12;18;21504;2.7305;1066;1500;0;0;0;0;0;0;0
12.1;18;21504;2.7305;788;1500;0;0;0;0;0;0;0
12.2;18;21504;2.7305;582;1500;0;0;0;0;0;0;0
12.3;18;21504;2.7305;431;1500;0;0;0;0;0;0;0
12.4;18;21504;2.7305;318;1500;0;0;0;0;0;0;0
12.5;18;21504;2.7305;235;1500;0;0;0;0;0;0;0
12.6;18;21504;2.7305;185;1500;0;0;0;0;0;0;0
12.7;18;21504;2.7305;146;1500;0;0;0;0;0;0;0
12.8;18;21504;2.7305;115;1500;0;0;0;0;0;0;0
12.9;18;21504;2.7305;90;1500;0;0;0;0;0;0;0
13;18;21504;2.7305;71;1500;0;0;0;0;0;0;0
13.1;18;21504;2.7305;50;1500;0;0;0;0;0;0;0
13.2;18;21504;2.7305;35;1500;0;0;0;0;0;0;0
13.3;18;21504;2.7305;25;1500;0;0;0;0;0;0;0
13.4;18;21504;2.7305;18;1500;0;0;0;0;0;0;0
13.5;18;21504;2.7305;12;1500;0;0;0;0;0;0;0
13.6;18;21504;2.7305;7;1500;0;0;0;0;0;0;0
13.7;18;21504;2.7305;3;1500;0;0;0;0;0;0;0
13.8;18;21504;2.7305;2;1500;0;0;0;0;0;0;0
13.9;18;21504;2.7305;1;1500;0;0;0;0;0;0;0
14;18;21504;2.7305;1;1500;0;0;0;0;0;0;0
14.1;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
14.2;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
14.3;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
14.4;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
14.5;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
14.6;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
14.7;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
14.8;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
14.9;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
15;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
15.1;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
15.2;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
15.3;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
15.4;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
15.5;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
15.6;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
15.7;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
15.8;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
15.9;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
16;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
16.1;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
16.2;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
16.3;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
16.4;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
16.5;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
16.6;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
16.7;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
16.8;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
16.9;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
17;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 10 18 21504 2.7305 1500 1500 0 0 0 0 0 0 0
3 10.1 18 21504 2.7305 1500 1500 0 0 0 0 0 0 0
4 10.2 18 21504 2.7305 1500 1500 0 0 0 0 0 0 0
5 10.3 18 21504 2.7305 1500 1500 0 0 0 0 0 0 0
6 10.4 18 21504 2.7305 1500 1500 0 0 0 0 0 0 0
7 10.5 18 21504 2.7305 1500 1500 0 0 0 0 0 0 0
8 10.6 18 21504 2.7305 1500 1500 0 0 0 0 0 0 0
9 10.7 18 21504 2.7305 1500 1500 0 0 0 0 0 0 0
10 10.8 18 21504 2.7305 1500 1500 0 0 0 0 0 0 0
11 10.9 18 21504 2.7305 1500 1500 0 0 0 0 0 0 0
12 11 18 21504 2.7305 1500 1500 0 0 0 0 0 0 0
13 11.1 18 21504 2.7305 1499 1500 0 0 0 0 0 0 0
14 11.2 18 21504 2.7305 1499 1500 0 0 0 0 0 0 0
15 11.3 18 21504 2.7305 1498 1500 0 0 0 0 0 0 0
16 11.4 18 21504 2.7305 1498 1500 0 0 0 0 0 0 0
17 11.5 18 21504 2.7305 1497 1500 0 0 0 0 0 0 0
18 11.6 18 21504 2.7305 1399 1500 0 0 0 0 0 0 0
19 11.7 18 21504 2.7305 1307 1500 0 0 0 0 0 0 0
20 11.8 18 21504 2.7305 1221 1500 0 0 0 0 0 0 0
21 11.9 18 21504 2.7305 1141 1500 0 0 0 0 0 0 0
22 12 18 21504 2.7305 1066 1500 0 0 0 0 0 0 0
23 12.1 18 21504 2.7305 788 1500 0 0 0 0 0 0 0
24 12.2 18 21504 2.7305 582 1500 0 0 0 0 0 0 0
25 12.3 18 21504 2.7305 431 1500 0 0 0 0 0 0 0
26 12.4 18 21504 2.7305 318 1500 0 0 0 0 0 0 0
27 12.5 18 21504 2.7305 235 1500 0 0 0 0 0 0 0
28 12.6 18 21504 2.7305 185 1500 0 0 0 0 0 0 0
29 12.7 18 21504 2.7305 146 1500 0 0 0 0 0 0 0
30 12.8 18 21504 2.7305 115 1500 0 0 0 0 0 0 0
31 12.9 18 21504 2.7305 90 1500 0 0 0 0 0 0 0
32 13 18 21504 2.7305 71 1500 0 0 0 0 0 0 0
33 13.1 18 21504 2.7305 50 1500 0 0 0 0 0 0 0
34 13.2 18 21504 2.7305 35 1500 0 0 0 0 0 0 0
35 13.3 18 21504 2.7305 25 1500 0 0 0 0 0 0 0
36 13.4 18 21504 2.7305 18 1500 0 0 0 0 0 0 0
37 13.5 18 21504 2.7305 12 1500 0 0 0 0 0 0 0
38 13.6 18 21504 2.7305 7 1500 0 0 0 0 0 0 0
39 13.7 18 21504 2.7305 3 1500 0 0 0 0 0 0 0
40 13.8 18 21504 2.7305 2 1500 0 0 0 0 0 0 0
41 13.9 18 21504 2.7305 1 1500 0 0 0 0 0 0 0
42 14 18 21504 2.7305 1 1500 0 0 0 0 0 0 0
43 14.1 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
44 14.2 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
45 14.3 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
46 14.4 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
47 14.5 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
48 14.6 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
49 14.7 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
50 14.8 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
51 14.9 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
52 15 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
53 15.1 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
54 15.2 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
55 15.3 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
56 15.4 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
57 15.5 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
58 15.6 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
59 15.7 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
60 15.8 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
61 15.9 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
62 16 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
63 16.1 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
64 16.2 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
65 16.3 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
66 16.4 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
67 16.5 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
68 16.6 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
69 16.7 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
70 16.8 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
71 16.9 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
72 17 18 21504 2.7305 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,72 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
10;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
10.1;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
10.2;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
10.3;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
10.4;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
10.5;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
10.6;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
10.7;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
10.8;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
10.9;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
11;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
11.1;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
11.2;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
11.3;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
11.4;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
11.5;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
11.6;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
11.7;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
11.8;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
11.9;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
12;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
12.1;19;24072;3.0293;1499;1500;0;0;0;0;0;0;0
12.2;19;24072;3.0293;1499;1500;0;0;0;0;0;0;0
12.3;19;24072;3.0293;1498;1500;0;0;0;0;0;0;0
12.4;19;24072;3.0293;1497;1500;0;0;0;0;0;0;0
12.5;19;24072;3.0293;1497;1500;0;0;0;0;0;0;0
12.6;19;24072;3.0293;1389;1500;0;0;0;0;0;0;0
12.7;19;24072;3.0293;1290;1500;0;0;0;0;0;0;0
12.8;19;24072;3.0293;1197;1500;0;0;0;0;0;0;0
12.9;19;24072;3.0293;1111;1500;0;0;0;0;0;0;0
13;19;24072;3.0293;1032;1500;0;0;0;0;0;0;0
13.1;19;24072;3.0293;746;1500;0;0;0;0;0;0;0
13.2;19;24072;3.0293;539;1500;0;0;0;0;0;0;0
13.3;19;24072;3.0293;390;1500;0;0;0;0;0;0;0
13.4;19;24072;3.0293;282;1500;0;0;0;0;0;0;0
13.5;19;24072;3.0293;204;1500;0;0;0;0;0;0;0
13.6;19;24072;3.0293;166;1500;0;0;0;0;0;0;0
13.7;19;24072;3.0293;135;1500;0;0;0;0;0;0;0
13.8;19;24072;3.0293;110;1500;0;0;0;0;0;0;0
13.9;19;24072;3.0293;89;1500;0;0;0;0;0;0;0
14;19;24072;3.0293;73;1500;0;0;0;0;0;0;0
14.1;19;24072;3.0293;54;1500;0;0;0;0;0;0;0
14.2;19;24072;3.0293;41;1500;0;0;0;0;0;0;0
14.3;19;24072;3.0293;30;1500;0;0;0;0;0;0;0
14.4;19;24072;3.0293;23;1500;0;0;0;0;0;0;0
14.5;19;24072;3.0293;17;1500;0;0;0;0;0;0;0
14.6;19;24072;3.0293;9;1500;0;0;0;0;0;0;0
14.7;19;24072;3.0293;5;1500;0;0;0;0;0;0;0
14.8;19;24072;3.0293;3;1500;0;0;0;0;0;0;0
14.9;19;24072;3.0293;2;1500;0;0;0;0;0;0;0
15;19;24072;3.0293;1;1500;0;0;0;0;0;0;0
15.1;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
15.2;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
15.3;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
15.4;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
15.5;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
15.6;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
15.7;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
15.8;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
15.9;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
16;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
16.1;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
16.2;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
16.3;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
16.4;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
16.5;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
16.6;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
16.7;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
16.8;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
16.9;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
17;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 10 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
3 10.1 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
4 10.2 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
5 10.3 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
6 10.4 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
7 10.5 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
8 10.6 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
9 10.7 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
10 10.8 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
11 10.9 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
12 11 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
13 11.1 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
14 11.2 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
15 11.3 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
16 11.4 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
17 11.5 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
18 11.6 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
19 11.7 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
20 11.8 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
21 11.9 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
22 12 19 24072 3.0293 1500 1500 0 0 0 0 0 0 0
23 12.1 19 24072 3.0293 1499 1500 0 0 0 0 0 0 0
24 12.2 19 24072 3.0293 1499 1500 0 0 0 0 0 0 0
25 12.3 19 24072 3.0293 1498 1500 0 0 0 0 0 0 0
26 12.4 19 24072 3.0293 1497 1500 0 0 0 0 0 0 0
27 12.5 19 24072 3.0293 1497 1500 0 0 0 0 0 0 0
28 12.6 19 24072 3.0293 1389 1500 0 0 0 0 0 0 0
29 12.7 19 24072 3.0293 1290 1500 0 0 0 0 0 0 0
30 12.8 19 24072 3.0293 1197 1500 0 0 0 0 0 0 0
31 12.9 19 24072 3.0293 1111 1500 0 0 0 0 0 0 0
32 13 19 24072 3.0293 1032 1500 0 0 0 0 0 0 0
33 13.1 19 24072 3.0293 746 1500 0 0 0 0 0 0 0
34 13.2 19 24072 3.0293 539 1500 0 0 0 0 0 0 0
35 13.3 19 24072 3.0293 390 1500 0 0 0 0 0 0 0
36 13.4 19 24072 3.0293 282 1500 0 0 0 0 0 0 0
37 13.5 19 24072 3.0293 204 1500 0 0 0 0 0 0 0
38 13.6 19 24072 3.0293 166 1500 0 0 0 0 0 0 0
39 13.7 19 24072 3.0293 135 1500 0 0 0 0 0 0 0
40 13.8 19 24072 3.0293 110 1500 0 0 0 0 0 0 0
41 13.9 19 24072 3.0293 89 1500 0 0 0 0 0 0 0
42 14 19 24072 3.0293 73 1500 0 0 0 0 0 0 0
43 14.1 19 24072 3.0293 54 1500 0 0 0 0 0 0 0
44 14.2 19 24072 3.0293 41 1500 0 0 0 0 0 0 0
45 14.3 19 24072 3.0293 30 1500 0 0 0 0 0 0 0
46 14.4 19 24072 3.0293 23 1500 0 0 0 0 0 0 0
47 14.5 19 24072 3.0293 17 1500 0 0 0 0 0 0 0
48 14.6 19 24072 3.0293 9 1500 0 0 0 0 0 0 0
49 14.7 19 24072 3.0293 5 1500 0 0 0 0 0 0 0
50 14.8 19 24072 3.0293 3 1500 0 0 0 0 0 0 0
51 14.9 19 24072 3.0293 2 1500 0 0 0 0 0 0 0
52 15 19 24072 3.0293 1 1500 0 0 0 0 0 0 0
53 15.1 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
54 15.2 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
55 15.3 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
56 15.4 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
57 15.5 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
58 15.6 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
59 15.7 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
60 15.8 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
61 15.9 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
62 16 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
63 16.1 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
64 16.2 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
65 16.3 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
66 16.4 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
67 16.5 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
68 16.6 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
69 16.7 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
70 16.8 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
71 16.9 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
72 17 19 24072 3.0293 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,27 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
-4;1;2472;0.3066;1500;1500;0;0;0;0;0;0;0
-3.9;1;2472;0.3066;1497;1500;0;0;0;0;0;0;0
-3.8;1;2472;0.3066;1494;1500;0;0;0;0;0;0;0
-3.7;1;2472;0.3066;1490;1500;0;0;0;0;0;0;0
-3.6;1;2472;0.3066;1487;1500;0;0;0;0;0;0;0
-3.5;1;2472;0.3066;1484;1500;0;0;0;0;0;0;0
-3.4;1;2472;0.3066;1386;1500;0;0;0;0;0;0;0
-3.3;1;2472;0.3066;1295;1500;0;0;0;0;0;0;0
-3.2;1;2472;0.3066;1209;1500;0;0;0;0;0;0;0
-3.1;1;2472;0.3066;1130;1500;0;0;0;0;0;0;0
-3;1;2472;0.3066;1055;1500;0;0;0;0;0;0;0
-2.9;1;2472;0.3066;863;1500;0;0;0;0;0;0;0
-2.8;1;2472;0.3066;706;1500;0;0;0;0;0;0;0
-2.7;1;2472;0.3066;577;1500;0;0;0;0;0;0;0
-2.6;1;2472;0.3066;472;1500;0;0;0;0;0;0;0
-2.5;1;2472;0.3066;386;1500;0;0;0;0;0;0;0
-2.4;1;2472;0.3066;215;1500;0;0;0;0;0;0;0
-2.3;1;2472;0.3066;120;1500;0;0;0;0;0;0;0
-2.2;1;2472;0.3066;67;1500;0;0;0;0;0;0;0
-2.1;1;2472;0.3066;37;1500;0;0;0;0;0;0;0
-2;1;2472;0.3066;21;1500;0;0;0;0;0;0;0
-1.9;1;2472;0.3066;9;1500;0;0;0;0;0;0;0
-1.8;1;2472;0.3066;4;1500;0;0;0;0;0;0;0
-1.7;1;2472;0.3066;2;1500;0;0;0;0;0;0;0
-1.6;1;2472;0.3066;1;1500;0;0;0;0;0;0;0
-1.5;1;2472;0.3066;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 -4 1 2472 0.3066 1500 1500 0 0 0 0 0 0 0
3 -3.9 1 2472 0.3066 1497 1500 0 0 0 0 0 0 0
4 -3.8 1 2472 0.3066 1494 1500 0 0 0 0 0 0 0
5 -3.7 1 2472 0.3066 1490 1500 0 0 0 0 0 0 0
6 -3.6 1 2472 0.3066 1487 1500 0 0 0 0 0 0 0
7 -3.5 1 2472 0.3066 1484 1500 0 0 0 0 0 0 0
8 -3.4 1 2472 0.3066 1386 1500 0 0 0 0 0 0 0
9 -3.3 1 2472 0.3066 1295 1500 0 0 0 0 0 0 0
10 -3.2 1 2472 0.3066 1209 1500 0 0 0 0 0 0 0
11 -3.1 1 2472 0.3066 1130 1500 0 0 0 0 0 0 0
12 -3 1 2472 0.3066 1055 1500 0 0 0 0 0 0 0
13 -2.9 1 2472 0.3066 863 1500 0 0 0 0 0 0 0
14 -2.8 1 2472 0.3066 706 1500 0 0 0 0 0 0 0
15 -2.7 1 2472 0.3066 577 1500 0 0 0 0 0 0 0
16 -2.6 1 2472 0.3066 472 1500 0 0 0 0 0 0 0
17 -2.5 1 2472 0.3066 386 1500 0 0 0 0 0 0 0
18 -2.4 1 2472 0.3066 215 1500 0 0 0 0 0 0 0
19 -2.3 1 2472 0.3066 120 1500 0 0 0 0 0 0 0
20 -2.2 1 2472 0.3066 67 1500 0 0 0 0 0 0 0
21 -2.1 1 2472 0.3066 37 1500 0 0 0 0 0 0 0
22 -2 1 2472 0.3066 21 1500 0 0 0 0 0 0 0
23 -1.9 1 2472 0.3066 9 1500 0 0 0 0 0 0 0
24 -1.8 1 2472 0.3066 4 1500 0 0 0 0 0 0 0
25 -1.7 1 2472 0.3066 2 1500 0 0 0 0 0 0 0
26 -1.6 1 2472 0.3066 1 1500 0 0 0 0 0 0 0
27 -1.5 1 2472 0.3066 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,72 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
10;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
10.1;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
10.2;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
10.3;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
10.4;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
10.5;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
10.6;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
10.7;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
10.8;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
10.9;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
11;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
11.1;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
11.2;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
11.3;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
11.4;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
11.5;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
11.6;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
11.7;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
11.8;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
11.9;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
12;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
12.1;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
12.2;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
12.3;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
12.4;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
12.5;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
12.6;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
12.7;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
12.8;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
12.9;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
13;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
13.1;20;26632;3.3223;1499;1500;0;0;0;0;0;0;0
13.2;20;26632;3.3223;1499;1500;0;0;0;0;0;0;0
13.3;20;26632;3.3223;1498;1500;0;0;0;0;0;0;0
13.4;20;26632;3.3223;1498;1500;0;0;0;0;0;0;0
13.5;20;26632;3.3223;1497;1500;0;0;0;0;0;0;0
13.6;20;26632;3.3223;1390;1500;0;0;0;0;0;0;0
13.7;20;26632;3.3223;1291;1500;0;0;0;0;0;0;0
13.8;20;26632;3.3223;1199;1500;0;0;0;0;0;0;0
13.9;20;26632;3.3223;1113;1500;0;0;0;0;0;0;0
14;20;26632;3.3223;1034;1500;0;0;0;0;0;0;0
14.1;20;26632;3.3223;745;1500;0;0;0;0;0;0;0
14.2;20;26632;3.3223;537;1500;0;0;0;0;0;0;0
14.3;20;26632;3.3223;387;1500;0;0;0;0;0;0;0
14.4;20;26632;3.3223;279;1500;0;0;0;0;0;0;0
14.5;20;26632;3.3223;201;1500;0;0;0;0;0;0;0
14.6;20;26632;3.3223;161;1500;0;0;0;0;0;0;0
14.7;20;26632;3.3223;129;1500;0;0;0;0;0;0;0
14.8;20;26632;3.3223;104;1500;0;0;0;0;0;0;0
14.9;20;26632;3.3223;83;1500;0;0;0;0;0;0;0
15;20;26632;3.3223;67;1500;0;0;0;0;0;0;0
15.1;20;26632;3.3223;45;1500;0;0;0;0;0;0;0
15.2;20;26632;3.3223;30;1500;0;0;0;0;0;0;0
15.3;20;26632;3.3223;20;1500;0;0;0;0;0;0;0
15.4;20;26632;3.3223;13;1500;0;0;0;0;0;0;0
15.5;20;26632;3.3223;9;1500;0;0;0;0;0;0;0
15.6;20;26632;3.3223;4;1500;0;0;0;0;0;0;0
15.7;20;26632;3.3223;1;1500;0;0;0;0;0;0;0
15.8;20;26632;3.3223;1;1500;0;0;0;0;0;0;0
15.9;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
16;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
16.1;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
16.2;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
16.3;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
16.4;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
16.5;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
16.6;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
16.7;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
16.8;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
16.9;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
17;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 10 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
3 10.1 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
4 10.2 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
5 10.3 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
6 10.4 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
7 10.5 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
8 10.6 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
9 10.7 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
10 10.8 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
11 10.9 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
12 11 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
13 11.1 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
14 11.2 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
15 11.3 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
16 11.4 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
17 11.5 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
18 11.6 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
19 11.7 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
20 11.8 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
21 11.9 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
22 12 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
23 12.1 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
24 12.2 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
25 12.3 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
26 12.4 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
27 12.5 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
28 12.6 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
29 12.7 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
30 12.8 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
31 12.9 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
32 13 20 26632 3.3223 1500 1500 0 0 0 0 0 0 0
33 13.1 20 26632 3.3223 1499 1500 0 0 0 0 0 0 0
34 13.2 20 26632 3.3223 1499 1500 0 0 0 0 0 0 0
35 13.3 20 26632 3.3223 1498 1500 0 0 0 0 0 0 0
36 13.4 20 26632 3.3223 1498 1500 0 0 0 0 0 0 0
37 13.5 20 26632 3.3223 1497 1500 0 0 0 0 0 0 0
38 13.6 20 26632 3.3223 1390 1500 0 0 0 0 0 0 0
39 13.7 20 26632 3.3223 1291 1500 0 0 0 0 0 0 0
40 13.8 20 26632 3.3223 1199 1500 0 0 0 0 0 0 0
41 13.9 20 26632 3.3223 1113 1500 0 0 0 0 0 0 0
42 14 20 26632 3.3223 1034 1500 0 0 0 0 0 0 0
43 14.1 20 26632 3.3223 745 1500 0 0 0 0 0 0 0
44 14.2 20 26632 3.3223 537 1500 0 0 0 0 0 0 0
45 14.3 20 26632 3.3223 387 1500 0 0 0 0 0 0 0
46 14.4 20 26632 3.3223 279 1500 0 0 0 0 0 0 0
47 14.5 20 26632 3.3223 201 1500 0 0 0 0 0 0 0
48 14.6 20 26632 3.3223 161 1500 0 0 0 0 0 0 0
49 14.7 20 26632 3.3223 129 1500 0 0 0 0 0 0 0
50 14.8 20 26632 3.3223 104 1500 0 0 0 0 0 0 0
51 14.9 20 26632 3.3223 83 1500 0 0 0 0 0 0 0
52 15 20 26632 3.3223 67 1500 0 0 0 0 0 0 0
53 15.1 20 26632 3.3223 45 1500 0 0 0 0 0 0 0
54 15.2 20 26632 3.3223 30 1500 0 0 0 0 0 0 0
55 15.3 20 26632 3.3223 20 1500 0 0 0 0 0 0 0
56 15.4 20 26632 3.3223 13 1500 0 0 0 0 0 0 0
57 15.5 20 26632 3.3223 9 1500 0 0 0 0 0 0 0
58 15.6 20 26632 3.3223 4 1500 0 0 0 0 0 0 0
59 15.7 20 26632 3.3223 1 1500 0 0 0 0 0 0 0
60 15.8 20 26632 3.3223 1 1500 0 0 0 0 0 0 0
61 15.9 20 26632 3.3223 0 1500 0 0 0 0 0 0 0
62 16 20 26632 3.3223 0 1500 0 0 0 0 0 0 0
63 16.1 20 26632 3.3223 0 1500 0 0 0 0 0 0 0
64 16.2 20 26632 3.3223 0 1500 0 0 0 0 0 0 0
65 16.3 20 26632 3.3223 0 1500 0 0 0 0 0 0 0
66 16.4 20 26632 3.3223 0 1500 0 0 0 0 0 0 0
67 16.5 20 26632 3.3223 0 1500 0 0 0 0 0 0 0
68 16.6 20 26632 3.3223 0 1500 0 0 0 0 0 0 0
69 16.7 20 26632 3.3223 0 1500 0 0 0 0 0 0 0
70 16.8 20 26632 3.3223 0 1500 0 0 0 0 0 0 0
71 16.9 20 26632 3.3223 0 1500 0 0 0 0 0 0 0
72 17 20 26632 3.3223 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,72 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
10;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
10.1;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
10.2;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
10.3;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
10.4;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
10.5;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
10.6;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
10.7;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
10.8;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
10.9;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
11;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
11.1;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
11.2;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
11.3;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
11.4;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
11.5;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
11.6;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
11.7;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
11.8;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
11.9;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
12;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
12.1;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
12.2;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
12.3;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
12.4;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
12.5;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
12.6;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
12.7;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
12.8;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
12.9;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
13;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
13.1;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
13.2;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
13.3;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
13.4;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
13.5;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
13.6;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
13.7;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
13.8;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
13.9;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
14;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
14.1;21;28680;3.6094;1472;1500;0;0;0;0;0;0;0
14.2;21;28680;3.6094;1444;1500;0;0;0;0;0;0;0
14.3;21;28680;3.6094;1417;1500;0;0;0;0;0;0;0
14.4;21;28680;3.6094;1390;1500;0;0;0;0;0;0;0
14.5;21;28680;3.6094;1364;1500;0;0;0;0;0;0;0
14.6;21;28680;3.6094;1040;1500;0;0;0;0;0;0;0
14.7;21;28680;3.6094;793;1500;0;0;0;0;0;0;0
14.8;21;28680;3.6094;605;1500;0;0;0;0;0;0;0
14.9;21;28680;3.6094;461;1500;0;0;0;0;0;0;0
15;21;28680;3.6094;351;1500;0;0;0;0;0;0;0
15.1;21;28680;3.6094;265;1500;0;0;0;0;0;0;0
15.2;21;28680;3.6094;199;1500;0;0;0;0;0;0;0
15.3;21;28680;3.6094;150;1500;0;0;0;0;0;0;0
15.4;21;28680;3.6094;113;1500;0;0;0;0;0;0;0
15.5;21;28680;3.6094;85;1500;0;0;0;0;0;0;0
15.6;21;28680;3.6094;79;1500;0;0;0;0;0;0;0
15.7;21;28680;3.6094;73;1500;0;0;0;0;0;0;0
15.8;21;28680;3.6094;67;1500;0;0;0;0;0;0;0
15.9;21;28680;3.6094;62;1500;0;0;0;0;0;0;0
16;21;28680;3.6094;57;1500;0;0;0;0;0;0;0
16.1;21;28680;3.6094;37;1500;0;0;0;0;0;0;0
16.2;21;28680;3.6094;23;1500;0;0;0;0;0;0;0
16.3;21;28680;3.6094;15;1500;0;0;0;0;0;0;0
16.4;21;28680;3.6094;10;1500;0;0;0;0;0;0;0
16.5;21;28680;3.6094;6;1500;0;0;0;0;0;0;0
16.6;21;28680;3.6094;3;1500;0;0;0;0;0;0;0
16.7;21;28680;3.6094;1;1500;0;0;0;0;0;0;0
16.8;21;28680;3.6094;1;1500;0;0;0;0;0;0;0
16.9;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
17;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 10 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
3 10.1 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
4 10.2 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
5 10.3 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
6 10.4 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
7 10.5 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
8 10.6 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
9 10.7 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
10 10.8 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
11 10.9 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
12 11 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
13 11.1 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
14 11.2 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
15 11.3 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
16 11.4 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
17 11.5 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
18 11.6 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
19 11.7 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
20 11.8 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
21 11.9 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
22 12 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
23 12.1 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
24 12.2 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
25 12.3 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
26 12.4 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
27 12.5 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
28 12.6 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
29 12.7 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
30 12.8 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
31 12.9 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
32 13 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
33 13.1 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
34 13.2 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
35 13.3 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
36 13.4 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
37 13.5 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
38 13.6 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
39 13.7 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
40 13.8 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
41 13.9 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
42 14 21 28680 3.6094 1500 1500 0 0 0 0 0 0 0
43 14.1 21 28680 3.6094 1472 1500 0 0 0 0 0 0 0
44 14.2 21 28680 3.6094 1444 1500 0 0 0 0 0 0 0
45 14.3 21 28680 3.6094 1417 1500 0 0 0 0 0 0 0
46 14.4 21 28680 3.6094 1390 1500 0 0 0 0 0 0 0
47 14.5 21 28680 3.6094 1364 1500 0 0 0 0 0 0 0
48 14.6 21 28680 3.6094 1040 1500 0 0 0 0 0 0 0
49 14.7 21 28680 3.6094 793 1500 0 0 0 0 0 0 0
50 14.8 21 28680 3.6094 605 1500 0 0 0 0 0 0 0
51 14.9 21 28680 3.6094 461 1500 0 0 0 0 0 0 0
52 15 21 28680 3.6094 351 1500 0 0 0 0 0 0 0
53 15.1 21 28680 3.6094 265 1500 0 0 0 0 0 0 0
54 15.2 21 28680 3.6094 199 1500 0 0 0 0 0 0 0
55 15.3 21 28680 3.6094 150 1500 0 0 0 0 0 0 0
56 15.4 21 28680 3.6094 113 1500 0 0 0 0 0 0 0
57 15.5 21 28680 3.6094 85 1500 0 0 0 0 0 0 0
58 15.6 21 28680 3.6094 79 1500 0 0 0 0 0 0 0
59 15.7 21 28680 3.6094 73 1500 0 0 0 0 0 0 0
60 15.8 21 28680 3.6094 67 1500 0 0 0 0 0 0 0
61 15.9 21 28680 3.6094 62 1500 0 0 0 0 0 0 0
62 16 21 28680 3.6094 57 1500 0 0 0 0 0 0 0
63 16.1 21 28680 3.6094 37 1500 0 0 0 0 0 0 0
64 16.2 21 28680 3.6094 23 1500 0 0 0 0 0 0 0
65 16.3 21 28680 3.6094 15 1500 0 0 0 0 0 0 0
66 16.4 21 28680 3.6094 10 1500 0 0 0 0 0 0 0
67 16.5 21 28680 3.6094 6 1500 0 0 0 0 0 0 0
68 16.6 21 28680 3.6094 3 1500 0 0 0 0 0 0 0
69 16.7 21 28680 3.6094 1 1500 0 0 0 0 0 0 0
70 16.8 21 28680 3.6094 1 1500 0 0 0 0 0 0 0
71 16.9 21 28680 3.6094 0 1500 0 0 0 0 0 0 0
72 17 21 28680 3.6094 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,52 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
14;22;31240;3.9023;1500;1500;0;0;0;0;0;0;0
14.1;22;31240;3.9023;1500;1500;0;0;0;0;0;0;0
14.2;22;31240;3.9023;1500;1500;0;0;0;0;0;0;0
14.3;22;31240;3.9023;1500;1500;0;0;0;0;0;0;0
14.4;22;31240;3.9023;1500;1500;0;0;0;0;0;0;0
14.5;22;31240;3.9023;1500;1500;0;0;0;0;0;0;0
14.6;22;31240;3.9023;1500;1500;0;0;0;0;0;0;0
14.7;22;31240;3.9023;1500;1500;0;0;0;0;0;0;0
14.8;22;31240;3.9023;1500;1500;0;0;0;0;0;0;0
14.9;22;31240;3.9023;1500;1500;0;0;0;0;0;0;0
15;22;31240;3.9023;1500;1500;0;0;0;0;0;0;0
15.1;22;31240;3.9023;1421;1500;0;0;0;0;0;0;0
15.2;22;31240;3.9023;1347;1500;0;0;0;0;0;0;0
15.3;22;31240;3.9023;1276;1500;0;0;0;0;0;0;0
15.4;22;31240;3.9023;1209;1500;0;0;0;0;0;0;0
15.5;22;31240;3.9023;1146;1500;0;0;0;0;0;0;0
15.6;22;31240;3.9023;807;1500;0;0;0;0;0;0;0
15.7;22;31240;3.9023;569;1500;0;0;0;0;0;0;0
15.8;22;31240;3.9023;400;1500;0;0;0;0;0;0;0
15.9;22;31240;3.9023;282;1500;0;0;0;0;0;0;0
16;22;31240;3.9023;199;1500;0;0;0;0;0;0;0
16.1;22;31240;3.9023;165;1500;0;0;0;0;0;0;0
16.2;22;31240;3.9023;137;1500;0;0;0;0;0;0;0
16.3;22;31240;3.9023;114;1500;0;0;0;0;0;0;0
16.4;22;31240;3.9023;94;1500;0;0;0;0;0;0;0
16.5;22;31240;3.9023;78;1500;0;0;0;0;0;0;0
16.6;22;31240;3.9023;74;1500;0;0;0;0;0;0;0
16.7;22;31240;3.9023;69;1500;0;0;0;0;0;0;0
16.8;22;31240;3.9023;65;1500;0;0;0;0;0;0;0
16.9;22;31240;3.9023;61;1500;0;0;0;0;0;0;0
17;22;31240;3.9023;58;1500;0;0;0;0;0;0;0
17.1;22;31240;3.9023;36;1500;0;0;0;0;0;0;0
17.2;22;31240;3.9023;23;1500;0;0;0;0;0;0;0
17.3;22;31240;3.9023;15;1500;0;0;0;0;0;0;0
17.4;22;31240;3.9023;9;1500;0;0;0;0;0;0;0
17.5;22;31240;3.9023;6;1500;0;0;0;0;0;0;0
17.6;22;31240;3.9023;3;1500;0;0;0;0;0;0;0
17.7;22;31240;3.9023;1;1500;0;0;0;0;0;0;0
17.8;22;31240;3.9023;1;1500;0;0;0;0;0;0;0
17.9;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
18;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
18.1;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
18.2;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
18.3;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
18.4;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
18.5;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
18.6;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
18.7;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
18.8;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
18.9;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
19;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 14 22 31240 3.9023 1500 1500 0 0 0 0 0 0 0
3 14.1 22 31240 3.9023 1500 1500 0 0 0 0 0 0 0
4 14.2 22 31240 3.9023 1500 1500 0 0 0 0 0 0 0
5 14.3 22 31240 3.9023 1500 1500 0 0 0 0 0 0 0
6 14.4 22 31240 3.9023 1500 1500 0 0 0 0 0 0 0
7 14.5 22 31240 3.9023 1500 1500 0 0 0 0 0 0 0
8 14.6 22 31240 3.9023 1500 1500 0 0 0 0 0 0 0
9 14.7 22 31240 3.9023 1500 1500 0 0 0 0 0 0 0
10 14.8 22 31240 3.9023 1500 1500 0 0 0 0 0 0 0
11 14.9 22 31240 3.9023 1500 1500 0 0 0 0 0 0 0
12 15 22 31240 3.9023 1500 1500 0 0 0 0 0 0 0
13 15.1 22 31240 3.9023 1421 1500 0 0 0 0 0 0 0
14 15.2 22 31240 3.9023 1347 1500 0 0 0 0 0 0 0
15 15.3 22 31240 3.9023 1276 1500 0 0 0 0 0 0 0
16 15.4 22 31240 3.9023 1209 1500 0 0 0 0 0 0 0
17 15.5 22 31240 3.9023 1146 1500 0 0 0 0 0 0 0
18 15.6 22 31240 3.9023 807 1500 0 0 0 0 0 0 0
19 15.7 22 31240 3.9023 569 1500 0 0 0 0 0 0 0
20 15.8 22 31240 3.9023 400 1500 0 0 0 0 0 0 0
21 15.9 22 31240 3.9023 282 1500 0 0 0 0 0 0 0
22 16 22 31240 3.9023 199 1500 0 0 0 0 0 0 0
23 16.1 22 31240 3.9023 165 1500 0 0 0 0 0 0 0
24 16.2 22 31240 3.9023 137 1500 0 0 0 0 0 0 0
25 16.3 22 31240 3.9023 114 1500 0 0 0 0 0 0 0
26 16.4 22 31240 3.9023 94 1500 0 0 0 0 0 0 0
27 16.5 22 31240 3.9023 78 1500 0 0 0 0 0 0 0
28 16.6 22 31240 3.9023 74 1500 0 0 0 0 0 0 0
29 16.7 22 31240 3.9023 69 1500 0 0 0 0 0 0 0
30 16.8 22 31240 3.9023 65 1500 0 0 0 0 0 0 0
31 16.9 22 31240 3.9023 61 1500 0 0 0 0 0 0 0
32 17 22 31240 3.9023 58 1500 0 0 0 0 0 0 0
33 17.1 22 31240 3.9023 36 1500 0 0 0 0 0 0 0
34 17.2 22 31240 3.9023 23 1500 0 0 0 0 0 0 0
35 17.3 22 31240 3.9023 15 1500 0 0 0 0 0 0 0
36 17.4 22 31240 3.9023 9 1500 0 0 0 0 0 0 0
37 17.5 22 31240 3.9023 6 1500 0 0 0 0 0 0 0
38 17.6 22 31240 3.9023 3 1500 0 0 0 0 0 0 0
39 17.7 22 31240 3.9023 1 1500 0 0 0 0 0 0 0
40 17.8 22 31240 3.9023 1 1500 0 0 0 0 0 0 0
41 17.9 22 31240 3.9023 0 1500 0 0 0 0 0 0 0
42 18 22 31240 3.9023 0 1500 0 0 0 0 0 0 0
43 18.1 22 31240 3.9023 0 1500 0 0 0 0 0 0 0
44 18.2 22 31240 3.9023 0 1500 0 0 0 0 0 0 0
45 18.3 22 31240 3.9023 0 1500 0 0 0 0 0 0 0
46 18.4 22 31240 3.9023 0 1500 0 0 0 0 0 0 0
47 18.5 22 31240 3.9023 0 1500 0 0 0 0 0 0 0
48 18.6 22 31240 3.9023 0 1500 0 0 0 0 0 0 0
49 18.7 22 31240 3.9023 0 1500 0 0 0 0 0 0 0
50 18.8 22 31240 3.9023 0 1500 0 0 0 0 0 0 0
51 18.9 22 31240 3.9023 0 1500 0 0 0 0 0 0 0
52 19 22 31240 3.9023 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,92 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
15;23;33816;4.2129;1500;1500;0;0;0;0;0;0;0
15.1;23;33816;4.2129;1500;1500;0;0;0;0;0;0;0
15.2;23;33816;4.2129;1500;1500;0;0;0;0;0;0;0
15.3;23;33816;4.2129;1500;1500;0;0;0;0;0;0;0
15.4;23;33816;4.2129;1500;1500;0;0;0;0;0;0;0
15.5;23;33816;4.2129;1500;1500;0;0;0;0;0;0;0
15.6;23;33816;4.2129;1499;1500;0;0;0;0;0;0;0
15.7;23;33816;4.2129;1499;1500;0;0;0;0;0;0;0
15.8;23;33816;4.2129;1498;1500;0;0;0;0;0;0;0
15.9;23;33816;4.2129;1498;1500;0;0;0;0;0;0;0
16;23;33816;4.2129;1497;1500;0;0;0;0;0;0;0
16.1;23;33816;4.2129;1360;1500;0;0;0;0;0;0;0
16.2;23;33816;4.2129;1236;1500;0;0;0;0;0;0;0
16.3;23;33816;4.2129;1123;1500;0;0;0;0;0;0;0
16.4;23;33816;4.2129;1020;1500;0;0;0;0;0;0;0
16.5;23;33816;4.2129;927;1500;0;0;0;0;0;0;0
16.6;23;33816;4.2129;630;1500;0;0;0;0;0;0;0
16.7;23;33816;4.2129;428;1500;0;0;0;0;0;0;0
16.8;23;33816;4.2129;291;1500;0;0;0;0;0;0;0
16.9;23;33816;4.2129;198;1500;0;0;0;0;0;0;0
17;23;33816;4.2129;135;1500;0;0;0;0;0;0;0
17.1;23;33816;4.2129;120;1500;0;0;0;0;0;0;0
17.2;23;33816;4.2129;108;1500;0;0;0;0;0;0;0
17.3;23;33816;4.2129;96;1500;0;0;0;0;0;0;0
17.4;23;33816;4.2129;86;1500;0;0;0;0;0;0;0
17.5;23;33816;4.2129;77;1500;0;0;0;0;0;0;0
17.6;23;33816;4.2129;70;1500;0;0;0;0;0;0;0
17.7;23;33816;4.2129;63;1500;0;0;0;0;0;0;0
17.8;23;33816;4.2129;57;1500;0;0;0;0;0;0;0
17.9;23;33816;4.2129;52;1500;0;0;0;0;0;0;0
18;23;33816;4.2129;47;1500;0;0;0;0;0;0;0
18.1;23;33816;4.2129;28;1500;0;0;0;0;0;0;0
18.2;23;33816;4.2129;16;1500;0;0;0;0;0;0;0
18.3;23;33816;4.2129;9;1500;0;0;0;0;0;0;0
18.4;23;33816;4.2129;6;1500;0;0;0;0;0;0;0
18.5;23;33816;4.2129;3;1500;0;0;0;0;0;0;0
18.6;23;33816;4.2129;3;1500;0;0;0;0;0;0;0
18.7;23;33816;4.2129;3;1500;0;0;0;0;0;0;0
18.8;23;33816;4.2129;3;1500;0;0;0;0;0;0;0
18.9;23;33816;4.2129;3;1500;0;0;0;0;0;0;0
19;23;33816;4.2129;3;1500;0;0;0;0;0;0;0
19.1;23;33816;4.2129;3;1500;0;0;0;0;0;0;0
19.2;23;33816;4.2129;4;1500;0;0;0;0;0;0;0
19.3;23;33816;4.2129;5;1500;0;0;0;0;0;0;0
19.4;23;33816;4.2129;6;1500;0;0;0;0;0;0;0
19.5;23;33816;4.2129;8;1500;0;0;0;0;0;0;0
19.6;23;33816;4.2129;6;1500;0;0;0;0;0;0;0
19.7;23;33816;4.2129;4;1500;0;0;0;0;0;0;0
19.8;23;33816;4.2129;3;1500;0;0;0;0;0;0;0
19.9;23;33816;4.2129;2;1500;0;0;0;0;0;0;0
20;23;33816;4.2129;2;1500;0;0;0;0;0;0;0
20.1;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
20.2;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
20.3;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
20.4;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
20.5;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
20.6;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
20.7;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
20.8;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
20.9;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
21;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
21.1;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
21.2;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
21.3;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
21.4;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
21.5;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
21.6;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
21.7;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
21.8;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
21.9;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
22;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
22.1;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
22.2;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
22.3;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
22.4;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
22.5;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
22.6;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
22.7;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
22.8;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
22.9;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
23;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
23.1;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
23.2;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
23.3;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
23.4;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
23.5;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
23.6;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
23.7;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
23.8;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
23.9;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
24;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 15 23 33816 4.2129 1500 1500 0 0 0 0 0 0 0
3 15.1 23 33816 4.2129 1500 1500 0 0 0 0 0 0 0
4 15.2 23 33816 4.2129 1500 1500 0 0 0 0 0 0 0
5 15.3 23 33816 4.2129 1500 1500 0 0 0 0 0 0 0
6 15.4 23 33816 4.2129 1500 1500 0 0 0 0 0 0 0
7 15.5 23 33816 4.2129 1500 1500 0 0 0 0 0 0 0
8 15.6 23 33816 4.2129 1499 1500 0 0 0 0 0 0 0
9 15.7 23 33816 4.2129 1499 1500 0 0 0 0 0 0 0
10 15.8 23 33816 4.2129 1498 1500 0 0 0 0 0 0 0
11 15.9 23 33816 4.2129 1498 1500 0 0 0 0 0 0 0
12 16 23 33816 4.2129 1497 1500 0 0 0 0 0 0 0
13 16.1 23 33816 4.2129 1360 1500 0 0 0 0 0 0 0
14 16.2 23 33816 4.2129 1236 1500 0 0 0 0 0 0 0
15 16.3 23 33816 4.2129 1123 1500 0 0 0 0 0 0 0
16 16.4 23 33816 4.2129 1020 1500 0 0 0 0 0 0 0
17 16.5 23 33816 4.2129 927 1500 0 0 0 0 0 0 0
18 16.6 23 33816 4.2129 630 1500 0 0 0 0 0 0 0
19 16.7 23 33816 4.2129 428 1500 0 0 0 0 0 0 0
20 16.8 23 33816 4.2129 291 1500 0 0 0 0 0 0 0
21 16.9 23 33816 4.2129 198 1500 0 0 0 0 0 0 0
22 17 23 33816 4.2129 135 1500 0 0 0 0 0 0 0
23 17.1 23 33816 4.2129 120 1500 0 0 0 0 0 0 0
24 17.2 23 33816 4.2129 108 1500 0 0 0 0 0 0 0
25 17.3 23 33816 4.2129 96 1500 0 0 0 0 0 0 0
26 17.4 23 33816 4.2129 86 1500 0 0 0 0 0 0 0
27 17.5 23 33816 4.2129 77 1500 0 0 0 0 0 0 0
28 17.6 23 33816 4.2129 70 1500 0 0 0 0 0 0 0
29 17.7 23 33816 4.2129 63 1500 0 0 0 0 0 0 0
30 17.8 23 33816 4.2129 57 1500 0 0 0 0 0 0 0
31 17.9 23 33816 4.2129 52 1500 0 0 0 0 0 0 0
32 18 23 33816 4.2129 47 1500 0 0 0 0 0 0 0
33 18.1 23 33816 4.2129 28 1500 0 0 0 0 0 0 0
34 18.2 23 33816 4.2129 16 1500 0 0 0 0 0 0 0
35 18.3 23 33816 4.2129 9 1500 0 0 0 0 0 0 0
36 18.4 23 33816 4.2129 6 1500 0 0 0 0 0 0 0
37 18.5 23 33816 4.2129 3 1500 0 0 0 0 0 0 0
38 18.6 23 33816 4.2129 3 1500 0 0 0 0 0 0 0
39 18.7 23 33816 4.2129 3 1500 0 0 0 0 0 0 0
40 18.8 23 33816 4.2129 3 1500 0 0 0 0 0 0 0
41 18.9 23 33816 4.2129 3 1500 0 0 0 0 0 0 0
42 19 23 33816 4.2129 3 1500 0 0 0 0 0 0 0
43 19.1 23 33816 4.2129 3 1500 0 0 0 0 0 0 0
44 19.2 23 33816 4.2129 4 1500 0 0 0 0 0 0 0
45 19.3 23 33816 4.2129 5 1500 0 0 0 0 0 0 0
46 19.4 23 33816 4.2129 6 1500 0 0 0 0 0 0 0
47 19.5 23 33816 4.2129 8 1500 0 0 0 0 0 0 0
48 19.6 23 33816 4.2129 6 1500 0 0 0 0 0 0 0
49 19.7 23 33816 4.2129 4 1500 0 0 0 0 0 0 0
50 19.8 23 33816 4.2129 3 1500 0 0 0 0 0 0 0
51 19.9 23 33816 4.2129 2 1500 0 0 0 0 0 0 0
52 20 23 33816 4.2129 2 1500 0 0 0 0 0 0 0
53 20.1 23 33816 4.2129 1 1500 0 0 0 0 0 0 0
54 20.2 23 33816 4.2129 1 1500 0 0 0 0 0 0 0
55 20.3 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
56 20.4 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
57 20.5 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
58 20.6 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
59 20.7 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
60 20.8 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
61 20.9 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
62 21 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
63 21.1 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
64 21.2 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
65 21.3 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
66 21.4 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
67 21.5 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
68 21.6 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
69 21.7 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
70 21.8 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
71 21.9 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
72 22 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
73 22.1 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
74 22.2 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
75 22.3 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
76 22.4 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
77 22.5 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
78 22.6 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
79 22.7 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
80 22.8 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
81 22.9 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
82 23 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
83 23.1 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
84 23.2 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
85 23.3 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
86 23.4 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
87 23.5 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
88 23.6 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
89 23.7 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
90 23.8 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
91 23.9 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
92 24 23 33816 4.2129 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,92 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
15;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
15.1;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
15.2;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
15.3;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
15.4;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
15.5;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
15.6;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
15.7;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
15.8;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
15.9;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
16;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
16.1;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
16.2;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
16.3;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
16.4;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
16.5;24;35856;4.5234;1500;1500;0;0;0;0;0;0;0
16.6;24;35856;4.5234;1474;1500;0;0;0;0;0;0;0
16.7;24;35856;4.5234;1449;1500;0;0;0;0;0;0;0
16.8;24;35856;4.5234;1424;1500;0;0;0;0;0;0;0
16.9;24;35856;4.5234;1400;1500;0;0;0;0;0;0;0
17;24;35856;4.5234;1376;1500;0;0;0;0;0;0;0
17.1;24;35856;4.5234;1016;1500;0;0;0;0;0;0;0
17.2;24;35856;4.5234;751;1500;0;0;0;0;0;0;0
17.3;24;35856;4.5234;554;1500;0;0;0;0;0;0;0
17.4;24;35856;4.5234;410;1500;0;0;0;0;0;0;0
17.5;24;35856;4.5234;303;1500;0;0;0;0;0;0;0
17.6;24;35856;4.5234;232;1500;0;0;0;0;0;0;0
17.7;24;35856;4.5234;177;1500;0;0;0;0;0;0;0
17.8;24;35856;4.5234;136;1500;0;0;0;0;0;0;0
17.9;24;35856;4.5234;104;1500;0;0;0;0;0;0;0
18;24;35856;4.5234;80;1500;0;0;0;0;0;0;0
18.1;24;35856;4.5234;79;1500;0;0;0;0;0;0;0
18.2;24;35856;4.5234;78;1500;0;0;0;0;0;0;0
18.3;24;35856;4.5234;77;1500;0;0;0;0;0;0;0
18.4;24;35856;4.5234;76;1500;0;0;0;0;0;0;0
18.5;24;35856;4.5234;75;1500;0;0;0;0;0;0;0
18.6;24;35856;4.5234;59;1500;0;0;0;0;0;0;0
18.7;24;35856;4.5234;46;1500;0;0;0;0;0;0;0
18.8;24;35856;4.5234;36;1500;0;0;0;0;0;0;0
18.9;24;35856;4.5234;28;1500;0;0;0;0;0;0;0
19;24;35856;4.5234;22;1500;0;0;0;0;0;0;0
19.1;24;35856;4.5234;21;1500;0;0;0;0;0;0;0
19.2;24;35856;4.5234;20;1500;0;0;0;0;0;0;0
19.3;24;35856;4.5234;20;1500;0;0;0;0;0;0;0
19.4;24;35856;4.5234;19;1500;0;0;0;0;0;0;0
19.5;24;35856;4.5234;18;1500;0;0;0;0;0;0;0
19.6;24;35856;4.5234;22;1500;0;0;0;0;0;0;0
19.7;24;35856;4.5234;26;1500;0;0;0;0;0;0;0
19.8;24;35856;4.5234;31;1500;0;0;0;0;0;0;0
19.9;24;35856;4.5234;36;1500;0;0;0;0;0;0;0
20;24;35856;4.5234;43;1500;0;0;0;0;0;0;0
20.1;24;35856;4.5234;35;1500;0;0;0;0;0;0;0
20.2;24;35856;4.5234;29;1500;0;0;0;0;0;0;0
20.3;24;35856;4.5234;23;1500;0;0;0;0;0;0;0
20.4;24;35856;4.5234;19;1500;0;0;0;0;0;0;0
20.5;24;35856;4.5234;15;1500;0;0;0;0;0;0;0
20.6;24;35856;4.5234;8;1500;0;0;0;0;0;0;0
20.7;24;35856;4.5234;4;1500;0;0;0;0;0;0;0
20.8;24;35856;4.5234;2;1500;0;0;0;0;0;0;0
20.9;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
21;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
21.1;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
21.2;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
21.3;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
21.4;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
21.5;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
21.6;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
21.7;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
21.8;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
21.9;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
22;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
22.1;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
22.2;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
22.3;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
22.4;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
22.5;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
22.6;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
22.7;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
22.8;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
22.9;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
23;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
23.1;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
23.2;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
23.3;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
23.4;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
23.5;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
23.6;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
23.7;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
23.8;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
23.9;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
24;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 15 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
3 15.1 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
4 15.2 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
5 15.3 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
6 15.4 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
7 15.5 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
8 15.6 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
9 15.7 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
10 15.8 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
11 15.9 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
12 16 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
13 16.1 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
14 16.2 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
15 16.3 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
16 16.4 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
17 16.5 24 35856 4.5234 1500 1500 0 0 0 0 0 0 0
18 16.6 24 35856 4.5234 1474 1500 0 0 0 0 0 0 0
19 16.7 24 35856 4.5234 1449 1500 0 0 0 0 0 0 0
20 16.8 24 35856 4.5234 1424 1500 0 0 0 0 0 0 0
21 16.9 24 35856 4.5234 1400 1500 0 0 0 0 0 0 0
22 17 24 35856 4.5234 1376 1500 0 0 0 0 0 0 0
23 17.1 24 35856 4.5234 1016 1500 0 0 0 0 0 0 0
24 17.2 24 35856 4.5234 751 1500 0 0 0 0 0 0 0
25 17.3 24 35856 4.5234 554 1500 0 0 0 0 0 0 0
26 17.4 24 35856 4.5234 410 1500 0 0 0 0 0 0 0
27 17.5 24 35856 4.5234 303 1500 0 0 0 0 0 0 0
28 17.6 24 35856 4.5234 232 1500 0 0 0 0 0 0 0
29 17.7 24 35856 4.5234 177 1500 0 0 0 0 0 0 0
30 17.8 24 35856 4.5234 136 1500 0 0 0 0 0 0 0
31 17.9 24 35856 4.5234 104 1500 0 0 0 0 0 0 0
32 18 24 35856 4.5234 80 1500 0 0 0 0 0 0 0
33 18.1 24 35856 4.5234 79 1500 0 0 0 0 0 0 0
34 18.2 24 35856 4.5234 78 1500 0 0 0 0 0 0 0
35 18.3 24 35856 4.5234 77 1500 0 0 0 0 0 0 0
36 18.4 24 35856 4.5234 76 1500 0 0 0 0 0 0 0
37 18.5 24 35856 4.5234 75 1500 0 0 0 0 0 0 0
38 18.6 24 35856 4.5234 59 1500 0 0 0 0 0 0 0
39 18.7 24 35856 4.5234 46 1500 0 0 0 0 0 0 0
40 18.8 24 35856 4.5234 36 1500 0 0 0 0 0 0 0
41 18.9 24 35856 4.5234 28 1500 0 0 0 0 0 0 0
42 19 24 35856 4.5234 22 1500 0 0 0 0 0 0 0
43 19.1 24 35856 4.5234 21 1500 0 0 0 0 0 0 0
44 19.2 24 35856 4.5234 20 1500 0 0 0 0 0 0 0
45 19.3 24 35856 4.5234 20 1500 0 0 0 0 0 0 0
46 19.4 24 35856 4.5234 19 1500 0 0 0 0 0 0 0
47 19.5 24 35856 4.5234 18 1500 0 0 0 0 0 0 0
48 19.6 24 35856 4.5234 22 1500 0 0 0 0 0 0 0
49 19.7 24 35856 4.5234 26 1500 0 0 0 0 0 0 0
50 19.8 24 35856 4.5234 31 1500 0 0 0 0 0 0 0
51 19.9 24 35856 4.5234 36 1500 0 0 0 0 0 0 0
52 20 24 35856 4.5234 43 1500 0 0 0 0 0 0 0
53 20.1 24 35856 4.5234 35 1500 0 0 0 0 0 0 0
54 20.2 24 35856 4.5234 29 1500 0 0 0 0 0 0 0
55 20.3 24 35856 4.5234 23 1500 0 0 0 0 0 0 0
56 20.4 24 35856 4.5234 19 1500 0 0 0 0 0 0 0
57 20.5 24 35856 4.5234 15 1500 0 0 0 0 0 0 0
58 20.6 24 35856 4.5234 8 1500 0 0 0 0 0 0 0
59 20.7 24 35856 4.5234 4 1500 0 0 0 0 0 0 0
60 20.8 24 35856 4.5234 2 1500 0 0 0 0 0 0 0
61 20.9 24 35856 4.5234 1 1500 0 0 0 0 0 0 0
62 21 24 35856 4.5234 1 1500 0 0 0 0 0 0 0
63 21.1 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
64 21.2 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
65 21.3 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
66 21.4 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
67 21.5 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
68 21.6 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
69 21.7 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
70 21.8 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
71 21.9 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
72 22 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
73 22.1 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
74 22.2 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
75 22.3 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
76 22.4 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
77 22.5 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
78 22.6 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
79 22.7 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
80 22.8 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
81 22.9 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
82 23 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
83 23.1 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
84 23.2 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
85 23.3 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
86 23.4 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
87 23.5 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
88 23.6 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
89 23.7 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
90 23.8 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
91 23.9 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
92 24 24 35856 4.5234 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,92 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
15;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
15.1;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
15.2;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
15.3;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
15.4;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
15.5;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
15.6;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
15.7;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
15.8;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
15.9;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
16;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
16.1;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
16.2;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
16.3;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
16.4;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
16.5;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
16.6;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
16.7;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
16.8;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
16.9;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
17;25;37896;4.8164;1500;1500;0;0;0;0;0;0;0
17.1;25;37896;4.8164;1493;1500;0;0;0;0;0;0;0
17.2;25;37896;4.8164;1486;1500;0;0;0;0;0;0;0
17.3;25;37896;4.8164;1478;1500;0;0;0;0;0;0;0
17.4;25;37896;4.8164;1471;1500;0;0;0;0;0;0;0
17.5;25;37896;4.8164;1464;1500;0;0;0;0;0;0;0
17.6;25;37896;4.8164;1138;1500;0;0;0;0;0;0;0
17.7;25;37896;4.8164;885;1500;0;0;0;0;0;0;0
17.8;25;37896;4.8164;688;1500;0;0;0;0;0;0;0
17.9;25;37896;4.8164;535;1500;0;0;0;0;0;0;0
18;25;37896;4.8164;416;1500;0;0;0;0;0;0;0
18.1;25;37896;4.8164;302;1500;0;0;0;0;0;0;0
18.2;25;37896;4.8164;219;1500;0;0;0;0;0;0;0
18.3;25;37896;4.8164;159;1500;0;0;0;0;0;0;0
18.4;25;37896;4.8164;115;1500;0;0;0;0;0;0;0
18.5;25;37896;4.8164;84;1500;0;0;0;0;0;0;0
18.6;25;37896;4.8164;89;1500;0;0;0;0;0;0;0
18.7;25;37896;4.8164;94;1500;0;0;0;0;0;0;0
18.8;25;37896;4.8164;100;1500;0;0;0;0;0;0;0
18.9;25;37896;4.8164;106;1500;0;0;0;0;0;0;0
19;25;37896;4.8164;113;1500;0;0;0;0;0;0;0
19.1;25;37896;4.8164;110;1500;0;0;0;0;0;0;0
19.2;25;37896;4.8164;108;1500;0;0;0;0;0;0;0
19.3;25;37896;4.8164;105;1500;0;0;0;0;0;0;0
19.4;25;37896;4.8164;103;1500;0;0;0;0;0;0;0
19.5;25;37896;4.8164;101;1500;0;0;0;0;0;0;0
19.6;25;37896;4.8164;89;1500;0;0;0;0;0;0;0
19.7;25;37896;4.8164;79;1500;0;0;0;0;0;0;0
19.8;25;37896;4.8164;71;1500;0;0;0;0;0;0;0
19.9;25;37896;4.8164;63;1500;0;0;0;0;0;0;0
20;25;37896;4.8164;56;1500;0;0;0;0;0;0;0
20.1;25;37896;4.8164;58;1500;0;0;0;0;0;0;0
20.2;25;37896;4.8164;61;1500;0;0;0;0;0;0;0
20.3;25;37896;4.8164;64;1500;0;0;0;0;0;0;0
20.4;25;37896;4.8164;67;1500;0;0;0;0;0;0;0
20.5;25;37896;4.8164;71;1500;0;0;0;0;0;0;0
20.6;25;37896;4.8164;64;1500;0;0;0;0;0;0;0
20.7;25;37896;4.8164;58;1500;0;0;0;0;0;0;0
20.8;25;37896;4.8164;52;1500;0;0;0;0;0;0;0
20.9;25;37896;4.8164;47;1500;0;0;0;0;0;0;0
21;25;37896;4.8164;43;1500;0;0;0;0;0;0;0
21.1;25;37896;4.8164;27;1500;0;0;0;0;0;0;0
21.2;25;37896;4.8164;17;1500;0;0;0;0;0;0;0
21.3;25;37896;4.8164;10;1500;0;0;0;0;0;0;0
21.4;25;37896;4.8164;6;1500;0;0;0;0;0;0;0
21.5;25;37896;4.8164;4;1500;0;0;0;0;0;0;0
21.6;25;37896;4.8164;2;1500;0;0;0;0;0;0;0
21.7;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
21.8;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
21.9;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
22;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
22.1;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
22.2;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
22.3;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
22.4;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
22.5;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
22.6;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
22.7;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
22.8;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
22.9;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
23;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
23.1;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
23.2;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
23.3;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
23.4;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
23.5;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
23.6;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
23.7;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
23.8;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
23.9;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
24;25;37896;4.8164;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 15 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
3 15.1 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
4 15.2 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
5 15.3 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
6 15.4 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
7 15.5 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
8 15.6 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
9 15.7 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
10 15.8 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
11 15.9 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
12 16 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
13 16.1 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
14 16.2 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
15 16.3 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
16 16.4 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
17 16.5 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
18 16.6 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
19 16.7 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
20 16.8 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
21 16.9 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
22 17 25 37896 4.8164 1500 1500 0 0 0 0 0 0 0
23 17.1 25 37896 4.8164 1493 1500 0 0 0 0 0 0 0
24 17.2 25 37896 4.8164 1486 1500 0 0 0 0 0 0 0
25 17.3 25 37896 4.8164 1478 1500 0 0 0 0 0 0 0
26 17.4 25 37896 4.8164 1471 1500 0 0 0 0 0 0 0
27 17.5 25 37896 4.8164 1464 1500 0 0 0 0 0 0 0
28 17.6 25 37896 4.8164 1138 1500 0 0 0 0 0 0 0
29 17.7 25 37896 4.8164 885 1500 0 0 0 0 0 0 0
30 17.8 25 37896 4.8164 688 1500 0 0 0 0 0 0 0
31 17.9 25 37896 4.8164 535 1500 0 0 0 0 0 0 0
32 18 25 37896 4.8164 416 1500 0 0 0 0 0 0 0
33 18.1 25 37896 4.8164 302 1500 0 0 0 0 0 0 0
34 18.2 25 37896 4.8164 219 1500 0 0 0 0 0 0 0
35 18.3 25 37896 4.8164 159 1500 0 0 0 0 0 0 0
36 18.4 25 37896 4.8164 115 1500 0 0 0 0 0 0 0
37 18.5 25 37896 4.8164 84 1500 0 0 0 0 0 0 0
38 18.6 25 37896 4.8164 89 1500 0 0 0 0 0 0 0
39 18.7 25 37896 4.8164 94 1500 0 0 0 0 0 0 0
40 18.8 25 37896 4.8164 100 1500 0 0 0 0 0 0 0
41 18.9 25 37896 4.8164 106 1500 0 0 0 0 0 0 0
42 19 25 37896 4.8164 113 1500 0 0 0 0 0 0 0
43 19.1 25 37896 4.8164 110 1500 0 0 0 0 0 0 0
44 19.2 25 37896 4.8164 108 1500 0 0 0 0 0 0 0
45 19.3 25 37896 4.8164 105 1500 0 0 0 0 0 0 0
46 19.4 25 37896 4.8164 103 1500 0 0 0 0 0 0 0
47 19.5 25 37896 4.8164 101 1500 0 0 0 0 0 0 0
48 19.6 25 37896 4.8164 89 1500 0 0 0 0 0 0 0
49 19.7 25 37896 4.8164 79 1500 0 0 0 0 0 0 0
50 19.8 25 37896 4.8164 71 1500 0 0 0 0 0 0 0
51 19.9 25 37896 4.8164 63 1500 0 0 0 0 0 0 0
52 20 25 37896 4.8164 56 1500 0 0 0 0 0 0 0
53 20.1 25 37896 4.8164 58 1500 0 0 0 0 0 0 0
54 20.2 25 37896 4.8164 61 1500 0 0 0 0 0 0 0
55 20.3 25 37896 4.8164 64 1500 0 0 0 0 0 0 0
56 20.4 25 37896 4.8164 67 1500 0 0 0 0 0 0 0
57 20.5 25 37896 4.8164 71 1500 0 0 0 0 0 0 0
58 20.6 25 37896 4.8164 64 1500 0 0 0 0 0 0 0
59 20.7 25 37896 4.8164 58 1500 0 0 0 0 0 0 0
60 20.8 25 37896 4.8164 52 1500 0 0 0 0 0 0 0
61 20.9 25 37896 4.8164 47 1500 0 0 0 0 0 0 0
62 21 25 37896 4.8164 43 1500 0 0 0 0 0 0 0
63 21.1 25 37896 4.8164 27 1500 0 0 0 0 0 0 0
64 21.2 25 37896 4.8164 17 1500 0 0 0 0 0 0 0
65 21.3 25 37896 4.8164 10 1500 0 0 0 0 0 0 0
66 21.4 25 37896 4.8164 6 1500 0 0 0 0 0 0 0
67 21.5 25 37896 4.8164 4 1500 0 0 0 0 0 0 0
68 21.6 25 37896 4.8164 2 1500 0 0 0 0 0 0 0
69 21.7 25 37896 4.8164 1 1500 0 0 0 0 0 0 0
70 21.8 25 37896 4.8164 1 1500 0 0 0 0 0 0 0
71 21.9 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
72 22 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
73 22.1 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
74 22.2 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
75 22.3 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
76 22.4 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
77 22.5 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
78 22.6 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
79 22.7 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
80 22.8 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
81 22.9 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
82 23 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
83 23.1 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
84 23.2 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
85 23.3 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
86 23.4 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
87 23.5 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
88 23.6 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
89 23.7 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
90 23.8 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
91 23.9 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
92 24 25 37896 4.8164 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,92 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
15;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
15.1;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
15.2;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
15.3;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
15.4;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
15.5;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
15.6;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
15.7;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
15.8;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
15.9;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
16;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
16.1;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
16.2;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
16.3;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
16.4;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
16.5;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
16.6;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
16.7;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
16.8;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
16.9;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
17;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
17.1;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
17.2;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
17.3;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
17.4;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
17.5;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
17.6;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
17.7;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
17.8;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
17.9;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
18;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
18.1;26;40976;5.1152;1496;1500;0;0;0;0;0;0;0
18.2;26;40976;5.1152;1492;1500;0;0;0;0;0;0;0
18.3;26;40976;5.1152;1487;1500;0;0;0;0;0;0;0
18.4;26;40976;5.1152;1483;1500;0;0;0;0;0;0;0
18.5;26;40976;5.1152;1479;1500;0;0;0;0;0;0;0
18.6;26;40976;5.1152;1188;1500;0;0;0;0;0;0;0
18.7;26;40976;5.1152;954;1500;0;0;0;0;0;0;0
18.8;26;40976;5.1152;766;1500;0;0;0;0;0;0;0
18.9;26;40976;5.1152;615;1500;0;0;0;0;0;0;0
19;26;40976;5.1152;494;1500;0;0;0;0;0;0;0
19.1;26;40976;5.1152;478;1500;0;0;0;0;0;0;0
19.2;26;40976;5.1152;462;1500;0;0;0;0;0;0;0
19.3;26;40976;5.1152;447;1500;0;0;0;0;0;0;0
19.4;26;40976;5.1152;433;1500;0;0;0;0;0;0;0
19.5;26;40976;5.1152;419;1500;0;0;0;0;0;0;0
19.6;26;40976;5.1152;491;1500;0;0;0;0;0;0;0
19.7;26;40976;5.1152;577;1500;0;0;0;0;0;0;0
19.8;26;40976;5.1152;677;1500;0;0;0;0;0;0;0
19.9;26;40976;5.1152;795;1500;0;0;0;0;0;0;0
20;26;40976;5.1152;934;1500;0;0;0;0;0;0;0
20.1;26;40976;5.1152;799;1500;0;0;0;0;0;0;0
20.2;26;40976;5.1152;684;1500;0;0;0;0;0;0;0
20.3;26;40976;5.1152;586;1500;0;0;0;0;0;0;0
20.4;26;40976;5.1152;502;1500;0;0;0;0;0;0;0
20.5;26;40976;5.1152;429;1500;0;0;0;0;0;0;0
20.6;26;40976;5.1152;315;1500;0;0;0;0;0;0;0
20.7;26;40976;5.1152;231;1500;0;0;0;0;0;0;0
20.8;26;40976;5.1152;169;1500;0;0;0;0;0;0;0
20.9;26;40976;5.1152;124;1500;0;0;0;0;0;0;0
21;26;40976;5.1152;91;1500;0;0;0;0;0;0;0
21.1;26;40976;5.1152;87;1500;0;0;0;0;0;0;0
21.2;26;40976;5.1152;84;1500;0;0;0;0;0;0;0
21.3;26;40976;5.1152;81;1500;0;0;0;0;0;0;0
21.4;26;40976;5.1152;78;1500;0;0;0;0;0;0;0
21.5;26;40976;5.1152;75;1500;0;0;0;0;0;0;0
21.6;26;40976;5.1152;75;1500;0;0;0;0;0;0;0
21.7;26;40976;5.1152;75;1500;0;0;0;0;0;0;0
21.8;26;40976;5.1152;75;1500;0;0;0;0;0;0;0
21.9;26;40976;5.1152;75;1500;0;0;0;0;0;0;0
22;26;40976;5.1152;75;1500;0;0;0;0;0;0;0
22.1;26;40976;5.1152;73;1500;0;0;0;0;0;0;0
22.2;26;40976;5.1152;72;1500;0;0;0;0;0;0;0
22.3;26;40976;5.1152;70;1500;0;0;0;0;0;0;0
22.4;26;40976;5.1152;68;1500;0;0;0;0;0;0;0
22.5;26;40976;5.1152;67;1500;0;0;0;0;0;0;0
22.6;26;40976;5.1152;53;1500;0;0;0;0;0;0;0
22.7;26;40976;5.1152;42;1500;0;0;0;0;0;0;0
22.8;26;40976;5.1152;33;1500;0;0;0;0;0;0;0
22.9;26;40976;5.1152;26;1500;0;0;0;0;0;0;0
23;26;40976;5.1152;21;1500;0;0;0;0;0;0;0
23.1;26;40976;5.1152;11;1500;0;0;0;0;0;0;0
23.2;26;40976;5.1152;6;1500;0;0;0;0;0;0;0
23.3;26;40976;5.1152;3;1500;0;0;0;0;0;0;0
23.4;26;40976;5.1152;2;1500;0;0;0;0;0;0;0
23.5;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
23.6;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
23.7;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
23.8;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
23.9;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
24;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 15 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
3 15.1 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
4 15.2 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
5 15.3 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
6 15.4 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
7 15.5 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
8 15.6 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
9 15.7 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
10 15.8 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
11 15.9 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
12 16 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
13 16.1 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
14 16.2 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
15 16.3 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
16 16.4 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
17 16.5 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
18 16.6 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
19 16.7 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
20 16.8 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
21 16.9 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
22 17 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
23 17.1 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
24 17.2 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
25 17.3 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
26 17.4 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
27 17.5 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
28 17.6 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
29 17.7 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
30 17.8 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
31 17.9 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
32 18 26 40976 5.1152 1500 1500 0 0 0 0 0 0 0
33 18.1 26 40976 5.1152 1496 1500 0 0 0 0 0 0 0
34 18.2 26 40976 5.1152 1492 1500 0 0 0 0 0 0 0
35 18.3 26 40976 5.1152 1487 1500 0 0 0 0 0 0 0
36 18.4 26 40976 5.1152 1483 1500 0 0 0 0 0 0 0
37 18.5 26 40976 5.1152 1479 1500 0 0 0 0 0 0 0
38 18.6 26 40976 5.1152 1188 1500 0 0 0 0 0 0 0
39 18.7 26 40976 5.1152 954 1500 0 0 0 0 0 0 0
40 18.8 26 40976 5.1152 766 1500 0 0 0 0 0 0 0
41 18.9 26 40976 5.1152 615 1500 0 0 0 0 0 0 0
42 19 26 40976 5.1152 494 1500 0 0 0 0 0 0 0
43 19.1 26 40976 5.1152 478 1500 0 0 0 0 0 0 0
44 19.2 26 40976 5.1152 462 1500 0 0 0 0 0 0 0
45 19.3 26 40976 5.1152 447 1500 0 0 0 0 0 0 0
46 19.4 26 40976 5.1152 433 1500 0 0 0 0 0 0 0
47 19.5 26 40976 5.1152 419 1500 0 0 0 0 0 0 0
48 19.6 26 40976 5.1152 491 1500 0 0 0 0 0 0 0
49 19.7 26 40976 5.1152 577 1500 0 0 0 0 0 0 0
50 19.8 26 40976 5.1152 677 1500 0 0 0 0 0 0 0
51 19.9 26 40976 5.1152 795 1500 0 0 0 0 0 0 0
52 20 26 40976 5.1152 934 1500 0 0 0 0 0 0 0
53 20.1 26 40976 5.1152 799 1500 0 0 0 0 0 0 0
54 20.2 26 40976 5.1152 684 1500 0 0 0 0 0 0 0
55 20.3 26 40976 5.1152 586 1500 0 0 0 0 0 0 0
56 20.4 26 40976 5.1152 502 1500 0 0 0 0 0 0 0
57 20.5 26 40976 5.1152 429 1500 0 0 0 0 0 0 0
58 20.6 26 40976 5.1152 315 1500 0 0 0 0 0 0 0
59 20.7 26 40976 5.1152 231 1500 0 0 0 0 0 0 0
60 20.8 26 40976 5.1152 169 1500 0 0 0 0 0 0 0
61 20.9 26 40976 5.1152 124 1500 0 0 0 0 0 0 0
62 21 26 40976 5.1152 91 1500 0 0 0 0 0 0 0
63 21.1 26 40976 5.1152 87 1500 0 0 0 0 0 0 0
64 21.2 26 40976 5.1152 84 1500 0 0 0 0 0 0 0
65 21.3 26 40976 5.1152 81 1500 0 0 0 0 0 0 0
66 21.4 26 40976 5.1152 78 1500 0 0 0 0 0 0 0
67 21.5 26 40976 5.1152 75 1500 0 0 0 0 0 0 0
68 21.6 26 40976 5.1152 75 1500 0 0 0 0 0 0 0
69 21.7 26 40976 5.1152 75 1500 0 0 0 0 0 0 0
70 21.8 26 40976 5.1152 75 1500 0 0 0 0 0 0 0
71 21.9 26 40976 5.1152 75 1500 0 0 0 0 0 0 0
72 22 26 40976 5.1152 75 1500 0 0 0 0 0 0 0
73 22.1 26 40976 5.1152 73 1500 0 0 0 0 0 0 0
74 22.2 26 40976 5.1152 72 1500 0 0 0 0 0 0 0
75 22.3 26 40976 5.1152 70 1500 0 0 0 0 0 0 0
76 22.4 26 40976 5.1152 68 1500 0 0 0 0 0 0 0
77 22.5 26 40976 5.1152 67 1500 0 0 0 0 0 0 0
78 22.6 26 40976 5.1152 53 1500 0 0 0 0 0 0 0
79 22.7 26 40976 5.1152 42 1500 0 0 0 0 0 0 0
80 22.8 26 40976 5.1152 33 1500 0 0 0 0 0 0 0
81 22.9 26 40976 5.1152 26 1500 0 0 0 0 0 0 0
82 23 26 40976 5.1152 21 1500 0 0 0 0 0 0 0
83 23.1 26 40976 5.1152 11 1500 0 0 0 0 0 0 0
84 23.2 26 40976 5.1152 6 1500 0 0 0 0 0 0 0
85 23.3 26 40976 5.1152 3 1500 0 0 0 0 0 0 0
86 23.4 26 40976 5.1152 2 1500 0 0 0 0 0 0 0
87 23.5 26 40976 5.1152 1 1500 0 0 0 0 0 0 0
88 23.6 26 40976 5.1152 1 1500 0 0 0 0 0 0 0
89 23.7 26 40976 5.1152 0 1500 0 0 0 0 0 0 0
90 23.8 26 40976 5.1152 0 1500 0 0 0 0 0 0 0
91 23.9 26 40976 5.1152 0 1500 0 0 0 0 0 0 0
92 24 26 40976 5.1152 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,92 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
18;27;42016;5.332;1500;1500;0;0;0;0;0;0;0
18.1;27;42016;5.332;1500;1500;0;0;0;0;0;0;0
18.2;27;42016;5.332;1500;1500;0;0;0;0;0;0;0
18.3;27;42016;5.332;1500;1500;0;0;0;0;0;0;0
18.4;27;42016;5.332;1500;1500;0;0;0;0;0;0;0
18.5;27;42016;5.332;1500;1500;0;0;0;0;0;0;0
18.6;27;42016;5.332;1465;1500;0;0;0;0;0;0;0
18.7;27;42016;5.332;1430;1500;0;0;0;0;0;0;0
18.8;27;42016;5.332;1397;1500;0;0;0;0;0;0;0
18.9;27;42016;5.332;1364;1500;0;0;0;0;0;0;0
19;27;42016;5.332;1332;1500;0;0;0;0;0;0;0
19.1;27;42016;5.332;1092;1500;0;0;0;0;0;0;0
19.2;27;42016;5.332;896;1500;0;0;0;0;0;0;0
19.3;27;42016;5.332;735;1500;0;0;0;0;0;0;0
19.4;27;42016;5.332;603;1500;0;0;0;0;0;0;0
19.5;27;42016;5.332;494;1500;0;0;0;0;0;0;0
19.6;27;42016;5.332;572;1500;0;0;0;0;0;0;0
19.7;27;42016;5.332;662;1500;0;0;0;0;0;0;0
19.8;27;42016;5.332;766;1500;0;0;0;0;0;0;0
19.9;27;42016;5.332;886;1500;0;0;0;0;0;0;0
20;27;42016;5.332;1025;1500;0;0;0;0;0;0;0
20.1;27;42016;5.332;1041;1500;0;0;0;0;0;0;0
20.2;27;42016;5.332;1058;1500;0;0;0;0;0;0;0
20.3;27;42016;5.332;1074;1500;0;0;0;0;0;0;0
20.4;27;42016;5.332;1091;1500;0;0;0;0;0;0;0
20.5;27;42016;5.332;1109;1500;0;0;0;0;0;0;0
20.6;27;42016;5.332;811;1500;0;0;0;0;0;0;0
20.7;27;42016;5.332;594;1500;0;0;0;0;0;0;0
20.8;27;42016;5.332;434;1500;0;0;0;0;0;0;0
20.9;27;42016;5.332;318;1500;0;0;0;0;0;0;0
21;27;42016;5.332;233;1500;0;0;0;0;0;0;0
21.1;27;42016;5.332;187;1500;0;0;0;0;0;0;0
21.2;27;42016;5.332;150;1500;0;0;0;0;0;0;0
21.3;27;42016;5.332;121;1500;0;0;0;0;0;0;0
21.4;27;42016;5.332;97;1500;0;0;0;0;0;0;0
21.5;27;42016;5.332;78;1500;0;0;0;0;0;0;0
21.6;27;42016;5.332;78;1500;0;0;0;0;0;0;0
21.7;27;42016;5.332;77;1500;0;0;0;0;0;0;0
21.8;27;42016;5.332;76;1500;0;0;0;0;0;0;0
21.9;27;42016;5.332;76;1500;0;0;0;0;0;0;0
22;27;42016;5.332;75;1500;0;0;0;0;0;0;0
22.1;27;42016;5.332;75;1500;0;0;0;0;0;0;0
22.2;27;42016;5.332;75;1500;0;0;0;0;0;0;0
22.3;27;42016;5.332;75;1500;0;0;0;0;0;0;0
22.4;27;42016;5.332;75;1500;0;0;0;0;0;0;0
22.5;27;42016;5.332;75;1500;0;0;0;0;0;0;0
22.6;27;42016;5.332;75;1500;0;0;0;0;0;0;0
22.7;27;42016;5.332;75;1500;0;0;0;0;0;0;0
22.8;27;42016;5.332;75;1500;0;0;0;0;0;0;0
22.9;27;42016;5.332;75;1500;0;0;0;0;0;0;0
23;27;42016;5.332;75;1500;0;0;0;0;0;0;0
23.1;27;42016;5.332;75;1500;0;0;0;0;0;0;0
23.2;27;42016;5.332;74;1500;0;0;0;0;0;0;0
23.3;27;42016;5.332;74;1500;0;0;0;0;0;0;0
23.4;27;42016;5.332;74;1500;0;0;0;0;0;0;0
23.5;27;42016;5.332;74;1500;0;0;0;0;0;0;0
23.6;27;42016;5.332;68;1500;0;0;0;0;0;0;0
23.7;27;42016;5.332;63;1500;0;0;0;0;0;0;0
23.8;27;42016;5.332;59;1500;0;0;0;0;0;0;0
23.9;27;42016;5.332;55;1500;0;0;0;0;0;0;0
24;27;42016;5.332;51;1500;0;0;0;0;0;0;0
24.1;27;42016;5.332;38;1500;0;0;0;0;0;0;0
24.2;27;42016;5.332;29;1500;0;0;0;0;0;0;0
24.3;27;42016;5.332;21;1500;0;0;0;0;0;0;0
24.4;27;42016;5.332;16;1500;0;0;0;0;0;0;0
24.5;27;42016;5.332;12;1500;0;0;0;0;0;0;0
24.6;27;42016;5.332;7;1500;0;0;0;0;0;0;0
24.7;27;42016;5.332;4;1500;0;0;0;0;0;0;0
24.8;27;42016;5.332;3;1500;0;0;0;0;0;0;0
24.9;27;42016;5.332;2;1500;0;0;0;0;0;0;0
25;27;42016;5.332;1;1500;0;0;0;0;0;0;0
25.1;27;42016;5.332;1;1500;0;0;0;0;0;0;0
25.2;27;42016;5.332;0;1500;0;0;0;0;0;0;0
25.3;27;42016;5.332;0;1500;0;0;0;0;0;0;0
25.4;27;42016;5.332;0;1500;0;0;0;0;0;0;0
25.5;27;42016;5.332;0;1500;0;0;0;0;0;0;0
25.6;27;42016;5.332;0;1500;0;0;0;0;0;0;0
25.7;27;42016;5.332;0;1500;0;0;0;0;0;0;0
25.8;27;42016;5.332;0;1500;0;0;0;0;0;0;0
25.9;27;42016;5.332;0;1500;0;0;0;0;0;0;0
26;27;42016;5.332;0;1500;0;0;0;0;0;0;0
26.1;27;42016;5.332;0;1500;0;0;0;0;0;0;0
26.2;27;42016;5.332;0;1500;0;0;0;0;0;0;0
26.3;27;42016;5.332;0;1500;0;0;0;0;0;0;0
26.4;27;42016;5.332;0;1500;0;0;0;0;0;0;0
26.5;27;42016;5.332;0;1500;0;0;0;0;0;0;0
26.6;27;42016;5.332;0;1500;0;0;0;0;0;0;0
26.7;27;42016;5.332;0;1500;0;0;0;0;0;0;0
26.8;27;42016;5.332;0;1500;0;0;0;0;0;0;0
26.9;27;42016;5.332;0;1500;0;0;0;0;0;0;0
27;27;42016;5.332;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 18 27 42016 5.332 1500 1500 0 0 0 0 0 0 0
3 18.1 27 42016 5.332 1500 1500 0 0 0 0 0 0 0
4 18.2 27 42016 5.332 1500 1500 0 0 0 0 0 0 0
5 18.3 27 42016 5.332 1500 1500 0 0 0 0 0 0 0
6 18.4 27 42016 5.332 1500 1500 0 0 0 0 0 0 0
7 18.5 27 42016 5.332 1500 1500 0 0 0 0 0 0 0
8 18.6 27 42016 5.332 1465 1500 0 0 0 0 0 0 0
9 18.7 27 42016 5.332 1430 1500 0 0 0 0 0 0 0
10 18.8 27 42016 5.332 1397 1500 0 0 0 0 0 0 0
11 18.9 27 42016 5.332 1364 1500 0 0 0 0 0 0 0
12 19 27 42016 5.332 1332 1500 0 0 0 0 0 0 0
13 19.1 27 42016 5.332 1092 1500 0 0 0 0 0 0 0
14 19.2 27 42016 5.332 896 1500 0 0 0 0 0 0 0
15 19.3 27 42016 5.332 735 1500 0 0 0 0 0 0 0
16 19.4 27 42016 5.332 603 1500 0 0 0 0 0 0 0
17 19.5 27 42016 5.332 494 1500 0 0 0 0 0 0 0
18 19.6 27 42016 5.332 572 1500 0 0 0 0 0 0 0
19 19.7 27 42016 5.332 662 1500 0 0 0 0 0 0 0
20 19.8 27 42016 5.332 766 1500 0 0 0 0 0 0 0
21 19.9 27 42016 5.332 886 1500 0 0 0 0 0 0 0
22 20 27 42016 5.332 1025 1500 0 0 0 0 0 0 0
23 20.1 27 42016 5.332 1041 1500 0 0 0 0 0 0 0
24 20.2 27 42016 5.332 1058 1500 0 0 0 0 0 0 0
25 20.3 27 42016 5.332 1074 1500 0 0 0 0 0 0 0
26 20.4 27 42016 5.332 1091 1500 0 0 0 0 0 0 0
27 20.5 27 42016 5.332 1109 1500 0 0 0 0 0 0 0
28 20.6 27 42016 5.332 811 1500 0 0 0 0 0 0 0
29 20.7 27 42016 5.332 594 1500 0 0 0 0 0 0 0
30 20.8 27 42016 5.332 434 1500 0 0 0 0 0 0 0
31 20.9 27 42016 5.332 318 1500 0 0 0 0 0 0 0
32 21 27 42016 5.332 233 1500 0 0 0 0 0 0 0
33 21.1 27 42016 5.332 187 1500 0 0 0 0 0 0 0
34 21.2 27 42016 5.332 150 1500 0 0 0 0 0 0 0
35 21.3 27 42016 5.332 121 1500 0 0 0 0 0 0 0
36 21.4 27 42016 5.332 97 1500 0 0 0 0 0 0 0
37 21.5 27 42016 5.332 78 1500 0 0 0 0 0 0 0
38 21.6 27 42016 5.332 78 1500 0 0 0 0 0 0 0
39 21.7 27 42016 5.332 77 1500 0 0 0 0 0 0 0
40 21.8 27 42016 5.332 76 1500 0 0 0 0 0 0 0
41 21.9 27 42016 5.332 76 1500 0 0 0 0 0 0 0
42 22 27 42016 5.332 75 1500 0 0 0 0 0 0 0
43 22.1 27 42016 5.332 75 1500 0 0 0 0 0 0 0
44 22.2 27 42016 5.332 75 1500 0 0 0 0 0 0 0
45 22.3 27 42016 5.332 75 1500 0 0 0 0 0 0 0
46 22.4 27 42016 5.332 75 1500 0 0 0 0 0 0 0
47 22.5 27 42016 5.332 75 1500 0 0 0 0 0 0 0
48 22.6 27 42016 5.332 75 1500 0 0 0 0 0 0 0
49 22.7 27 42016 5.332 75 1500 0 0 0 0 0 0 0
50 22.8 27 42016 5.332 75 1500 0 0 0 0 0 0 0
51 22.9 27 42016 5.332 75 1500 0 0 0 0 0 0 0
52 23 27 42016 5.332 75 1500 0 0 0 0 0 0 0
53 23.1 27 42016 5.332 75 1500 0 0 0 0 0 0 0
54 23.2 27 42016 5.332 74 1500 0 0 0 0 0 0 0
55 23.3 27 42016 5.332 74 1500 0 0 0 0 0 0 0
56 23.4 27 42016 5.332 74 1500 0 0 0 0 0 0 0
57 23.5 27 42016 5.332 74 1500 0 0 0 0 0 0 0
58 23.6 27 42016 5.332 68 1500 0 0 0 0 0 0 0
59 23.7 27 42016 5.332 63 1500 0 0 0 0 0 0 0
60 23.8 27 42016 5.332 59 1500 0 0 0 0 0 0 0
61 23.9 27 42016 5.332 55 1500 0 0 0 0 0 0 0
62 24 27 42016 5.332 51 1500 0 0 0 0 0 0 0
63 24.1 27 42016 5.332 38 1500 0 0 0 0 0 0 0
64 24.2 27 42016 5.332 29 1500 0 0 0 0 0 0 0
65 24.3 27 42016 5.332 21 1500 0 0 0 0 0 0 0
66 24.4 27 42016 5.332 16 1500 0 0 0 0 0 0 0
67 24.5 27 42016 5.332 12 1500 0 0 0 0 0 0 0
68 24.6 27 42016 5.332 7 1500 0 0 0 0 0 0 0
69 24.7 27 42016 5.332 4 1500 0 0 0 0 0 0 0
70 24.8 27 42016 5.332 3 1500 0 0 0 0 0 0 0
71 24.9 27 42016 5.332 2 1500 0 0 0 0 0 0 0
72 25 27 42016 5.332 1 1500 0 0 0 0 0 0 0
73 25.1 27 42016 5.332 1 1500 0 0 0 0 0 0 0
74 25.2 27 42016 5.332 0 1500 0 0 0 0 0 0 0
75 25.3 27 42016 5.332 0 1500 0 0 0 0 0 0 0
76 25.4 27 42016 5.332 0 1500 0 0 0 0 0 0 0
77 25.5 27 42016 5.332 0 1500 0 0 0 0 0 0 0
78 25.6 27 42016 5.332 0 1500 0 0 0 0 0 0 0
79 25.7 27 42016 5.332 0 1500 0 0 0 0 0 0 0
80 25.8 27 42016 5.332 0 1500 0 0 0 0 0 0 0
81 25.9 27 42016 5.332 0 1500 0 0 0 0 0 0 0
82 26 27 42016 5.332 0 1500 0 0 0 0 0 0 0
83 26.1 27 42016 5.332 0 1500 0 0 0 0 0 0 0
84 26.2 27 42016 5.332 0 1500 0 0 0 0 0 0 0
85 26.3 27 42016 5.332 0 1500 0 0 0 0 0 0 0
86 26.4 27 42016 5.332 0 1500 0 0 0 0 0 0 0
87 26.5 27 42016 5.332 0 1500 0 0 0 0 0 0 0
88 26.6 27 42016 5.332 0 1500 0 0 0 0 0 0 0
89 26.7 27 42016 5.332 0 1500 0 0 0 0 0 0 0
90 26.8 27 42016 5.332 0 1500 0 0 0 0 0 0 0
91 26.9 27 42016 5.332 0 1500 0 0 0 0 0 0 0
92 27 27 42016 5.332 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,92 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
18;28;44040;5.547;1500;1500;0;0;0;0;0;0;0
18.1;28;44040;5.547;1500;1500;0;0;0;0;0;0;0
18.2;28;44040;5.547;1500;1500;0;0;0;0;0;0;0
18.3;28;44040;5.547;1500;1500;0;0;0;0;0;0;0
18.4;28;44040;5.547;1500;1500;0;0;0;0;0;0;0
18.5;28;44040;5.547;1500;1500;0;0;0;0;0;0;0
18.6;28;44040;5.547;1500;1500;0;0;0;0;0;0;0
18.7;28;44040;5.547;1500;1500;0;0;0;0;0;0;0
18.8;28;44040;5.547;1500;1500;0;0;0;0;0;0;0
18.9;28;44040;5.547;1500;1500;0;0;0;0;0;0;0
19;28;44040;5.547;1500;1500;0;0;0;0;0;0;0
19.1;28;44040;5.547;1499;1500;0;0;0;0;0;0;0
19.2;28;44040;5.547;1498;1500;0;0;0;0;0;0;0
19.3;28;44040;5.547;1498;1500;0;0;0;0;0;0;0
19.4;28;44040;5.547;1497;1500;0;0;0;0;0;0;0
19.5;28;44040;5.547;1496;1500;0;0;0;0;0;0;0
19.6;28;44040;5.547;1429;1500;0;0;0;0;0;0;0
19.7;28;44040;5.547;1366;1500;0;0;0;0;0;0;0
19.8;28;44040;5.547;1305;1500;0;0;0;0;0;0;0
19.9;28;44040;5.547;1247;1500;0;0;0;0;0;0;0
20;28;44040;5.547;1191;1500;0;0;0;0;0;0;0
20.1;28;44040;5.547;1234;1500;0;0;0;0;0;0;0
20.2;28;44040;5.547;1279;1500;0;0;0;0;0;0;0
20.3;28;44040;5.547;1325;1500;0;0;0;0;0;0;0
20.4;28;44040;5.547;1373;1500;0;0;0;0;0;0;0
20.5;28;44040;5.547;1423;1500;0;0;0;0;0;0;0
20.6;28;44040;5.547;1426;1500;0;0;0;0;0;0;0
20.7;28;44040;5.547;1429;1500;0;0;0;0;0;0;0
20.8;28;44040;5.547;1432;1500;0;0;0;0;0;0;0
20.9;28;44040;5.547;1435;1500;0;0;0;0;0;0;0
21;28;44040;5.547;1438;1500;0;0;0;0;0;0;0
21.1;28;44040;5.547;1207;1500;0;0;0;0;0;0;0
21.2;28;44040;5.547;1014;1500;0;0;0;0;0;0;0
21.3;28;44040;5.547;851;1500;0;0;0;0;0;0;0
21.4;28;44040;5.547;715;1500;0;0;0;0;0;0;0
21.5;28;44040;5.547;600;1500;0;0;0;0;0;0;0
21.6;28;44040;5.547;418;1500;0;0;0;0;0;0;0
21.7;28;44040;5.547;290;1500;0;0;0;0;0;0;0
21.8;28;44040;5.547;202;1500;0;0;0;0;0;0;0
21.9;28;44040;5.547;140;1500;0;0;0;0;0;0;0
22;28;44040;5.547;98;1500;0;0;0;0;0;0;0
22.1;28;44040;5.547;93;1500;0;0;0;0;0;0;0
22.2;28;44040;5.547;88;1500;0;0;0;0;0;0;0
22.3;28;44040;5.547;83;1500;0;0;0;0;0;0;0
22.4;28;44040;5.547;79;1500;0;0;0;0;0;0;0
22.5;28;44040;5.547;75;1500;0;0;0;0;0;0;0
22.6;28;44040;5.547;0;1500;0;0;0;0;0;0;0
22.7;28;44040;5.547;0;1500;0;0;0;0;0;0;0
22.8;28;44040;5.547;0;1500;0;0;0;0;0;0;0
22.9;28;44040;5.547;0;1500;0;0;0;0;0;0;0
23;28;44040;5.547;0;1500;0;0;0;0;0;0;0
23.1;28;44040;5.547;0;1500;0;0;0;0;0;0;0
23.2;28;44040;5.547;0;1500;0;0;0;0;0;0;0
23.3;28;44040;5.547;0;1500;0;0;0;0;0;0;0
23.4;28;44040;5.547;0;1500;0;0;0;0;0;0;0
23.5;28;44040;5.547;0;1500;0;0;0;0;0;0;0
23.6;28;44040;5.547;0;1500;0;0;0;0;0;0;0
23.7;28;44040;5.547;0;1500;0;0;0;0;0;0;0
23.8;28;44040;5.547;0;1500;0;0;0;0;0;0;0
23.9;28;44040;5.547;0;1500;0;0;0;0;0;0;0
24;28;44040;5.547;0;1500;0;0;0;0;0;0;0
24.1;28;44040;5.547;0;1500;0;0;0;0;0;0;0
24.2;28;44040;5.547;0;1500;0;0;0;0;0;0;0
24.3;28;44040;5.547;0;1500;0;0;0;0;0;0;0
24.4;28;44040;5.547;0;1500;0;0;0;0;0;0;0
24.5;28;44040;5.547;0;1500;0;0;0;0;0;0;0
24.6;28;44040;5.547;0;1500;0;0;0;0;0;0;0
24.7;28;44040;5.547;0;1500;0;0;0;0;0;0;0
24.8;28;44040;5.547;0;1500;0;0;0;0;0;0;0
24.9;28;44040;5.547;0;1500;0;0;0;0;0;0;0
25;28;44040;5.547;0;1500;0;0;0;0;0;0;0
25.1;28;44040;5.547;0;1500;0;0;0;0;0;0;0
25.2;28;44040;5.547;0;1500;0;0;0;0;0;0;0
25.3;28;44040;5.547;0;1500;0;0;0;0;0;0;0
25.4;28;44040;5.547;0;1500;0;0;0;0;0;0;0
25.5;28;44040;5.547;0;1500;0;0;0;0;0;0;0
25.6;28;44040;5.547;0;1500;0;0;0;0;0;0;0
25.7;28;44040;5.547;0;1500;0;0;0;0;0;0;0
25.8;28;44040;5.547;0;1500;0;0;0;0;0;0;0
25.9;28;44040;5.547;0;1500;0;0;0;0;0;0;0
26;28;44040;5.547;0;1500;0;0;0;0;0;0;0
26.1;28;44040;5.547;0;1500;0;0;0;0;0;0;0
26.2;28;44040;5.547;0;1500;0;0;0;0;0;0;0
26.3;28;44040;5.547;0;1500;0;0;0;0;0;0;0
26.4;28;44040;5.547;0;1500;0;0;0;0;0;0;0
26.5;28;44040;5.547;0;1500;0;0;0;0;0;0;0
26.6;28;44040;5.547;0;1500;0;0;0;0;0;0;0
26.7;28;44040;5.547;0;1500;0;0;0;0;0;0;0
26.8;28;44040;5.547;0;1500;0;0;0;0;0;0;0
26.9;28;44040;5.547;0;1500;0;0;0;0;0;0;0
27;28;44040;5.547;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 18 28 44040 5.547 1500 1500 0 0 0 0 0 0 0
3 18.1 28 44040 5.547 1500 1500 0 0 0 0 0 0 0
4 18.2 28 44040 5.547 1500 1500 0 0 0 0 0 0 0
5 18.3 28 44040 5.547 1500 1500 0 0 0 0 0 0 0
6 18.4 28 44040 5.547 1500 1500 0 0 0 0 0 0 0
7 18.5 28 44040 5.547 1500 1500 0 0 0 0 0 0 0
8 18.6 28 44040 5.547 1500 1500 0 0 0 0 0 0 0
9 18.7 28 44040 5.547 1500 1500 0 0 0 0 0 0 0
10 18.8 28 44040 5.547 1500 1500 0 0 0 0 0 0 0
11 18.9 28 44040 5.547 1500 1500 0 0 0 0 0 0 0
12 19 28 44040 5.547 1500 1500 0 0 0 0 0 0 0
13 19.1 28 44040 5.547 1499 1500 0 0 0 0 0 0 0
14 19.2 28 44040 5.547 1498 1500 0 0 0 0 0 0 0
15 19.3 28 44040 5.547 1498 1500 0 0 0 0 0 0 0
16 19.4 28 44040 5.547 1497 1500 0 0 0 0 0 0 0
17 19.5 28 44040 5.547 1496 1500 0 0 0 0 0 0 0
18 19.6 28 44040 5.547 1429 1500 0 0 0 0 0 0 0
19 19.7 28 44040 5.547 1366 1500 0 0 0 0 0 0 0
20 19.8 28 44040 5.547 1305 1500 0 0 0 0 0 0 0
21 19.9 28 44040 5.547 1247 1500 0 0 0 0 0 0 0
22 20 28 44040 5.547 1191 1500 0 0 0 0 0 0 0
23 20.1 28 44040 5.547 1234 1500 0 0 0 0 0 0 0
24 20.2 28 44040 5.547 1279 1500 0 0 0 0 0 0 0
25 20.3 28 44040 5.547 1325 1500 0 0 0 0 0 0 0
26 20.4 28 44040 5.547 1373 1500 0 0 0 0 0 0 0
27 20.5 28 44040 5.547 1423 1500 0 0 0 0 0 0 0
28 20.6 28 44040 5.547 1426 1500 0 0 0 0 0 0 0
29 20.7 28 44040 5.547 1429 1500 0 0 0 0 0 0 0
30 20.8 28 44040 5.547 1432 1500 0 0 0 0 0 0 0
31 20.9 28 44040 5.547 1435 1500 0 0 0 0 0 0 0
32 21 28 44040 5.547 1438 1500 0 0 0 0 0 0 0
33 21.1 28 44040 5.547 1207 1500 0 0 0 0 0 0 0
34 21.2 28 44040 5.547 1014 1500 0 0 0 0 0 0 0
35 21.3 28 44040 5.547 851 1500 0 0 0 0 0 0 0
36 21.4 28 44040 5.547 715 1500 0 0 0 0 0 0 0
37 21.5 28 44040 5.547 600 1500 0 0 0 0 0 0 0
38 21.6 28 44040 5.547 418 1500 0 0 0 0 0 0 0
39 21.7 28 44040 5.547 290 1500 0 0 0 0 0 0 0
40 21.8 28 44040 5.547 202 1500 0 0 0 0 0 0 0
41 21.9 28 44040 5.547 140 1500 0 0 0 0 0 0 0
42 22 28 44040 5.547 98 1500 0 0 0 0 0 0 0
43 22.1 28 44040 5.547 93 1500 0 0 0 0 0 0 0
44 22.2 28 44040 5.547 88 1500 0 0 0 0 0 0 0
45 22.3 28 44040 5.547 83 1500 0 0 0 0 0 0 0
46 22.4 28 44040 5.547 79 1500 0 0 0 0 0 0 0
47 22.5 28 44040 5.547 75 1500 0 0 0 0 0 0 0
48 22.6 28 44040 5.547 0 1500 0 0 0 0 0 0 0
49 22.7 28 44040 5.547 0 1500 0 0 0 0 0 0 0
50 22.8 28 44040 5.547 0 1500 0 0 0 0 0 0 0
51 22.9 28 44040 5.547 0 1500 0 0 0 0 0 0 0
52 23 28 44040 5.547 0 1500 0 0 0 0 0 0 0
53 23.1 28 44040 5.547 0 1500 0 0 0 0 0 0 0
54 23.2 28 44040 5.547 0 1500 0 0 0 0 0 0 0
55 23.3 28 44040 5.547 0 1500 0 0 0 0 0 0 0
56 23.4 28 44040 5.547 0 1500 0 0 0 0 0 0 0
57 23.5 28 44040 5.547 0 1500 0 0 0 0 0 0 0
58 23.6 28 44040 5.547 0 1500 0 0 0 0 0 0 0
59 23.7 28 44040 5.547 0 1500 0 0 0 0 0 0 0
60 23.8 28 44040 5.547 0 1500 0 0 0 0 0 0 0
61 23.9 28 44040 5.547 0 1500 0 0 0 0 0 0 0
62 24 28 44040 5.547 0 1500 0 0 0 0 0 0 0
63 24.1 28 44040 5.547 0 1500 0 0 0 0 0 0 0
64 24.2 28 44040 5.547 0 1500 0 0 0 0 0 0 0
65 24.3 28 44040 5.547 0 1500 0 0 0 0 0 0 0
66 24.4 28 44040 5.547 0 1500 0 0 0 0 0 0 0
67 24.5 28 44040 5.547 0 1500 0 0 0 0 0 0 0
68 24.6 28 44040 5.547 0 1500 0 0 0 0 0 0 0
69 24.7 28 44040 5.547 0 1500 0 0 0 0 0 0 0
70 24.8 28 44040 5.547 0 1500 0 0 0 0 0 0 0
71 24.9 28 44040 5.547 0 1500 0 0 0 0 0 0 0
72 25 28 44040 5.547 0 1500 0 0 0 0 0 0 0
73 25.1 28 44040 5.547 0 1500 0 0 0 0 0 0 0
74 25.2 28 44040 5.547 0 1500 0 0 0 0 0 0 0
75 25.3 28 44040 5.547 0 1500 0 0 0 0 0 0 0
76 25.4 28 44040 5.547 0 1500 0 0 0 0 0 0 0
77 25.5 28 44040 5.547 0 1500 0 0 0 0 0 0 0
78 25.6 28 44040 5.547 0 1500 0 0 0 0 0 0 0
79 25.7 28 44040 5.547 0 1500 0 0 0 0 0 0 0
80 25.8 28 44040 5.547 0 1500 0 0 0 0 0 0 0
81 25.9 28 44040 5.547 0 1500 0 0 0 0 0 0 0
82 26 28 44040 5.547 0 1500 0 0 0 0 0 0 0
83 26.1 28 44040 5.547 0 1500 0 0 0 0 0 0 0
84 26.2 28 44040 5.547 0 1500 0 0 0 0 0 0 0
85 26.3 28 44040 5.547 0 1500 0 0 0 0 0 0 0
86 26.4 28 44040 5.547 0 1500 0 0 0 0 0 0 0
87 26.5 28 44040 5.547 0 1500 0 0 0 0 0 0 0
88 26.6 28 44040 5.547 0 1500 0 0 0 0 0 0 0
89 26.7 28 44040 5.547 0 1500 0 0 0 0 0 0 0
90 26.8 28 44040 5.547 0 1500 0 0 0 0 0 0 0
91 26.9 28 44040 5.547 0 1500 0 0 0 0 0 0 0
92 27 28 44040 5.547 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,62 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
-4;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-3.9;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-3.8;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-3.7;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-3.6;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-3.5;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-3.4;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-3.3;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-3.2;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-3.1;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-3;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-2.9;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-2.8;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-2.7;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-2.6;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-2.5;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-2.4;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-2.3;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-2.2;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-2.1;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-2;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-1.9;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-1.8;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-1.7;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-1.6;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-1.5;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
-1.4;2;2976;0.377;1486;1500;0;0;0;0;0;0;0
-1.3;2;2976;0.377;1473;1500;0;0;0;0;0;0;0
-1.2;2;2976;0.377;1459;1500;0;0;0;0;0;0;0
-1.1;2;2976;0.377;1446;1500;0;0;0;0;0;0;0
-1;2;2976;0.377;1432;1500;0;0;0;0;0;0;0
-0.9;2;2976;0.377;1149;1500;0;0;0;0;0;0;0
-0.8;2;2976;0.377;921;1500;0;0;0;0;0;0;0
-0.7;2;2976;0.377;738;1500;0;0;0;0;0;0;0
-0.6;2;2976;0.377;592;1500;0;0;0;0;0;0;0
-0.5;2;2976;0.377;475;1500;0;0;0;0;0;0;0
-0.4;2;2976;0.377;292;1500;0;0;0;0;0;0;0
-0.3;2;2976;0.377;179;1500;0;0;0;0;0;0;0
-0.2;2;2976;0.377;110;1500;0;0;0;0;0;0;0
-0.1;2;2976;0.377;68;1500;0;0;0;0;0;0;0
0;2;2976;0.377;42;1500;0;0;0;0;0;0;0
0.1;2;2976;0.377;22;1500;0;0;0;0;0;0;0
0.2;2;2976;0.377;11;1500;0;0;0;0;0;0;0
0.3;2;2976;0.377;6;1500;0;0;0;0;0;0;0
0.4;2;2976;0.377;3;1500;0;0;0;0;0;0;0
0.5;2;2976;0.377;2;1500;0;0;0;0;0;0;0
0.6;2;2976;0.377;0;1500;0;0;0;0;0;0;0
0.7;2;2976;0.377;0;1500;0;0;0;0;0;0;0
0.8;2;2976;0.377;0;1500;0;0;0;0;0;0;0
0.9;2;2976;0.377;0;1500;0;0;0;0;0;0;0
1;2;2976;0.377;0;1500;0;0;0;0;0;0;0
1.1;2;2976;0.377;0;1500;0;0;0;0;0;0;0
1.2;2;2976;0.377;0;1500;0;0;0;0;0;0;0
1.3;2;2976;0.377;0;1500;0;0;0;0;0;0;0
1.4;2;2976;0.377;0;1500;0;0;0;0;0;0;0
1.5;2;2976;0.377;0;1500;0;0;0;0;0;0;0
1.6;2;2976;0.377;0;1500;0;0;0;0;0;0;0
1.7;2;2976;0.377;0;1500;0;0;0;0;0;0;0
1.8;2;2976;0.377;0;1500;0;0;0;0;0;0;0
1.9;2;2976;0.377;0;1500;0;0;0;0;0;0;0
2;2;2976;0.377;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 -4 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
3 -3.9 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
4 -3.8 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
5 -3.7 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
6 -3.6 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
7 -3.5 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
8 -3.4 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
9 -3.3 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
10 -3.2 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
11 -3.1 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
12 -3 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
13 -2.9 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
14 -2.8 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
15 -2.7 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
16 -2.6 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
17 -2.5 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
18 -2.4 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
19 -2.3 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
20 -2.2 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
21 -2.1 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
22 -2 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
23 -1.9 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
24 -1.8 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
25 -1.7 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
26 -1.6 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
27 -1.5 2 2976 0.377 1500 1500 0 0 0 0 0 0 0
28 -1.4 2 2976 0.377 1486 1500 0 0 0 0 0 0 0
29 -1.3 2 2976 0.377 1473 1500 0 0 0 0 0 0 0
30 -1.2 2 2976 0.377 1459 1500 0 0 0 0 0 0 0
31 -1.1 2 2976 0.377 1446 1500 0 0 0 0 0 0 0
32 -1 2 2976 0.377 1432 1500 0 0 0 0 0 0 0
33 -0.9 2 2976 0.377 1149 1500 0 0 0 0 0 0 0
34 -0.8 2 2976 0.377 921 1500 0 0 0 0 0 0 0
35 -0.7 2 2976 0.377 738 1500 0 0 0 0 0 0 0
36 -0.6 2 2976 0.377 592 1500 0 0 0 0 0 0 0
37 -0.5 2 2976 0.377 475 1500 0 0 0 0 0 0 0
38 -0.4 2 2976 0.377 292 1500 0 0 0 0 0 0 0
39 -0.3 2 2976 0.377 179 1500 0 0 0 0 0 0 0
40 -0.2 2 2976 0.377 110 1500 0 0 0 0 0 0 0
41 -0.1 2 2976 0.377 68 1500 0 0 0 0 0 0 0
42 0 2 2976 0.377 42 1500 0 0 0 0 0 0 0
43 0.1 2 2976 0.377 22 1500 0 0 0 0 0 0 0
44 0.2 2 2976 0.377 11 1500 0 0 0 0 0 0 0
45 0.3 2 2976 0.377 6 1500 0 0 0 0 0 0 0
46 0.4 2 2976 0.377 3 1500 0 0 0 0 0 0 0
47 0.5 2 2976 0.377 2 1500 0 0 0 0 0 0 0
48 0.6 2 2976 0.377 0 1500 0 0 0 0 0 0 0
49 0.7 2 2976 0.377 0 1500 0 0 0 0 0 0 0
50 0.8 2 2976 0.377 0 1500 0 0 0 0 0 0 0
51 0.9 2 2976 0.377 0 1500 0 0 0 0 0 0 0
52 1 2 2976 0.377 0 1500 0 0 0 0 0 0 0
53 1.1 2 2976 0.377 0 1500 0 0 0 0 0 0 0
54 1.2 2 2976 0.377 0 1500 0 0 0 0 0 0 0
55 1.3 2 2976 0.377 0 1500 0 0 0 0 0 0 0
56 1.4 2 2976 0.377 0 1500 0 0 0 0 0 0 0
57 1.5 2 2976 0.377 0 1500 0 0 0 0 0 0 0
58 1.6 2 2976 0.377 0 1500 0 0 0 0 0 0 0
59 1.7 2 2976 0.377 0 1500 0 0 0 0 0 0 0
60 1.8 2 2976 0.377 0 1500 0 0 0 0 0 0 0
61 1.9 2 2976 0.377 0 1500 0 0 0 0 0 0 0
62 2 2 2976 0.377 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,62 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
-4;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-3.9;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-3.8;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-3.7;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-3.6;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-3.5;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-3.4;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-3.3;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-3.2;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-3.1;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-3;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-2.9;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-2.8;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-2.7;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-2.6;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-2.5;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-2.4;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-2.3;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-2.2;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-2.1;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-2;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-1.9;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-1.8;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-1.7;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-1.6;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-1.5;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-1.4;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-1.3;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-1.2;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-1.1;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-1;3;3912;0.4902;1500;1500;0;0;0;0;0;0;0
-0.9;3;3912;0.4902;1499;1500;0;0;0;0;0;0;0
-0.8;3;3912;0.4902;1498;1500;0;0;0;0;0;0;0
-0.7;3;3912;0.4902;1496;1500;0;0;0;0;0;0;0
-0.6;3;3912;0.4902;1495;1500;0;0;0;0;0;0;0
-0.5;3;3912;0.4902;1494;1500;0;0;0;0;0;0;0
-0.4;3;3912;0.4902;1322;1500;0;0;0;0;0;0;0
-0.3;3;3912;0.4902;1169;1500;0;0;0;0;0;0;0
-0.2;3;3912;0.4902;1034;1500;0;0;0;0;0;0;0
-0.1;3;3912;0.4902;915;1500;0;0;0;0;0;0;0
0;3;3912;0.4902;809;1500;0;0;0;0;0;0;0
0.1;3;3912;0.4902;504;1500;0;0;0;0;0;0;0
0.2;3;3912;0.4902;314;1500;0;0;0;0;0;0;0
0.3;3;3912;0.4902;196;1500;0;0;0;0;0;0;0
0.4;3;3912;0.4902;122;1500;0;0;0;0;0;0;0
0.5;3;3912;0.4902;76;1500;0;0;0;0;0;0;0
0.6;3;3912;0.4902;37;1500;0;0;0;0;0;0;0
0.7;3;3912;0.4902;18;1500;0;0;0;0;0;0;0
0.8;3;3912;0.4902;9;1500;0;0;0;0;0;0;0
0.9;3;3912;0.4902;4;1500;0;0;0;0;0;0;0
1;3;3912;0.4902;2;1500;0;0;0;0;0;0;0
1.1;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
1.2;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
1.3;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
1.4;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
1.5;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
1.6;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
1.7;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
1.8;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
1.9;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
2;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 -4 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
3 -3.9 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
4 -3.8 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
5 -3.7 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
6 -3.6 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
7 -3.5 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
8 -3.4 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
9 -3.3 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
10 -3.2 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
11 -3.1 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
12 -3 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
13 -2.9 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
14 -2.8 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
15 -2.7 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
16 -2.6 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
17 -2.5 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
18 -2.4 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
19 -2.3 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
20 -2.2 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
21 -2.1 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
22 -2 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
23 -1.9 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
24 -1.8 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
25 -1.7 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
26 -1.6 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
27 -1.5 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
28 -1.4 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
29 -1.3 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
30 -1.2 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
31 -1.1 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
32 -1 3 3912 0.4902 1500 1500 0 0 0 0 0 0 0
33 -0.9 3 3912 0.4902 1499 1500 0 0 0 0 0 0 0
34 -0.8 3 3912 0.4902 1498 1500 0 0 0 0 0 0 0
35 -0.7 3 3912 0.4902 1496 1500 0 0 0 0 0 0 0
36 -0.6 3 3912 0.4902 1495 1500 0 0 0 0 0 0 0
37 -0.5 3 3912 0.4902 1494 1500 0 0 0 0 0 0 0
38 -0.4 3 3912 0.4902 1322 1500 0 0 0 0 0 0 0
39 -0.3 3 3912 0.4902 1169 1500 0 0 0 0 0 0 0
40 -0.2 3 3912 0.4902 1034 1500 0 0 0 0 0 0 0
41 -0.1 3 3912 0.4902 915 1500 0 0 0 0 0 0 0
42 0 3 3912 0.4902 809 1500 0 0 0 0 0 0 0
43 0.1 3 3912 0.4902 504 1500 0 0 0 0 0 0 0
44 0.2 3 3912 0.4902 314 1500 0 0 0 0 0 0 0
45 0.3 3 3912 0.4902 196 1500 0 0 0 0 0 0 0
46 0.4 3 3912 0.4902 122 1500 0 0 0 0 0 0 0
47 0.5 3 3912 0.4902 76 1500 0 0 0 0 0 0 0
48 0.6 3 3912 0.4902 37 1500 0 0 0 0 0 0 0
49 0.7 3 3912 0.4902 18 1500 0 0 0 0 0 0 0
50 0.8 3 3912 0.4902 9 1500 0 0 0 0 0 0 0
51 0.9 3 3912 0.4902 4 1500 0 0 0 0 0 0 0
52 1 3 3912 0.4902 2 1500 0 0 0 0 0 0 0
53 1.1 3 3912 0.4902 0 1500 0 0 0 0 0 0 0
54 1.2 3 3912 0.4902 0 1500 0 0 0 0 0 0 0
55 1.3 3 3912 0.4902 0 1500 0 0 0 0 0 0 0
56 1.4 3 3912 0.4902 0 1500 0 0 0 0 0 0 0
57 1.5 3 3912 0.4902 0 1500 0 0 0 0 0 0 0
58 1.6 3 3912 0.4902 0 1500 0 0 0 0 0 0 0
59 1.7 3 3912 0.4902 0 1500 0 0 0 0 0 0 0
60 1.8 3 3912 0.4902 0 1500 0 0 0 0 0 0 0
61 1.9 3 3912 0.4902 0 1500 0 0 0 0 0 0 0
62 2 3 3912 0.4902 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,62 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
-1;4;4736;0.6016;1500;1500;0;0;0;0;0;0;0
-0.9;4;4736;0.6016;1499;1500;0;0;0;0;0;0;0
-0.8;4;4736;0.6016;1498;1500;0;0;0;0;0;0;0
-0.7;4;4736;0.6016;1496;1500;0;0;0;0;0;0;0
-0.6;4;4736;0.6016;1495;1500;0;0;0;0;0;0;0
-0.5;4;4736;0.6016;1494;1500;0;0;0;0;0;0;0
-0.4;4;4736;0.6016;1322;1500;0;0;0;0;0;0;0
-0.3;4;4736;0.6016;1169;1500;0;0;0;0;0;0;0
-0.2;4;4736;0.6016;1034;1500;0;0;0;0;0;0;0
-0.1;4;4736;0.6016;915;1500;0;0;0;0;0;0;0
0;4;4736;0.6016;809;1500;0;0;0;0;0;0;0
0.1;4;4736;0.6016;504;1500;0;0;0;0;0;0;0
0.2;4;4736;0.6016;314;1500;0;0;0;0;0;0;0
0.3;4;4736;0.6016;196;1500;0;0;0;0;0;0;0
0.4;4;4736;0.6016;122;1500;0;0;0;0;0;0;0
0.5;4;4736;0.6016;76;1500;0;0;0;0;0;0;0
0.6;4;4736;0.6016;37;1500;0;0;0;0;0;0;0
0.7;4;4736;0.6016;18;1500;0;0;0;0;0;0;0
0.8;4;4736;0.6016;9;1500;0;0;0;0;0;0;0
0.9;4;4736;0.6016;4;1500;0;0;0;0;0;0;0
1;4;4736;0.6016;2;1500;0;0;0;0;0;0;0
1.1;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
1.2;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
1.3;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
1.4;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
1.5;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
1.6;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
1.7;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
1.8;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
1.9;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
2;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
2.1;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
2.2;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
2.3;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
2.4;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
2.5;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
2.6;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
2.7;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
2.8;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
2.9;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
3;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
3.1;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
3.2;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
3.3;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
3.4;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
3.5;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
3.6;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
3.7;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
3.8;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
3.9;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
4;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
4.1;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
4.2;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
4.3;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
4.4;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
4.5;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
4.6;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
4.7;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
4.8;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
4.9;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
5;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 -1 4 4736 0.6016 1500 1500 0 0 0 0 0 0 0
3 -0.9 4 4736 0.6016 1499 1500 0 0 0 0 0 0 0
4 -0.8 4 4736 0.6016 1498 1500 0 0 0 0 0 0 0
5 -0.7 4 4736 0.6016 1496 1500 0 0 0 0 0 0 0
6 -0.6 4 4736 0.6016 1495 1500 0 0 0 0 0 0 0
7 -0.5 4 4736 0.6016 1494 1500 0 0 0 0 0 0 0
8 -0.4 4 4736 0.6016 1322 1500 0 0 0 0 0 0 0
9 -0.3 4 4736 0.6016 1169 1500 0 0 0 0 0 0 0
10 -0.2 4 4736 0.6016 1034 1500 0 0 0 0 0 0 0
11 -0.1 4 4736 0.6016 915 1500 0 0 0 0 0 0 0
12 0 4 4736 0.6016 809 1500 0 0 0 0 0 0 0
13 0.1 4 4736 0.6016 504 1500 0 0 0 0 0 0 0
14 0.2 4 4736 0.6016 314 1500 0 0 0 0 0 0 0
15 0.3 4 4736 0.6016 196 1500 0 0 0 0 0 0 0
16 0.4 4 4736 0.6016 122 1500 0 0 0 0 0 0 0
17 0.5 4 4736 0.6016 76 1500 0 0 0 0 0 0 0
18 0.6 4 4736 0.6016 37 1500 0 0 0 0 0 0 0
19 0.7 4 4736 0.6016 18 1500 0 0 0 0 0 0 0
20 0.8 4 4736 0.6016 9 1500 0 0 0 0 0 0 0
21 0.9 4 4736 0.6016 4 1500 0 0 0 0 0 0 0
22 1 4 4736 0.6016 2 1500 0 0 0 0 0 0 0
23 1.1 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
24 1.2 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
25 1.3 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
26 1.4 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
27 1.5 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
28 1.6 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
29 1.7 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
30 1.8 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
31 1.9 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
32 2 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
33 2.1 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
34 2.2 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
35 2.3 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
36 2.4 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
37 2.5 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
38 2.6 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
39 2.7 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
40 2.8 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
41 2.9 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
42 3 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
43 3.1 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
44 3.2 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
45 3.3 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
46 3.4 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
47 3.5 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
48 3.6 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
49 3.7 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
50 3.8 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
51 3.9 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
52 4 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
53 4.1 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
54 4.2 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
55 4.3 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
56 4.4 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
57 4.5 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
58 4.6 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
59 4.7 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
60 4.8 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
61 4.9 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
62 5 4 4736 0.6016 0 1500 0 0 0 0 0 0 0
@@ -0,0 +1,62 @@
SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
-1;5;5888;0.7402;1500;1500;0;0;0;0;0;0;0
-0.9;5;5888;0.7402;1500;1500;0;0;0;0;0;0;0
-0.8;5;5888;0.7402;1500;1500;0;0;0;0;0;0;0
-0.7;5;5888;0.7402;1500;1500;0;0;0;0;0;0;0
-0.6;5;5888;0.7402;1500;1500;0;0;0;0;0;0;0
-0.5;5;5888;0.7402;1500;1500;0;0;0;0;0;0;0
-0.4;5;5888;0.7402;1500;1500;0;0;0;0;0;0;0
-0.3;5;5888;0.7402;1500;1500;0;0;0;0;0;0;0
-0.2;5;5888;0.7402;1500;1500;0;0;0;0;0;0;0
-0.1;5;5888;0.7402;1500;1500;0;0;0;0;0;0;0
0;5;5888;0.7402;1500;1500;0;0;0;0;0;0;0
0.1;5;5888;0.7402;1499;1500;0;0;0;0;0;0;0
0.2;5;5888;0.7402;1499;1500;0;0;0;0;0;0;0
0.3;5;5888;0.7402;1498;1500;0;0;0;0;0;0;0
0.4;5;5888;0.7402;1498;1500;0;0;0;0;0;0;0
0.5;5;5888;0.7402;1497;1500;0;0;0;0;0;0;0
0.6;5;5888;0.7402;1323;1500;0;0;0;0;0;0;0
0.7;5;5888;0.7402;1170;1500;0;0;0;0;0;0;0
0.8;5;5888;0.7402;1034;1500;0;0;0;0;0;0;0
0.9;5;5888;0.7402;914;1500;0;0;0;0;0;0;0
1;5;5888;0.7402;808;1500;0;0;0;0;0;0;0
1.1;5;5888;0.7402;513;1500;0;0;0;0;0;0;0
1.2;5;5888;0.7402;326;1500;0;0;0;0;0;0;0
1.3;5;5888;0.7402;207;1500;0;0;0;0;0;0;0
1.4;5;5888;0.7402;131;1500;0;0;0;0;0;0;0
1.5;5;5888;0.7402;83;1500;0;0;0;0;0;0;0
1.6;5;5888;0.7402;48;1500;0;0;0;0;0;0;0
1.7;5;5888;0.7402;28;1500;0;0;0;0;0;0;0
1.8;5;5888;0.7402;16;1500;0;0;0;0;0;0;0
1.9;5;5888;0.7402;9;1500;0;0;0;0;0;0;0
2;5;5888;0.7402;5;1500;0;0;0;0;0;0;0
2.1;5;5888;0.7402;2;1500;0;0;0;0;0;0;0
2.2;5;5888;0.7402;1;1500;0;0;0;0;0;0;0
2.3;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
2.4;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
2.5;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
2.6;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
2.7;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
2.8;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
2.9;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
3;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
3.1;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
3.2;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
3.3;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
3.4;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
3.5;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
3.6;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
3.7;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
3.8;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
3.9;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
4;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
4.1;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
4.2;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
4.3;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
4.4;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
4.5;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
4.6;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
4.7;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
4.8;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
4.9;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
5;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
1 SNR MCS TBS rate err0 trials0 err1 trials1 err2 trials2 err3 trials3 dci_err
2 -1 5 5888 0.7402 1500 1500 0 0 0 0 0 0 0
3 -0.9 5 5888 0.7402 1500 1500 0 0 0 0 0 0 0
4 -0.8 5 5888 0.7402 1500 1500 0 0 0 0 0 0 0
5 -0.7 5 5888 0.7402 1500 1500 0 0 0 0 0 0 0
6 -0.6 5 5888 0.7402 1500 1500 0 0 0 0 0 0 0
7 -0.5 5 5888 0.7402 1500 1500 0 0 0 0 0 0 0
8 -0.4 5 5888 0.7402 1500 1500 0 0 0 0 0 0 0
9 -0.3 5 5888 0.7402 1500 1500 0 0 0 0 0 0 0
10 -0.2 5 5888 0.7402 1500 1500 0 0 0 0 0 0 0
11 -0.1 5 5888 0.7402 1500 1500 0 0 0 0 0 0 0
12 0 5 5888 0.7402 1500 1500 0 0 0 0 0 0 0
13 0.1 5 5888 0.7402 1499 1500 0 0 0 0 0 0 0
14 0.2 5 5888 0.7402 1499 1500 0 0 0 0 0 0 0
15 0.3 5 5888 0.7402 1498 1500 0 0 0 0 0 0 0
16 0.4 5 5888 0.7402 1498 1500 0 0 0 0 0 0 0
17 0.5 5 5888 0.7402 1497 1500 0 0 0 0 0 0 0
18 0.6 5 5888 0.7402 1323 1500 0 0 0 0 0 0 0
19 0.7 5 5888 0.7402 1170 1500 0 0 0 0 0 0 0
20 0.8 5 5888 0.7402 1034 1500 0 0 0 0 0 0 0
21 0.9 5 5888 0.7402 914 1500 0 0 0 0 0 0 0
22 1 5 5888 0.7402 808 1500 0 0 0 0 0 0 0
23 1.1 5 5888 0.7402 513 1500 0 0 0 0 0 0 0
24 1.2 5 5888 0.7402 326 1500 0 0 0 0 0 0 0
25 1.3 5 5888 0.7402 207 1500 0 0 0 0 0 0 0
26 1.4 5 5888 0.7402 131 1500 0 0 0 0 0 0 0
27 1.5 5 5888 0.7402 83 1500 0 0 0 0 0 0 0
28 1.6 5 5888 0.7402 48 1500 0 0 0 0 0 0 0
29 1.7 5 5888 0.7402 28 1500 0 0 0 0 0 0 0
30 1.8 5 5888 0.7402 16 1500 0 0 0 0 0 0 0
31 1.9 5 5888 0.7402 9 1500 0 0 0 0 0 0 0
32 2 5 5888 0.7402 5 1500 0 0 0 0 0 0 0
33 2.1 5 5888 0.7402 2 1500 0 0 0 0 0 0 0
34 2.2 5 5888 0.7402 1 1500 0 0 0 0 0 0 0
35 2.3 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
36 2.4 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
37 2.5 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
38 2.6 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
39 2.7 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
40 2.8 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
41 2.9 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
42 3 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
43 3.1 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
44 3.2 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
45 3.3 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
46 3.4 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
47 3.5 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
48 3.6 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
49 3.7 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
50 3.8 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
51 3.9 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
52 4 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
53 4.1 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
54 4.2 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
55 4.3 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
56 4.4 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
57 4.5 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
58 4.6 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
59 4.7 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
60 4.8 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
61 4.9 5 5888 0.7402 0 1500 0 0 0 0 0 0 0
62 5 5 5888 0.7402 0 1500 0 0 0 0 0 0 0

Some files were not shown because too many files have changed in this diff Show More