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
03ce0557
Commit
03ce0557
authored
May 18, 2020
by
Francesco Mani
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'NR_RRC_harq_b' into NR_RRC_harq_hacks
parents
b5b78125
5a5f5039
Changes
15
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
388 additions
and
214 deletions
+388
-214
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+3
-0
cmake_targets/autotests/test_case_list.xml
cmake_targets/autotests/test_case_list.xml
+11
-4
openair1/PHY/CODING/nr_rate_matching.c
openair1/PHY/CODING/nr_rate_matching.c
+5
-4
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
+3
-0
openair1/PHY/TOOLS/tools_defs.h
openair1/PHY/TOOLS/tools_defs.h
+0
-4
openair1/PHY/impl_defs_nr.h
openair1/PHY/impl_defs_nr.h
+5
-5
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+1
-0
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
+10
-3
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+12
-5
openair1/SCHED_NR_UE/pucch_uci_ue_nr.c
openair1/SCHED_NR_UE/pucch_uci_ue_nr.c
+152
-57
openair1/SCHED_NR_UE/pucch_uci_ue_nr.h
openair1/SCHED_NR_UE/pucch_uci_ue_nr.h
+11
-3
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+161
-117
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+5
-9
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+3
-3
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+6
-0
No files found.
cmake_targets/CMakeLists.txt
View file @
03ce0557
...
@@ -2833,6 +2833,7 @@ target_link_libraries(ldpctest
...
@@ -2833,6 +2833,7 @@ target_link_libraries(ldpctest
add_executable
(
nr_dlschsim
add_executable
(
nr_dlschsim
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/dlschsim.c
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/dlschsim.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/nr/nr_common.c
${
UTIL_SRC
}
${
UTIL_SRC
}
${
T_SOURCE
}
${
T_SOURCE
}
${
SHLIB_LOADER_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
...
@@ -2845,6 +2846,7 @@ target_link_libraries(nr_dlschsim
...
@@ -2845,6 +2846,7 @@ target_link_libraries(nr_dlschsim
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/system.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/nr/nr_common.c
${
UTIL_SRC
}
${
UTIL_SRC
}
${
T_SOURCE
}
${
T_SOURCE
}
${
SHLIB_LOADER_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
...
@@ -2898,6 +2900,7 @@ target_link_libraries(nr_prachsim
...
@@ -2898,6 +2900,7 @@ target_link_libraries(nr_prachsim
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/system.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/nr/nr_common.c
${
UTIL_SRC
}
${
UTIL_SRC
}
${
T_SOURCE
}
${
T_SOURCE
}
${
SHLIB_LOADER_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
...
...
cmake_targets/autotests/test_case_list.xml
View file @
03ce0557
...
@@ -1087,8 +1087,11 @@
...
@@ -1087,8 +1087,11 @@
(Test6: 217 PRB 100 PDSCH-PRBs),
(Test6: 217 PRB 100 PDSCH-PRBs),
(Test7: 217 PRB 80 PDSCH-Offset),
(Test7: 217 PRB 80 PDSCH-Offset),
(Test8: 217 PRB 100 PDSCH-PRBs 110 PDSCH-Offset),
(Test8: 217 PRB 100 PDSCH-PRBs 110 PDSCH-Offset),
(Test9: 106 PRBs 50 PDSCH-PRBs MCS Index 27)
(Test9: 106 PRBs 50 PDSCH-PRBs MCS Index 27),
(Test10: 106 PRBs 50 PDSCH-PRBs MCS Index 16)
</desc>
(Test10: 106 PRBs 50 PDSCH-PRBs MCS Index 16),
(Test11: HARQ test 25% TP (4 rounds),
(Test12: HARQ test 33% TP (3 rounds),
(Test13: HARQ test 50% TP (2 rounds)
</desc>
<pre_compile_prog></pre_compile_prog>
<pre_compile_prog></pre_compile_prog>
<compile_prog>
$OPENAIR_DIR/cmake_targets/build_oai
</compile_prog>
<compile_prog>
$OPENAIR_DIR/cmake_targets/build_oai
</compile_prog>
<compile_prog_args>
--phy_simulators -c
</compile_prog_args>
<compile_prog_args>
--phy_simulators -c
</compile_prog_args>
...
@@ -1104,8 +1107,12 @@
...
@@ -1104,8 +1107,12 @@
-n100 -R217 -a80 -s5
-n100 -R217 -a80 -s5
-n100 -R217 -a110 -s5 -b100
-n100 -R217 -a110 -s5 -b100
-n100 -e27 -s30
-n100 -e27 -s30
-n100 -e16 -s10
</main_exec_args>
-n100 -e16 -s10
<tags>
nr_dlsim.test1 nr_dlsim.test2 nr_dlsim.test3 nr_dlsim.test4 nr_dlsim.test5 nr_dlsim.test6 nr_dlsim.test7 nr_dlsim.test8 nr_dlsim.test9 nr_dlsim.test10
</tags>
-n100 -s1 -t25
-n100 -s1 -t33
-n100 -s1 -t50
</main_exec_args>
<tags>
nr_dlsim.test1 nr_dlsim.test2 nr_dlsim.test3 nr_dlsim.test4 nr_dlsim.test5 nr_dlsim.test6 nr_dlsim.test7 nr_dlsim.test8 nr_dlsim.test9 nr_dlsim.test10 nr_dlsim.test11 nr_dlsim.test12 nr_dlsim.test13
</tags>
<search_expr_true>
PDSCH test OK
</search_expr_true>
<search_expr_true>
PDSCH test OK
</search_expr_true>
<search_expr_false>
segmentation fault|assertion|exiting|fatal
</search_expr_false>
<search_expr_false>
segmentation fault|assertion|exiting|fatal
</search_expr_false>
<nruns>
3
</nruns>
<nruns>
3
</nruns>
...
...
openair1/PHY/CODING/nr_rate_matching.c
View file @
03ce0557
...
@@ -364,8 +364,8 @@ int nr_rate_matching_ldpc(uint8_t Ilbrm,
...
@@ -364,8 +364,8 @@ int nr_rate_matching_ldpc(uint8_t Ilbrm,
if
(
ind
<
Foffset
)
{
// case where we have some bits before the filler and the rest after
if
(
ind
<
Foffset
)
{
// case where we have some bits before the filler and the rest after
memcpy
((
void
*
)
e
,(
void
*
)(
w
+
ind
),
Foffset
-
ind
);
memcpy
((
void
*
)
e
,(
void
*
)(
w
+
ind
),
Foffset
-
ind
);
if
(
E
+
F
<=
Ncb
)
{
// E+F doesn't contain all coded bits
if
(
E
+
F
<=
Ncb
-
ind
)
{
// E+F doesn't contain all coded bits
memcpy
((
void
*
)(
e
+
Foffset
-
ind
),(
void
*
)(
w
+
Foffset
+
F
-
ind
),
E
-
Foffset
+
ind
);
memcpy
((
void
*
)(
e
+
Foffset
-
ind
),(
void
*
)(
w
+
Foffset
+
F
),
E
-
Foffset
+
ind
);
k
=
E
;
k
=
E
;
}
}
else
{
else
{
...
@@ -375,11 +375,12 @@ int nr_rate_matching_ldpc(uint8_t Ilbrm,
...
@@ -375,11 +375,12 @@ int nr_rate_matching_ldpc(uint8_t Ilbrm,
}
}
else
{
else
{
if
(
E
+
F
<=
Ncb
-
ind
)
{
//E+F doesn't contain all coded bits
if
(
E
+
F
<=
Ncb
-
ind
)
{
//E+F doesn't contain all coded bits
memcpy
((
void
*
)(
e
+
Foffset
-
ind
),(
void
*
)(
w
+
Foffset
+
F
-
ind
),
E
-
Foffset
+
ind
);
memcpy
((
void
*
)(
e
),(
void
*
)(
w
+
ind
),
E
);
k
=
E
;
k
=
E
;
}
}
else
{
else
{
memcpy
((
void
*
)(
e
),(
void
*
)(
w
+
ind
),
Ncb
-
ind
);
k
=
Ncb
-
ind
;
}
}
}
}
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
View file @
03ce0557
...
@@ -465,6 +465,9 @@ int nr_dlsch_encoding(unsigned char *a,
...
@@ -465,6 +465,9 @@ int nr_dlsch_encoding(unsigned char *a,
}
}
F
=
dlsch
->
harq_processes
[
harq_pid
]
->
F
;
Kr
=
dlsch
->
harq_processes
[
harq_pid
]
->
K
;
for
(
r
=
0
;
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
r
++
)
{
for
(
r
=
0
;
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
r
++
)
{
if
(
F
>
0
)
{
if
(
F
>
0
)
{
...
...
openair1/PHY/TOOLS/tools_defs.h
View file @
03ce0557
...
@@ -183,10 +183,6 @@ This function performs optimized fixed-point radix-2 FFT/IFFT.
...
@@ -183,10 +183,6 @@ This function performs optimized fixed-point radix-2 FFT/IFFT.
#ifdef OAIDFTS_MAIN
#ifdef OAIDFTS_MAIN
typedef
void
(
*
adftfunc_t
)(
int16_t
*
sigF
,
int16_t
*
sig
,
unsigned
char
scale_flag
);
typedef
void
(
*
adftfunc_t
)(
int16_t
*
sigF
,
int16_t
*
sig
,
unsigned
char
scale_flag
);
typedef
void
(
*
aidftfunc_t
)(
int16_t
*
sigF
,
int16_t
*
sig
,
unsigned
char
scale_flag
);
typedef
void
(
*
aidftfunc_t
)(
int16_t
*
sigF
,
int16_t
*
sig
,
unsigned
char
scale_flag
);
...
...
openair1/PHY/impl_defs_nr.h
View file @
03ce0557
...
@@ -757,11 +757,11 @@ typedef struct {
...
@@ -757,11 +757,11 @@ typedef struct {
#define MAX_NR_OF_SPATIAL_RELATION_INFOS (8)
#define MAX_NR_OF_SPATIAL_RELATION_INFOS (8)
typedef
enum
{
typedef
enum
{
pucch_format0_nr
=
0
,
pucch_format0_nr
=
1
,
pucch_format1_nr
=
1
,
pucch_format1_nr
=
2
,
pucch_format2_nr
=
2
,
pucch_format2_nr
=
3
,
pucch_format3_nr
=
3
,
pucch_format3_nr
=
4
,
pucch_format4_nr
=
4
,
pucch_format4_nr
=
5
}
pucch_format_nr_t
;
}
pucch_format_nr_t
;
typedef
enum
{
typedef
enum
{
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
03ce0557
...
@@ -382,6 +382,7 @@ void phy_procedures_gNB_common_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
...
@@ -382,6 +382,7 @@ void phy_procedures_gNB_common_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
void
phy_procedures_gNB_uespec_RX
(
PHY_VARS_gNB
*
gNB
,
int
frame_rx
,
int
slot_rx
)
{
void
phy_procedures_gNB_uespec_RX
(
PHY_VARS_gNB
*
gNB
,
int
frame_rx
,
int
slot_rx
)
{
LOG_D
(
PHY
,
"phy_procedures_gNB_uespec_RX frame %d, slot %d
\n
"
,
frame_rx
,
slot_rx
);
LOG_D
(
PHY
,
"phy_procedures_gNB_uespec_RX frame %d, slot %d
\n
"
,
frame_rx
,
slot_rx
);
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_PUCCH_MAX
;
i
++
){
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_PUCCH_MAX
;
i
++
){
...
...
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
View file @
03ce0557
...
@@ -34,6 +34,8 @@
...
@@ -34,6 +34,8 @@
#include "fapi_nr_ue_interface.h"
#include "fapi_nr_ue_interface.h"
#include "fapi_nr_ue_l1.h"
#include "fapi_nr_ue_l1.h"
#include "harq_nr.h"
//#include "PHY/phy_vars_nr_ue.h"
#include "PHY/defs_nr_UE.h"
#include "PHY/defs_nr_UE.h"
#include "PHY/impl_defs_nr.h"
#include "PHY/impl_defs_nr.h"
...
@@ -54,12 +56,18 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
...
@@ -54,12 +56,18 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
NR_UE_PDCCH
*
pdcch_vars
=
PHY_vars_UE_g
[
module_id
][
cc_id
]
->
pdcch_vars
[
thread_id
][
0
];
NR_UE_PDCCH
*
pdcch_vars
=
PHY_vars_UE_g
[
module_id
][
cc_id
]
->
pdcch_vars
[
thread_id
][
0
];
NR_UE_DLSCH_t
*
dlsch0
=
PHY_vars_UE_g
[
module_id
][
cc_id
]
->
dlsch
[
thread_id
][
0
][
0
];
NR_UE_DLSCH_t
*
dlsch0
=
PHY_vars_UE_g
[
module_id
][
cc_id
]
->
dlsch
[
thread_id
][
0
][
0
];
NR_UE_ULSCH_t
*
ulsch0
=
PHY_vars_UE_g
[
module_id
][
cc_id
]
->
ulsch
[
thread_id
][
0
][
0
];
NR_UE_ULSCH_t
*
ulsch0
=
PHY_vars_UE_g
[
module_id
][
cc_id
]
->
ulsch
[
thread_id
][
0
][
0
];
NR_DL_FRAME_PARMS
frame_parms
=
PHY_vars_UE_g
[
module_id
][
cc_id
]
->
frame_parms
;
PRACH_RESOURCES_t
*
prach_resources
=
PHY_vars_UE_g
[
module_id
][
cc_id
]
->
prach_resources
[
0
];
// PUCCH_ConfigCommon_nr_t *pucch_config_common = PHY_vars_UE_g[module_id][cc_id]->pucch_config_common_nr[0];
// PUCCH_Config_t *pucch_config_dedicated = PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0];
if
(
scheduled_response
->
dl_config
!=
NULL
){
if
(
scheduled_response
->
dl_config
!=
NULL
){
fapi_nr_dl_config_request_t
*
dl_config
=
scheduled_response
->
dl_config
;
fapi_nr_dl_config_request_t
*
dl_config
=
scheduled_response
->
dl_config
;
LOG_D
(
PHY
,
"Received %d DL pdus
\n
"
,
dl_config
->
number_pdus
);
LOG_D
(
PHY
,
"Received %d DL pdus
\n
"
,
dl_config
->
number_pdus
);
pdcch_vars
->
nb_search_space
=
0
;
pdcch_vars
->
nb_search_space
=
0
;
for
(
i
=
0
;
i
<
dl_config
->
number_pdus
;
++
i
){
for
(
i
=
0
;
i
<
dl_config
->
number_pdus
;
++
i
){
if
(
dl_config
->
dl_config_list
[
i
].
pdu_type
==
FAPI_NR_DL_CONFIG_TYPE_DCI
)
{
if
(
dl_config
->
dl_config_list
[
i
].
pdu_type
==
FAPI_NR_DL_CONFIG_TYPE_DCI
)
{
...
@@ -90,14 +98,13 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
...
@@ -90,14 +98,13 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
dlsch0_harq
->
dlDmrsSymbPos
=
dlsch_config_pdu
->
dlDmrsSymbPos
;
dlsch0_harq
->
dlDmrsSymbPos
=
dlsch_config_pdu
->
dlDmrsSymbPos
;
dlsch0_harq
->
dmrsConfigType
=
dlsch_config_pdu
->
dmrsConfigType
;
dlsch0_harq
->
dmrsConfigType
=
dlsch_config_pdu
->
dmrsConfigType
;
dlsch0_harq
->
mcs
=
dlsch_config_pdu
->
mcs
;
dlsch0_harq
->
mcs
=
dlsch_config_pdu
->
mcs
;
dlsch0_harq
->
DCINdi
=
dlsch_config_pdu
->
ndi
;
dlsch0_harq
->
rvidx
=
dlsch_config_pdu
->
rv
;
dlsch0_harq
->
rvidx
=
dlsch_config_pdu
->
rv
;
dlsch0
->
g_pucch
=
dlsch_config_pdu
->
accumulated_delta_PUCCH
;
dlsch0
->
g_pucch
=
dlsch_config_pdu
->
accumulated_delta_PUCCH
;
dlsch0_harq
->
harq_ack
.
pucch_resource_indicator
=
dlsch_config_pdu
->
pucch_resource_id
;
dlsch0_harq
->
harq_ack
.
pucch_resource_indicator
=
dlsch_config_pdu
->
pucch_resource_id
;
dlsch0_harq
->
harq_ack
.
slot_for_feedback_ack
=
dlsch_config_pdu
->
pdsch_to_harq_feedback_time_ind
;
dlsch0_harq
->
harq_ack
.
slot_for_feedback_ack
=
(
slot
+
dlsch_config_pdu
->
pdsch_to_harq_feedback_time_ind
)
%
frame_parms
.
slots_per_frame
;
dlsch0_harq
->
Nl
=
1
;
dlsch0_harq
->
Nl
=
1
;
dlsch0_harq
->
mcs_table
=
0
;
dlsch0_harq
->
mcs_table
=
0
;
dlsch0_harq
->
status
=
ACTIVE
;
dlsch0_harq
->
harq_ack
.
rx_status
=
downlink_harq_process
(
dlsch0_harq
,
dlsch0
->
current_harq_pid
,
dlsch_config_pdu
->
ndi
,
dlsch0
->
rnti_type
)
;
LOG_D
(
MAC
,
">>>>
\t
dlsch0->g_pucch = %d
\t
dlsch0_harq.mcs = %d
\n
"
,
dlsch0
->
g_pucch
,
dlsch0_harq
->
mcs
);
LOG_D
(
MAC
,
">>>>
\t
dlsch0->g_pucch = %d
\t
dlsch0_harq.mcs = %d
\n
"
,
dlsch0
->
g_pucch
,
dlsch0_harq
->
mcs
);
}
}
}
}
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
03ce0557
...
@@ -2255,6 +2255,13 @@ void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue,
...
@@ -2255,6 +2255,13 @@ void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue,
} // UE_mode==PUSCH
} // UE_mode==PUSCH
*/
*/
LOG_D
(
PHY
,
"Sending PUCCH
\n
"
);
pucch_procedures_ue_nr
(
ue
,
gNB_id
,
proc
,
TRUE
);
LOG_D
(
PHY
,
"Sending data
\n
"
);
nr_ue_pusch_common_procedures
(
ue
,
nr_ue_pusch_common_procedures
(
ue
,
harq_pid
,
harq_pid
,
slot_tx
,
slot_tx
,
...
@@ -2262,7 +2269,7 @@ void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue,
...
@@ -2262,7 +2269,7 @@ void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue,
gNB_id
,
gNB_id
,
&
ue
->
frame_parms
);
&
ue
->
frame_parms
);
}
}
//LOG_M("txdata.m","txs",ue->common_vars.txdata[0],1228800,1,1);
/* RACH */
/* RACH */
if
(
get_softmodem_params
()
->
do_ra
==
1
)
{
if
(
get_softmodem_params
()
->
do_ra
==
1
)
{
...
...
openair1/SCHED_NR_UE/pucch_uci_ue_nr.c
View file @
03ce0557
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR_UE/pucch_uci_ue_nr.h
View file @
03ce0557
...
@@ -41,6 +41,9 @@
...
@@ -41,6 +41,9 @@
/************** INCLUDE *******************************************/
/************** INCLUDE *******************************************/
#include "PHY/defs_nr_UE.h"
#include "PHY/defs_nr_UE.h"
#include "openair2/LAYER2/NR_MAC_UE/mac_proto.h"
#include "openair2/LAYER2/NR_MAC_UE/mac_defs.h"
#include "RRC/NR_UE/rrc_proto.h"
#ifdef DEFINE_VARIABLES_PUCCH_UE_NR_H
#ifdef DEFINE_VARIABLES_PUCCH_UE_NR_H
#define EXTERN
#define EXTERN
...
@@ -187,7 +190,7 @@ uint8_t get_downlink_ack(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t
...
@@ -187,7 +190,7 @@ uint8_t get_downlink_ack(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t
@param resource_id pucch resource id if any
@param resource_id pucch resource id if any
@returns TRUE a pucch resource has been found FALSE no valid pucch resource */
@returns TRUE a pucch resource has been found FALSE no valid pucch resource */
boolean_t
select_pucch_resource
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
gNB_id
,
int
uci_size
,
int
pucch_resource_indicator
,
boolean_t
select_pucch_resource
(
PHY_VARS_NR_UE
*
ue
,
NR_UE_MAC_INST_t
*
mac
,
uint8_t
gNB_id
,
int
uci_size
,
int
pucch_resource_indicator
,
int
*
initial_pucch_id
,
int
*
resource_set_id
,
int
*
resource_id
,
NR_UE_HARQ_STATUS_t
*
harq_status
);
int
*
initial_pucch_id
,
int
*
resource_set_id
,
int
*
resource_id
,
NR_UE_HARQ_STATUS_t
*
harq_status
);
/** \brief This function select a pucch resource set
/** \brief This function select a pucch resource set
...
@@ -196,7 +199,7 @@ boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size
...
@@ -196,7 +199,7 @@ boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size
@param uci size number of uci bits
@param uci size number of uci bits
@returns number of the pucch resource set */
@returns number of the pucch resource set */
int
find_pucch_resource_set
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
gNB_id
,
int
uci_size
);
int
find_pucch_resource_set
(
NR_UE_MAC_INST_t
*
mac
,
uint8_t
gNB_id
,
int
uci_size
);
/** \brief This function check pucch format
/** \brief This function check pucch format
@param ue context
@param ue context
...
@@ -206,7 +209,7 @@ int find_pucch_resource_set(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size);
...
@@ -206,7 +209,7 @@ int find_pucch_resource_set(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size);
@param uci size number of uci bits
@param uci size number of uci bits
@returns TRUE pucch format matched uci size and constraints, FALSE invalid pucch format */
@returns TRUE pucch format matched uci size and constraints, FALSE invalid pucch format */
boolean_t
check_pucch_format
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
gNB_id
,
pucch_format_nr_t
format_pucch
,
int
nb_symbols_for_tx
,
boolean_t
check_pucch_format
(
NR_UE_MAC_INST_t
*
mac
,
uint8_t
gNB_id
,
pucch_format_nr_t
format_pucch
,
int
nb_symbols_for_tx
,
int
uci_size
);
int
uci_size
);
/** \brief This function selects a pucch resource
/** \brief This function selects a pucch resource
...
@@ -232,4 +235,9 @@ int get_csi_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, uint32_t *csi_payload);
...
@@ -232,4 +235,9 @@ int get_csi_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, uint32_t *csi_payload);
void
set_csi_nr
(
int
csi_status
,
uint32_t
csi_payload
);
void
set_csi_nr
(
int
csi_status
,
uint32_t
csi_payload
);
uint8_t
get_nb_symbols_pucch
(
NR_PUCCH_Resource_t
*
pucch_resource
,
pucch_format_nr_t
format_type
);
uint16_t
get_starting_symb_idx
(
NR_PUCCH_Resource_t
*
pucch_resource
,
pucch_format_nr_t
format_type
);
int
get_ics_pucch
(
NR_PUCCH_Resource_t
*
pucch_resource
,
pucch_format_nr_t
format_type
);
#endif
/* PUCCH_UCI_UE_NR_H */
#endif
/* PUCCH_UCI_UE_NR_H */
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
03ce0557
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
03ce0557
...
@@ -73,6 +73,7 @@
...
@@ -73,6 +73,7 @@
//#define ENABLE_MAC_PAYLOAD_DEBUG 1
//#define ENABLE_MAC_PAYLOAD_DEBUG 1
#define DEBUG_EXTRACT_DCI 1
#define DEBUG_EXTRACT_DCI 1
extern
int
bwp_id
;
extern
dci_pdu_rel15_t
*
def_dci_pdu_rel15
;
extern
dci_pdu_rel15_t
*
def_dci_pdu_rel15
;
extern
void
mac_rlc_data_ind
(
extern
void
mac_rlc_data_ind
(
...
@@ -2113,6 +2114,8 @@ int nr_ue_process_dci_indication_pdu(module_id_t module_id,int cc_id, int gNB_in
...
@@ -2113,6 +2114,8 @@ int nr_ue_process_dci_indication_pdu(module_id_t module_id,int cc_id, int gNB_in
int8_t
nr_ue_process_dci
(
module_id_t
module_id
,
int
cc_id
,
uint8_t
gNB_index
,
dci_pdu_rel15_t
*
dci
,
uint16_t
rnti
,
uint32_t
dci_format
){
int8_t
nr_ue_process_dci
(
module_id_t
module_id
,
int
cc_id
,
uint8_t
gNB_index
,
dci_pdu_rel15_t
*
dci
,
uint16_t
rnti
,
uint32_t
dci_format
){
int
bwp_id
=
1
;
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
module_id
);
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
module_id
);
fapi_nr_dl_config_request_t
*
dl_config
=
&
mac
->
dl_config_request
;
fapi_nr_dl_config_request_t
*
dl_config
=
&
mac
->
dl_config_request
;
fapi_nr_ul_config_request_t
*
ul_config
=
&
mac
->
ul_config_request
;
fapi_nr_ul_config_request_t
*
ul_config
=
&
mac
->
ul_config_request
;
...
@@ -2708,17 +2711,10 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, dc
...
@@ -2708,17 +2711,10 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, dc
if
(
dci
->
tpc
==
2
)
dlsch_config_pdu_1_1
->
accumulated_delta_PUCCH
=
1
;
if
(
dci
->
tpc
==
2
)
dlsch_config_pdu_1_1
->
accumulated_delta_PUCCH
=
1
;
if
(
dci
->
tpc
==
3
)
dlsch_config_pdu_1_1
->
accumulated_delta_PUCCH
=
3
;
if
(
dci
->
tpc
==
3
)
dlsch_config_pdu_1_1
->
accumulated_delta_PUCCH
=
3
;
/* PUCCH_RESOURCE_IND */
/* PUCCH_RESOURCE_IND */
if
(
dci
->
pucch_resource_indicator
==
0
)
dlsch_config_pdu_1_1
->
pucch_resource_id
=
0
;
//pucch-ResourceId obtained from the 1st value of resourceList FIXME!!!
dlsch_config_pdu_1_1
->
pucch_resource_id
=
dci
->
pucch_resource_indicator
;
if
(
dci
->
pucch_resource_indicator
==
1
)
dlsch_config_pdu_1_1
->
pucch_resource_id
=
0
;
//pucch-ResourceId obtained from the 2nd value of resourceList FIXME!!
if
(
dci
->
pucch_resource_indicator
==
2
)
dlsch_config_pdu_1_1
->
pucch_resource_id
=
0
;
//pucch-ResourceId obtained from the 3rd value of resourceList FIXME!!
if
(
dci
->
pucch_resource_indicator
==
3
)
dlsch_config_pdu_1_1
->
pucch_resource_id
=
0
;
//pucch-ResourceId obtained from the 4th value of resourceList FIXME!!
if
(
dci
->
pucch_resource_indicator
==
4
)
dlsch_config_pdu_1_1
->
pucch_resource_id
=
0
;
//pucch-ResourceId obtained from the 5th value of resourceList FIXME!!
if
(
dci
->
pucch_resource_indicator
==
5
)
dlsch_config_pdu_1_1
->
pucch_resource_id
=
0
;
//pucch-ResourceId obtained from the 6th value of resourceList FIXME!!
if
(
dci
->
pucch_resource_indicator
==
6
)
dlsch_config_pdu_1_1
->
pucch_resource_id
=
0
;
//pucch-ResourceId obtained from the 7th value of resourceList FIXME!!
if
(
dci
->
pucch_resource_indicator
==
7
)
dlsch_config_pdu_1_1
->
pucch_resource_id
=
0
;
//pucch-ResourceId obtained from the 8th value of resourceList FIXME!!
/* PDSCH_TO_HARQ_FEEDBACK_TIME_IND */
/* PDSCH_TO_HARQ_FEEDBACK_TIME_IND */
// according to TS 38.213 Table 9.2.3-1
// according to TS 38.213 Table 9.2.3-1
dlsch_config_pdu_1_1
->
pdsch_to_harq_feedback_time_ind
=
mac
->
phy_config
.
config_req
.
ul_bwp_dedicated
.
pucch_config_dedicated
.
dl_data_to_ul_ack
[
dci
->
pdsch_to_harq_feedback_timing_indicator
.
val
];
dlsch_config_pdu_1_1
->
pdsch_to_harq_feedback_time_ind
=
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
dl_DataToUL_ACK
->
list
.
array
[
dci
->
pdsch_to_harq_feedback_timing_indicator
.
val
][
0
];
/* ANTENNA_PORTS */
/* ANTENNA_PORTS */
uint8_t
n_codewords
=
1
;
// FIXME!!!
uint8_t
n_codewords
=
1
;
// FIXME!!!
if
((
mac
->
phy_config
.
config_req
.
dl_bwp_dedicated
.
pdsch_config_dedicated
.
dmrs_dl_for_pdsch_mapping_type_a
.
dmrs_type
==
1
)
&&
if
((
mac
->
phy_config
.
config_req
.
dl_bwp_dedicated
.
pdsch_config_dedicated
.
dmrs_dl_for_pdsch_mapping_type_a
.
dmrs_type
==
1
)
&&
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
View file @
03ce0557
...
@@ -313,7 +313,7 @@ int configure_fapi_dl_pdu(int Mod_idP,
...
@@ -313,7 +313,7 @@ int configure_fapi_dl_pdu(int Mod_idP,
pdsch_pdu_rel15
->
qamModOrder
[
0
]
=
2
;
pdsch_pdu_rel15
->
qamModOrder
[
0
]
=
2
;
pdsch_pdu_rel15
->
mcsIndex
[
0
]
=
mcs
;
pdsch_pdu_rel15
->
mcsIndex
[
0
]
=
mcs
;
pdsch_pdu_rel15
->
mcsTable
[
0
]
=
0
;
pdsch_pdu_rel15
->
mcsTable
[
0
]
=
0
;
pdsch_pdu_rel15
->
rvIndex
[
0
]
=
0
;
pdsch_pdu_rel15
->
rvIndex
[
0
]
=
UE_list
->
UE_sched_ctrl
[
UE_id
].
harq_processes
[
0
].
round
;
pdsch_pdu_rel15
->
dataScramblingId
=
*
scc
->
physCellId
;
pdsch_pdu_rel15
->
dataScramblingId
=
*
scc
->
physCellId
;
pdsch_pdu_rel15
->
nrOfLayers
=
1
;
pdsch_pdu_rel15
->
nrOfLayers
=
1
;
pdsch_pdu_rel15
->
transmissionScheme
=
0
;
pdsch_pdu_rel15
->
transmissionScheme
=
0
;
...
@@ -363,10 +363,10 @@ int configure_fapi_dl_pdu(int Mod_idP,
...
@@ -363,10 +363,10 @@ int configure_fapi_dl_pdu(int Mod_idP,
dci_pdu_rel15
[
0
].
time_domain_assignment
.
val
=
time_domain_assignment
;
// row index used here instead of SLIV;
dci_pdu_rel15
[
0
].
time_domain_assignment
.
val
=
time_domain_assignment
;
// row index used here instead of SLIV;
// mcs ndi and rv
// mcs ndi and rv
dci_pdu_rel15
[
0
].
mcs
=
pdsch_pdu_rel15
->
mcsIndex
[
0
];
dci_pdu_rel15
[
0
].
mcs
=
pdsch_pdu_rel15
->
mcsIndex
[
0
];
dci_pdu_rel15
[
0
].
ndi
=
1
;
dci_pdu_rel15
[
0
].
rv
=
pdsch_pdu_rel15
->
rvIndex
[
0
];
dci_pdu_rel15
[
0
].
rv
=
0
;
// harq pid
// harq pid
dci_pdu_rel15
[
0
].
harq_pid
=
0
;
dci_pdu_rel15
[
0
].
harq_pid
=
0
;
dci_pdu_rel15
[
0
].
ndi
=
UE_list
->
UE_sched_ctrl
[
UE_id
].
harq_processes
[
0
].
ndi
;
// DAI
// DAI
dci_pdu_rel15
[
0
].
dai
[
0
].
val
=
(
pucch_sched
->
dai_c
-
1
)
&
3
;
dci_pdu_rel15
[
0
].
dai
[
0
].
val
=
(
pucch_sched
->
dai_c
-
1
)
&
3
;
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
03ce0557
...
@@ -188,6 +188,11 @@ typedef struct NR_sched_pucch {
...
@@ -188,6 +188,11 @@ typedef struct NR_sched_pucch {
struct
NR_sched_pucch
*
next_sched_pucch
;
struct
NR_sched_pucch
*
next_sched_pucch
;
}
NR_sched_pucch
;
}
NR_sched_pucch
;
typedef
struct
NR_UE_harq
{
uint8_t
ndi
;
uint8_t
round
;
}
NR_UE_harq_t
;
/*! \brief scheduling control information set through an API */
/*! \brief scheduling control information set through an API */
typedef
struct
{
typedef
struct
{
uint64_t
dlsch_in_slot_bitmap
;
// static bitmap signaling which slot in a tdd period contains dlsch
uint64_t
dlsch_in_slot_bitmap
;
// static bitmap signaling which slot in a tdd period contains dlsch
...
@@ -195,6 +200,7 @@ typedef struct {
...
@@ -195,6 +200,7 @@ typedef struct {
NR_sched_pucch
*
sched_pucch
;
NR_sched_pucch
*
sched_pucch
;
uint16_t
ta_timer
;
uint16_t
ta_timer
;
int16_t
ta_update
;
int16_t
ta_update
;
NR_UE_harq_t
harq_processes
[
NR_MAX_NB_HARQ_PROCESSES
];
}
NR_UE_sched_ctrl_t
;
}
NR_UE_sched_ctrl_t
;
typedef
struct
NR_preamble_ue
{
typedef
struct
NR_preamble_ue
{
...
...
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