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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
f32355c7
Commit
f32355c7
authored
7 years ago
by
sharma
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added handling of narrowbands for ULSCH scheduling
parent
18d996eb
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
160 additions
and
50 deletions
+160
-50
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
+19
-19
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+67
-7
openair1/PHY/LTE_TRANSPORT/defs.h
openair1/PHY/LTE_TRANSPORT/defs.h
+2
-0
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
+8
-3
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
+9
-6
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+12
-2
openair2/LAYER2/MAC/eNB_scheduler_RA.c
openair2/LAYER2/MAC/eNB_scheduler_RA.c
+3
-3
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+37
-8
openair2/RRC/LITE/MESSAGES/asn1_msg.c
openair2/RRC/LITE/MESSAGES/asn1_msg.c
+3
-2
No files found.
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
View file @
f32355c7
...
@@ -46,12 +46,12 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB,
...
@@ -46,12 +46,12 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB,
int32_t
**
ul_ch_estimates_time
=
pusch_vars
->
drs_ch_estimates_time
;
int32_t
**
ul_ch_estimates_time
=
pusch_vars
->
drs_ch_estimates_time
;
int32_t
**
rxdataF_ext
=
pusch_vars
->
rxdataF_ext
;
int32_t
**
rxdataF_ext
=
pusch_vars
->
rxdataF_ext
;
int
subframe
=
proc
->
subframe_rx
;
int
subframe
=
proc
->
subframe_rx
;
uint8_t
harq_pid
=
subframe2harq_pid
(
frame_parms
,
proc
->
frame_rx
,
subframe
);
uint8_t
harq_pid
;
int16_t
delta_phase
=
0
;
int16_t
delta_phase
=
0
;
int16_t
*
ru1
=
ru_90
;
int16_t
*
ru1
=
ru_90
;
int16_t
*
ru2
=
ru_90
;
int16_t
*
ru2
=
ru_90
;
int16_t
current_phase1
,
current_phase2
;
int16_t
current_phase1
,
current_phase2
;
uint16_t
N_rb_alloc
=
eNB
->
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
;
uint16_t
aa
,
Msc_RS
,
Msc_RS_idx
;
uint16_t
aa
,
Msc_RS
,
Msc_RS_idx
;
uint16_t
*
Msc_idx_ptr
;
uint16_t
*
Msc_idx_ptr
;
int
k
,
pilot_pos1
=
3
-
frame_parms
->
Ncp
,
pilot_pos2
=
10
-
2
*
frame_parms
->
Ncp
;
int
k
,
pilot_pos1
=
3
-
frame_parms
->
Ncp
,
pilot_pos2
=
10
-
2
*
frame_parms
->
Ncp
;
...
@@ -65,7 +65,7 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB,
...
@@ -65,7 +65,7 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB,
uint32_t
alpha_ind
;
uint32_t
alpha_ind
;
uint32_t
u
=
frame_parms
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
grouphop
[
Ns
+
(
subframe
<<
1
)];
uint32_t
u
=
frame_parms
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
grouphop
[
Ns
+
(
subframe
<<
1
)];
uint32_t
v
=
frame_parms
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
seqhop
[
Ns
+
(
subframe
<<
1
)];
uint32_t
v
=
frame_parms
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
seqhop
[
Ns
+
(
subframe
<<
1
)];
int32_t
tmp_estimates
[
N_rb_alloc
*
12
]
__attribute__
((
aligned
(
16
)));
int
symbol_offset
,
i
;
int
symbol_offset
,
i
;
...
@@ -83,7 +83,19 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB,
...
@@ -83,7 +83,19 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB,
int32x4_t
mmtmp0
,
mmtmp1
,
mmtmp_re
,
mmtmp_im
;
int32x4_t
mmtmp0
,
mmtmp1
,
mmtmp_re
,
mmtmp_im
;
#endif
#endif
int32_t
temp_in_ifft_0
[
2048
*
2
]
__attribute__
((
aligned
(
32
)));
int32_t
temp_in_ifft_0
[
2048
*
2
]
__attribute__
((
aligned
(
32
)));
#ifdef Rel14
if
(
eNB
->
ulsch
[
UE_id
]
->
ue_type
>
0
)
harq_pid
=
0
;
else
#endif
{
harq_pid
=
subframe2harq_pid
(
frame_parms
,
proc
->
frame_rx
,
subframe
);
}
uint16_t
N_rb_alloc
=
eNB
->
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
;
int32_t
tmp_estimates
[
N_rb_alloc
*
12
]
__attribute__
((
aligned
(
16
)));
Msc_RS
=
N_rb_alloc
*
12
;
Msc_RS
=
N_rb_alloc
*
12
;
...
@@ -91,24 +103,12 @@ int32_t temp_in_ifft_0[2048*2] __attribute__((aligned(32)));
...
@@ -91,24 +103,12 @@ int32_t temp_in_ifft_0[2048*2] __attribute__((aligned(32)));
eNB
->
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
n_DMRS2
+
eNB
->
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
n_DMRS2
+
frame_parms
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
nPRS
[(
subframe
<<
1
)
+
Ns
])
%
12
;
frame_parms
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
nPRS
[(
subframe
<<
1
)
+
Ns
])
%
12
;
#if defined(USER_MODE)
Msc_idx_ptr
=
(
uint16_t
*
)
bsearch
(
&
Msc_RS
,
dftsizes
,
33
,
sizeof
(
uint16_t
),
compareints
);
if
(
Msc_idx_ptr
)
Msc_RS_idx
=
Msc_idx_ptr
-
dftsizes
;
else
{
LOG_E
(
PHY
,
"lte_ul_channel_estimation: index for Msc_RS=%d not found
\n
"
,
Msc_RS
);
return
(
-
1
);
}
#else
Msc_idx_ptr
=
(
uint16_t
*
)
bsearch
(
&
Msc_RS
,
dftsizes
,
33
,
sizeof
(
uint16_t
),
compareints
);
uint8_t
b
;
for
(
b
=
0
;
b
<
33
;
b
++
)
AssertFatal
(
Msc_idx_ptr
!=
NULL
,
"lte_ul_channel_estimation: index for Msc_RS=%d not found
\n
"
,
Msc_RS
);
if
(
Msc_RS
==
dftsizes
[
b
])
Msc_RS_idx
=
b
;
#endif
Msc_RS_idx
=
Msc_idx_ptr
-
dftsizes
;
// LOG_I(PHY,"subframe %d, Ns %d, l %d, Msc_RS = %d, Msc_RS_idx = %d, u %d, v %d, cyclic_shift %d\n",subframe,Ns,l,Msc_RS, Msc_RS_idx,u,v,cyclic_shift);
// LOG_I(PHY,"subframe %d, Ns %d, l %d, Msc_RS = %d, Msc_RS_idx = %d, u %d, v %d, cyclic_shift %d\n",subframe,Ns,l,Msc_RS, Msc_RS_idx,u,v,cyclic_shift);
#ifdef DEBUG_CH
#ifdef DEBUG_CH
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
f32355c7
...
@@ -164,11 +164,12 @@ int8_t delta_PUSCH_acc[4] = { -1, 0, 1, 3 };
...
@@ -164,11 +164,12 @@ int8_t delta_PUSCH_acc[4] = { -1, 0, 1, 3 };
int8_t
*
delta_PUCCH_lut
=
delta_PUSCH_acc
;
int8_t
*
delta_PUCCH_lut
=
delta_PUSCH_acc
;
void
void
conv_eMTC_rballoc
(
uint
8_t
narrowband
,
uint
16_t
resource_block_coding
,
uint32_t
N_RB_DL
,
uint32_t
*
rb_alloc
)
conv_eMTC_rballoc
(
uint16_t
resource_block_coding
,
uint32_t
N_RB_DL
,
uint32_t
*
rb_alloc
)
{
{
int
RIV
=
resource_block_coding
;
int
RIV
=
resource_block_coding
&
31
;
int
narrowband
=
resource_block_coding
>>
5
;
int
N_NB_DL
=
N_RB_DL
/
6
;
int
N_NB_DL
=
N_RB_DL
/
6
;
int
i0
=
(
N_RB_DL
>>
1
)
-
(
3
*
N_NB_DL
);
int
i0
=
(
N_RB_DL
>>
1
)
-
(
3
*
N_NB_DL
);
int
first_rb
=
(
6
*
narrowband
)
+
i0
;
int
first_rb
=
(
6
*
narrowband
)
+
i0
;
...
@@ -2213,8 +2214,8 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
...
@@ -2213,8 +2214,8 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
dci_alloc
->
dci_length
=
sizeof_DCI6_1A_10MHz_t
;
dci_alloc
->
dci_length
=
sizeof_DCI6_1A_10MHz_t
;
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
type
=
1
;
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
type
=
1
;
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
hopping
=
rel13
->
frequency_hopping_enabled_flag
;
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
hopping
=
rel13
->
frequency_hopping_enabled_flag
;
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
rballoc
=
rel13
->
resource_block_coding
;
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
rballoc
=
rel13
->
resource_block_coding
&
31
;
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
narrowband
=
rel13
->
mpdcch_narrow_band
;
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
narrowband
=
rel13
->
resource_block_coding
>>
5
;
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
mcs
=
rel13
->
mcs
;
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
mcs
=
rel13
->
mcs
;
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
rep
=
(
rel13
->
pdsch_reptition_levels
);
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
rep
=
(
rel13
->
pdsch_reptition_levels
);
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
harq_pid
=
rel13
->
harq_process
;
((
DCI6_1A_10MHz_t
*
)
dci_pdu
)
->
harq_pid
=
rel13
->
harq_process
;
...
@@ -2356,7 +2357,7 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
...
@@ -2356,7 +2357,7 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
dlsch0
->
subframe_tx
[(
subframe
+
2
)
%
10
]
=
1
;
dlsch0
->
subframe_tx
[(
subframe
+
2
)
%
10
]
=
1
;
LOG_I
(
PHY
,
"PDSCH : resource_block_coding %x
\n
"
,
rel13
->
resource_block_coding
);
LOG_I
(
PHY
,
"PDSCH : resource_block_coding %x
\n
"
,
rel13
->
resource_block_coding
);
conv_eMTC_rballoc
(
rel13
->
mpdcch_narrow_band
,
rel13
->
resource_block_coding
,
conv_eMTC_rballoc
(
rel13
->
resource_block_coding
,
fp
->
N_RB_DL
,
fp
->
N_RB_DL
,
dlsch0_harq
->
rb_alloc
);
dlsch0_harq
->
rb_alloc
);
...
@@ -2584,6 +2585,53 @@ fill_dci0 (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, DCI_ALLOC_t * dci_alloc,
...
@@ -2584,6 +2585,53 @@ fill_dci0 (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, DCI_ALLOC_t * dci_alloc,
}
}
#ifdef Rel14
#ifdef Rel14
int
get_narrowband_index
(
int
N_RB_UL
,
int
rb
)
{
switch
(
N_RB_UL
)
{
case
6
:
// 6 PRBs, N_NB=1, i_0=0
case
25
:
// 25 PRBs, N_NB=4, i_0=0
return
(
rb
/
6
);
break
;
case
50
:
// 50 PRBs, N_NB=8, i_0=1
case
75
:
// 75 PRBs, N_NB=12, i_0=1
case
15
:
// 15 PRBs, N_NB=2, i_0=1
AssertFatal
(
rb
>=
1
,
"rb %d is not possible for %d PRBs
\n
"
,
rb
,
N_RB_UL
);
return
((
rb
-
1
)
/
6
);
break
;
case
100
:
// 100 PRBs, N_NB=16, i_0=2
AssertFatal
(
rb
>=
2
,
"rb %d is not possible for %d PRBs
\n
"
,
rb
,
N_RB_UL
);
return
(
rb
-
2
/
6
);
break
;
default:
AssertFatal
(
1
==
0
,
"Impossible N_RB_UL %d
\n
"
,
N_RB_UL
);
break
;
}
}
int
get_first_rb_in_narrowband
(
int
N_RB_UL
,
int
rb
)
{
switch
(
N_RB_UL
)
{
case
6
:
// 6 PRBs, N_NB=1, i_0=0
case
25
:
// 25 PRBs, N_NB=4, i_0=0
return
(
rb
-
6
*
(
rb
/
6
));
break
;
case
50
:
// 50 PRBs, N_NB=8, i_0=1
case
75
:
// 75 PRBs, N_NB=12, i_0=1
case
15
:
// 15 PRBs, N_NB=2, i_0=1
AssertFatal
(
rb
>=
1
,
"rb %d is not possible for %d PRBs
\n
"
,
rb
,
N_RB_UL
);
return
(
rb
-
1
-
(
6
*
((
rb
-
1
)
/
6
)));
break
;
case
100
:
// 100 PRBs, N_NB=16, i_0=2
AssertFatal
(
rb
>=
2
,
"rb %d is not possible for %d PRBs
\n
"
,
rb
,
N_RB_UL
);
return
(
rb
-
2
-
(
6
*
((
rb
-
2
)
/
6
)));
break
;
default:
AssertFatal
(
1
==
0
,
"Impossible N_RB_UL %d
\n
"
,
N_RB_UL
);
break
;
}
}
void
void
fill_mpdcch_dci0
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
mDCI_ALLOC_t
*
dci_alloc
,
nfapi_hi_dci0_mpdcch_dci_pdu
*
pdu
)
fill_mpdcch_dci0
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
mDCI_ALLOC_t
*
dci_alloc
,
nfapi_hi_dci0_mpdcch_dci_pdu
*
pdu
)
{
{
...
@@ -2595,8 +2643,9 @@ fill_mpdcch_dci0 (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * dci
...
@@ -2595,8 +2643,9 @@ fill_mpdcch_dci0 (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * dci
uint32_t
TPC
=
rel13
->
tpc
;
uint32_t
TPC
=
rel13
->
tpc
;
uint32_t
mcs
=
rel13
->
mcs
;
uint32_t
mcs
=
rel13
->
mcs
;
uint32_t
hopping
=
rel13
->
frequency_hopping_flag
;
uint32_t
hopping
=
rel13
->
frequency_hopping_flag
;
uint32_t
narrowband
=
get_narrowband_index
(
frame_parms
->
N_RB_UL
,
rel13
->
resource_block_start
);
uint32_t
rballoc
=
computeRIV
(
6
,
uint32_t
rballoc
=
computeRIV
(
6
,
rel13
->
resource_block_start
,
get_first_rb_in_narrowband
(
frame_parms
->
N_RB_UL
,
rel13
->
resource_block_start
)
,
rel13
->
number_of_resource_blocks
);
rel13
->
number_of_resource_blocks
);
uint32_t
ndi
=
rel13
->
new_data_indication
;
uint32_t
ndi
=
rel13
->
new_data_indication
;
...
@@ -2748,6 +2797,17 @@ fill_ulsch (PHY_VARS_eNB * eNB, nfapi_ul_config_ulsch_pdu * ulsch_pdu, int frame
...
@@ -2748,6 +2797,17 @@ fill_ulsch (PHY_VARS_eNB * eNB, nfapi_ul_config_ulsch_pdu * ulsch_pdu, int frame
harq_pid
=
ulsch_pdu
->
ulsch_pdu_rel8
.
harq_process_number
;
harq_pid
=
ulsch_pdu
->
ulsch_pdu_rel8
.
harq_process_number
;
#ifdef Rel14
ulsch
->
ue_type
=
ulsch_pdu
->
ulsch_pdu_rel13
.
ue_type
;
AssertFatal
(
harq_pid
==
0
,
"Harq PID is not zero for BL/CE UE
\n
"
);
#else
ulsch
->
ue_type
=
0
;
#endif
ulsch
->
harq_mask
|=
1
<<
harq_pid
;
ulsch
->
harq_mask
|=
1
<<
harq_pid
;
ulsch
->
harq_processes
[
harq_pid
]
->
frame
=
frame
;
ulsch
->
harq_processes
[
harq_pid
]
->
frame
=
frame
;
...
@@ -2810,7 +2870,7 @@ fill_ulsch (PHY_VARS_eNB * eNB, nfapi_ul_config_ulsch_pdu * ulsch_pdu, int frame
...
@@ -2810,7 +2870,7 @@ fill_ulsch (PHY_VARS_eNB * eNB, nfapi_ul_config_ulsch_pdu * ulsch_pdu, int frame
ulsch
->
harq_processes
[
harq_pid
]
->
round
++
;
ulsch
->
harq_processes
[
harq_pid
]
->
round
++
;
ulsch
->
rnti
=
ulsch_pdu
->
ulsch_pdu_rel8
.
rnti
;
ulsch
->
rnti
=
ulsch_pdu
->
ulsch_pdu_rel8
.
rnti
;
LOG_
D
(
PHY
,
"Filling ULSCH %x (UE_id %d) (new_ulsch %d) for Frame %d, Subframe %d : harq_pid %d, first_rb %d, nb_rb %d, rvidx %d, Qm %d, TBS %d, round %d
\n
"
,
LOG_
I
(
PHY
,
"Filling ULSCH %x (UE_id %d) (new_ulsch %d) for Frame %d, Subframe %d : harq_pid %d, first_rb %d, nb_rb %d, rvidx %d, Qm %d, TBS %d, round %d
\n
"
,
ulsch
->
rnti
,
ulsch
->
rnti
,
UE_id
,
UE_id
,
new_ulsch
,
new_ulsch
,
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/defs.h
View file @
f32355c7
...
@@ -596,6 +596,8 @@ typedef struct {
...
@@ -596,6 +596,8 @@ typedef struct {
}
LTE_eNB_UCI
;
}
LTE_eNB_UCI
;
typedef
struct
{
typedef
struct
{
/// UE type (normal, CEModeA, CEModeB)
uint8_t
ue_type
;
/// HARQ process mask, indicates which processes are currently active
/// HARQ process mask, indicates which processes are currently active
uint16_t
harq_mask
;
uint16_t
harq_mask
;
/// Pointers to 8 HARQ processes for the ULSCH
/// Pointers to 8 HARQ processes for the ULSCH
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
View file @
f32355c7
...
@@ -878,11 +878,16 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
...
@@ -878,11 +878,16 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
LTE_UL_eNB_HARQ_t
*
ulsch_harq
;
LTE_UL_eNB_HARQ_t
*
ulsch_harq
;
#ifdef Rel14
harq_pid
=
subframe2harq_pid
(
frame_parms
,
proc
->
frame_rx
,
subframe
);
if
(
ulsch
->
ue_type
>
0
)
harq_pid
=
0
;
else
#endif
{
harq_pid
=
subframe2harq_pid
(
frame_parms
,
proc
->
frame_rx
,
subframe
);
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING0
+
harq_pid
,
1
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING0
+
harq_pid
,
1
);
// x1 is set in lte_gold_generic
// x1 is set in lte_gold_generic
x2
=
((
uint32_t
)
ulsch
->
rnti
<<
14
)
+
((
uint32_t
)
subframe
<<
9
)
+
frame_parms
->
Nid_cell
;
//this is c_init in 36.211 Sec 6.3.1
x2
=
((
uint32_t
)
ulsch
->
rnti
<<
14
)
+
((
uint32_t
)
subframe
<<
9
)
+
frame_parms
->
Nid_cell
;
//this is c_init in 36.211 Sec 6.3.1
ulsch_harq
=
ulsch
->
harq_processes
[
harq_pid
];
ulsch_harq
=
ulsch
->
harq_processes
[
harq_pid
];
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
View file @
f32355c7
...
@@ -1136,18 +1136,21 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
...
@@ -1136,18 +1136,21 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
int16_t
*
llrp
;
int16_t
*
llrp
;
int
subframe
=
proc
->
subframe_rx
;
int
subframe
=
proc
->
subframe_rx
;
harq_pid
=
subframe2harq_pid
(
frame_parms
,
proc
->
frame_rx
,
subframe
);
#ifdef Rel14
if
(
ulsch
[
UE_id
]
->
ue_type
>
0
)
harq_pid
=
0
;
else
#endif
{
harq_pid
=
subframe2harq_pid
(
frame_parms
,
proc
->
frame_rx
,
subframe
);
}
Qm
=
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
Qm
;
Qm
=
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
Qm
;
#ifdef DEBUG_ULSCH
#ifdef DEBUG_ULSCH
printf
(
"rx_ulsch: harq_pid %d, nb_rb %d first_rb %d
\n
"
,
harq_pid
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
first_rb
);
printf
(
"rx_ulsch: harq_pid %d, nb_rb %d first_rb %d
\n
"
,
harq_pid
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
first_rb
);
#endif //DEBUG_ULSCH
#endif //DEBUG_ULSCH
if
(
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
==
0
)
{
AssertFatal
(
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
>
0
,
LOG_E
(
PHY
,
"PUSCH (%d/%x) nb_rb=0!
\n
"
,
harq_pid
,
ulsch
[
UE_id
]
->
rnti
);
"PUSCH (%d/%x) nb_rb=0!
\n
"
,
harq_pid
,
ulsch
[
UE_id
]
->
rnti
);
return
;
}
for
(
l
=
0
;
l
<
(
frame_parms
->
symbols_per_tti
-
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
srs_active
);
l
++
)
{
for
(
l
=
0
;
l
<
(
frame_parms
->
symbols_per_tti
-
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
srs_active
);
l
++
)
{
#ifdef DEBUG_ULSCH
#ifdef DEBUG_ULSCH
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
f32355c7
...
@@ -1070,6 +1070,8 @@ pusch_procedures (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc)
...
@@ -1070,6 +1070,8 @@ pusch_procedures (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc)
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
ulsch
=
eNB
->
ulsch
[
i
];
ulsch
=
eNB
->
ulsch
[
i
];
if
(
ulsch
->
ue_type
>
0
)
harq_pid
=
0
;
ulsch_harq
=
ulsch
->
harq_processes
[
harq_pid
];
ulsch_harq
=
ulsch
->
harq_processes
[
harq_pid
];
if
(
ulsch
->
rnti
>
0
)
if
(
ulsch
->
rnti
>
0
)
LOG_D
(
PHY
,
"Frame %d, subframe %d: PUSCH procedures, harq_pid %d, UE %d/%x
\n
"
,
frame
,
subframe
,
harq_pid
,
i
,
ulsch
->
rnti
);
LOG_D
(
PHY
,
"Frame %d, subframe %d: PUSCH procedures, harq_pid %d, UE %d/%x
\n
"
,
frame
,
subframe
,
harq_pid
,
i
,
ulsch
->
rnti
);
...
@@ -1248,8 +1250,16 @@ fill_rx_indication (PHY_VARS_eNB * eNB, int UE_id, int frame, int subframe)
...
@@ -1248,8 +1250,16 @@ fill_rx_indication (PHY_VARS_eNB * eNB, int UE_id, int frame, int subframe)
int
timing_advance_update
;
int
timing_advance_update
;
int
sync_pos
;
int
sync_pos
;
uint32_t
harq_pid
=
subframe2harq_pid
(
&
eNB
->
frame_parms
,
uint32_t
harq_pid
;
frame
,
subframe
);
#ifdef Rel14
if
(
eNB
->
ulsch
[
UE_id
]
->
ue_type
>
0
)
harq_pid
=
0
;
else
#endif
{
harq_pid
=
subframe2harq_pid
(
&
eNB
->
frame_parms
,
frame
,
subframe
);
}
pthread_mutex_lock
(
&
eNB
->
UL_INFO_mutex
);
pthread_mutex_lock
(
&
eNB
->
UL_INFO_mutex
);
pdu
=
&
eNB
->
UL_INFO
.
rx_ind
.
rx_pdu_list
[
eNB
->
UL_INFO
.
rx_ind
.
number_of_pdus
];
pdu
=
&
eNB
->
UL_INFO
.
rx_ind
.
rx_pdu_list
[
eNB
->
UL_INFO
.
rx_ind
.
number_of_pdus
];
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/MAC/eNB_scheduler_RA.c
View file @
f32355c7
...
@@ -105,7 +105,7 @@ add_msg3 (module_id_t module_idP, int CC_id, RA_TEMPLATE * RA_template, frame_t
...
@@ -105,7 +105,7 @@ add_msg3 (module_id_t module_idP, int CC_id, RA_TEMPLATE * RA_template, frame_t
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
frequency_hopping_bits
=
0
;
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
frequency_hopping_bits
=
0
;
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
new_data_indication
=
0
;
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
new_data_indication
=
0
;
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
redundancy_version
=
rvseq
[
RA_template
->
msg3_round
];
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
redundancy_version
=
rvseq
[
RA_template
->
msg3_round
];
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
harq_process_number
=
((
10
*
RA_template
->
Msg3_frame
)
+
RA_template
->
Msg3_subframe
)
&
7
;
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
harq_process_number
=
0
;
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
ul_tx_mode
=
0
;
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
ul_tx_mode
=
0
;
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
current_tx_nb
=
0
;
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
current_tx_nb
=
0
;
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
n_srs
=
1
;
ul_config_pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
n_srs
=
1
;
...
@@ -274,7 +274,7 @@ generate_Msg2 (module_id_t module_idP, int CC_idP, frame_t frameP, sub_frame_t s
...
@@ -274,7 +274,7 @@ generate_Msg2 (module_id_t module_idP, int CC_idP, frame_t frameP, sub_frame_t s
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
drms_scrambling_init
=
cc
[
CC_idP
].
physCellId
;
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
drms_scrambling_init
=
cc
[
CC_idP
].
physCellId
;
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
initial_transmission_sf_io
=
(
frameP
*
10
)
+
subframeP
;
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
initial_transmission_sf_io
=
(
frameP
*
10
)
+
subframeP
;
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
transmission_power
=
6000
;
// 0dB
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
transmission_power
=
6000
;
// 0dB
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
resource_block_coding
=
getRIV
(
6
,
0
,
6
);
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
resource_block_coding
=
getRIV
(
6
,
0
,
6
)
|
(
RA_template
->
msg2_narrowband
<<
5
)
;
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
mcs
=
0
;
// adjust according to size of RAR, 208 bits with N1A_PRB=3
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
mcs
=
0
;
// adjust according to size of RAR, 208 bits with N1A_PRB=3
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
pdsch_reptition_levels
=
0
;
// fix to 4 for now
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
pdsch_reptition_levels
=
0
;
// fix to 4 for now
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
redundancy_version
=
0
;
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
redundancy_version
=
0
;
...
@@ -632,7 +632,7 @@ generate_Msg4 (module_id_t module_idP, int CC_idP, frame_t frameP, sub_frame_t s
...
@@ -632,7 +632,7 @@ generate_Msg4 (module_id_t module_idP, int CC_idP, frame_t frameP, sub_frame_t s
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
drms_scrambling_init
=
cc
[
CC_idP
].
physCellId
;
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
drms_scrambling_init
=
cc
[
CC_idP
].
physCellId
;
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
initial_transmission_sf_io
=
(
frameP
*
10
)
+
subframeP
;
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
initial_transmission_sf_io
=
(
frameP
*
10
)
+
subframeP
;
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
transmission_power
=
6000
;
// 0dB
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
transmission_power
=
6000
;
// 0dB
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
resource_block_coding
=
getRIV
(
6
,
0
,
6
)
;
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
resource_block_coding
=
getRIV
(
6
,
0
,
6
)
|
(
RA_template
->
msg2_narrowband
<<
5
);
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
mcs
=
4
;
// adjust according to size of RAR, 208 bits with N1A_PRB=3
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
mcs
=
4
;
// adjust according to size of RAR, 208 bits with N1A_PRB=3
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
pdsch_reptition_levels
=
0
;
// fix to 4 for now
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
pdsch_reptition_levels
=
0
;
// fix to 4 for now
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
redundancy_version
=
0
;
dl_config_pdu
->
mpdcch_pdu
.
mpdcch_pdu_rel13
.
redundancy_version
=
0
;
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
f32355c7
...
@@ -104,6 +104,9 @@ void rx_sdu(const module_id_t enb_mod_idP,
...
@@ -104,6 +104,9 @@ void rx_sdu(const module_id_t enb_mod_idP,
}
}
if
(
UE_id
!=-
1
)
{
if
(
UE_id
!=-
1
)
{
#ifdef Rel14
if
(
UE_list
->
UE_template
[
CC_idP
][
UE_id
].
rach_resource_type
>
0
)
harq_pid
=
0
;
#endif
LOG_D
(
MAC
,
"[eNB %d][PUSCH %d] CC_id %d Received ULSCH sdu round %d from PHY (rnti %x, UE_id %d) ul_cqi %d
\n
"
,
enb_mod_idP
,
harq_pid
,
CC_idP
,
UE_list
->
UE_sched_ctrl
[
UE_id
].
round_UL
[
CC_idP
][
harq_pid
],
LOG_D
(
MAC
,
"[eNB %d][PUSCH %d] CC_id %d Received ULSCH sdu round %d from PHY (rnti %x, UE_id %d) ul_cqi %d
\n
"
,
enb_mod_idP
,
harq_pid
,
CC_idP
,
UE_list
->
UE_sched_ctrl
[
UE_id
].
round_UL
[
CC_idP
][
harq_pid
],
current_rnti
,
UE_id
,
ul_cqi
);
current_rnti
,
UE_id
,
ul_cqi
);
...
@@ -142,6 +145,11 @@ void rx_sdu(const module_id_t enb_mod_idP,
...
@@ -142,6 +145,11 @@ void rx_sdu(const module_id_t enb_mod_idP,
}
}
}
}
else
if
((
RA_id
=
find_RA_id
(
enb_mod_idP
,
CC_idP
,
current_rnti
))
!=-
1
)
{
// Check if this is an RA process for the rnti
else
if
((
RA_id
=
find_RA_id
(
enb_mod_idP
,
CC_idP
,
current_rnti
))
!=-
1
)
{
// Check if this is an RA process for the rnti
#ifdef Rel14
if
(
UE_list
->
UE_template
[
CC_idP
][
UE_id
].
rach_resource_type
>
0
)
harq_pid
=
0
;
#endif
AssertFatal
(
eNB
->
common_channels
[
CC_idP
].
radioResourceConfigCommon
->
rach_ConfigCommon
.
maxHARQ_Msg3Tx
>
1
,
AssertFatal
(
eNB
->
common_channels
[
CC_idP
].
radioResourceConfigCommon
->
rach_ConfigCommon
.
maxHARQ_Msg3Tx
>
1
,
"maxHARQ %d should be greater than 1
\n
"
,
"maxHARQ %d should be greater than 1
\n
"
,
(
int
)
eNB
->
common_channels
[
CC_idP
].
radioResourceConfigCommon
->
rach_ConfigCommon
.
maxHARQ_Msg3Tx
);
(
int
)
eNB
->
common_channels
[
CC_idP
].
radioResourceConfigCommon
->
rach_ConfigCommon
.
maxHARQ_Msg3Tx
);
...
@@ -838,7 +846,7 @@ void schedule_ulsch(module_id_t module_idP,
...
@@ -838,7 +846,7 @@ void schedule_ulsch(module_id_t module_idP,
}
}
}
}
schedule_ulsch_rnti
(
module_idP
,
frameP
,
subframeP
,
sched_subframe
,
emtc_active
);
schedule_ulsch_rnti
(
module_idP
,
frameP
,
subframeP
,
sched_subframe
,
first_rb
);
stop_meas
(
&
eNB
->
schedule_ulsch
);
stop_meas
(
&
eNB
->
schedule_ulsch
);
}
}
...
@@ -1402,7 +1410,7 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP,
...
@@ -1402,7 +1410,7 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP,
// bad indices : 20 (40 PRB), 21 (45 PRB), 22 (48 PRB)
// bad indices : 20 (40 PRB), 21 (45 PRB), 22 (48 PRB)
//store for possible retransmission
//store for possible retransmission
UE_template
->
nb_rb_ul
[
harq_pid
]
=
6
;
UE_template
->
nb_rb_ul
[
harq_pid
]
=
6
;
UE_template
->
first_rb_ul
[
harq_pid
]
=
0
;
UE_template
->
first_rb_ul
[
harq_pid
]
=
narrowband_to_first_rb
(
cc
,
2
)
;
UE_sched_ctrl
->
ul_scheduled
|=
(
1
<<
harq_pid
);
UE_sched_ctrl
->
ul_scheduled
|=
(
1
<<
harq_pid
);
if
(
UE_id
==
UE_list
->
head
)
if
(
UE_id
==
UE_list
->
head
)
...
@@ -1453,7 +1461,7 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP,
...
@@ -1453,7 +1461,7 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP,
hi_dci0_pdu
->
pdu_size
=
(
uint8_t
)
(
2
+
sizeof
(
nfapi_dl_config_mpdcch_pdu
));
hi_dci0_pdu
->
pdu_size
=
(
uint8_t
)
(
2
+
sizeof
(
nfapi_dl_config_mpdcch_pdu
));
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
dci_format
=
(
UE_template
->
rach_resource_type
>
1
)
?
5
:
4
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
dci_format
=
(
UE_template
->
rach_resource_type
>
1
)
?
5
:
4
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
ce_mode
=
(
UE_template
->
rach_resource_type
>
1
)
?
2
:
1
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
ce_mode
=
(
UE_template
->
rach_resource_type
>
1
)
?
2
:
1
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
mpdcch_narrowband
=
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_Narrowband_r13
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
mpdcch_narrowband
=
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_Narrowband_r13
-
1
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
number_of_prb_pairs
=
6
;
// checked above that it has to be this
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
number_of_prb_pairs
=
6
;
// checked above that it has to be this
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
resource_block_assignment
=
0
;
// Note: this can be dynamic
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
resource_block_assignment
=
0
;
// Note: this can be dynamic
...
@@ -1471,13 +1479,14 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP,
...
@@ -1471,13 +1479,14 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP,
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
drms_scrambling_init
=
epdcch_setconfig_r11
->
dmrs_ScramblingSequenceInt_r11
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
drms_scrambling_init
=
epdcch_setconfig_r11
->
dmrs_ScramblingSequenceInt_r11
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
initial_transmission_sf_io
=
(
frameP
*
10
)
+
subframeP
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
initial_transmission_sf_io
=
(
frameP
*
10
)
+
subframeP
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
transmission_power
=
6000
;
// 0dB
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
transmission_power
=
6000
;
// 0dB
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
resource_block_start
=
0
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
resource_block_start
=
UE_template
->
first_rb_ul
[
harq_pid
]
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
number_of_resource_blocks
=
6
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
number_of_resource_blocks
=
6
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
mcs
=
4
;
// adjust according to size of RAR, 208 bits with N1A_PRB=3
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
mcs
=
4
;
// adjust according to size of RAR, 208 bits with N1A_PRB=3
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
pusch_repetition_levels
=
0
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
pusch_repetition_levels
=
0
;
AssertFatal
(
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_pdsch_HoppingConfig_r13
==
0
,
AssertFatal
(
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_pdsch_HoppingConfig_r13
==
"epdcch_setconfig_r11->ext2->mpdcch_config_r13->mpdcch_pdsch_HoppingConfig_r13 is not 0
\n
"
);
EPDCCH_SetConfig_r11__ext2__mpdcch_config_r13__setup__mpdcch_pdsch_HoppingConfig_r13_off
,
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
frequency_hopping_flag
=
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_pdsch_HoppingConfig_r13
;
"epdcch_setconfig_r11->ext2->mpdcch_config_r13->mpdcch_pdsch_HoppingConfig_r13 is not off
\n
"
);
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
frequency_hopping_flag
=
1
-
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_pdsch_HoppingConfig_r13
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
redudency_version
=
0
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
redudency_version
=
0
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
new_data_indication
=
0
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
new_data_indication
=
0
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
harq_process
=
0
;
hi_dci0_pdu
->
mpdcch_dci_pdu
.
mpdcch_dci_pdu_rel13
.
harq_process
=
0
;
...
@@ -1544,7 +1553,27 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP,
...
@@ -1544,7 +1553,27 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP,
T_INT
(
subframeP
),
T_INT
(
harq_pid
),
T_INT
(
UE_template
->
mcs_UL
[
harq_pid
]),
T_INT
(
0
),
T_INT
(
6
),
T_INT
(
subframeP
),
T_INT
(
harq_pid
),
T_INT
(
UE_template
->
mcs_UL
[
harq_pid
]),
T_INT
(
0
),
T_INT
(
6
),
T_INT
(
round
));
T_INT
(
round
));
fill_nfapi_ulsch_config_request_rel8
(
&
ul_req_tmp
->
ul_config_pdu_list
[
ul_req_tmp
->
number_of_pdus
],
cqi_req
,
cc
,
UE_template
->
physicalConfigDedicated
,
get_tmode
(
module_idP
,
CC_id
,
UE_id
),
eNB
->
ul_handle
,
rnti
,
UE_template
->
first_rb_ul
[
harq_pid
],
// resource_block_start
UE_template
->
nb_rb_ul
[
harq_pid
],
// number_of_resource_blocks
UE_template
->
mcs_UL
[
harq_pid
],
cshift
,
// cyclic_shift_2_for_drms
0
,
// frequency_hopping_enabled_flag
0
,
// frequency_hopping_bits
UE_template
->
oldNDI_UL
[
harq_pid
],
// new_data_indication
rvidx_tab
[
round
&
3
],
// redundancy_version
harq_pid
,
// harq_process_number
0
,
// ul_tx_mode
0
,
// current_tx_nb
0
,
// n_srs
UE_template
->
TBS_UL
[
harq_pid
]
);
fill_nfapi_ulsch_config_request_emtc
(
&
ul_req_tmp
->
ul_config_pdu_list
[
ul_req_tmp
->
number_of_pdus
],
fill_nfapi_ulsch_config_request_emtc
(
&
ul_req_tmp
->
ul_config_pdu_list
[
ul_req_tmp
->
number_of_pdus
],
UE_template
->
rach_resource_type
>
2
?
2
:
1
,
UE_template
->
rach_resource_type
>
2
?
2
:
1
,
1
,
//total_number_of_repetitions
1
,
//total_number_of_repetitions
...
...
This diff is collapsed.
Click to expand it.
openair2/RRC/LITE/MESSAGES/asn1_msg.c
View file @
f32355c7
...
@@ -2539,7 +2539,8 @@ do_RRCConnectionSetup_BR(
...
@@ -2539,7 +2539,8 @@ do_RRCConnectionSetup_BR(
physicalConfigDedicated2
->
ext4
->
epdcch_Config_r11
=
calloc
(
1
,
sizeof
(
struct
EPDCCH_Config_r11
));
physicalConfigDedicated2
->
ext4
->
epdcch_Config_r11
=
calloc
(
1
,
sizeof
(
struct
EPDCCH_Config_r11
));
physicalConfigDedicated2
->
ext4
->
epdcch_Config_r11
->
config_r11
.
present
=
EPDCCH_Config_r11__config_r11_PR_setup
;
physicalConfigDedicated2
->
ext4
->
epdcch_Config_r11
->
config_r11
.
present
=
EPDCCH_Config_r11__config_r11_PR_setup
;
physicalConfigDedicated2
->
ext4
->
epdcch_Config_r11
->
config_r11
.
choice
.
setup
.
subframePatternConfig_r11
=
NULL
;
physicalConfigDedicated2
->
ext4
->
epdcch_Config_r11
->
config_r11
.
choice
.
setup
.
subframePatternConfig_r11
=
NULL
;
physicalConfigDedicated2
->
ext4
->
epdcch_Config_r11
->
config_r11
.
choice
.
setup
.
startSymbol_r11
=
NULL
;
physicalConfigDedicated2
->
ext4
->
epdcch_Config_r11
->
config_r11
.
choice
.
setup
.
startSymbol_r11
=
calloc
(
1
,
sizeof
(
long
));
*
physicalConfigDedicated2
->
ext4
->
epdcch_Config_r11
->
config_r11
.
choice
.
setup
.
startSymbol_r11
=
2
;
physicalConfigDedicated2
->
ext4
->
epdcch_Config_r11
->
config_r11
.
choice
.
setup
.
setConfigToReleaseList_r11
=
NULL
;
physicalConfigDedicated2
->
ext4
->
epdcch_Config_r11
->
config_r11
.
choice
.
setup
.
setConfigToReleaseList_r11
=
NULL
;
...
@@ -2570,7 +2571,7 @@ do_RRCConnectionSetup_BR(
...
@@ -2570,7 +2571,7 @@ do_RRCConnectionSetup_BR(
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_StartSF_UESS_r13
.
present
=
EPDCCH_SetConfig_r11__ext2__mpdcch_config_r13__setup__mpdcch_StartSF_UESS_r13_PR_fdd_r13
;
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_StartSF_UESS_r13
.
present
=
EPDCCH_SetConfig_r11__ext2__mpdcch_config_r13__setup__mpdcch_StartSF_UESS_r13_PR_fdd_r13
;
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_StartSF_UESS_r13
.
choice
.
fdd_r13
=
EPDCCH_SetConfig_r11__ext2__mpdcch_config_r13__setup__mpdcch_StartSF_UESS_r13__fdd_r13_v1
;
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_StartSF_UESS_r13
.
choice
.
fdd_r13
=
EPDCCH_SetConfig_r11__ext2__mpdcch_config_r13__setup__mpdcch_StartSF_UESS_r13__fdd_r13_v1
;
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_NumRepetition_r13
=
EPDCCH_SetConfig_r11__ext2__mpdcch_config_r13__setup__mpdcch_NumRepetition_r13_r1
;
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_NumRepetition_r13
=
EPDCCH_SetConfig_r11__ext2__mpdcch_config_r13__setup__mpdcch_NumRepetition_r13_r1
;
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_Narrowband_r13
=
2
;
epdcch_setconfig_r11
->
ext2
->
mpdcch_config_r13
->
choice
.
setup
.
mpdcch_Narrowband_r13
=
3
;
// note: this is narrowband index 2
ASN_SEQUENCE_ADD
(
physicalConfigDedicated2
->
ext4
->
epdcch_Config_r11
->
config_r11
.
choice
.
setup
.
setConfigToAddModList_r11
,
epdcch_setconfig_r11
);
ASN_SEQUENCE_ADD
(
physicalConfigDedicated2
->
ext4
->
epdcch_Config_r11
->
config_r11
.
choice
.
setup
.
setConfigToAddModList_r11
,
epdcch_setconfig_r11
);
...
...
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