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
Michael Black
OpenXG-RAN
Commits
132b48ea
Commit
132b48ea
authored
Jun 09, 2020
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed bugs in pucch UE
UE now sends ack/nack in format0
parent
0124e537
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
45 additions
and
26 deletions
+45
-26
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
+1
-0
openair1/SCHED_NR_UE/pucch_uci_ue_nr.c
openair1/SCHED_NR_UE/pucch_uci_ue_nr.c
+42
-26
openair1/SCHED_NR_UE/pucch_uci_ue_nr.h
openair1/SCHED_NR_UE/pucch_uci_ue_nr.h
+2
-0
No files found.
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
View file @
132b48ea
...
@@ -105,6 +105,7 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
...
@@ -105,6 +105,7 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
dlsch0_harq
->
Nl
=
1
;
dlsch0_harq
->
Nl
=
1
;
dlsch0_harq
->
mcs_table
=
0
;
dlsch0_harq
->
mcs_table
=
0
;
dlsch0_harq
->
harq_ack
.
rx_status
=
downlink_harq_process
(
dlsch0_harq
,
dlsch0
->
current_harq_pid
,
dlsch_config_pdu
->
ndi
,
dlsch0
->
rnti_type
);
dlsch0_harq
->
harq_ack
.
rx_status
=
downlink_harq_process
(
dlsch0_harq
,
dlsch0
->
current_harq_pid
,
dlsch_config_pdu
->
ndi
,
dlsch0
->
rnti_type
);
dlsch0_harq
->
harq_ack
.
vDAI_DL
=
dlsch_config_pdu
->
dai
;
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/pucch_uci_ue_nr.c
View file @
132b48ea
...
@@ -347,7 +347,7 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_
...
@@ -347,7 +347,7 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_
/**********************************************/
/**********************************************/
else
if
((
pucch_resource_set
!=
MAX_NB_OF_PUCCH_RESOURCE_SETS
)
&&
(
pucch_resource_id
!=
MAX_NB_OF_PUCCH_RESOURCES
))
{
else
if
((
pucch_resource_set
!=
MAX_NB_OF_PUCCH_RESOURCE_SETS
)
&&
(
pucch_resource_id
!=
MAX_NB_OF_PUCCH_RESOURCES
))
{
/* check that current configuration is supported */
/* check that current configuration is supported */
if
((
mac
->
scg
->
physicalCellGroupConfig
->
harq_ACK_SpatialBundlingPUCCH
[
0
]
!=
FALSE
)
if
((
mac
->
scg
->
physicalCellGroupConfig
->
harq_ACK_SpatialBundlingPUCCH
!=
NULL
)
||
(
mac
->
scg
->
physicalCellGroupConfig
->
pdsch_HARQ_ACK_Codebook
!=
1
))
{
||
(
mac
->
scg
->
physicalCellGroupConfig
->
pdsch_HARQ_ACK_Codebook
!=
1
))
{
LOG_E
(
PHY
,
"PUCCH Unsupported cell group configuration : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
LOG_E
(
PHY
,
"PUCCH Unsupported cell group configuration : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
return
(
FALSE
);
return
(
FALSE
);
...
@@ -356,11 +356,11 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_
...
@@ -356,11 +356,11 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_
LOG_E
(
PHY
,
"PUCCH Unsupported code block group for serving cell config : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
LOG_E
(
PHY
,
"PUCCH Unsupported code block group for serving cell config : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
return
(
FALSE
);
return
(
FALSE
);
}
}
pucch_resource
=
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
resourceToAddModList
->
list
.
array
[
pucch_resource_id
]
;
pucch_resource
=
select_resource_by_id
(
pucch_resource_id
,
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
)
;
format
=
pucch_resource
->
format
.
present
;
format
=
pucch_resource
->
format
.
present
;
nb_symbols_total
=
get_nb_symbols_pucch
(
pucch_resource
,
format
);
nb_symbols_total
=
get_nb_symbols_pucch
(
pucch_resource
,
format
);
starting_symbol_index
=
pucch_resource
->
startingPRB
;
starting_symbol_index
=
get_starting_symb_idx
(
pucch_resource
,
format
)
;
starting_prb
=
get_starting_symb_idx
(
pucch_resource
,
format
)
;
starting_prb
=
pucch_resource
->
startingPRB
;
second_hop
=
starting_prb
;
second_hop
=
starting_prb
;
if
(
format
==
pucch_format1_nr
)
if
(
format
==
pucch_format1_nr
)
time_domain_occ
=
pucch_resource
->
format
.
choice
.
format1
->
timeDomainOCC
;
time_domain_occ
=
pucch_resource
->
format
.
choice
.
format1
->
timeDomainOCC
;
...
@@ -779,7 +779,7 @@ uint8_t get_downlink_ack(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t
...
@@ -779,7 +779,7 @@ uint8_t get_downlink_ack(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t
U_DAI_c
=
number_harq_feedback
/
number_of_code_word
;
U_DAI_c
=
number_harq_feedback
/
number_of_code_word
;
N_m_c_rx
=
number_harq_feedback
;
N_m_c_rx
=
number_harq_feedback
;
int
N_SPS_c
=
0
;
/* FFS TODO_NR multicells and SPS are not supported at the moment */
int
N_SPS_c
=
0
;
/* FFS TODO_NR multicells and SPS are not supported at the moment */
if
(
mac
->
scg
->
physicalCellGroupConfig
->
harq_ACK_SpatialBundlingPUCCH
[
0
]
==
FALSE
)
{
if
(
mac
->
scg
->
physicalCellGroupConfig
->
harq_ACK_SpatialBundlingPUCCH
==
NULL
)
{
int
N_TB_max_DL
=
mac
->
DLbwp
[
0
]
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
[
0
];
int
N_TB_max_DL
=
mac
->
DLbwp
[
0
]
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
[
0
];
*
n_HARQ_ACK
=
(((
V_DAI_m_DL
-
U_DAI_c
)
%
4
)
*
N_TB_max_DL
)
+
N_m_c_rx
+
N_SPS_c
;
*
n_HARQ_ACK
=
(((
V_DAI_m_DL
-
U_DAI_c
)
%
4
)
*
N_TB_max_DL
)
+
N_m_c_rx
+
N_SPS_c
;
NR_TST_PHY_PRINTF
(
"PUCCH power n(%d) = ( V(%d) - U(%d) )mod4 * N_TB(%d) + N(%d)
\n
"
,
*
n_HARQ_ACK
,
V_DAI_m_DL
,
U_DAI_c
,
N_TB_max_DL
,
N_m_c_rx
);
NR_TST_PHY_PRINTF
(
"PUCCH power n(%d) = ( V(%d) - U(%d) )mod4 * N_TB(%d) + N(%d)
\n
"
,
*
n_HARQ_ACK
,
V_DAI_m_DL
,
U_DAI_c
,
N_TB_max_DL
,
N_m_c_rx
);
...
@@ -1094,31 +1094,33 @@ boolean_t check_pucch_format(NR_UE_MAC_INST_t *mac, uint8_t gNB_id, pucch_format
...
@@ -1094,31 +1094,33 @@ boolean_t check_pucch_format(NR_UE_MAC_INST_t *mac, uint8_t gNB_id, pucch_format
pucch_format_nr_t
selected_pucch_format_second
;
pucch_format_nr_t
selected_pucch_format_second
;
NR_SetupRelease_PUCCH_FormatConfig_t
*
identified_format
;
NR_SetupRelease_PUCCH_FormatConfig_t
*
identified_format
;
switch
(
format_pucch
)
{
if
(
format_pucch
!=
pucch_format0_nr
)
{
case
pucch_format1_nr
:
switch
(
format_pucch
)
{
if
(
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format1
!=
NULL
)
case
pucch_format1_nr
:
identified_format
=
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format1
;
if
(
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format1
!=
NULL
)
break
;
identified_format
=
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format1
;
break
;
case
pucch_format2_nr
:
case
pucch_format2_nr
:
if
(
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format2
!=
NULL
)
if
(
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format2
!=
NULL
)
identified_format
=
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format2
;
identified_format
=
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format2
;
break
;
break
;
case
pucch_format3_nr
:
case
pucch_format3_nr
:
if
(
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format3
!=
NULL
)
if
(
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format3
!=
NULL
)
identified_format
=
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format3
;
identified_format
=
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format3
;
break
;
break
;
case
pucch_format4_nr
:
case
pucch_format4_nr
:
if
(
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format4
!=
NULL
)
if
(
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format4
!=
NULL
)
identified_format
=
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format4
;
identified_format
=
mac
->
ULbwp
[
bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
format4
;
break
;
break
;
}
}
if
(
identified_format
->
choice
.
setup
->
nrofSlots
!=
1
)
{
if
(
identified_format
->
choice
.
setup
->
nrofSlots
!=
1
)
{
LOG_E
(
PHY
,
"PUCCH not implemented multislots transmission : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
LOG_E
(
PHY
,
"PUCCH not implemented multislots transmission : at line %d in function %s of file %s
\n
"
,
LINE_FILE
,
__func__
,
FILE_NAME
);
return
(
FALSE
);
return
(
FALSE
);
}
}
}
if
(
nb_symbols_for_tx
<=
2
)
{
if
(
nb_symbols_for_tx
<=
2
)
{
...
@@ -1320,3 +1322,17 @@ int get_ics_pucch(NR_PUCCH_Resource_t *pucch_resource, pucch_format_nr_t format_
...
@@ -1320,3 +1322,17 @@ int get_ics_pucch(NR_PUCCH_Resource_t *pucch_resource, pucch_format_nr_t format_
}
}
}
}
NR_PUCCH_Resource_t
*
select_resource_by_id
(
int
resource_id
,
NR_PUCCH_Config_t
*
pucch_config
)
{
int
n_list
=
pucch_config
->
resourceToAddModList
->
list
.
count
;
NR_PUCCH_Resource_t
*
pucchres
;
AssertFatal
(
n_list
>
0
,
"PUCCH resourceToAddModList is empty
\n
"
);
for
(
int
i
=
0
;
i
<
n_list
;
i
++
)
{
pucchres
=
pucch_config
->
resourceToAddModList
->
list
.
array
[
i
];
if
(
pucchres
->
pucch_ResourceId
==
resource_id
)
return
pucchres
;
}
return
NULL
;
}
openair1/SCHED_NR_UE/pucch_uci_ue_nr.h
View file @
132b48ea
...
@@ -240,4 +240,6 @@ uint8_t get_nb_symbols_pucch(NR_PUCCH_Resource_t *pucch_resource, pucch_format_n
...
@@ -240,4 +240,6 @@ uint8_t get_nb_symbols_pucch(NR_PUCCH_Resource_t *pucch_resource, pucch_format_n
uint16_t
get_starting_symb_idx
(
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
);
int
get_ics_pucch
(
NR_PUCCH_Resource_t
*
pucch_resource
,
pucch_format_nr_t
format_type
);
NR_PUCCH_Resource_t
*
select_resource_by_id
(
int
resource_id
,
NR_PUCCH_Config_t
*
pucch_config
);
#endif
/* PUCCH_UCI_UE_NR_H */
#endif
/* PUCCH_UCI_UE_NR_H */
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