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
lizhongxiao
OpenXG-RAN
Commits
3c6e206e
Commit
3c6e206e
authored
May 02, 2017
by
hbilel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
TDD fix for several issues
parent
cd7e479f
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
749 additions
and
149 deletions
+749
-149
openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
+116
-84
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+11
-5
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
+2
-1
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
+2
-1
openair1/PHY/MODULATION/slot_fep.c
openair1/PHY/MODULATION/slot_fep.c
+4
-4
openair1/SCHED/defs.h
openair1/SCHED/defs.h
+4
-2
openair1/SCHED/phy_procedures_lte_common.c
openair1/SCHED/phy_procedures_lte_common.c
+38
-28
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+572
-24
No files found.
openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
View file @
3c6e206e
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
3c6e206e
...
...
@@ -8031,10 +8031,16 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
dlsch
[
0
]
->
harq_ack
[
subframe
].
vDAI_UL
=
dai
+
1
;
LOG_D
(
PHY
,
"[PUSCH %d] Format0 DCI %s, CQI_req=%d, cshift=%d, TPC=%d, DAI=%d, vDAI_UL[sf#%d]=%d, NDI=%d, MCS=%d, RBalloc=%d, first_rb=%d, harq_pid=%d, nb_rb=%d, subframe_scheduling_flag=%d
\n
"
,
LOG_I
(
PHY
,
"[PUSCH %d] Format0 DCI %s, CQI_req=%d, cshift=%d, TPC=%d, DAI=%d, vDAI_UL[sf#%d]=%d, NDI=%d, MCS=%d, RBalloc=%d, first_rb=%d, harq_pid=%d, nb_rb=%d, subframe_scheduling_flag=%d"
" ulsch->bundling %d, O_ACK %d
\n
"
,
harq_pid
,
(
frame_parms
->
frame_type
==
TDD
?
"TDD"
:
"FDD"
),
cqi_req
,
cshift
,
TPC
,
dai
,
subframe
,
dlsch
[
0
]
->
harq_ack
[
subframe
].
vDAI_UL
,
ndi
,
mcs
,
rballoc
,
ulsch
->
harq_processes
[
harq_pid
]
->
first_rb
,
harq_pid
,
ulsch
->
harq_processes
[
harq_pid
]
->
nb_rb
,
ulsch
->
harq_processes
[
harq_pid
]
->
subframe_scheduling_flag
);
cqi_req
,
cshift
,
TPC
,
dai
,
subframe
,
dlsch
[
0
]
->
harq_ack
[
subframe
].
vDAI_UL
,
ndi
,
mcs
,
rballoc
,
ulsch
->
harq_processes
[
harq_pid
]
->
first_rb
,
harq_pid
,
ulsch
->
harq_processes
[
harq_pid
]
->
nb_rb
,
ulsch
->
harq_processes
[
harq_pid
]
->
subframe_scheduling_flag
,
ulsch
->
bundling
,
ulsch
->
harq_processes
[
harq_pid
]
->
O_ACK
);
ulsch
->
beta_offset_cqi_times8
=
beta_cqi
[
ue
->
pusch_config_dedicated
[
eNB_id
].
betaOffset_CQI_Index
];
//18;
ulsch
->
beta_offset_ri_times8
=
beta_ri
[
ue
->
pusch_config_dedicated
[
eNB_id
].
betaOffset_RI_Index
];
//10;
...
...
@@ -8086,7 +8092,7 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
// ulsch->n_DMRS2 = ((DCI0_5MHz_TDD_1_6_t *)dci_pdu)->cshift;
#ifdef DEBUG_DCI
//
#ifdef DEBUG_DCI
printf
(
"Format 0 DCI : ulsch (ue): AbsSubframe %d.%d
\n
"
,
proc
->
frame_rx
%
1024
,
subframe
);
printf
(
"Format 0 DCI : ulsch (ue): NBRB %d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
nb_rb
);
...
...
@@ -8108,9 +8114,9 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
printf
(
"Format 0 DCI :ulsch (ue): Nsymb_pusch %d
\n
"
,
ulsch
->
Nsymb_pusch
);
printf
(
"Format 0 DCI :ulsch (ue): cshift %d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
n_DMRS2
);
printf
(
"Format 0 DCI :ulsch (ue): phich status %d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
status
);
#else
//
#else
UNUSED_VARIABLE
(
dai
);
#endif
//
#endif
return
(
0
);
}
else
{
LOG_E
(
PHY
,
"frame %d, subframe %d: FATAL ERROR, generate_ue_ulsch_params_from_dci, Illegal dci_format %d
\n
"
,
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
View file @
3c6e206e
...
...
@@ -517,7 +517,8 @@ uint32_t ulsch_encoding(uint8_t *a,
LOG_I
(
PHY
,
"ULSCH Encoding G %d, Q_RI %d (O_RI%d, Msc_initial %d, Nsymb_initial%d, beta_offset_ri_times8 %d), "
"Q_CQI %d, Q_ACK %d
\n
"
,
G
,
Q_RI
,
ulsch
->
O_RI
,
ulsch
->
harq_processes
[
harq_pid
]
->
Msc_initial
,
ulsch
->
harq_processes
[
harq_pid
]
->
Nsymb_initial
,
ulsch
->
beta_offset_ri_times8
,
Q_CQI
,
Q_ACK
);
"Q_CQI %d, Q_ACK %d
\n
"
,
G
,
Q_RI
,
ulsch
->
O_RI
,
ulsch
->
harq_processes
[
harq_pid
]
->
Msc_initial
,
ulsch
->
harq_processes
[
harq_pid
]
->
Nsymb_initial
,
ulsch
->
beta_offset_ri_times8
,
Q_CQI
,
Q_ACK
);
LOG_I
(
PHY
,
"ULSCH Encoding (Nid_cell %d, rnti %x): harq_pid %d round %d, RV %d, mcs %d, O_RI %d, O_ACK %d, G %d
\n
"
,
frame_parms
->
Nid_cell
,
ulsch
->
rnti
,
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
View file @
3c6e206e
...
...
@@ -2067,7 +2067,8 @@ uint32_t ulsch_decoding_emul(PHY_VARS_eNB *eNB, eNB_rxtx_proc_t *proc,
if
((
UE_index
>=
oai_emulation
.
info
.
first_ue_local
)
||
(
UE_index
<
(
oai_emulation
.
info
.
first_ue_local
+
oai_emulation
.
info
.
nb_ue_local
)))
{
get_ack
(
&
eNB
->
frame_parms
,
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
dlsch
[
0
][
0
][
0
]
->
harq_ack
,
subframe
,
proc
->
subframe_tx
,
proc
->
subframe_rx
,
eNB
->
ulsch
[
UE_index
]
->
harq_processes
[
harq_pid
]
->
o_ACK
,
0
);
}
else
{
// get remote UEs' ack
eNB
->
ulsch
[
UE_index
]
->
harq_processes
[
harq_pid
]
->
o_ACK
[
0
]
=
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
ulsch
[
0
]
->
o_ACK
[
0
];
...
...
openair1/PHY/MODULATION/slot_fep.c
View file @
3c6e206e
...
...
@@ -172,19 +172,19 @@ int slot_fep(PHY_VARS_UE *ue,
}
//
#ifdef DEBUG_FEP
#ifdef DEBUG_FEP
// if (ue->frame <100)
printf
(
"slot_fep: frame %d: symbol %d rx_offset %d
\n
"
,
ue
->
proc
.
proc_rxtx
[(
Ns
>>
1
)
&
1
].
frame_rx
,
symbol
,
rx_offset
);
//
#endif
#endif
}
if
(
ue
->
perfect_ce
==
0
)
{
if
((
l
==
0
)
||
(
l
==
(
4
-
frame_parms
->
Ncp
)))
{
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antenna_ports_eNB
;
aa
++
)
{
//
#ifdef DEBUG_FEP
#ifdef DEBUG_FEP
printf
(
"Channel estimation eNB %d, aatx %d, slot %d, symbol %d
\n
"
,
eNB_id
,
aa
,
Ns
,
l
);
//
#endif
#endif
start_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
lte_dl_channel_estimation
(
ue
,
eNB_id
,
0
,
Ns
,
...
...
openair1/SCHED/defs.h
View file @
3c6e206e
...
...
@@ -311,7 +311,7 @@ uint8_t pdcch_alloc2ul_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t n);
@param o_ACK Pointer to ACK/NAK payload for PUCCH/PUSCH
@returns status indicator for PUCCH/PUSCH transmission
*/
uint8_t
get_ack
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
harq_status_t
*
harq_ack
,
uint8_t
subframe
,
uint8_t
*
o_ACK
,
uint8_t
cw_idx
);
uint8_t
get_ack
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
harq_status_t
*
harq_ack
,
uint8_t
subframe
_tx
,
uint8_t
subframe_rx
,
uint8_t
*
o_ACK
,
uint8_t
cw_idx
);
/*! \brief Reset ACK/NACK information
@param frame_parms Pointer to DL frame parameter descriptor
...
...
@@ -322,8 +322,10 @@ uint8_t get_ack(LTE_DL_FRAME_PARMS *frame_parms,harq_status_t *harq_ack,uint8_t
*/
uint8_t
reset_ack
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
harq_status_t
*
harq_ack
,
unsigned
char
subframe
,
unsigned
char
subframe_tx
,
unsigned
char
subframe_rx
,
unsigned
char
*
o_ACK
,
uint8_t
*
pN_bundled
,
uint8_t
cw_idx
);
/*! \brief Compute UL ACK subframe from DL subframe. This is used to retrieve corresponding DLSCH HARQ pid at eNB upon reception of ACK/NAK information on PUCCH/PUSCH. Derived from Table 10.1-1 in 36.213 (p. 69 in version 8.6)
...
...
openair1/SCHED/phy_procedures_lte_common.c
View file @
3c6e206e
...
...
@@ -323,8 +323,10 @@ unsigned char ul_ACK_subframe2_M(LTE_DL_FRAME_PARMS *frame_parms,unsigned char s
// return the number 'Nbundled'
uint8_t
get_reset_ack
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
harq_status_t
*
harq_ack
,
unsigned
char
subframe
,
unsigned
char
subframe_tx
,
unsigned
char
subframe_rx
,
unsigned
char
*
o_ACK
,
uint8_t
*
pN_bundled
,
uint8_t
cw_idx
,
uint8_t
do_reset
)
// 1 to reset ACK/NACK status : 0 otherwise
{
...
...
@@ -333,10 +335,10 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
// printf("get_ack: SF %d\n",subframe);
if
(
frame_parms
->
frame_type
==
FDD
)
{
if
(
subframe
<
4
)
subframe_dl0
=
subframe
+
6
;
if
(
subframe
_tx
<
4
)
subframe_dl0
=
subframe
_tx
+
6
;
else
subframe_dl0
=
subframe
-
4
;
subframe_dl0
=
subframe
_tx
-
4
;
o_ACK
[
cw_idx
]
=
harq_ack
[
subframe_dl0
].
ack
;
status
=
harq_ack
[
subframe_dl0
].
send_harq_status
;
...
...
@@ -347,29 +349,29 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
}
else
{
switch
(
frame_parms
->
tdd_config
)
{
case
1
:
if
(
subframe
==
2
)
{
// ACK subframes 5,6
if
(
subframe
_tx
==
2
)
{
// ACK subframes 5,6
subframe_ul
=
6
;
subframe_dl0
=
5
;
subframe_dl1
=
6
;
}
else
if
(
subframe
==
3
)
{
// ACK subframe 9
}
else
if
(
subframe
_tx
==
3
)
{
// ACK subframe 9
subframe_ul
=
9
;
subframe_dl0
=
9
;
subframe_dl1
=
0xff
;
}
else
if
(
subframe
==
4
)
{
// nothing
}
else
if
(
subframe
_tx
==
4
)
{
// nothing
subframe_ul
=
0xff
;
subframe_dl0
=
0xff
;
// invalid subframe number indicates ACK/NACK is not needed
subframe_dl1
=
0xff
;
}
else
if
(
subframe
==
7
)
{
// ACK subframes 0,1
}
else
if
(
subframe
_tx
==
7
)
{
// ACK subframes 0,1
subframe_ul
=
1
;
subframe_dl0
=
0
;
subframe_dl1
=
1
;
}
else
if
(
subframe
==
8
)
{
// ACK subframes 4
}
else
if
(
subframe
_tx
==
8
)
{
// ACK subframes 4
subframe_ul
=
4
;
subframe_dl0
=
4
;
subframe_dl1
=
0xff
;
}
else
{
LOG_E
(
PHY
,
"phy_procedures_lte.c: get_ack, illegal subframe %d for tdd_config %d
\n
"
,
subframe
,
frame_parms
->
tdd_config
);
LOG_E
(
PHY
,
"phy_procedures_lte.c: get_ack, illegal subframe
_tx
%d for tdd_config %d
\n
"
,
subframe
_tx
,
frame_parms
->
tdd_config
);
return
(
0
);
}
...
...
@@ -396,18 +398,18 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
if
(
!
do_reset
&&
(
subframe_ul
<
10
))
{
if
((
subframe_dl0
<
10
)
&&
(
subframe_dl1
<
10
))
{
LOG_D
(
PHY
,
"ul-sf#%d vDAI_UL[sf#%d]=%d Nbundled=%d: dlsf#%d ACK=%d harq_status=%d vDAI_DL=%d, dlsf#%d ACK=%d harq_status=%d vDAI_DL=%d, o_ACK[0]=%d status=%d
\n
"
,
subframe
,
subframe_ul
,
harq_ack
[
subframe_ul
].
vDAI_UL
,
status
,
subframe
_tx
,
subframe_ul
,
harq_ack
[
subframe_ul
].
vDAI_UL
,
status
,
subframe_dl0
,
harq_ack
[
subframe_dl0
].
ack
,
harq_ack
[
subframe_dl0
].
send_harq_status
,
harq_ack
[
subframe_dl0
].
vDAI_DL
,
subframe_dl1
,
harq_ack
[
subframe_dl1
].
ack
,
harq_ack
[
subframe_dl1
].
send_harq_status
,
harq_ack
[
subframe_dl1
].
vDAI_DL
,
o_ACK
[
cw_idx
],
status
);
}
else
if
(
subframe_dl0
<
10
)
{
LOG_D
(
PHY
,
"ul-sf#%d vDAI_UL[sf#%d]=%d Nbundled=%d: dlsf#%d ACK=%d status=%d vDAI_DL=%d, o_ACK[0]=%d status=%d
\n
"
,
subframe
,
subframe_ul
,
harq_ack
[
subframe_ul
].
vDAI_UL
,
status
,
subframe
_tx
,
subframe_ul
,
harq_ack
[
subframe_ul
].
vDAI_UL
,
status
,
subframe_dl0
,
harq_ack
[
subframe_dl0
].
ack
,
harq_ack
[
subframe_dl0
].
send_harq_status
,
harq_ack
[
subframe_dl0
].
vDAI_DL
,
o_ACK
[
cw_idx
],
status
);
}
else
if
(
subframe_dl1
<
10
)
{
LOG_D
(
PHY
,
"ul-sf#%d vDAI_UL[sf#%d]=%d Nbundled=%d: dlsf#%d ACK=%d status=%d vDAI_DL=%d, o_ACK[0]=%d status=%d
\n
"
,
subframe
,
subframe_ul
,
harq_ack
[
subframe_ul
].
vDAI_UL
,
status
,
subframe
_tx
,
subframe_ul
,
harq_ack
[
subframe_ul
].
vDAI_UL
,
status
,
subframe_dl1
,
harq_ack
[
subframe_dl1
].
ack
,
harq_ack
[
subframe_dl1
].
send_harq_status
,
harq_ack
[
subframe_dl1
].
vDAI_DL
,
o_ACK
[
cw_idx
],
status
);
}
...
...
@@ -415,7 +417,7 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
// reset ACK/NACK status
if
(
do_reset
)
{
LOG_D
(
PHY
,
"ul-sf#%d ACK/NACK status resetting @ dci0-sf#%d, dci1x/2x-sf#%d, dci1x/2x-sf#%d
\n
"
,
subframe
,
subframe_ul
,
subframe_dl0
,
subframe_dl1
);
LOG_D
(
PHY
,
"ul-sf#%d ACK/NACK status resetting @ dci0-sf#%d, dci1x/2x-sf#%d, dci1x/2x-sf#%d
\n
"
,
subframe
_tx
,
subframe_ul
,
subframe_dl0
,
subframe_dl1
);
if
(
subframe_ul
<
10
)
{
harq_ack
[
subframe_ul
].
vDAI_UL
=
0xff
;
}
...
...
@@ -434,22 +436,25 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
break
;
case
3
:
if
(
subframe
==
2
)
{
// ACK subframes 5 and 6
if
(
subframe
_tx
==
2
)
{
// ACK subframes 5 and 6
subframe_dl0
=
5
;
subframe_dl1
=
6
;
//printf("Subframe 2, TDD config 3: harq_ack[5] = %d (%d),harq_ack[6] = %d (%d)\n",harq_ack[5].ack,harq_ack[5].send_harq_status,harq_ack[6].ack,harq_ack[6].send_harq_status);
}
else
if
(
subframe
==
3
)
{
// ACK subframes 7 and 8
subframe_ul
=
2
;
//printf("subframe_tx 2, TDD config 3: harq_ack[5] = %d (%d),harq_ack[6] = %d (%d)\n",harq_ack[5].ack,harq_ack[5].send_harq_status,harq_ack[6].ack,harq_ack[6].send_harq_status);
}
else
if
(
subframe_tx
==
3
)
{
// ACK subframes 7 and 8
subframe_dl0
=
7
;
subframe_dl1
=
8
;
subframe_ul
=
3
;
//printf("Subframe 3, TDD config 3: harq_ack[7] = %d,harq_ack[8] = %d\n",harq_ack[7].ack,harq_ack[8].ack);
//printf("status %d : o_ACK (%d,%d)\n", status,o_ACK[0],o_ACK[1]);
}
else
if
(
subframe
==
4
)
{
// ACK subframes 9 and 0
}
else
if
(
subframe
_tx
==
4
)
{
// ACK subframes 9 and 0
subframe_dl0
=
9
;
subframe_dl1
=
0
;
subframe_ul
=
4
;
//printf("Subframe 4, TDD config 3: harq_ack[9] = %d,harq_ack[0] = %d\n",harq_ack[9].ack,harq_ack[0].ack);
}
else
{
LOG_E
(
PHY
,
"phy_procedures_lte.c: get_ack, illegal subframe %d for tdd_config %d
\n
"
,
subframe
,
frame_parms
->
tdd_config
);
LOG_E
(
PHY
,
"phy_procedures_lte.c: get_ack, illegal subframe
_tx
%d for tdd_config %d
\n
"
,
subframe
_tx
,
frame_parms
->
tdd_config
);
return
(
0
);
}
...
...
@@ -463,11 +468,12 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
}
else
if
(
harq_ack
[
subframe_dl1
].
send_harq_status
==
1
)
o_ACK
[
cw_idx
]
=
harq_ack
[
subframe_dl1
].
ack
;
pN_bundled
[
0
]
=
harq_ack
[
subframe_rx
].
vDAI_UL
;
status
=
harq_ack
[
subframe_dl0
].
send_harq_status
+
harq_ack
[
subframe_dl1
].
send_harq_status
;
LOG_I
(
PHY
,
"TDD Config3 UL Sfn %d, dl Sfn0 %d status %d o_Ack %d, dl Sfn1 %d status %d o_Ack %d
\n
"
,
subframe
,
subframe_dl0
,
harq_ack
[
subframe_dl0
].
send_harq_status
,
harq_ack
[
subframe_dl0
].
ack
,
subframe_dl1
,
harq_ack
[
subframe_dl1
].
send_harq_status
,
harq_ack
[
subframe_dl1
].
ack
);
LOG_I
(
PHY
,
"TDD Config3 UL Sfn %d, dl Sfn0 %d status %d o_Ack %d, dl Sfn1 %d status %d o_Ack %d
subframe_rx %d N_bundled %d
\n
"
,
subframe
_tx
,
subframe_dl0
,
harq_ack
[
subframe_dl0
].
send_harq_status
,
harq_ack
[
subframe_dl0
].
ack
,
subframe_dl1
,
harq_ack
[
subframe_dl1
].
send_harq_status
,
harq_ack
[
subframe_dl1
].
ack
,
subframe_rx
,
pN_bundled
[
0
]
);
if
(
do_reset
)
{
// reset ACK/NACK status
harq_ack
[
subframe_dl0
].
ack
=
2
;
...
...
@@ -488,20 +494,24 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
uint8_t
get_ack
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
harq_status_t
*
harq_ack
,
unsigned
char
subframe
,
unsigned
char
subframe_tx
,
unsigned
char
subframe_rx
,
unsigned
char
*
o_ACK
,
uint8_t
cw_idx
)
{
return
get_reset_ack
(
frame_parms
,
harq_ack
,
subframe
,
o_ACK
,
cw_idx
,
0
);
uint8_t
N_bundled
=
0
;
return
get_reset_ack
(
frame_parms
,
harq_ack
,
subframe_tx
,
subframe_rx
,
o_ACK
,
&
N_bundled
,
cw_idx
,
0
);
}
uint8_t
reset_ack
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
harq_status_t
*
harq_ack
,
unsigned
char
subframe
,
unsigned
char
subframe_tx
,
unsigned
char
subframe_rx
,
unsigned
char
*
o_ACK
,
uint8_t
*
pN_bundled
,
uint8_t
cw_idx
)
{
return
get_reset_ack
(
frame_parms
,
harq_ack
,
subframe
,
o_ACK
,
cw_idx
,
1
);
return
get_reset_ack
(
frame_parms
,
harq_ack
,
subframe
_tx
,
subframe_rx
,
o_ACK
,
pN_bundled
,
cw_idx
,
1
);
}
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
3c6e206e
This diff is collapsed.
Click to expand it.
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