Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
canghaiwuhen
OpenXG-RAN
Commits
175c813f
Commit
175c813f
authored
Sep 26, 2019
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Plain Diff
Merge with develop-nr
parents
6d6d0553
69aef468
Changes
26
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
371 additions
and
136 deletions
+371
-136
ci-scripts/Jenkinsfile-gitlab
ci-scripts/Jenkinsfile-gitlab
+1
-1
ci-scripts/Jenkinsfile-poll-gNB-UE
ci-scripts/Jenkinsfile-poll-gNB-UE
+4
-8
ci-scripts/main.py
ci-scripts/main.py
+46
-15
ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml
ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml
+3
-2
ci-scripts/xml_files/gnb_nr_ue_usrp_terminate.xml
ci-scripts/xml_files/gnb_nr_ue_usrp_terminate.xml
+44
-0
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+18
-7
common/utils/LOG/vcd_signal_dumper.c
common/utils/LOG/vcd_signal_dumper.c
+6
-0
common/utils/LOG/vcd_signal_dumper.h
common/utils/LOG/vcd_signal_dumper.h
+17
-3
common/utils/T/T_defs.h
common/utils/T/T_defs.h
+1
-1
common/utils/T/T_messages.txt
common/utils/T/T_messages.txt
+30
-0
executables/nr-gnb.c
executables/nr-gnb.c
+22
-0
executables/nr-ru.c
executables/nr-ru.c
+31
-22
executables/nr-uesoftmodem.c
executables/nr-uesoftmodem.c
+13
-2
executables/nr-uesoftmodem.h
executables/nr-uesoftmodem.h
+1
-0
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
+38
-38
nfapi/open-nFAPI/vnf/src/vnf_p7.c
nfapi/open-nFAPI/vnf/src/vnf_p7.c
+4
-2
openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c
openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c
+24
-24
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
+10
-2
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
+5
-1
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
+0
-6
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+24
-0
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
+1
-0
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+2
-0
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+5
-1
openair1/SIMULATION/NR_PHY/dlschsim.c
openair1/SIMULATION/NR_PHY/dlschsim.c
+19
-1
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+2
-0
No files found.
ci-scripts/Jenkinsfile-gitlab
View file @
175c813f
...
@@ -362,7 +362,7 @@ pipeline {
...
@@ -362,7 +362,7 @@ pipeline {
stage
(
"Test physical simulators"
)
{
stage
(
"Test physical simulators"
)
{
steps
{
steps
{
script
{
script
{
timeout
(
time:
20
,
unit:
'MINUTES'
)
{
timeout
(
time:
45
,
unit:
'MINUTES'
)
{
try
{
try
{
gitlabCommitStatus
(
name:
"Test phy-sim"
)
{
gitlabCommitStatus
(
name:
"Test phy-sim"
)
{
sh
"./ci-scripts/oai-ci-vm-tool test --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
sh
"./ci-scripts/oai-ci-vm-tool test --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
...
...
ci-scripts/Jenkinsfile-poll-gNB-UE
View file @
175c813f
...
@@ -51,14 +51,10 @@ def eNB_Repository
...
@@ -51,14 +51,10 @@ def eNB_Repository
def
eNB_Branch
def
eNB_Branch
def
eNB_CommitID
def
eNB_CommitID
def
eNB_AllowMergeRequestProcess
=
false
def
eNB_AllowMergeRequestProcess
=
false
def
eNB_TargetBranch
def
eNB_TargetBranch
=
"develop-nr"
def
PROJECT_NAME
=
"test-boris"
def
GIT_COMMIT_AUTHOR
def
GIT_COMMIT_AUTHORi
def
GIT_COMMIT_EMAIL
def
GIT_COMMIT_EMAIL
def
testStageName
def
testStageName
// Reversing list because pop() will take the last (right-most) element
//def modeList = ['TesteNB', 'TestUE', 'TesteNB'].reverse()
// Global Parameters not to break the main.py command line and code.
// Global Parameters not to break the main.py command line and code.
def
ADB_IPAddress
=
"none"
def
ADB_IPAddress
=
"none"
def
ADB_Username
=
"none"
def
ADB_Username
=
"none"
...
@@ -201,12 +197,12 @@ pipeline {
...
@@ -201,12 +197,12 @@ pipeline {
[
$class
:
'UsernamePasswordMultiBinding'
,
credentialsId:
"${params.eNB_Credentials}"
,
usernameVariable:
'eNB_Username'
,
passwordVariable:
'eNB_Password'
],
[
$class
:
'UsernamePasswordMultiBinding'
,
credentialsId:
"${params.eNB_Credentials}"
,
usernameVariable:
'eNB_Username'
,
passwordVariable:
'eNB_Password'
],
[
$class
:
'UsernamePasswordMultiBinding'
,
credentialsId:
"${params.UE_Credentials}"
,
usernameVariable:
'UE_Username'
,
passwordVariable:
'UE_Password'
]
[
$class
:
'UsernamePasswordMultiBinding'
,
credentialsId:
"${params.UE_Credentials}"
,
usernameVariable:
'UE_Username'
,
passwordVariable:
'UE_Password'
]
])
{
])
{
sh
"python3 main.py --mode=InitiateHtml --eNBRepository=${eNB_Repository} --eNBBranch=${eNB_Branch} --eNBCommitID=${eNB_CommitID} --eNB_AllowMerge=${eNB_AllowMergeRequestProcess} --ADBIPAddress=${ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} ${mainPythonAllXmlFiles}"
sh
"python3 main.py --mode=InitiateHtml --eNBRepository=${eNB_Repository} --eNBBranch=${eNB_Branch} --eNBCommitID=${eNB_CommitID} --eNB_AllowMerge=${eNB_AllowMergeRequestProcess} --
eNBTargetBranch=${eNB_TargetBranch} --
ADBIPAddress=${ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} ${mainPythonAllXmlFiles}"
String
[]
myXmlTestSuite
=
testXMLFile
.
split
(
"\\r?\\n"
)
String
[]
myXmlTestSuite
=
testXMLFile
.
split
(
"\\r?\\n"
)
for
(
xmlFile
in
myXmlTestSuite
)
{
for
(
xmlFile
in
myXmlTestSuite
)
{
if
(
fileExists
(
xmlFile
))
{
if
(
fileExists
(
xmlFile
))
{
try
{
try
{
sh
"python3 main.py --mode=TesteNB --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --
UEIPAddress=${params.eNB_IPAddress} --UEUserName=${eNB_Username} --UEPassword=${eNB_Password} --eNBBranch=${eNB_Branch} --eNBSourceCodePath=${params.eNB_SourceCodePath} --UESourceCodePath=${params.eNB_SourceCodePath} --eNBRepository=${eNB_Repository} --eNBCommitID=${eNB_CommitID} --ADBIPAddress=${ADB_IPAddress} --EPCIPAddress=${EPC_IPAddress}
--XMLTestFile=${xmlFile}"
sh
"python3 main.py --mode=TesteNB --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --
eNBSourceCodePath=${params.eNB_SourceCodePath} --UEIPAddress=${params.eNB_IPAddress} --UEUserName=${eNB_Username} --UEPassword=${eNB_Password} --UESourceCodePath=${params.eNB_SourceCodePath} --eNBRepository=${eNB_Repository} --eNBBranch=${eNB_Branch} --eNBCommitID=${eNB_CommitID} --eNB_AllowMerge=${eNB_AllowMergeRequestProcess} --eNBTargetBranch=${eNB_TargetBranch} --ADBIPAddress=${ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} --EPCIPAddress=${EPC_IPAddress} --EPCUserName=${EPC_Username} --EPCPassword=${EPC_Password} --EPCSourceCodePath=/tmp/${EPC_Username} --EPCType=ltebox
--XMLTestFile=${xmlFile}"
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
currentBuild
.
result
=
'FAILURE'
currentBuild
.
result
=
'FAILURE'
buildStageStatus
=
false
buildStageStatus
=
false
...
...
ci-scripts/main.py
View file @
175c813f
...
@@ -56,6 +56,7 @@ OAI_UE_PROCESS_COULD_NOT_SYNC = -21
...
@@ -56,6 +56,7 @@ OAI_UE_PROCESS_COULD_NOT_SYNC = -21
OAI_UE_PROCESS_ASSERTION
=
-
22
OAI_UE_PROCESS_ASSERTION
=
-
22
OAI_UE_PROCESS_FAILED
=
-
23
OAI_UE_PROCESS_FAILED
=
-
23
OAI_UE_PROCESS_NO_TUNNEL_INTERFACE
=
-
24
OAI_UE_PROCESS_NO_TUNNEL_INTERFACE
=
-
24
OAI_UE_PROCESS_SEG_FAULT
=
-
25
OAI_UE_PROCESS_OK
=
+
6
OAI_UE_PROCESS_OK
=
+
6
UE_STATUS_DETACHED
=
0
UE_STATUS_DETACHED
=
0
...
@@ -175,7 +176,6 @@ class SSHConnection():
...
@@ -175,7 +176,6 @@ class SSHConnection():
self
.
UELogFile
=
''
self
.
UELogFile
=
''
self
.
Build_OAI_UE_args
=
''
self
.
Build_OAI_UE_args
=
''
self
.
Initialize_OAI_UE_args
=
''
self
.
Initialize_OAI_UE_args
=
''
self
.
Initialize_OAI_eNB_args
=
''
self
.
clean_repository
=
True
self
.
clean_repository
=
True
self
.
flexranCtrlInstalled
=
False
self
.
flexranCtrlInstalled
=
False
self
.
flexranCtrlStarted
=
False
self
.
flexranCtrlStarted
=
False
...
@@ -762,13 +762,18 @@ class SSHConnection():
...
@@ -762,13 +762,18 @@ class SSHConnection():
self
.
command
(
'echo "ulimit -c unlimited && ./ran_build/build/'
+
self
.
air_interface
+
'-softmodem -O '
+
lSourcePath
+
'/'
+
ci_full_config_file
+
extra_options
+
'" > ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'echo "ulimit -c unlimited && ./ran_build/build/'
+
self
.
air_interface
+
'-softmodem -O '
+
lSourcePath
+
'/'
+
ci_full_config_file
+
extra_options
+
'" > ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'chmod 775 ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'chmod 775 ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
lPassWord
+
' | sudo -S rm -Rf enb_'
+
self
.
testCase_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
lPassWord
+
' | sudo -S rm -Rf enb_'
+
self
.
testCase_id
+
'.log'
,
'\$'
,
5
)
self
.
command
(
'echo '
+
lPassWord
+
' | sudo -S -E daemon --inherit --unsafe --name=enb'
+
str
(
self
.
eNB_instance
)
+
'_daemon --chdir='
+
lSourcePath
+
'/cmake_targets -o '
+
lSourcePath
+
'/cmake_targets/enb_'
+
self
.
testCase_id
+
'.log ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
command
(
'hostnamectl'
,
'\$'
,
5
)
result
=
re
.
search
(
'CentOS Linux 7'
,
str
(
self
.
ssh
.
before
))
if
result
is
not
None
:
self
.
command
(
'echo $USER; nohup sudo ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh > '
+
lSourcePath
+
'/cmake_targets/enb_'
+
self
.
testCase_id
+
'.log 2>&1 &'
,
lUserName
,
10
)
else
:
self
.
command
(
'echo '
+
lPassWord
+
' | sudo -S -E daemon --inherit --unsafe --name=enb'
+
str
(
self
.
eNB_instance
)
+
'_daemon --chdir='
+
lSourcePath
+
'/cmake_targets -o '
+
lSourcePath
+
'/cmake_targets/enb_'
+
self
.
testCase_id
+
'.log ./my-lte-softmodem-run'
+
str
(
self
.
eNB_instance
)
+
'.sh'
,
'\$'
,
5
)
self
.
eNBLogFiles
[
int
(
self
.
eNB_instance
)]
=
'enb_'
+
self
.
testCase_id
+
'.log'
self
.
eNBLogFiles
[
int
(
self
.
eNB_instance
)]
=
'enb_'
+
self
.
testCase_id
+
'.log'
if
extra_options
!=
''
:
if
extra_options
!=
''
:
self
.
eNBOptions
[
int
(
self
.
eNB_instance
)]
=
extra_options
self
.
eNBOptions
[
int
(
self
.
eNB_instance
)]
=
extra_options
time
.
sleep
(
6
)
time
.
sleep
(
6
)
doLoop
=
True
doLoop
=
True
loopCounter
=
1
0
loopCounter
=
2
0
while
(
doLoop
):
while
(
doLoop
):
loopCounter
=
loopCounter
-
1
loopCounter
=
loopCounter
-
1
if
(
loopCounter
==
0
):
if
(
loopCounter
==
0
):
...
@@ -983,14 +988,20 @@ class SSHConnection():
...
@@ -983,14 +988,20 @@ class SSHConnection():
tunnelInterfaceStatus
=
False
tunnelInterfaceStatus
=
False
else
:
else
:
tunnelInterfaceStatus
=
True
tunnelInterfaceStatus
=
True
else
:
tunnelInterfaceStatus
=
True
self
.
close
()
self
.
close
()
if
fullSyncStatus
and
gotSyncStatus
and
tunnelInterfaceStatus
:
if
fullSyncStatus
and
gotSyncStatus
and
tunnelInterfaceStatus
:
self
.
CreateHtmlTestRow
(
self
.
Initialize_OAI_UE_args
,
'OK'
,
ALL_PROCESSES_OK
,
'OAI UE'
)
self
.
CreateHtmlTestRow
(
self
.
Initialize_OAI_UE_args
,
'OK'
,
ALL_PROCESSES_OK
,
'OAI UE'
)
logging
.
debug
(
'
\u001B
[1m Initialize OAI UE Completed
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1m Initialize OAI UE Completed
\u001B
[0m'
)
else
:
else
:
self
.
htmlUEFailureMsg
=
'oaitun_ue1 interface is either NOT mounted or NOT configured'
if
self
.
air_interface
==
'lte'
:
self
.
CreateHtmlTestRow
(
self
.
Initialize_OAI_UE_args
,
'KO'
,
OAI_UE_PROCESS_NO_TUNNEL_INTERFACE
,
'OAI UE'
)
self
.
htmlUEFailureMsg
=
'oaitun_ue1 interface is either NOT mounted or NOT configured'
self
.
CreateHtmlTestRow
(
self
.
Initialize_OAI_UE_args
,
'KO'
,
OAI_UE_PROCESS_NO_TUNNEL_INTERFACE
,
'OAI UE'
)
else
:
self
.
htmlUEFailureMsg
=
'nr-uesoftmodem did NOT synced'
self
.
CreateHtmlTestRow
(
self
.
Initialize_OAI_UE_args
,
'KO'
,
OAI_UE_PROCESS_COULD_NOT_SYNC
,
'OAI UE'
)
logging
.
error
(
'
\033
[91mInitialize OAI UE Failed!
\033
[0m'
)
logging
.
error
(
'
\033
[91mInitialize OAI UE Failed!
\033
[0m'
)
self
.
AutoTerminateUEandeNB
()
self
.
AutoTerminateUEandeNB
()
...
@@ -2557,7 +2568,8 @@ class SSHConnection():
...
@@ -2557,7 +2568,8 @@ class SSHConnection():
multi_jobs
=
[]
multi_jobs
=
[]
status_queue
=
SimpleQueue
()
status_queue
=
SimpleQueue
()
# in noS1 config, no need to check status from EPC
# in noS1 config, no need to check status from EPC
result
=
re
.
search
(
'noS1'
,
str
(
self
.
Initialize_eNB_args
))
# in gNB also currently no need to check
result
=
re
.
search
(
'noS1|band78'
,
str
(
self
.
Initialize_eNB_args
))
if
result
is
None
:
if
result
is
None
:
p
=
Process
(
target
=
SSH
.
CheckHSSProcess
,
args
=
(
status_queue
,))
p
=
Process
(
target
=
SSH
.
CheckHSSProcess
,
args
=
(
status_queue
,))
p
.
daemon
=
True
p
.
daemon
=
True
...
@@ -3129,6 +3141,10 @@ class SSHConnection():
...
@@ -3129,6 +3141,10 @@ class SSHConnection():
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'
)
logging
.
debug
(
'
\u001B
[1;30;43m '
+
statMsg
+
'
\u001B
[0m'
)
self
.
htmlUEFailureMsg
+=
statMsg
+
'
\n
'
self
.
htmlUEFailureMsg
+=
statMsg
+
'
\n
'
if
not
frequency_found
:
statMsg
=
'NR-UE could NOT synch!'
logging
.
error
(
'
\u001B
[1;30;43m '
+
statMsg
+
'
\u001B
[0m'
)
self
.
htmlUEFailureMsg
+=
statMsg
+
'
\n
'
if
uciStatMsgCount
>
0
:
if
uciStatMsgCount
>
0
:
statMsg
=
'UE showed '
+
str
(
uciStatMsgCount
)
+
' "uci->stat" message(s)'
statMsg
=
'UE showed '
+
str
(
uciStatMsgCount
)
+
' "uci->stat" message(s)'
logging
.
debug
(
'
\u001B
[1;30;43m '
+
statMsg
+
'
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;30;43m '
+
statMsg
+
'
\u001B
[0m'
)
...
@@ -3143,20 +3159,32 @@ class SSHConnection():
...
@@ -3143,20 +3159,32 @@ class SSHConnection():
self
.
htmlUEFailureMsg
+=
statMsg
+
'
\n
'
self
.
htmlUEFailureMsg
+=
statMsg
+
'
\n
'
if
foundSegFault
:
if
foundSegFault
:
logging
.
debug
(
'
\u001B
[1;37;41m UE ended with a Segmentation Fault!
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m UE ended with a Segmentation Fault!
\u001B
[0m'
)
return
ENB_PROCESS_SEG_FAULT
if
not
nrUEFlag
:
return
OAI_UE_PROCESS_SEG_FAULT
else
:
if
not
frequency_found
:
return
OAI_UE_PROCESS_SEG_FAULT
if
foundAssertion
:
if
foundAssertion
:
logging
.
debug
(
'
\u001B
[1;30;43m UE showed an assertion!
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;30;43m UE showed an assertion!
\u001B
[0m'
)
self
.
htmlUEFailureMsg
+=
'UE showed an assertion!
\n
'
self
.
htmlUEFailureMsg
+=
'UE showed an assertion!
\n
'
if
not
mib_found
or
not
frequency_found
:
if
not
nrUEFlag
:
return
OAI_UE_PROCESS_ASSERTION
if
not
mib_found
or
not
frequency_found
:
return
OAI_UE_PROCESS_ASSERTION
else
:
if
not
frequency_found
:
return
OAI_UE_PROCESS_ASSERTION
if
foundRealTimeIssue
:
if
foundRealTimeIssue
:
logging
.
debug
(
'
\u001B
[1;37;41m UE faced real time issues!
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1;37;41m UE faced real time issues!
\u001B
[0m'
)
self
.
htmlUEFailureMsg
+=
'UE faced real time issues!
\n
'
self
.
htmlUEFailureMsg
+=
'UE faced real time issues!
\n
'
#return ENB_PROCESS_REALTIME_ISSUE
#return ENB_PROCESS_REALTIME_ISSUE
if
no_cell_sync_found
and
not
mib_found
:
if
nrUEFlag
:
logging
.
debug
(
'
\u001B
[1;37;41m UE could not synchronize !
\u001B
[0m'
)
if
not
frequency_found
:
self
.
htmlUEFailureMsg
+=
'UE could not synchronize!
\n
'
return
OAI_UE_PROCESS_COULD_NOT_SYNC
return
OAI_UE_PROCESS_COULD_NOT_SYNC
else
:
if
no_cell_sync_found
and
not
mib_found
:
logging
.
debug
(
'
\u001B
[1;37;41m UE could not synchronize !
\u001B
[0m'
)
self
.
htmlUEFailureMsg
+=
'UE could not synchronize!
\n
'
return
OAI_UE_PROCESS_COULD_NOT_SYNC
return
0
return
0
def
TerminateeNB
(
self
):
def
TerminateeNB
(
self
):
...
@@ -3379,13 +3407,16 @@ class SSHConnection():
...
@@ -3379,13 +3407,16 @@ class SSHConnection():
logging
.
debug
(
'
\u001B
[1m'
+
ueAction
+
' Failed
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1m'
+
ueAction
+
' Failed
\u001B
[0m'
)
self
.
htmlUEFailureMsg
=
'<b>'
+
ueAction
+
' Failed</b>
\n
'
+
self
.
htmlUEFailureMsg
self
.
htmlUEFailureMsg
=
'<b>'
+
ueAction
+
' Failed</b>
\n
'
+
self
.
htmlUEFailureMsg
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
logStatus
,
'UE'
)
self
.
CreateHtmlTestRow
(
'N/A'
,
'KO'
,
logStatus
,
'UE'
)
# for NR-UE at the moment keep running
if
self
.
air_interface
==
'lte'
:
if
self
.
air_interface
==
'lte'
:
# In case of sniffing on commercial eNBs we have random results
# In case of sniffing on commercial eNBs we have random results
# Not an error then
# Not an error then
if
(
logStatus
!=
OAI_UE_PROCESS_COULD_NOT_SYNC
)
or
(
ueAction
!=
'Sniffing'
):
if
(
logStatus
!=
OAI_UE_PROCESS_COULD_NOT_SYNC
)
or
(
ueAction
!=
'Sniffing'
):
self
.
Initialize_OAI_UE_args
=
''
self
.
Initialize_OAI_UE_args
=
''
self
.
AutoTerminateUEandeNB
()
self
.
AutoTerminateUEandeNB
()
else
:
if
(
logStatus
==
OAI_UE_PROCESS_COULD_NOT_SYNC
):
self
.
Initialize_OAI_UE_args
=
''
self
.
AutoTerminateUEandeNB
()
else
:
else
:
logging
.
debug
(
'
\u001B
[1m'
+
ueAction
+
' Completed
\u001B
[0m'
)
logging
.
debug
(
'
\u001B
[1m'
+
ueAction
+
' Completed
\u001B
[0m'
)
self
.
htmlUEFailureMsg
=
'<b>'
+
ueAction
+
' Completed</b>
\n
'
+
self
.
htmlUEFailureMsg
self
.
htmlUEFailureMsg
=
'<b>'
+
ueAction
+
' Completed</b>
\n
'
+
self
.
htmlUEFailureMsg
...
@@ -3938,7 +3969,7 @@ class SSHConnection():
...
@@ -3938,7 +3969,7 @@ class SSHConnection():
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - eNB process not found</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - eNB process not found</td>
\n
'
)
elif
(
processesStatus
==
OAI_UE_PROCESS_FAILED
):
elif
(
processesStatus
==
OAI_UE_PROCESS_FAILED
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - OAI UE process not found</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - OAI UE process not found</td>
\n
'
)
elif
(
processesStatus
==
ENB_PROCESS_SEG_FAULT
):
elif
(
processesStatus
==
ENB_PROCESS_SEG_FAULT
)
or
(
processesStatus
==
OAI_UE_PROCESS_SEG_FAULT
)
:
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - '
+
machine
+
' process ended in Segmentation Fault</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - '
+
machine
+
' process ended in Segmentation Fault</td>
\n
'
)
elif
(
processesStatus
==
ENB_PROCESS_ASSERTION
)
or
(
processesStatus
==
OAI_UE_PROCESS_ASSERTION
):
elif
(
processesStatus
==
ENB_PROCESS_ASSERTION
)
or
(
processesStatus
==
OAI_UE_PROCESS_ASSERTION
):
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - '
+
machine
+
' process ended in Assertion</td>
\n
'
)
self
.
htmlFile
.
write
(
' <td bgcolor = "lightcoral" >KO - '
+
machine
+
' process ended in Assertion</td>
\n
'
)
...
...
ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml
View file @
175c813f
...
@@ -24,15 +24,16 @@
...
@@ -24,15 +24,16 @@
<htmlTabRef>
run-OAI-gNB-NR-UE-USRP
</htmlTabRef>
<htmlTabRef>
run-OAI-gNB-NR-UE-USRP
</htmlTabRef>
<htmlTabName>
run OAI gNB and OAI NR UE USRP
</htmlTabName>
<htmlTabName>
run OAI gNB and OAI NR UE USRP
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<htmlTabIcon>
tasks
</htmlTabIcon>
<repeatCount>
4
</repeatCount>
<TestCaseRequestedList>
<TestCaseRequestedList>
090101 000001 090102 000002 090108 090109
090101 000001 090102 000002 090108 090109
</TestCaseRequestedList>
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"090101"
>
<testCase
id=
"090101"
>
<class>
Initialize_
OAI_
eNB
</class>
<class>
Initialize_eNB
</class>
<desc>
Initialize gNB USRP
</desc>
<desc>
Initialize gNB USRP
</desc>
<Initialize_
OAI_eNB_args>
-O ../../../ci-scripts/conf_files/gnb.band78.tm1.106PRB.usrpn300.conf
</Initialize_OAI
_eNB_args>
<Initialize_
eNB_args>
-O ci-scripts/conf_files/gnb.band78.tm1.106PRB.usrpn300.conf
</Initialize
_eNB_args>
<air_interface>
NR
</air_interface>
<air_interface>
NR
</air_interface>
</testCase>
</testCase>
...
...
ci-scripts/xml_files/gnb_nr_ue_usrp_terminate.xml
0 → 100644
View file @
175c813f
<!--
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>
run-OAI-gNB-NR-UE-USRP
</htmlTabRef>
<htmlTabName>
run OAI gNB and OAI NR UE USRP
</htmlTabName>
<htmlTabIcon>
tasks
</htmlTabIcon>
<TestCaseRequestedList>
090108 090109
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase
id=
"090108"
>
<class>
Terminate_OAI_UE
</class>
<desc>
Terminate NR UE
</desc>
<air_interface>
NR
</air_interface>
</testCase>
<testCase
id=
"090109"
>
<class>
Terminate_eNB
</class>
<desc>
Terminate gNB
</desc>
<air_interface>
NR
</air_interface>
</testCase>
</testCaseList>
cmake_targets/CMakeLists.txt
View file @
175c813f
...
@@ -244,6 +244,7 @@ add_boolean_option(TEST_OMG False "???")
...
@@ -244,6 +244,7 @@ add_boolean_option(TEST_OMG False "???")
add_boolean_option
(
DEBUG_OMG False
"???"
)
add_boolean_option
(
DEBUG_OMG False
"???"
)
add_boolean_option
(
PRINT_STATS False
"This adds the possibility to see the status"
)
add_boolean_option
(
PRINT_STATS False
"This adds the possibility to see the status"
)
add_boolean_option
(
T_TRACER True
"Activate the T tracer, a debugging/monitoring framework"
)
add_boolean_option
(
T_TRACER True
"Activate the T tracer, a debugging/monitoring framework"
)
add_boolean_option
(
ENABLE_VCD True
"always true now, time measurements of proc calls and var displays"
)
add_boolean_option
(
UE_AUTOTEST_TRACE False
"Activate UE autotest specific logs"
)
add_boolean_option
(
UE_AUTOTEST_TRACE False
"Activate UE autotest specific logs"
)
add_boolean_option
(
UE_DEBUG_TRACE False
"Activate UE debug trace"
)
add_boolean_option
(
UE_DEBUG_TRACE False
"Activate UE debug trace"
)
add_boolean_option
(
UE_TIMING_TRACE False
"Activate UE timing trace"
)
add_boolean_option
(
UE_TIMING_TRACE False
"Activate UE timing trace"
)
...
@@ -1032,7 +1033,7 @@ set(UTIL_SRC
...
@@ -1032,7 +1033,7 @@ set(UTIL_SRC
${
OPENAIR2_DIR
}
/UTIL/LISTS/list.c
${
OPENAIR2_DIR
}
/UTIL/LISTS/list.c
${
OPENAIR2_DIR
}
/UTIL/LISTS/list2.c
${
OPENAIR2_DIR
}
/UTIL/LISTS/list2.c
${
OPENAIR_DIR
}
/common/utils/LOG/log.c
${
OPENAIR_DIR
}
/common/utils/LOG/log.c
# ${OPENAIR2_DIR}/UTIL
/LOG/vcd_signal_dumper.c
${
OPENAIR_DIR
}
/common/utils
/LOG/vcd_signal_dumper.c
${
OPENAIR2_DIR
}
/UTIL/MATH/oml.c
${
OPENAIR2_DIR
}
/UTIL/MATH/oml.c
# ${OPENAIR2_DIR}/UTIL/MEM/mem_block.c
# ${OPENAIR2_DIR}/UTIL/MEM/mem_block.c
# ${OPENAIR2_DIR}/UTIL/OCG/OCG.c
# ${OPENAIR2_DIR}/UTIL/OCG/OCG.c
...
@@ -2575,6 +2576,7 @@ add_executable(nr-uesoftmodem
...
@@ -2575,6 +2576,7 @@ add_executable(nr-uesoftmodem
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
XFORMS_SOURCE_NR
}
${
XFORMS_SOURCE_NR
}
${
T_SOURCE
}
${
T_SOURCE
}
${
UTIL_SRC
}
${
CONFIG_SOURCES
}
${
CONFIG_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
)
)
...
@@ -2689,42 +2691,51 @@ add_executable(nr_dlschsim
...
@@ -2689,42 +2691,51 @@ add_executable(nr_dlschsim
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/dlschsim.c
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/dlschsim.c
${
OPENAIR_DIR
}
/common/utils/backtrace.c
${
OPENAIR_DIR
}
/common/utils/backtrace.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
UTIL_SRC
}
${
T_SOURCE
}
)
${
T_SOURCE
}
)
target_link_libraries
(
nr_dlschsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group m pthread
${
ATLAS_LIBRARIES
}
${
T_LIB
}
dl
)
target_link_libraries
(
nr_dlschsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group m pthread
${
ATLAS_LIBRARIES
}
${
T_LIB
}
${
ITTI_LIB
}
dl
)
add_executable
(
nr_pbchsim
add_executable
(
nr_pbchsim
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/pbchsim.c
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/pbchsim.c
${
OPENAIR_DIR
}
/common/utils/backtrace.c
${
OPENAIR_DIR
}
/common/utils/backtrace.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
UTIL_SRC
}
${
T_SOURCE
}
)
${
T_SOURCE
}
)
target_link_libraries
(
nr_pbchsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group m pthread
${
ATLAS_LIBRARIES
}
${
T_LIB
}
dl
)
target_link_libraries
(
nr_pbchsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group m pthread
${
ATLAS_LIBRARIES
}
${
T_LIB
}
${
ITTI_LIB
}
dl
)
#PUCCH ---> Prashanth
#PUCCH ---> Prashanth
add_executable
(
nr_pucchsim
add_executable
(
nr_pucchsim
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/pucchsim.c
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/pucchsim.c
${
OPENAIR_DIR
}
/common/utils/backtrace.c
${
OPENAIR_DIR
}
/common/utils/backtrace.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
UTIL_SRC
}
${
T_SOURCE
}
)
${
T_SOURCE
}
)
target_link_libraries
(
nr_pucchsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group m pthread
${
ATLAS_LIBRARIES
}
${
T_LIB
}
dl
)
target_link_libraries
(
nr_pucchsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group m pthread
${
ATLAS_LIBRARIES
}
${
T_LIB
}
${
ITTI_LIB
}
dl
)
#PUCCH ---> Prashanth
#PUCCH ---> Prashanth
add_executable
(
nr_dlsim
add_executable
(
nr_dlsim
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/dlsim.c
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/dlsim.c
${
OPENAIR_DIR
}
/common/utils/backtrace.c
${
OPENAIR_DIR
}
/common/utils/backtrace.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
UTIL_SRC
}
${
T_SOURCE
}
)
${
T_SOURCE
}
)
target_link_libraries
(
nr_dlsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_NR MAC_UE_NR MAC_NR_COMMON RRC_LIB NR_RRC_LIB CONFIG_LIB L2_NR -Wl,--end-group m pthread
${
ATLAS_LIBRARIES
}
${
T_LIB
}
dl
)
target_link_libraries
(
nr_dlsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_NR MAC_UE_NR MAC_NR_COMMON RRC_LIB NR_RRC_LIB CONFIG_LIB L2_NR -Wl,--end-group m pthread
${
ATLAS_LIBRARIES
}
${
T_LIB
}
${
ITTI_LIB
}
dl
)
add_executable
(
nr_ulschsim
add_executable
(
nr_ulschsim
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/ulschsim.c
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/ulschsim.c
${
OPENAIR_DIR
}
/common/utils/backtrace.c
${
OPENAIR_DIR
}
/common/utils/backtrace.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
UTIL_SRC
}
${
T_SOURCE
}
)
${
T_SOURCE
}
)
target_link_libraries
(
nr_ulschsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group m pthread
${
ATLAS_LIBRARIES
}
${
T_LIB
}
dl
)
target_link_libraries
(
nr_ulschsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group m pthread
${
ATLAS_LIBRARIES
}
${
T_LIB
}
${
ITTI_LIB
}
dl
)
add_executable
(
nr_ulsim
add_executable
(
nr_ulsim
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/ulsim.c
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/ulsim.c
${
OPENAIR_DIR
}
/common/utils/backtrace.c
${
OPENAIR_DIR
}
/common/utils/backtrace.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
UTIL_SRC
}
${
T_SOURCE
}
)
${
T_SOURCE
}
)
target_link_libraries
(
nr_ulsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_NR MAC_UE_NR MAC_NR_COMMON RRC_LIB NR_RRC_LIB CONFIG_LIB L2_NR -Wl,--end-group m pthread
${
ATLAS_LIBRARIES
}
${
T_LIB
}
dl
)
target_link_libraries
(
nr_ulsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_NR MAC_UE_NR MAC_NR_COMMON RRC_LIB NR_RRC_LIB CONFIG_LIB L2_NR -Wl,--end-group m pthread
${
ATLAS_LIBRARIES
}
${
T_LIB
}
${
ITTI_LIB
}
dl
)
foreach
(
myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim
)
foreach
(
myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim
)
...
...
common/utils/LOG/vcd_signal_dumper.c
View file @
175c813f
...
@@ -343,6 +343,7 @@ const char* eurecomFunctionsNames[] = {
...
@@ -343,6 +343,7 @@ const char* eurecomFunctionsNames[] = {
"phy_procedures_ue_tx"
,
"phy_procedures_ue_tx"
,
"phy_procedures_ue_rx"
,
"phy_procedures_ue_rx"
,
"phy_procedures_ue_tx_ulsch_uespec"
,
"phy_procedures_ue_tx_ulsch_uespec"
,
"phy_procedures_nr_ue_tx_ulsch_uespec"
,
"phy_procedures_ue_tx_pucch"
,
"phy_procedures_ue_tx_pucch"
,
"phy_procedures_ue_tx_ulsch_common"
,
"phy_procedures_ue_tx_ulsch_common"
,
"phy_procedures_ue_tx_prach"
,
"phy_procedures_ue_tx_prach"
,
...
@@ -366,6 +367,11 @@ const char* eurecomFunctionsNames[] = {
...
@@ -366,6 +367,11 @@ const char* eurecomFunctionsNames[] = {
"dlsch_decoding5"
,
"dlsch_decoding5"
,
"dlsch_decoding6"
,
"dlsch_decoding6"
,
"dlsch_decoding7"
,
"dlsch_decoding7"
,
"dlsch_segmentation"
,
"dlsch_deinterleaving"
,
"dlsch_rate_matching"
,
"dlsch_ldpc"
,
"dlsch_compine_seg"
,
"dlsch_pmch_decoding"
,
"dlsch_pmch_decoding"
,
"rx_pdcch"
,
"rx_pdcch"
,
"dci_decoding"
,
"dci_decoding"
,
...
...
common/utils/LOG/vcd_signal_dumper.h
View file @
175c813f
...
@@ -324,6 +324,7 @@ typedef enum {
...
@@ -324,6 +324,7 @@ typedef enum {
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX
,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX
,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX
,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX
,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_UESPEC
,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_UESPEC
,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_NR_UE_TX_ULSCH_UESPEC
,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PUCCH
,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PUCCH
,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_COMMON
,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_COMMON
,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PRACH
,
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PRACH
,
...
@@ -347,6 +348,11 @@ typedef enum {
...
@@ -347,6 +348,11 @@ typedef enum {
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DECODING5
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DECODING5
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DECODING6
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DECODING6
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DECODING7
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DECODING7
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_SEGMENTATION
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DEINTERLEAVING
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_RATE_MATCHING
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_LDPC
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_COMBINE_SEG
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_PMCH_DECODING
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_PMCH_DECODING
,
VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH
,
VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DCI_DECODING
,
VCD_SIGNAL_DUMPER_FUNCTIONS_DCI_DECODING
,
...
@@ -549,12 +555,20 @@ extern int ouput_vcd;
...
@@ -549,12 +555,20 @@ extern int ouput_vcd;
#include "T.h"
#include "T.h"
#define VCD_SIGNAL_DUMPER_INIT(x)
/* nothing */
#define VCD_SIGNAL_DUMPER_CLOSE()
/* nothing */
#define VCD_SIGNAL_DUMPER_CREATE_HEADER()
/* nothing */
#define VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(var, val) T_VCD_VARIABLE(var, val)
#define VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(var, val) T_VCD_VARIABLE(var, val)
#define VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(var, val) T_VCD_FUNCTION(var, val)
#define VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(var, val) T_VCD_FUNCTION(var, val)
#else
#define VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(var, val)
#else
/* T_TRACER */
#define VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(var, val)
#define VCD_SIGNAL_DUMPER_INIT(aRgUmEnT) vcd_signal_dumper_init(aRgUmEnT)
#define VCD_SIGNAL_DUMPER_CLOSE() vcd_signal_dumper_close()
#define VCD_SIGNAL_DUMPER_CREATE_HEADER() vcd_signal_dumper_create_header()
#define VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(vAr1,vAr2) vcd_signal_dumper_dump_variable_by_name(vAr1,vAr2)
#define VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(vAr1,vAr2) vcd_signal_dumper_dump_function_by_name(vAr1,vAr2)
#endif
/* T_TRACER */
#endif
/* T_TRACER */
...
...
common/utils/T/T_defs.h
View file @
175c813f
...
@@ -73,7 +73,7 @@ typedef struct {
...
@@ -73,7 +73,7 @@ typedef struct {
}
T_cache_t
;
}
T_cache_t
;
/* number of VCD functions (to be kept up to date! see in T_messages.txt) */
/* number of VCD functions (to be kept up to date! see in T_messages.txt) */
#define VCD_NUM_FUNCTIONS (23
1
)
#define VCD_NUM_FUNCTIONS (23
7)//(232
)
/* number of VCD variables (to be kept up to date! see in T_messages.txt) */
/* number of VCD variables (to be kept up to date! see in T_messages.txt) */
#define VCD_NUM_VARIABLES (185)
#define VCD_NUM_VARIABLES (185)
...
...
common/utils/T/T_messages.txt
View file @
175c813f
...
@@ -2493,6 +2493,11 @@ ID = VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_UESPEC
...
@@ -2493,6 +2493,11 @@ ID = VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_UESPEC
GROUP = ALL:VCD:UE:VCD_FUNCTION
GROUP = ALL:VCD:UE:VCD_FUNCTION
FORMAT = int,value
FORMAT = int,value
VCD_NAME = phy_procedures_ue_tx_ulsch_uespec
VCD_NAME = phy_procedures_ue_tx_ulsch_uespec
ID = VCD_FUNCTION_PHY_PROCEDURES_NR_UE_TX_ULSCH_UESPEC
DESC = VCD function PHY_PROCEDURES_NR_UE_TX_ULSCH_UESPEC
GROUP = ALL:VCD:UE:VCD_FUNCTION
FORMAT = int,value
VCD_NAME = phy_procedures_nr_ue_tx_ulsch_uespec
ID = VCD_FUNCTION_PHY_PROCEDURES_UE_TX_PUCCH
ID = VCD_FUNCTION_PHY_PROCEDURES_UE_TX_PUCCH
DESC = VCD function PHY_PROCEDURES_UE_TX_PUCCH
DESC = VCD function PHY_PROCEDURES_UE_TX_PUCCH
GROUP = ALL:VCD:UE:VCD_FUNCTION
GROUP = ALL:VCD:UE:VCD_FUNCTION
...
@@ -2608,6 +2613,31 @@ ID = VCD_FUNCTION_DLSCH_DECODING7
...
@@ -2608,6 +2613,31 @@ ID = VCD_FUNCTION_DLSCH_DECODING7
GROUP = ALL:VCD:ENB:VCD_FUNCTION
GROUP = ALL:VCD:ENB:VCD_FUNCTION
FORMAT = int,value
FORMAT = int,value
VCD_NAME = dlsch_decoding7
VCD_NAME = dlsch_decoding7
ID = VCD_FUNCTION_DLSCH_SEGMENTATION
DESC = VCD function DLSCH_SEGMENTATION
GROUP = ALL:VCD:ENB:VCD_FUNCTION
FORMAT = int,value
VCD_NAME = dlsch_segmentation
ID = VCD_FUNCTION_DLSCH_DEINTERLEAVING
DESC = VCD function DLSCH_DEINTERLEAVING
GROUP = ALL:VCD:ENB:VCD_FUNCTION
FORMAT = int,value
VCD_NAME = dlsch_deinterleaving
ID = VCD_FUNCTION_DLSCH_RATE_MATCHING
DESC = VCD function DLSCH_RATE_MATCHING
GROUP = ALL:VCD:ENB:VCD_FUNCTION
FORMAT = int,value
VCD_NAME = dlsch_rate_matching
ID = VCD_FUNCTION_DLSCH_LDPC
DESC = VCD function DLSCH_LDPC
GROUP = ALL:VCD:ENB:VCD_FUNCTION
FORMAT = int,value
VCD_NAME = dlsch_ldpc
ID = VCD_FUNCTION_DLSCH_COMBINE_SEG
DESC = VCD function DLSCH_COMBINE_SEG
GROUP = ALL:VCD:ENB:VCD_FUNCTION
FORMAT = int,value
VCD_NAME = dlsch_compine_seg
ID = VCD_FUNCTION_DLSCH_PMCH_DECODING
ID = VCD_FUNCTION_DLSCH_PMCH_DECODING
DESC = VCD function DLSCH_PMCH_DECODING
DESC = VCD function DLSCH_PMCH_DECODING
GROUP = ALL:VCD:ENB:VCD_FUNCTION
GROUP = ALL:VCD:ENB:VCD_FUNCTION
...
...
executables/nr-gnb.c
View file @
175c813f
...
@@ -682,6 +682,27 @@ static void* gNB_thread_prach( void* param ) {
...
@@ -682,6 +682,27 @@ static void* gNB_thread_prach( void* param ) {
extern
void
init_td_thread
(
PHY_VARS_gNB
*
);
extern
void
init_td_thread
(
PHY_VARS_gNB
*
);
extern
void
init_te_thread
(
PHY_VARS_gNB
*
);
extern
void
init_te_thread
(
PHY_VARS_gNB
*
);
static
void
*
process_stats_thread
(
void
*
param
)
{
PHY_VARS_gNB
*
gNB
=
(
PHY_VARS_gNB
*
)
param
;
reset_meas
(
&
gNB
->
dlsch_encoding_stats
);
reset_meas
(
&
gNB
->
dlsch_scrambling_stats
);
reset_meas
(
&
gNB
->
dlsch_modulation_stats
);
wait_sync
(
"process_stats_thread"
);
while
(
!
oai_exit
)
{
sleep
(
1
);
print_meas
(
&
gNB
->
dlsch_encoding_stats
,
"pdsch_encoding"
,
NULL
,
NULL
);
print_meas
(
&
gNB
->
dlsch_scrambling_stats
,
"pdsch_scrambling"
,
NULL
,
NULL
);
print_meas
(
&
gNB
->
dlsch_modulation_stats
,
"pdsch_modulation"
,
NULL
,
NULL
);
}
return
(
NULL
);
}
void
init_gNB_proc
(
int
inst
)
{
void
init_gNB_proc
(
int
inst
)
{
int
i
=
0
;
int
i
=
0
;
int
CC_id
;
int
CC_id
;
...
@@ -729,6 +750,7 @@ void init_gNB_proc(int inst) {
...
@@ -729,6 +750,7 @@ void init_gNB_proc(int inst) {
threadCreate
(
&
L1_proc_tx
->
pthread
,
gNB_L1_thread_tx
,
gNB
,
"L1_proc_tx"
,
-
1
,
OAI_PRIORITY_RT
);
threadCreate
(
&
L1_proc_tx
->
pthread
,
gNB_L1_thread_tx
,
gNB
,
"L1_proc_tx"
,
-
1
,
OAI_PRIORITY_RT
);
}
}
if
(
opp_enabled
==
1
)
threadCreate
(
&
proc
->
L1_stats_thread
,
process_stats_thread
,(
void
*
)
gNB
,
"time_meas"
,
-
1
,
OAI_PRIORITY_RT_LOW
);
//pthread_create( &proc->pthread_prach, attr_prach, gNB_thread_prach, gNB );
//pthread_create( &proc->pthread_prach, attr_prach, gNB_thread_prach, gNB );
char
name
[
16
];
char
name
[
16
];
...
...
executables/nr-ru.c
View file @
175c813f
...
@@ -1077,30 +1077,39 @@ void fill_rf_config(RU_t *ru, char *rf_config_file) {
...
@@ -1077,30 +1077,39 @@ void fill_rf_config(RU_t *ru, char *rf_config_file) {
cfg
->
rx_bw
=
1.5e6
;
cfg
->
rx_bw
=
1.5e6
;
}
else
AssertFatal
(
1
==
0
,
"Unknown N_RB %d
\n
"
,
N_RB
);
}
else
AssertFatal
(
1
==
0
,
"Unknown N_RB %d
\n
"
,
N_RB
);
}
else
if
(
mu
==
NR_MU_1
)
{
}
else
if
(
mu
==
NR_MU_1
)
{
if
(
N_RB
==
217
)
{
if
(
N_RB
==
273
)
{
if
(
fp
->
threequarter_fs
)
{
AssertFatal
(
0
==
1
,
"three quarter sampling not supported for N_RB 273
\n
"
);
}
else
{
cfg
->
sample_rate
=
122.88e6
;
cfg
->
samples_per_frame
=
1228800
;
cfg
->
tx_bw
=
100e6
;
cfg
->
rx_bw
=
100e6
;
}
}
else
if
(
N_RB
==
217
)
{
if
(
fp
->
threequarter_fs
)
{
if
(
fp
->
threequarter_fs
)
{
cfg
->
sample_rate
=
92.16e6
;
cfg
->
sample_rate
=
92.16e6
;
cfg
->
samples_per_frame
=
921600
;
cfg
->
samples_per_frame
=
921600
;
cfg
->
tx_bw
=
4
0e6
;
cfg
->
tx_bw
=
8
0e6
;
cfg
->
rx_bw
=
4
0e6
;
cfg
->
rx_bw
=
8
0e6
;
}
else
{
}
else
{
cfg
->
sample_rate
=
122.88e6
;
cfg
->
sample_rate
=
122.88e6
;
cfg
->
samples_per_frame
=
1228800
;
cfg
->
samples_per_frame
=
1228800
;
cfg
->
tx_bw
=
4
0e6
;
cfg
->
tx_bw
=
8
0e6
;
cfg
->
rx_bw
=
4
0e6
;
cfg
->
rx_bw
=
8
0e6
;
}
}
}
else
if
(
N_RB
==
106
)
{
}
else
if
(
N_RB
==
106
)
{
if
(
fp
->
threequarter_fs
)
{
if
(
fp
->
threequarter_fs
)
{
cfg
->
sample_rate
=
46.08e6
;
cfg
->
sample_rate
=
46.08e6
;
cfg
->
samples_per_frame
=
460800
;
cfg
->
samples_per_frame
=
460800
;
cfg
->
tx_bw
=
2
0e6
;
cfg
->
tx_bw
=
4
0e6
;
cfg
->
rx_bw
=
2
0e6
;
cfg
->
rx_bw
=
4
0e6
;
}
}
else
{
else
{
cfg
->
sample_rate
=
61.44e6
;
cfg
->
sample_rate
=
61.44e6
;
cfg
->
samples_per_frame
=
614400
;
cfg
->
samples_per_frame
=
614400
;
cfg
->
tx_bw
=
2
0e6
;
cfg
->
tx_bw
=
4
0e6
;
cfg
->
rx_bw
=
2
0e6
;
cfg
->
rx_bw
=
4
0e6
;
}
}
}
else
{
}
else
{
AssertFatal
(
0
==
1
,
"N_RB %d not yet supported for numerology %d
\n
"
,
N_RB
,
mu
);
AssertFatal
(
0
==
1
,
"N_RB %d not yet supported for numerology %d
\n
"
,
N_RB
,
mu
);
...
@@ -1623,7 +1632,7 @@ extern void nr_feptx_ofdm(RU_t *ru,int frame_tx,int tti_tx);
...
@@ -1623,7 +1632,7 @@ extern void nr_feptx_ofdm(RU_t *ru,int frame_tx,int tti_tx);
extern
void
nr_feptx_ofdm_2thread
(
RU_t
*
ru
,
int
frame_tx
,
int
tti_tx
);
extern
void
nr_feptx_ofdm_2thread
(
RU_t
*
ru
,
int
frame_tx
,
int
tti_tx
);
extern
void
feptx_prec
(
RU_t
*
ru
,
int
frame_tx
,
int
tti_tx
);
extern
void
feptx_prec
(
RU_t
*
ru
,
int
frame_tx
,
int
tti_tx
);
extern
void
init_fep_thread
(
RU_t
*
ru
);
extern
void
init_fep_thread
(
RU_t
*
ru
);
extern
void
init_nr
_feptx_thread
(
RU_t
*
ru
);
extern
void
nr_init
_feptx_thread
(
RU_t
*
ru
);
void
init_RU_proc
(
RU_t
*
ru
)
{
void
init_RU_proc
(
RU_t
*
ru
)
{
int
i
=
0
;
int
i
=
0
;
...
@@ -1688,7 +1697,7 @@ void init_RU_proc(RU_t *ru) {
...
@@ -1688,7 +1697,7 @@ void init_RU_proc(RU_t *ru) {
threadCreate
(
&
proc
->
pthread_prach
,
ru_thread_prach
,
(
void
*
)
ru
,
"RACH"
,
-
1
,
OAI_PRIORITY_RT
);
threadCreate
(
&
proc
->
pthread_prach
,
ru_thread_prach
,
(
void
*
)
ru
,
"RACH"
,
-
1
,
OAI_PRIORITY_RT
);
}
}
if
(
get_
nprocs
()
>=
2
)
{
if
(
get_
thread_worker_conf
()
==
WORKER_ENABLE
)
{
if
(
ru
->
feprx
)
init_fep_thread
(
ru
);
if
(
ru
->
feprx
)
init_fep_thread
(
ru
);
if
(
ru
->
feptx_ofdm
)
nr_init_feptx_thread
(
ru
);
if
(
ru
->
feptx_ofdm
)
nr_init_feptx_thread
(
ru
);
...
@@ -1982,8 +1991,8 @@ void set_function_spec_param(RU_t *ru) {
...
@@ -1982,8 +1991,8 @@ void set_function_spec_param(RU_t *ru) {
ru
->
fh_north_out
=
fh_if4p5_north_out
;
// send_IF4p5 on reception
ru
->
fh_north_out
=
fh_if4p5_north_out
;
// send_IF4p5 on reception
ru
->
fh_south_out
=
tx_rf
;
// send output to RF
ru
->
fh_south_out
=
tx_rf
;
// send output to RF
ru
->
fh_north_asynch_in
=
fh_if4p5_north_asynch_in
;
// TX packets come asynchronously
ru
->
fh_north_asynch_in
=
fh_if4p5_north_asynch_in
;
// TX packets come asynchronously
ru
->
feprx
=
(
get_
nprocs
()
<=
2
)
?
fep_full
:
ru_fep_full_2thread
;
// RX DFTs
ru
->
feprx
=
(
get_
thread_worker_conf
()
==
WORKER_ENABLE
)
?
ru_fep_full_2thread
:
fep_full
;
// RX DFTs
ru
->
feptx_ofdm
=
(
get_
nprocs
()
<=
2
)
?
nr_feptx_ofdm
:
nr_feptx_ofdm_2thread
;
// this is fep with idft only (no precoding in RRU)
ru
->
feptx_ofdm
=
(
get_
thread_worker_conf
()
==
WORKER_ENABLE
)
?
nr_feptx_ofdm_2thread
:
nr_feptx_ofdm
;
// this is fep with idft only (no precoding in RRU)
ru
->
feptx_prec
=
NULL
;
ru
->
feptx_prec
=
NULL
;
ru
->
nr_start_if
=
nr_start_if
;
// need to start the if interface for if4p5
ru
->
nr_start_if
=
nr_start_if
;
// need to start the if interface for if4p5
ru
->
ifdevice
.
host_type
=
RRU_HOST
;
ru
->
ifdevice
.
host_type
=
RRU_HOST
;
...
@@ -2004,8 +2013,8 @@ void set_function_spec_param(RU_t *ru) {
...
@@ -2004,8 +2013,8 @@ void set_function_spec_param(RU_t *ru) {
malloc_IF4p5_buffer
(
ru
);
malloc_IF4p5_buffer
(
ru
);
}
else
if
(
ru
->
function
==
gNodeB_3GPP
)
{
}
else
if
(
ru
->
function
==
gNodeB_3GPP
)
{
ru
->
do_prach
=
0
;
// no prach processing in RU
ru
->
do_prach
=
0
;
// no prach processing in RU
ru
->
feprx
=
(
get_
nprocs
()
<=
2
)
?
fep_full
:
ru_fep_full_2thread
;
// RX DFTs
ru
->
feprx
=
(
get_
thread_worker_conf
()
==
WORKER_ENABLE
)
?
ru_fep_full_2thread
:
fep_full
;
// RX DFTs
ru
->
feptx_ofdm
=
(
get_
nprocs
()
<=
2
)
?
nr_feptx_ofdm
:
nr_feptx_ofdm_2thread
;
// this is fep with idft and precoding
ru
->
feptx_ofdm
=
(
get_
thread_worker_conf
()
==
WORKER_ENABLE
)
?
nr_feptx_ofdm_2thread
:
nr_feptx_ofdm
;
// this is fep with idft and precoding
ru
->
feptx_prec
=
NULL
;
// this is fep with idft and precoding
ru
->
feptx_prec
=
NULL
;
// this is fep with idft and precoding
ru
->
fh_north_in
=
NULL
;
// no incoming fronthaul from north
ru
->
fh_north_in
=
NULL
;
// no incoming fronthaul from north
ru
->
fh_north_out
=
NULL
;
// no outgoing fronthaul to north
ru
->
fh_north_out
=
NULL
;
// no outgoing fronthaul to north
...
@@ -2034,13 +2043,13 @@ void set_function_spec_param(RU_t *ru) {
...
@@ -2034,13 +2043,13 @@ void set_function_spec_param(RU_t *ru) {
case
REMOTE_IF5
:
// the remote unit is IF5 RRU
case
REMOTE_IF5
:
// the remote unit is IF5 RRU
ru
->
do_prach
=
0
;
ru
->
do_prach
=
0
;
ru
->
feprx
=
(
get_nprocs
()
<=
2
)
?
fep_full
:
fep_full
;
// this is frequency-shift + DFTs
ru
->
feprx
=
fep_full
;
// this is frequency-shift + DFTs
ru
->
feptx_prec
=
feptx_prec
;
// need to do transmit Precoding + IDFTs
ru
->
feptx_prec
=
feptx_prec
;
// need to do transmit Precoding + IDFTs
ru
->
feptx_ofdm
=
(
get_
nprocs
()
<=
2
)
?
nr_feptx_ofdm
:
nr_feptx_ofdm_2thread
;
// need to do transmit Precoding + IDFTs
ru
->
feptx_ofdm
=
(
get_
thread_worker_conf
()
==
WORKER_ENABLE
)
?
nr_feptx_ofdm_2thread
:
nr_feptx_ofdm
;
// need to do transmit Precoding + IDFTs
ru
->
fh_south_in
=
fh_if5_south_in
;
// synchronous IF5 reception
ru
->
fh_south_in
=
fh_if5_south_in
;
// synchronous IF5 reception
ru
->
fh_south_out
=
fh_if5_south_out
;
// synchronous IF5 transmission
ru
->
fh_south_out
=
fh_if5_south_out
;
// synchronous IF5 transmission
ru
->
fh_south_asynch_in
=
NULL
;
// no asynchronous UL
ru
->
fh_south_asynch_in
=
NULL
;
// no asynchronous UL
ru
->
start_rf
=
NULL
;
// no local RF
ru
->
start_rf
=
NULL
;
// no local RF
ru
->
stop_rf
=
NULL
;
ru
->
stop_rf
=
NULL
;
ru
->
nr_start_if
=
nr_start_if
;
// need to start if interface for IF5
ru
->
nr_start_if
=
nr_start_if
;
// need to start if interface for IF5
ru
->
ifdevice
.
host_type
=
RAU_HOST
;
ru
->
ifdevice
.
host_type
=
RAU_HOST
;
...
...
executables/nr-uesoftmodem.c
View file @
175c813f
...
@@ -122,6 +122,7 @@ int threequarter_fs=0;
...
@@ -122,6 +122,7 @@ int threequarter_fs=0;
uint32_t
downlink_frequency
[
MAX_NUM_CCs
][
4
];
uint32_t
downlink_frequency
[
MAX_NUM_CCs
][
4
];
int32_t
uplink_frequency_offset
[
MAX_NUM_CCs
][
4
];
int32_t
uplink_frequency_offset
[
MAX_NUM_CCs
][
4
];
extern
int16_t
nr_dlsch_demod_shift
;
extern
int16_t
nr_dlsch_demod_shift
;
int
UE_scan
=
0
;
int
UE_scan
=
0
;
...
@@ -399,7 +400,7 @@ int16_t dlsch_demod_shift;
...
@@ -399,7 +400,7 @@ int16_t dlsch_demod_shift;
static
void
get_options
(
void
)
{
static
void
get_options
(
void
)
{
int
CC_id
;
int
CC_id
;
int
tddflag
=
0
,
nonbiotflag
;
int
tddflag
=
0
,
nonbiotflag
,
vcdflag
=
0
;
char
*
loopfile
=
NULL
;
char
*
loopfile
=
NULL
;
int
dumpframe
=
0
;
int
dumpframe
=
0
;
uint32_t
online_log_messages
;
uint32_t
online_log_messages
;
...
@@ -470,6 +471,9 @@ static void get_options(void) {
...
@@ -470,6 +471,9 @@ static void get_options(void) {
frame_parms
[
CC_id
]
->
frame_type
=
TDD
;
frame_parms
[
CC_id
]
->
frame_type
=
TDD
;
}
}
if
(
vcdflag
>
0
)
ouput_vcd
=
1
;
/*if (frame_parms[0]->N_RB_DL !=0) {
/*if (frame_parms[0]->N_RB_DL !=0) {
if ( frame_parms[0]->N_RB_DL < 6 ) {
if ( frame_parms[0]->N_RB_DL < 6 ) {
frame_parms[0]->N_RB_DL = 6;
frame_parms[0]->N_RB_DL = 6;
...
@@ -731,7 +735,11 @@ int main( int argc, char **argv ) {
...
@@ -731,7 +735,11 @@ int main( int argc, char **argv ) {
if
(
IS_SOFTMODEM_NOS1
)
if
(
IS_SOFTMODEM_NOS1
)
init_pdcp
();
init_pdcp
();
/*
if
(
ouput_vcd
)
{
vcd_signal_dumper_init
(
"/tmp/openair_dump_nrUE.vcd"
);
}
/*
#ifdef PDCP_USE_NETLINK
#ifdef PDCP_USE_NETLINK
netlink_init();
netlink_init();
#if defined(PDCP_USE_NETLINK_QUEUES)
#if defined(PDCP_USE_NETLINK_QUEUES)
...
@@ -826,5 +834,8 @@ int main( int argc, char **argv ) {
...
@@ -826,5 +834,8 @@ int main( int argc, char **argv ) {
while
(
true
)
while
(
true
)
sleep
(
3600
);
sleep
(
3600
);
if
(
ouput_vcd
)
vcd_signal_dumper_close
();
return
0
;
return
0
;
}
}
executables/nr-uesoftmodem.h
View file @
175c813f
...
@@ -79,6 +79,7 @@
...
@@ -79,6 +79,7 @@
{"q" , CONFIG_HLP_STMON, PARAMFLAG_BOOL, iptr:&opp_enabled, defintval:0, TYPE_INT, 0}, \
{"q" , CONFIG_HLP_STMON, PARAMFLAG_BOOL, iptr:&opp_enabled, defintval:0, TYPE_INT, 0}, \
{"S" , CONFIG_HLP_MSLOTS, PARAMFLAG_BOOL, u8ptr:&exit_missed_slots, defintval:1, TYPE_UINT8, 0}, \
{"S" , CONFIG_HLP_MSLOTS, PARAMFLAG_BOOL, u8ptr:&exit_missed_slots, defintval:1, TYPE_UINT8, 0}, \
{"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \
{"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \
{"V" , CONFIG_HLP_VCD, PARAMFLAG_BOOL, iptr:&vcdflag, defintval:0, TYPE_INT, 0}, \
{"numerology" , CONFIG_HLP_NUMEROLOGY, PARAMFLAG_BOOL, iptr:&numerology, defintval:0, TYPE_INT, 0}, \
{"numerology" , CONFIG_HLP_NUMEROLOGY, PARAMFLAG_BOOL, iptr:&numerology, defintval:0, TYPE_INT, 0}, \
{"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0, TYPE_INT, 0}, \
{"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0, TYPE_INT, 0}, \
{"parallel-config", CONFIG_HLP_PARALLEL_CMD,0, strptr:(char **)¶llel_config, defstrval:NULL, TYPE_STRING, 0}, \
{"parallel-config", CONFIG_HLP_PARALLEL_CMD,0, strptr:(char **)¶llel_config, defstrval:NULL, TYPE_STRING, 0}, \
...
...
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
View file @
175c813f
...
@@ -574,44 +574,44 @@ typedef struct {
...
@@ -574,44 +574,44 @@ typedef struct {
}
nfapi_nr_dl_config_bch_pdu
;
}
nfapi_nr_dl_config_bch_pdu
;
typedef
struct
{
typedef
struct
{
nfapi_tl_t
tl
;
nfapi_tl_t
tl
;
uint16_t
length
;
uint16_t
length
;
uint8_t
pdu_index
;
uint8_t
pdu_index
;
uint16_t
rnti
;
uint16_t
rnti
;
uint16_t
nb_mod_symbols
;
uint16_t
nb_mod_symbols
;
uint8_t
time_allocation_type
;
uint8_t
time_allocation_type
;
uint8_t
freq_allocation_type
;
uint8_t
freq_allocation_type
;
uint8
_t
start_prb
;
uint16
_t
start_prb
;
uint8
_t
n_prb
;
uint16
_t
n_prb
;
uint8_t
start_symbol
;
uint8_t
start_symbol
;
uint8_t
nb_symbols
;
uint8_t
nb_symbols
;
uint8_t
mcs_idx
;
uint8_t
mcs_idx
;
uint8_t
ndi
;
uint8_t
ndi
;
uint8_t
nb_codewords
;
uint8_t
nb_codewords
;
uint8_t
nb_layers
;
uint8_t
nb_layers
;
uint16_t
coding_rate
;
uint16_t
coding_rate
;
uint8_t
modulation
;
uint8_t
modulation
;
uint8_t
modulation_order
;
uint8_t
modulation_order
;
uint16_t
transport_block_size
;
uint16_t
transport_block_size
;
uint8_t
nb_re_dmrs
;
uint8_t
nb_re_dmrs
;
uint8_t
time_alloc_list_flag
;
uint8_t
time_alloc_list_flag
;
uint8_t
time_alloc_list
;
uint8_t
time_alloc_list
;
uint8_t
rbg_list
;
uint8_t
rbg_list
;
uint8_t
virtual_resource_block_assignment_flag
;
uint8_t
virtual_resource_block_assignment_flag
;
uint32_t
resource_block_coding
;
uint32_t
resource_block_coding
;
uint8_t
redundancy_version
;
uint8_t
redundancy_version
;
uint8_t
transport_blocks
;
uint8_t
transport_blocks
;
uint8_t
transmission_scheme
;
uint8_t
transmission_scheme
;
uint8_t
number_of_subbands
;
uint8_t
number_of_subbands
;
uint8_t
codebook_index
[
NFAPI_MAX_NUM_SUBBANDS
];
uint8_t
codebook_index
[
NFAPI_MAX_NUM_SUBBANDS
];
uint8_t
ue_category_capacity
;
uint8_t
ue_category_capacity
;
uint8_t
pa
;
uint8_t
pa
;
uint8_t
delta_power_offset_index
;
uint8_t
delta_power_offset_index
;
uint8_t
ngap
;
uint8_t
ngap
;
uint8_t
transmission_mode
;
uint8_t
transmission_mode
;
uint8_t
num_bf_prb_per_subband
;
uint8_t
num_bf_prb_per_subband
;
uint8_t
num_bf_vector
;
uint8_t
num_bf_vector
;
nfapi_bf_vector_t
bf_vector
[
NFAPI_MAX_BF_VECTORS
];
nfapi_bf_vector_t
bf_vector
[
NFAPI_MAX_BF_VECTORS
];
}
nfapi_nr_dl_config_dlsch_pdu_rel15_t
;
}
nfapi_nr_dl_config_dlsch_pdu_rel15_t
;
#define NFAPI_NR_DL_CONFIG_REQUEST_DLSCH_PDU_REL15_TAG
#define NFAPI_NR_DL_CONFIG_REQUEST_DLSCH_PDU_REL15_TAG
...
...
nfapi/open-nFAPI/vnf/src/vnf_p7.c
View file @
175c813f
...
@@ -376,9 +376,11 @@ int send_mac_subframe_indications(vnf_p7_t* vnf_p7)
...
@@ -376,9 +376,11 @@ int send_mac_subframe_indications(vnf_p7_t* vnf_p7)
if
(
curr
->
in_sync
==
1
)
if
(
curr
->
in_sync
==
1
)
{
{
// ask for subframes in the future
// ask for subframes in the future
uint16_t
sfn_sf_adv
=
increment_sfn_sf_by
(
curr
->
sfn_sf
,
2
);
//
uint16_t sfn_sf_adv = increment_sfn_sf_by(curr->sfn_sf, 2);
vnf_p7
->
_public
.
subframe_indication
(
&
(
vnf_p7
->
_public
),
curr
->
phy_id
,
sfn_sf_adv
);
//vnf_p7->_public.subframe_indication(&(vnf_p7->_public), curr->phy_id, sfn_sf_adv);
// suggestion fix by Haruki NAOI
vnf_p7
->
_public
.
subframe_indication
(
&
(
vnf_p7
->
_public
),
curr
->
phy_id
,
curr
->
sfn_sf
);
}
}
curr
=
curr
->
next
;
curr
=
curr
->
next
;
...
...
openair1/PHY/CODING/nrLDPC_encoder/ldpc_encoder2.c
View file @
175c813f
...
@@ -271,17 +271,17 @@ int ldpc_encoder_optim(unsigned char *test_input,unsigned char *channel_input,sh
...
@@ -271,17 +271,17 @@ int ldpc_encoder_optim(unsigned char *test_input,unsigned char *channel_input,sh
memset
(
c
,
0
,
sizeof
(
unsigned
char
)
*
ncols
*
Zc
);
memset
(
c
,
0
,
sizeof
(
unsigned
char
)
*
ncols
*
Zc
);
memset
(
d
,
0
,
sizeof
(
unsigned
char
)
*
nrows
*
Zc
);
memset
(
d
,
0
,
sizeof
(
unsigned
char
)
*
nrows
*
Zc
);
start_meas
(
tinput
);
if
(
tinput
!=
NULL
)
start_meas
(
tinput
);
for
(
i
=
0
;
i
<
block_length
;
i
++
)
{
for
(
i
=
0
;
i
<
block_length
;
i
++
)
{
c
[
i
]
=
(
test_input
[
i
/
8
]
&
(
1
<<
(
i
&
7
)))
>>
(
i
&
7
);
c
[
i
]
=
(
test_input
[
i
/
8
]
&
(
1
<<
(
i
&
7
)))
>>
(
i
&
7
);
//printf("c(%d,%d)=%d\n",j,i,temp);
//printf("c(%d,%d)=%d\n",j,i,temp);
}
}
stop_meas
(
tinput
);
if
(
tinput
!=
NULL
)
stop_meas
(
tinput
);
if
((
BG
==
1
&&
Zc
>
176
)
||
(
BG
==
2
&&
Zc
>
64
))
{
if
((
BG
==
1
&&
Zc
>
176
)
||
(
BG
==
2
&&
Zc
>
64
))
{
// extend matrix
// extend matrix
start_meas
(
tprep
);
if
(
tprep
!=
NULL
)
start_meas
(
tprep
);
for
(
i1
=
0
;
i1
<
ncols
;
i1
++
)
for
(
i1
=
0
;
i1
<
ncols
;
i1
++
)
{
{
memcpy
(
&
c_extension
[
2
*
i1
*
Zc
],
&
c
[
i1
*
Zc
],
Zc
*
sizeof
(
unsigned
char
));
memcpy
(
&
c_extension
[
2
*
i1
*
Zc
],
&
c
[
i1
*
Zc
],
Zc
*
sizeof
(
unsigned
char
));
...
@@ -296,11 +296,11 @@ int ldpc_encoder_optim(unsigned char *test_input,unsigned char *channel_input,sh
...
@@ -296,11 +296,11 @@ int ldpc_encoder_optim(unsigned char *test_input,unsigned char *channel_input,sh
printf("\n");
printf("\n");
*/
*/
}
}
stop_meas
(
tprep
);
if
(
tprep
!=
NULL
)
stop_meas
(
tprep
);
//parity check part
//parity check part
start_meas
(
tparity
);
if
(
tparity
!=
NULL
)
start_meas
(
tparity
);
encode_parity_check_part_optim
(
c_extension
,
d
,
BG
,
Zc
,
Kb
);
encode_parity_check_part_optim
(
c_extension
,
d
,
BG
,
Zc
,
Kb
);
stop_meas
(
tparity
);
if
(
tparity
!=
NULL
)
stop_meas
(
tparity
);
}
}
else
{
else
{
if
(
encode_parity_check_part_orig
(
c
,
d
,
BG
,
Zc
,
Kb
,
block_length
)
!=
0
)
{
if
(
encode_parity_check_part_orig
(
c
,
d
,
BG
,
Zc
,
Kb
,
block_length
)
!=
0
)
{
...
@@ -308,12 +308,12 @@ int ldpc_encoder_optim(unsigned char *test_input,unsigned char *channel_input,sh
...
@@ -308,12 +308,12 @@ int ldpc_encoder_optim(unsigned char *test_input,unsigned char *channel_input,sh
return
(
-
1
);
return
(
-
1
);
}
}
}
}
start_meas
(
toutput
);
if
(
toutput
!=
NULL
)
start_meas
(
toutput
);
// information part and puncture columns
// information part and puncture columns
memcpy
(
&
channel_input
[
0
],
&
c
[
2
*
Zc
],
(
block_length
-
2
*
Zc
)
*
sizeof
(
unsigned
char
));
memcpy
(
&
channel_input
[
0
],
&
c
[
2
*
Zc
],
(
block_length
-
2
*
Zc
)
*
sizeof
(
unsigned
char
));
memcpy
(
&
channel_input
[
block_length
-
2
*
Zc
],
&
d
[
0
],
((
nrows
-
no_punctured_columns
)
*
Zc
-
removed_bit
)
*
sizeof
(
unsigned
char
));
memcpy
(
&
channel_input
[
block_length
-
2
*
Zc
],
&
d
[
0
],
((
nrows
-
no_punctured_columns
)
*
Zc
-
removed_bit
)
*
sizeof
(
unsigned
char
));
stop_meas
(
toutput
);
if
(
toutput
!=
NULL
)
stop_meas
(
toutput
);
return
0
;
return
0
;
}
}
...
@@ -408,7 +408,7 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i
...
@@ -408,7 +408,7 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i
memset
(
c
,
0
,
sizeof
(
unsigned
char
)
*
ncols
*
Zc
);
memset
(
c
,
0
,
sizeof
(
unsigned
char
)
*
ncols
*
Zc
);
memset
(
d
,
0
,
sizeof
(
unsigned
char
)
*
nrows
*
Zc
);
memset
(
d
,
0
,
sizeof
(
unsigned
char
)
*
nrows
*
Zc
);
start_meas
(
tinput
);
if
(
tinput
!=
NULL
)
start_meas
(
tinput
);
#if 0
#if 0
for (i=0; i<block_length; i++) {
for (i=0; i<block_length; i++) {
for (j=0; j<n_segments; j++) {
for (j=0; j<n_segments; j++) {
...
@@ -441,11 +441,11 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i
...
@@ -441,11 +441,11 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i
#endif
#endif
#endif
#endif
stop_meas
(
tinput
);
if
(
tinput
!=
NULL
)
stop_meas
(
tinput
);
if
((
BG
==
1
&&
Zc
>
176
)
||
(
BG
==
2
&&
Zc
>
64
))
{
if
((
BG
==
1
&&
Zc
>
176
)
||
(
BG
==
2
&&
Zc
>
64
))
{
// extend matrix
// extend matrix
start_meas
(
tprep
);
if
(
tprep
!=
NULL
)
start_meas
(
tprep
);
for
(
i1
=
0
;
i1
<
ncols
;
i1
++
)
for
(
i1
=
0
;
i1
<
ncols
;
i1
++
)
{
{
memcpy
(
&
c_extension
[
2
*
i1
*
Zc
],
&
c
[
i1
*
Zc
],
Zc
*
sizeof
(
unsigned
char
));
memcpy
(
&
c_extension
[
2
*
i1
*
Zc
],
&
c
[
i1
*
Zc
],
Zc
*
sizeof
(
unsigned
char
));
...
@@ -460,11 +460,11 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i
...
@@ -460,11 +460,11 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i
printf("\n");
printf("\n");
*/
*/
}
}
stop_meas
(
tprep
);
if
(
tprep
!=
NULL
)
stop_meas
(
tprep
);
//parity check part
//parity check part
start_meas
(
tparity
);
if
(
tparity
!=
NULL
)
start_meas
(
tparity
);
encode_parity_check_part_optim
(
c_extension
,
d
,
BG
,
Zc
,
Kb
);
encode_parity_check_part_optim
(
c_extension
,
d
,
BG
,
Zc
,
Kb
);
stop_meas
(
tparity
);
if
(
tparity
!=
NULL
)
stop_meas
(
tparity
);
}
}
else
{
else
{
if
(
encode_parity_check_part_orig
(
c
,
d
,
BG
,
Zc
,
Kb
,
block_length
)
!=
0
)
{
if
(
encode_parity_check_part_orig
(
c
,
d
,
BG
,
Zc
,
Kb
,
block_length
)
!=
0
)
{
...
@@ -472,7 +472,7 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i
...
@@ -472,7 +472,7 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i
return
(
-
1
);
return
(
-
1
);
}
}
}
}
start_meas
(
toutput
);
if
(
toutput
!=
NULL
)
start_meas
(
toutput
);
// information part and puncture columns
// information part and puncture columns
/*
/*
memcpy(&channel_input[0], &c[2*Zc], (block_length-2*Zc)*sizeof(unsigned char));
memcpy(&channel_input[0], &c[2*Zc], (block_length-2*Zc)*sizeof(unsigned char));
...
@@ -513,7 +513,7 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i
...
@@ -513,7 +513,7 @@ int ldpc_encoder_optim_8seg(unsigned char **test_input,unsigned char **channel_i
AssertFatal
(
1
==
0
,
"Need AVX2 for now
\n
"
);
AssertFatal
(
1
==
0
,
"Need AVX2 for now
\n
"
);
#endif
#endif
stop_meas
(
toutput
);
if
(
toutput
!=
NULL
)
stop_meas
(
toutput
);
return
0
;
return
0
;
}
}
...
@@ -613,7 +613,7 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha
...
@@ -613,7 +613,7 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha
memset
(
c
,
0
,
sizeof
(
unsigned
char
)
*
ncols
*
Zc
);
memset
(
c
,
0
,
sizeof
(
unsigned
char
)
*
ncols
*
Zc
);
memset
(
d
,
0
,
sizeof
(
unsigned
char
)
*
nrows
*
Zc
);
memset
(
d
,
0
,
sizeof
(
unsigned
char
)
*
nrows
*
Zc
);
start_meas
(
tinput
);
if
(
tinput
!=
NULL
)
start_meas
(
tinput
);
#if 0
#if 0
for (i=0; i<block_length; i++) {
for (i=0; i<block_length; i++) {
//for (j=0; j<n_segments; j++) {
//for (j=0; j<n_segments; j++) {
...
@@ -649,11 +649,11 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha
...
@@ -649,11 +649,11 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha
#endif
#endif
#endif
#endif
stop_meas
(
tinput
);
if
(
tinput
!=
NULL
)
stop_meas
(
tinput
);
if
((
BG
==
1
&&
Zc
>
176
)
||
(
BG
==
2
&&
Zc
>
64
))
{
if
((
BG
==
1
&&
Zc
>
176
)
||
(
BG
==
2
&&
Zc
>
64
))
{
// extend matrix
// extend matrix
start_meas
(
tprep
);
if
(
tprep
!=
NULL
)
start_meas
(
tprep
);
for
(
i1
=
0
;
i1
<
ncols
;
i1
++
)
for
(
i1
=
0
;
i1
<
ncols
;
i1
++
)
{
{
memcpy
(
&
c_extension
[
2
*
i1
*
Zc
],
&
c
[
i1
*
Zc
],
Zc
*
sizeof
(
unsigned
char
));
memcpy
(
&
c_extension
[
2
*
i1
*
Zc
],
&
c
[
i1
*
Zc
],
Zc
*
sizeof
(
unsigned
char
));
...
@@ -668,11 +668,11 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha
...
@@ -668,11 +668,11 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha
printf("\n");
printf("\n");
*/
*/
}
}
stop_meas
(
tprep
);
if
(
tprep
!=
NULL
)
stop_meas
(
tprep
);
//parity check part
//parity check part
start_meas
(
tparity
);
if
(
tparity
!=
NULL
)
start_meas
(
tparity
);
encode_parity_check_part_optim
(
c_extension
,
d
,
BG
,
Zc
,
Kb
);
encode_parity_check_part_optim
(
c_extension
,
d
,
BG
,
Zc
,
Kb
);
stop_meas
(
tparity
);
if
(
tparity
!=
NULL
)
stop_meas
(
tparity
);
}
}
else
{
else
{
if
(
encode_parity_check_part_orig
(
c
,
d
,
BG
,
Zc
,
Kb
,
block_length
)
!=
0
)
{
if
(
encode_parity_check_part_orig
(
c
,
d
,
BG
,
Zc
,
Kb
,
block_length
)
!=
0
)
{
...
@@ -680,7 +680,7 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha
...
@@ -680,7 +680,7 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha
return
(
-
1
);
return
(
-
1
);
}
}
}
}
start_meas
(
toutput
);
if
(
toutput
!=
NULL
)
start_meas
(
toutput
);
// information part and puncture columns
// information part and puncture columns
/*
/*
memcpy(&channel_input[0], &c[2*Zc], (block_length-2*Zc)*sizeof(unsigned char));
memcpy(&channel_input[0], &c[2*Zc], (block_length-2*Zc)*sizeof(unsigned char));
...
@@ -726,7 +726,7 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha
...
@@ -726,7 +726,7 @@ int ldpc_encoder_optim_8seg_multi(unsigned char **test_input,unsigned char **cha
AssertFatal
(
1
==
0
,
"Need AVX2 for now
\n
"
);
AssertFatal
(
1
==
0
,
"Need AVX2 for now
\n
"
);
#endif
#endif
stop_meas
(
toutput
);
if
(
toutput
!=
NULL
)
stop_meas
(
toutput
);
return
0
;
return
0
;
}
}
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
View file @
175c813f
...
@@ -74,7 +74,10 @@ uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t *dlsch,
...
@@ -74,7 +74,10 @@ uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t *dlsch,
int
frame
,
int
frame
,
uint8_t
slot
,
uint8_t
slot
,
NR_DL_FRAME_PARMS
*
frame_parms
,
NR_DL_FRAME_PARMS
*
frame_parms
,
nfapi_nr_config_request_t
*
config
)
{
nfapi_nr_config_request_t
*
config
,
time_stats_t
*
dlsch_encoding_stats
,
time_stats_t
*
dlsch_scrambling_stats
,
time_stats_t
*
dlsch_modulation_stats
)
{
NR_DL_gNB_HARQ_t
*
harq
=
dlsch
->
harq_processes
[
dci_alloc
->
harq_pid
];
NR_DL_gNB_HARQ_t
*
harq
=
dlsch
->
harq_processes
[
dci_alloc
->
harq_pid
];
nfapi_nr_dl_config_dlsch_pdu_rel15_t
*
rel15
=
&
harq
->
dlsch_pdu
.
dlsch_pdu_rel15
;
nfapi_nr_dl_config_dlsch_pdu_rel15_t
*
rel15
=
&
harq
->
dlsch_pdu
.
dlsch_pdu_rel15
;
...
@@ -89,7 +92,9 @@ uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t *dlsch,
...
@@ -89,7 +92,9 @@ uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t *dlsch,
/// CRC, coding, interleaving and rate matching
/// CRC, coding, interleaving and rate matching
AssertFatal
(
harq
->
pdu
!=
NULL
,
"harq->pdu is null
\n
"
);
AssertFatal
(
harq
->
pdu
!=
NULL
,
"harq->pdu is null
\n
"
);
start_meas
(
dlsch_encoding_stats
);
nr_dlsch_encoding
(
harq
->
pdu
,
frame
,
slot
,
dlsch
,
frame_parms
);
nr_dlsch_encoding
(
harq
->
pdu
,
frame
,
slot
,
dlsch
,
frame_parms
);
stop_meas
(
dlsch_encoding_stats
);
#ifdef DEBUG_DLSCH
#ifdef DEBUG_DLSCH
printf
(
"PDSCH encoding:
\n
Payload:
\n
"
);
printf
(
"PDSCH encoding:
\n
Payload:
\n
"
);
for
(
int
i
=
0
;
i
<
harq
->
B
>>
7
;
i
++
)
{
for
(
int
i
=
0
;
i
<
harq
->
B
>>
7
;
i
++
)
{
...
@@ -107,6 +112,7 @@ printf("\n");
...
@@ -107,6 +112,7 @@ printf("\n");
#endif
#endif
/// scrambling
/// scrambling
start_meas
(
dlsch_scrambling_stats
);
for
(
int
q
=
0
;
q
<
rel15
->
nb_codewords
;
q
++
)
for
(
int
q
=
0
;
q
<
rel15
->
nb_codewords
;
q
++
)
memset
((
void
*
)
scrambled_output
[
q
],
0
,
(
encoded_length
>>
5
)
*
sizeof
(
uint32_t
));
memset
((
void
*
)
scrambled_output
[
q
],
0
,
(
encoded_length
>>
5
)
*
sizeof
(
uint32_t
));
uint16_t
n_RNTI
=
(
pdcch_params
.
search_space_type
==
NFAPI_NR_SEARCH_SPACE_TYPE_UE_SPECIFIC
)
?
\
uint16_t
n_RNTI
=
(
pdcch_params
.
search_space_type
==
NFAPI_NR_SEARCH_SPACE_TYPE_UE_SPECIFIC
)
?
\
...
@@ -120,6 +126,7 @@ printf("\n");
...
@@ -120,6 +126,7 @@ printf("\n");
Nid
,
Nid
,
n_RNTI
,
n_RNTI
,
scrambled_output
[
q
]);
scrambled_output
[
q
]);
stop_meas
(
dlsch_scrambling_stats
);
#ifdef DEBUG_DLSCH
#ifdef DEBUG_DLSCH
printf
(
"PDSCH scrambling:
\n
"
);
printf
(
"PDSCH scrambling:
\n
"
);
for
(
int
i
=
0
;
i
<
encoded_length
>>
8
;
i
++
)
{
for
(
int
i
=
0
;
i
<
encoded_length
>>
8
;
i
++
)
{
...
@@ -130,12 +137,13 @@ for (int i=0; i<encoded_length>>8; i++) {
...
@@ -130,12 +137,13 @@ for (int i=0; i<encoded_length>>8; i++) {
#endif
#endif
/// Modulation
/// Modulation
start_meas
(
dlsch_modulation_stats
);
for
(
int
q
=
0
;
q
<
rel15
->
nb_codewords
;
q
++
)
for
(
int
q
=
0
;
q
<
rel15
->
nb_codewords
;
q
++
)
nr_modulation
(
scrambled_output
[
q
],
nr_modulation
(
scrambled_output
[
q
],
encoded_length
,
encoded_length
,
Qm
,
Qm
,
mod_symbs
[
q
]);
mod_symbs
[
q
]);
stop_meas
(
dlsch_modulation_stats
);
#ifdef DEBUG_DLSCH
#ifdef DEBUG_DLSCH
printf
(
"PDSCH Modulation: Qm %d(%d)
\n
"
,
Qm
,
nb_symbols
);
printf
(
"PDSCH Modulation: Qm %d(%d)
\n
"
,
Qm
,
nb_symbols
);
for
(
int
i
=
0
;
i
<
nb_symbols
>>
3
;
i
++
)
{
for
(
int
i
=
0
;
i
<
nb_symbols
>>
3
;
i
++
)
{
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
View file @
175c813f
...
@@ -74,7 +74,11 @@ uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t *dlsch,
...
@@ -74,7 +74,11 @@ uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t *dlsch,
int
frame
,
int
frame
,
uint8_t
slot
,
uint8_t
slot
,
NR_DL_FRAME_PARMS
*
frame_parms
,
NR_DL_FRAME_PARMS
*
frame_parms
,
nfapi_nr_config_request_t
*
config
);
nfapi_nr_config_request_t
*
config
,
time_stats_t
*
dlsch_encoding_stats
,
time_stats_t
*
dlsch_scrambling_stats
,
time_stats_t
*
dlsch_modulation_stats
);
void
free_gNB_dlsch
(
NR_gNB_DLSCH_t
*
dlsch
);
void
free_gNB_dlsch
(
NR_gNB_DLSCH_t
*
dlsch
);
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
View file @
175c813f
...
@@ -366,7 +366,6 @@ int nr_dlsch_encoding(unsigned char *a,int frame,
...
@@ -366,7 +366,6 @@ int nr_dlsch_encoding(unsigned char *a,int frame,
//printf("segment Z %d k %d Kr %d BG %d\n", *pz,dlsch->harq_processes[harq_pid]->K,Kr,BG);
//printf("segment Z %d k %d Kr %d BG %d\n", *pz,dlsch->harq_processes[harq_pid]->K,Kr,BG);
//start_meas(te_stats);
for
(
r
=
0
;
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
r
++
)
{
for
(
r
=
0
;
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
r
++
)
{
//d_tmp[r] = &dlsch->harq_processes[harq_pid]->d[r][0];
//d_tmp[r] = &dlsch->harq_processes[harq_pid]->d[r][0];
//channel_input[r] = &dlsch->harq_processes[harq_pid]->d[r][0];
//channel_input[r] = &dlsch->harq_processes[harq_pid]->d[r][0];
...
@@ -398,7 +397,6 @@ int nr_dlsch_encoding(unsigned char *a,int frame,
...
@@ -398,7 +397,6 @@ int nr_dlsch_encoding(unsigned char *a,int frame,
//ldpc_encoder_optim_8seg(dlsch->harq_processes[harq_pid]->c,d_tmp,Kr,BG,dlsch->harq_processes[harq_pid]->C,NULL,NULL,NULL,NULL);
//ldpc_encoder_optim_8seg(dlsch->harq_processes[harq_pid]->c,d_tmp,Kr,BG,dlsch->harq_processes[harq_pid]->C,NULL,NULL,NULL,NULL);
ldpc_encoder_optim_8seg
(
dlsch
->
harq_processes
[
harq_pid
]
->
c
,
dlsch
->
harq_processes
[
harq_pid
]
->
d
,
Kr
,
BG
,
dlsch
->
harq_processes
[
harq_pid
]
->
C
,
NULL
,
NULL
,
NULL
,
NULL
);
ldpc_encoder_optim_8seg
(
dlsch
->
harq_processes
[
harq_pid
]
->
c
,
dlsch
->
harq_processes
[
harq_pid
]
->
d
,
Kr
,
BG
,
dlsch
->
harq_processes
[
harq_pid
]
->
C
,
NULL
,
NULL
,
NULL
,
NULL
);
//stop_meas(te_stats);
//printf("end ldpc encoder -- output\n");
//printf("end ldpc encoder -- output\n");
#ifdef DEBUG_DLSCH_CODING
#ifdef DEBUG_DLSCH_CODING
...
@@ -425,7 +423,6 @@ int nr_dlsch_encoding(unsigned char *a,int frame,
...
@@ -425,7 +423,6 @@ int nr_dlsch_encoding(unsigned char *a,int frame,
mod_order
,
nb_rb
);
mod_order
,
nb_rb
);
#endif
#endif
//start_meas(rm_stats);
#ifdef DEBUG_DLSCH_CODING
#ifdef DEBUG_DLSCH_CODING
printf
(
"rvidx in encoding = %d
\n
"
,
rel15
.
redundancy_version
);
printf
(
"rvidx in encoding = %d
\n
"
,
rel15
.
redundancy_version
);
#endif
#endif
...
@@ -447,14 +444,11 @@ int nr_dlsch_encoding(unsigned char *a,int frame,
...
@@ -447,14 +444,11 @@ int nr_dlsch_encoding(unsigned char *a,int frame,
for
(
int
i
=
0
;
i
<
16
;
i
++
)
for
(
int
i
=
0
;
i
<
16
;
i
++
)
printf
(
"output ratematching e[%d]= %d r_offset %d
\n
"
,
i
,
dlsch
->
harq_processes
[
harq_pid
]
->
e
[
i
+
r_offset
],
r_offset
);
printf
(
"output ratematching e[%d]= %d r_offset %d
\n
"
,
i
,
dlsch
->
harq_processes
[
harq_pid
]
->
e
[
i
+
r_offset
],
r_offset
);
#endif
#endif
//stop_meas(rm_stats);
//start_meas(i_stats);
nr_interleaving_ldpc
(
E
,
nr_interleaving_ldpc
(
E
,
mod_order
,
mod_order
,
dlsch
->
harq_processes
[
harq_pid
]
->
e
+
r_offset
,
dlsch
->
harq_processes
[
harq_pid
]
->
e
+
r_offset
,
dlsch
->
harq_processes
[
harq_pid
]
->
f
+
r_offset
);
dlsch
->
harq_processes
[
harq_pid
]
->
f
+
r_offset
);
//stop_meas(i_stats);
#ifdef DEBUG_DLSCH_CODING
#ifdef DEBUG_DLSCH_CODING
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
175c813f
...
@@ -30,6 +30,7 @@
...
@@ -30,6 +30,7 @@
* \warning
* \warning
*/
*/
#include "common/utils/LOG/vcd_signal_dumper.h"
#include "PHY/defs_nr_UE.h"
#include "PHY/defs_nr_UE.h"
#include "PHY/phy_extern_nr_ue.h"
#include "PHY/phy_extern_nr_ue.h"
#include "PHY/CODING/coding_extern.h"
#include "PHY/CODING/coding_extern.h"
...
@@ -307,6 +308,8 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -307,6 +308,8 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
LOG_I
(
PHY
,
"DLSCH Decoding, harq_pid %d TBS %d G %d mcs %d Nl %d nb_symb_sch %d nb_rb %d
\n
"
,
harq_pid
,
A
,
G
,
harq_process
->
mcs
,
harq_process
->
Nl
,
nb_symb_sch
,
nb_rb
);
LOG_I
(
PHY
,
"DLSCH Decoding, harq_pid %d TBS %d G %d mcs %d Nl %d nb_symb_sch %d nb_rb %d
\n
"
,
harq_pid
,
A
,
G
,
harq_process
->
mcs
,
harq_process
->
Nl
,
nb_symb_sch
,
nb_rb
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_SEGMENTATION
,
VCD_FUNCTION_IN
);
if
(
harq_process
->
round
==
0
)
{
if
(
harq_process
->
round
==
0
)
{
// This is a new packet, so compute quantities regarding segmentation
// This is a new packet, so compute quantities regarding segmentation
harq_process
->
B
=
A
+
24
;
harq_process
->
B
=
A
+
24
;
...
@@ -324,6 +327,8 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -324,6 +327,8 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
#endif
#endif
}
}
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_SEGMENTATION
,
VCD_FUNCTION_OUT
);
p_decParams
->
Z
=
harq_process
->
Z
;
p_decParams
->
Z
=
harq_process
->
Z
;
//printf("dlsch decoding nr segmentation Z %d\n", p_decParams->Z);
//printf("dlsch decoding nr segmentation Z %d\n", p_decParams->Z);
...
@@ -406,11 +411,16 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -406,11 +411,16 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
#if UE_TIMING_TRACE
#if UE_TIMING_TRACE
start_meas
(
dlsch_deinterleaving_stats
);
start_meas
(
dlsch_deinterleaving_stats
);
#endif
#endif
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DEINTERLEAVING
,
VCD_FUNCTION_IN
);
nr_deinterleaving_ldpc
(
E
,
nr_deinterleaving_ldpc
(
E
,
harq_process
->
Qm
,
harq_process
->
Qm
,
harq_process
->
w
[
r
],
// [hna] w is e
harq_process
->
w
[
r
],
// [hna] w is e
dlsch_llr
+
r_offset
);
dlsch_llr
+
r_offset
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DEINTERLEAVING
,
VCD_FUNCTION_OUT
);
//for (int i =0; i<16; i++)
//for (int i =0; i<16; i++)
// printf("rx output deinterleaving w[%d]= %d r_offset %d\n", i,harq_process->w[r][i], r_offset);
// printf("rx output deinterleaving w[%d]= %d r_offset %d\n", i,harq_process->w[r][i], r_offset);
...
@@ -434,6 +444,8 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -434,6 +444,8 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
harq_process
->
round
);
harq_process
->
round
);
#endif
#endif
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_RATE_MATCHING
,
VCD_FUNCTION_IN
);
if
(
nr_rate_matching_ldpc_rx
(
Ilbrm
,
if
(
nr_rate_matching_ldpc_rx
(
Ilbrm
,
Tbslbrm
,
Tbslbrm
,
p_decParams
->
BG
,
p_decParams
->
BG
,
...
@@ -444,12 +456,15 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -444,12 +456,15 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
harq_process
->
rvidx
,
harq_process
->
rvidx
,
(
harq_process
->
round
==
0
)
?
1
:
0
,
(
harq_process
->
round
==
0
)
?
1
:
0
,
E
)
==-
1
)
{
E
)
==-
1
)
{
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_RATE_MATCHING
,
VCD_FUNCTION_OUT
);
#if UE_TIMING_TRACE
#if UE_TIMING_TRACE
stop_meas
(
dlsch_rate_unmatching_stats
);
stop_meas
(
dlsch_rate_unmatching_stats
);
#endif
#endif
LOG_E
(
PHY
,
"dlsch_decoding.c: Problem in rate_matching
\n
"
);
LOG_E
(
PHY
,
"dlsch_decoding.c: Problem in rate_matching
\n
"
);
return
(
dlsch
->
max_ldpc_iterations
+
1
);
return
(
dlsch
->
max_ldpc_iterations
+
1
);
}
else
{
}
else
{
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_RATE_MATCHING
,
VCD_FUNCTION_OUT
);
#if UE_TIMING_TRACE
#if UE_TIMING_TRACE
stop_meas
(
dlsch_rate_unmatching_stats
);
stop_meas
(
dlsch_rate_unmatching_stats
);
#endif
#endif
...
@@ -515,12 +530,16 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -515,12 +530,16 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
pl
[
j
]
=
_mm_packs_epi16
(
pv
[
i
],
pv
[
i
+
1
]);
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
);
no_iteration_ldpc
=
nrLDPC_decoder
(
p_decParams
,
no_iteration_ldpc
=
nrLDPC_decoder
(
p_decParams
,
(
int8_t
*
)
&
pl
[
0
],
(
int8_t
*
)
&
pl
[
0
],
llrProcBuf
,
llrProcBuf
,
p_nrLDPC_procBuf
[
r
],
p_nrLDPC_procBuf
[
r
],
p_procTime
);
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
// 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
))
{
if
(
check_crc
((
uint8_t
*
)
llrProcBuf
,
length_dec
,
harq_process
->
F
,
crc_type
))
{
printf
(
"
\x1B
[34m"
"Segment %d CRC OK
\n
"
,
r
);
printf
(
"
\x1B
[34m"
"Segment %d CRC OK
\n
"
,
r
);
...
@@ -644,6 +663,9 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -644,6 +663,9 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
printf("F %d, Fbytes %d\n",harq_process->F,harq_process->F>>3);
printf("F %d, Fbytes %d\n",harq_process->F,harq_process->F>>3);
printf("C %d\n",harq_process->C);
printf("C %d\n",harq_process->C);
*/
*/
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_COMBINE_SEG
,
VCD_FUNCTION_IN
);
for
(
r
=
0
;
r
<
harq_process
->
C
;
r
++
)
{
for
(
r
=
0
;
r
<
harq_process
->
C
;
r
++
)
{
memcpy
(
harq_process
->
b
+
offset
,
memcpy
(
harq_process
->
b
+
offset
,
...
@@ -674,6 +696,8 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -674,6 +696,8 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
}
}
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_COMBINE_SEG
,
VCD_FUNCTION_OUT
);
dlsch
->
last_iteration_cnt
=
ret
;
dlsch
->
last_iteration_cnt
=
ret
;
return
(
ret
);
return
(
ret
);
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
View file @
175c813f
...
@@ -36,6 +36,7 @@
...
@@ -36,6 +36,7 @@
#include "PHY/MODULATION/nr_modulation.h"
#include "PHY/MODULATION/nr_modulation.h"
#include "PHY/MODULATION/modulation_common.h"
#include "PHY/MODULATION/modulation_common.h"
#include "common/utils/assertions.h"
#include "common/utils/assertions.h"
#include "common/utils/LOG/vcd_signal_dumper.h"
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
#include "PHY/NR_TRANSPORT/nr_sch_dmrs.h"
#include "PHY/NR_TRANSPORT/nr_sch_dmrs.h"
#include "PHY/defs_nr_common.h"
#include "PHY/defs_nr_common.h"
...
...
openair1/PHY/defs_gNB.h
View file @
175c813f
...
@@ -465,6 +465,8 @@ typedef struct gNB_L1_proc_t_s {
...
@@ -465,6 +465,8 @@ typedef struct gNB_L1_proc_t_s {
pthread_t
pthread_single
;
pthread_t
pthread_single
;
/// pthread structure for asychronous RX/TX processing thread
/// pthread structure for asychronous RX/TX processing thread
pthread_t
pthread_asynch_rxtx
;
pthread_t
pthread_asynch_rxtx
;
/// pthread structure for printing time meas
pthread_t
L1_stats_thread
;
/// flag to indicate first RX acquisition
/// flag to indicate first RX acquisition
int
first_rx
;
int
first_rx
;
/// flag to indicate first TX transmission
/// flag to indicate first TX transmission
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
175c813f
...
@@ -196,7 +196,11 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
...
@@ -196,7 +196,11 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
&
gNB
->
pdcch_vars
.
dci_alloc
[
0
],
&
gNB
->
pdcch_vars
.
dci_alloc
[
0
],
gNB
->
nr_gold_pdsch_dmrs
[
slot
],
gNB
->
nr_gold_pdsch_dmrs
[
slot
],
gNB
->
common_vars
.
txdataF
,
gNB
->
common_vars
.
txdataF
,
AMP
,
frame
,
slot
,
fp
,
cfg
);
AMP
,
frame
,
slot
,
fp
,
cfg
,
&
gNB
->
dlsch_encoding_stats
,
&
gNB
->
dlsch_scrambling_stats
,
&
gNB
->
dlsch_modulation_stats
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_GENERATE_DLSCH
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_GENERATE_DLSCH
,
0
);
}
}
}
}
...
...
openair1/SIMULATION/NR_PHY/dlschsim.c
View file @
175c813f
...
@@ -28,6 +28,8 @@
...
@@ -28,6 +28,8 @@
#include "common/ran_context.h"
#include "common/ran_context.h"
#include "common/config/config_userapi.h"
#include "common/config/config_userapi.h"
#include "common/utils/LOG/log.h"
#include "common/utils/LOG/log.h"
#include "common/utils/LOG/vcd_signal_dumper.h"
#include "T.h"
#include "PHY/defs_gNB.h"
#include "PHY/defs_gNB.h"
#include "PHY/defs_nr_common.h"
#include "PHY/defs_nr_common.h"
#include "PHY/defs_nr_UE.h"
#include "PHY/defs_nr_UE.h"
...
@@ -115,7 +117,7 @@ int main(int argc, char **argv)
...
@@ -115,7 +117,7 @@ int main(int argc, char **argv)
//logInit();
//logInit();
randominit
(
0
);
randominit
(
0
);
while
((
c
=
getopt
(
argc
,
argv
,
"df:hpg:i:j:n:l:m:r:s:S:y:z:M:N:F:R:P:L:"
))
!=
-
1
)
{
while
((
c
=
getopt
(
argc
,
argv
,
"df:hp
V
g:i:j:n:l:m:r:s:S:y:z:M:N:F:R:P:L:"
))
!=
-
1
)
{
switch
(
c
)
{
switch
(
c
)
{
/*case 'f':
/*case 'f':
write_output_file = 1;
write_output_file = 1;
...
@@ -188,6 +190,10 @@ int main(int argc, char **argv)
...
@@ -188,6 +190,10 @@ int main(int argc, char **argv)
#endif
#endif
break
;
break
;
case
'V'
:
ouput_vcd
=
1
;
break
;
case
'S'
:
case
'S'
:
snr1
=
atof
(
optarg
);
snr1
=
atof
(
optarg
);
snr1set
=
1
;
snr1set
=
1
;
...
@@ -286,6 +292,7 @@ int main(int argc, char **argv)
...
@@ -286,6 +292,7 @@ int main(int argc, char **argv)
printf
(
"%s -h(elp) -p(extended_prefix) -N cell_id -f output_filename -F input_filename -g channel_model -n n_frames -t Delayspread -s snr0 -S snr1 -x transmission_mode -y TXant -z RXant -i Intefrence0 -j Interference1 -A interpolation_file -C(alibration offset dB) -N CellId
\n
"
,
argv
[
0
]);
printf
(
"%s -h(elp) -p(extended_prefix) -N cell_id -f output_filename -F input_filename -g channel_model -n n_frames -t Delayspread -s snr0 -S snr1 -x transmission_mode -y TXant -z RXant -i Intefrence0 -j Interference1 -A interpolation_file -C(alibration offset dB) -N CellId
\n
"
,
argv
[
0
]);
printf
(
"-h This message
\n
"
);
printf
(
"-h This message
\n
"
);
printf
(
"-p Use extended prefix mode
\n
"
);
printf
(
"-p Use extended prefix mode
\n
"
);
printf
(
"-V Enable VCD dumb functions
\n
"
);
//printf("-d Use TDD\n");
//printf("-d Use TDD\n");
printf
(
"-n Number of frames to simulate
\n
"
);
printf
(
"-n Number of frames to simulate
\n
"
);
printf
(
"-s Starting SNR, runs from SNR0 to SNR0 + 5 dB. If n_frames is 1 then just SNR is simulated
\n
"
);
printf
(
"-s Starting SNR, runs from SNR0 to SNR0 + 5 dB. If n_frames is 1 then just SNR is simulated
\n
"
);
...
@@ -317,6 +324,9 @@ int main(int argc, char **argv)
...
@@ -317,6 +324,9 @@ int main(int argc, char **argv)
if
(
snr1set
==
0
)
if
(
snr1set
==
0
)
snr1
=
snr0
+
10
;
snr1
=
snr0
+
10
;
if
(
ouput_vcd
)
vcd_signal_dumper_init
(
"/tmp/openair_dump_nr_dlschsim.vcd"
);
gNB2UE
=
new_channel_desc_scm
(
n_tx
,
n_rx
,
channel_model
,
gNB2UE
=
new_channel_desc_scm
(
n_tx
,
n_rx
,
channel_model
,
61.44e6
,
//N_RB2sampling_rate(N_RB_DL),
61.44e6
,
//N_RB2sampling_rate(N_RB_DL),
40e6
,
//N_RB2channel_bandwidth(N_RB_DL),
40e6
,
//N_RB2channel_bandwidth(N_RB_DL),
...
@@ -525,10 +535,15 @@ int main(int argc, char **argv)
...
@@ -525,10 +535,15 @@ int main(int argc, char **argv)
printf
(
"
\n
"
);
printf
(
"
\n
"
);
exit
(
-
1
);
exit
(
-
1
);
#endif
#endif
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DECODING0
,
VCD_FUNCTION_IN
);
ret
=
nr_dlsch_decoding
(
UE
,
channel_output_fixed
,
&
UE
->
frame_parms
,
ret
=
nr_dlsch_decoding
(
UE
,
channel_output_fixed
,
&
UE
->
frame_parms
,
dlsch0_ue
,
dlsch0_ue
->
harq_processes
[
0
],
frame
,
nb_symb_sch
,
dlsch0_ue
,
dlsch0_ue
->
harq_processes
[
0
],
frame
,
nb_symb_sch
,
slot
,
harq_pid
,
is_crnti
,
llr8_flag
);
slot
,
harq_pid
,
is_crnti
,
llr8_flag
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DECODING0
,
VCD_FUNCTION_OUT
);
if
(
ret
>
dlsch0_ue
->
max_ldpc_iterations
)
if
(
ret
>
dlsch0_ue
->
max_ldpc_iterations
)
n_errors
++
;
n_errors
++
;
...
@@ -622,6 +637,9 @@ int main(int argc, char **argv)
...
@@ -622,6 +637,9 @@ int main(int argc, char **argv)
if
(
input_fd
)
if
(
input_fd
)
fclose
(
input_fd
);
fclose
(
input_fd
);
if
(
ouput_vcd
)
vcd_signal_dumper_close
();
return
(
n_errors
);
return
(
n_errors
);
}
}
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
175c813f
...
@@ -608,6 +608,8 @@ int main(int argc, char **argv)
...
@@ -608,6 +608,8 @@ int main(int argc, char **argv)
dl_config
->
dl_config_list
[
0
].
dci_config_pdu
.
dci_config_rel15
.
coreset
.
cce_reg_interleaved_shift_index
=
cell_id
;
dl_config
->
dl_config_list
[
0
].
dci_config_pdu
.
dci_config_rel15
.
coreset
.
cce_reg_interleaved_shift_index
=
cell_id
;
dl_config
->
dl_config_list
[
0
].
dci_config_pdu
.
dci_config_rel15
.
coreset
.
precoder_granularity
=
PRECODER_GRANULARITY_SAME_AS_REG_BUNDLE
;
dl_config
->
dl_config_list
[
0
].
dci_config_pdu
.
dci_config_rel15
.
coreset
.
precoder_granularity
=
PRECODER_GRANULARITY_SAME_AS_REG_BUNDLE
;
dl_config
->
dl_config_list
[
0
].
dci_config_pdu
.
dci_config_rel15
.
coreset
.
pdcch_dmrs_scrambling_id
=
cell_id
;
dl_config
->
dl_config_list
[
0
].
dci_config_pdu
.
dci_config_rel15
.
coreset
.
pdcch_dmrs_scrambling_id
=
cell_id
;
uint8_t
gnb_start_symbol
=
Sched_INFO
.
DL_req
->
dl_config_request_body
.
dl_config_pdu_list
[
1
].
dlsch_pdu
.
dlsch_pdu_rel15
.
start_symbol
;
dl_config
->
dl_config_list
[
0
].
dlsch_config_pdu
.
dlsch_config_rel15
.
start_symbol
=
gnb_start_symbol
;
uint32_t
number_of_search_space_per_slot
=
1
;
uint32_t
number_of_search_space_per_slot
=
1
;
uint32_t
first_symbol_index
=
0
;
uint32_t
first_symbol_index
=
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment