Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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 UE
Commits
bcd98552
Commit
bcd98552
authored
Oct 28, 2016
by
fnabet
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop1B' of
https://gitlab.eurecom.fr/oai1B/openairinterface5g
into develop1B
parents
c3e796f2
f419f40b
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
463 additions
and
76 deletions
+463
-76
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+30
-1
openair1/PHY/LTE_TRANSPORT/proto.h
openair1/PHY/LTE_TRANSPORT/proto.h
+17
-0
openair1/PHY/LTE_TRANSPORT/pucch.c
openair1/PHY/LTE_TRANSPORT/pucch.c
+66
-48
openair1/PHY/LTE_TRANSPORT/uci_tools.c
openair1/PHY/LTE_TRANSPORT/uci_tools.c
+2
-0
openair1/PHY/impl_defs_lte.h
openair1/PHY/impl_defs_lte.h
+9
-5
openair1/SCHED/defs.h
openair1/SCHED/defs.h
+4
-0
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+319
-21
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+1
-1
openair2/RRC/LITE/MESSAGES/asn1_msg.c
openair2/RRC/LITE/MESSAGES/asn1_msg.c
+15
-0
No files found.
openair1/PHY/INIT/lte_init.c
View file @
bcd98552
...
...
@@ -762,7 +762,8 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
phy_vars_ue
->
dlsch_received_last
[
eNB_id
]
=
0
;
phy_vars_ue
->
dlsch_fer
[
eNB_id
]
=
0
;
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
ri_ConfigIndex
=
-
1
;
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
cqi_PMI_ConfigIndex
=
-
1
;
if
(
physicalConfigDedicated
)
{
LOG_D
(
PHY
,
"[UE %d] Received physicalConfigDedicated from eNB %d
\n
"
,
Mod_id
,
eNB_id
);
...
...
@@ -894,6 +895,31 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
}
if
(
physicalConfigDedicated
->
cqi_ReportConfig
)
{
if
(
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportModeAperiodic
)
{
// configure PUSCH CQI reporting
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
cqi_ReportModeAperiodic
=
*
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportModeAperiodic
;
if
((
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
cqi_ReportModeAperiodic
!=
rm12
)
&&
(
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
cqi_ReportModeAperiodic
!=
rm30
)
&&
(
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
cqi_ReportModeAperiodic
!=
rm31
))
LOG_E
(
PHY
,
"Unsupported Aperiodic CQI Feedback Mode : %d
\n
"
,
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
cqi_ReportModeAperiodic
);
}
if
(
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
)
{
if
(
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
->
present
==
CQI_ReportPeriodic_PR_setup
)
{
// configure PUCCH CQI reporting
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
cqi_PUCCH_ResourceIndex
=
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
->
choice
.
setup
.
cqi_PUCCH_ResourceIndex
;
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
cqi_PMI_ConfigIndex
=
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
->
choice
.
setup
.
cqi_pmi_ConfigIndex
;
if
(
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
->
choice
.
setup
.
ri_ConfigIndex
)
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
ri_ConfigIndex
=
*
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
->
choice
.
setup
.
ri_ConfigIndex
;
}
else
if
(
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
->
present
==
CQI_ReportPeriodic_PR_release
)
{
// handle release
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
ri_ConfigIndex
=
-
1
;
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
cqi_PMI_ConfigIndex
=
-
1
;
}
}
}
#ifdef CBA
if
(
physicalConfigDedicated
->
pusch_CBAConfigDedicated_vlola
)
{
...
...
@@ -910,6 +936,9 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
return
;
}
// fill cqi parameters for periodic CQI reporting
get_cqipmiri_params
(
phy_vars_ue
,
eNB_id
);
}
void
phy_config_cba_rnti
(
module_id_t
Mod_id
,
int
CC_id
,
eNB_flag_t
eNB_flag
,
uint8_t
index
,
rnti_t
cba_rnti
,
uint8_t
cba_group_id
,
uint8_t
num_active_cba_groups
)
...
...
openair1/PHY/LTE_TRANSPORT/proto.h
View file @
bcd98552
...
...
@@ -1445,6 +1445,9 @@ int32_t generate_ue_ulsch_params_from_rar(PHY_VARS_UE *phy_vars_ue,
uint8_t
eNB_id
);
double
sinr_eff_cqi_calc
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
);
uint8_t
sinr2cqi
(
double
sinr
,
uint8_t
trans_mode
);
int
generate_eNB_ulsch_params_from_dci
(
PHY_VARS_eNB
*
PHY_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
void
*
dci_pdu
,
...
...
@@ -1712,6 +1715,20 @@ void generate_pucch1x(int32_t **txdataF,
int16_t
amp
,
uint8_t
subframe
);
void
generate_pucch2x
(
int32_t
**
txdataF
,
LTE_DL_FRAME_PARMS
*
fp
,
uint8_t
ncs_cell
[
20
][
7
],
PUCCH_FMT_t
fmt
,
PUCCH_CONFIG_DEDICATED
*
pucch_config_dedicated
,
uint16_t
n2_pucch
,
uint16_t
*
payload
,
int
A
,
int
B2
,
int16_t
amp
,
uint8_t
subframe
,
uint16_t
rnti
);
void
generate_pucch_emul
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
PUCCH_FMT_t
format
,
...
...
openair1/PHY/LTE_TRANSPORT/pucch.c
View file @
bcd98552
...
...
@@ -442,7 +442,7 @@ inline void pucch2x_scrambling(LTE_DL_FRAME_PARMS *fp,int subframe,uint16_t rnti
int
i
;
uint8_t
c
;
x2
=
(
rnti
<<
14
)
+
(
(
1
+
subframe
)
<<
16
)
*
(
1
+
(
fp
->
Nid_cell
<<
1
));
//this is c_init in 36.211 Sec 6.3.1
x2
=
(
rnti
)
+
((
uint32_t
)
(
1
+
subframe
)
<<
16
)
*
(
1
+
(
fp
->
Nid_cell
<<
1
));
//this is c_init in 36.211 Sec 6.3.1
s
=
lte_gold_generic
(
&
x1
,
&
x2
,
1
);
for
(
i
=
0
;
i
<
19
;
i
++
)
{
c
=
(
uint8_t
)((
s
>>
i
)
&
1
);
...
...
@@ -456,22 +456,24 @@ inline void pucch2x_modulation(uint8_t *btilde,int16_t *d,int16_t amp) {
int
i
;
for
(
i
=
0
;
i
<
20
;
i
++
)
d
[
i
]
=
btilde
[
i
]
==
1
?
amp
:
-
amp
;
d
[
i
]
=
btilde
[
i
]
==
1
?
-
amp
:
amp
;
}
uint32_t
pucch_code
[
13
]
=
{
0xFFFFF
,
0x5A933
,
0x10E5A
,
0x6339C
,
0x73CE0
,
0xFFC00
,
0xD8E64
,
0x4F6B0
,
0x218EC
,
0x1B746
,
0x0FFFF
,
0x33FFF
,
0x3FFFC
};
void
generate_pucch2x
(
int32_t
**
txdataF
,
LTE_DL_FRAME_PARMS
*
fp
,
uint8_t
ncs_cell
[
20
][
7
],
PUCCH_FMT_t
fmt
,
PUCCH_CONFIG_DEDICATED
*
pucch_config_dedicated
,
uint16_t
n2_pucch
,
uint8_t
shortened_format
,
uint32_t
*
payload
,
uint16_t
*
payload
,
int
A
,
int
B2
,
int16_t
amp
,
...
...
@@ -486,13 +488,14 @@ void generate_pucch2x(int32_t **txdataF,
uint8_t
NRB2
=
fp
->
pucch_config_common
.
nRB_CQI
;
uint8_t
Ncs1
=
fp
->
pucch_config_common
.
nCS_AN
;
uint32_t
u0
=
(
fp
->
Nid_cell
+
fp
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
grouphop
[
subframe
<<
1
])
%
30
;
uint32_t
u1
=
(
fp
->
Nid_cell
+
fp
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
grouphop
[
1
+
(
subframe
<<
1
)])
%
30
;
uint32_t
v0
=
fp
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
seqhop
[
subframe
<<
1
];
uint32_t
v1
=
fp
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
seqhop
[
1
+
(
subframe
<<
1
)];
uint32_t
u0
=
fp
->
pucch_config_common
.
grouphop
[
subframe
<<
1
];
uint32_t
u1
=
fp
->
pucch_config_common
.
grouphop
[
1
+
(
subframe
<<
1
)];
uint32_t
v0
=
fp
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
seqhop
[
subframe
<<
1
];
uint32_t
v1
=
fp
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
seqhop
[
1
+
(
subframe
<<
1
)];
uint32_t
z
[
12
*
14
],
*
zptr
;
uint32_t
u
,
v
,
n
;
uint8_t
ns
,
N_UL_symb
,
nsymb
;
uint8_t
ns
,
N_UL_symb
,
nsymb
_slot0
,
nsymb_pertti
;
uint32_t
nprime
,
l
,
n_cs
;
int
alpha_ind
,
data_ind
;
int16_t
ref_re
,
ref_im
;
...
...
@@ -509,7 +512,6 @@ void generate_pucch2x(int32_t **txdataF,
return
;
}
// pucch2x_encoding
for
(
i
=
0
;
i
<
A
;
i
++
)
if
((
*
payload
&
(
1
<<
i
))
>
0
)
...
...
@@ -545,66 +547,72 @@ void generate_pucch2x(int32_t **txdataF,
}
}
zptr
=
z
;
#ifdef DEBUG_PUCCH_TX
printf
(
"[PHY] PUCCH2x: n2_pucch %d
\n
"
,
n2_pucch
);
#endif
N_UL_symb
=
(
fp
->
Ncp
==
0
)
?
7
:
6
;
data_ind
=
0
;
zptr
=
z
;
for
(
ns
=
(
subframe
<<
1
),
u
=
u0
,
v
=
v0
;
ns
<
(
2
+
(
subframe
<<
1
));
ns
++
,
u
=
u1
,
v
=
v1
)
{
if
((
ns
&
1
)
==
0
)
nprime
=
(
n2_pucch
<
12
*
NRB2
)
?
n2_pucch
%
12
:
(
n2_pucch
+
Ncs1
+
1
)
%
12
;
else
nprime
=
(
n2_pucch
<
12
*
NRB2
)
?
((
12
*
(
nprime
+
1
))
%
13
)
-
1
:
(
10
-
n2_pucch
)
%
12
;
nprime
=
(
n2_pucch
<
12
*
NRB2
)
?
n2_pucch
%
12
:
(
n2_pucch
+
Ncs1
+
1
)
%
12
;
else
{
nprime
=
(
n2_pucch
<
12
*
NRB2
)
?
((
12
*
(
nprime
+
1
))
%
13
)
-
1
:
(
10
-
n2_pucch
)
%
12
;
}
//loop over symbols in slot
for
(
l
=
0
;
l
<
N_UL_symb
;
l
++
)
{
// Compute n_cs (36.211 p. 18)
n_cs
=
(
ncs_cell
[
ns
][
l
]
+
nprime
)
%
12
;
alpha_ind
=
n_cs
;
data_ind
=
0
;
alpha_ind
=
0
;
for
(
n
=
0
;
n
<
12
;
n
++
)
{
// this is r_uv^alpha(n)
ref_re
=
(
int16_t
)(((
int32_t
)
alpha_re
[
alpha_ind
]
*
ul_ref_sigs
[
u
][
v
][
0
][
n
<<
1
]
-
(
int32_t
)
alpha_im
[
alpha_ind
]
*
ul_ref_sigs
[
u
][
v
][
0
][
1
+
(
n
<<
1
)])
>>
15
);
ref_im
=
(
int16_t
)(((
int32_t
)
alpha_re
[
alpha_ind
]
*
ul_ref_sigs
[
u
][
v
][
0
][
1
+
(
n
<<
1
)]
+
(
int32_t
)
alpha_im
[
alpha_ind
]
*
ul_ref_sigs
[
u
][
v
][
0
][
n
<<
1
])
>>
15
);
if
((
l
<
2
)
||
(
l
>=
(
N_UL_symb
-
2
)))
{
//these are PUCCH data symbols
((
int16_t
*
)
&
zptr
[
n
])[
0
]
=
((
int32_t
)
d
[
data_ind
]
*
ref_re
-
(
int32_t
)
d
[
data_ind
+
1
]
*
ref_im
)
>>
15
;
((
int16_t
*
)
&
zptr
[
n
])[
1
]
=
((
int32_t
)
d
[
data_ind
]
*
ref_im
+
(
int32_t
)
d
[
data_ind
+
1
]
*
ref_re
)
>>
15
;
}
else
{
((
int16_t
*
)
&
zptr
[
n
])[
0
]
=
ref_re
;
((
int16_t
*
)
&
zptr
[
n
])[
1
]
=
ref_im
;
}
// this is r_uv^alpha(n)
ref_re
=
(
int16_t
)(((
int32_t
)
alpha_re
[
alpha_ind
]
*
ul_ref_sigs
[
u
][
v
][
0
][
n
<<
1
]
-
(
int32_t
)
alpha_im
[
alpha_ind
]
*
ul_ref_sigs
[
u
][
v
][
0
][
1
+
(
n
<<
1
)])
>>
15
);
ref_im
=
(
int16_t
)(((
int32_t
)
alpha_re
[
alpha_ind
]
*
ul_ref_sigs
[
u
][
v
][
0
][
1
+
(
n
<<
1
)]
+
(
int32_t
)
alpha_im
[
alpha_ind
]
*
ul_ref_sigs
[
u
][
v
][
0
][
n
<<
1
])
>>
15
);
if
((
l
!=
1
)
&&
(
l
!=
5
))
{
//these are PUCCH data symbols
((
int16_t
*
)
&
zptr
[
n
])[
0
]
=
((
int32_t
)
d
[
data_ind
]
*
ref_re
-
(
int32_t
)
d
[
data_ind
+
1
]
*
ref_im
)
>>
15
;
((
int16_t
*
)
&
zptr
[
n
])[
1
]
=
((
int32_t
)
d
[
data_ind
]
*
ref_im
+
(
int32_t
)
d
[
data_ind
+
1
]
*
ref_re
)
>>
15
;
//LOG_I(PHY,"slot %d ofdm# %d ==> d[%d,%d] \n",ns,l,data_ind,n);
}
else
{
((
int16_t
*
)
&
zptr
[
n
])[
0
]
=
((
int32_t
)
amp
*
ref_re
>>
15
);
((
int16_t
*
)
&
zptr
[
n
])[
1
]
=
((
int32_t
)
amp
*
ref_im
>>
15
);
//LOG_I(PHY,"slot %d ofdm# %d ==> dmrs[%d] \n",ns,l,n);
}
alpha_ind
=
(
alpha_ind
+
n_cs
)
%
12
;
}
// n
if
((
l
<
2
)
||
(
l
>=
(
N_UL_symb
-
2
)))
//these are PUCCH data symbols so increment data index
data_ind
+=
2
;
zptr
+=
12
;
if
((
l
!=
1
)
&&
(
l
!=
5
))
//these are PUCCH data symbols so increment data index
data_ind
+=
2
;
}
// l
}
//ns
m
=
n2_pucch
/
12
;
#ifdef DEBUG_PUCCH_TX
printf
(
"[PHY] PUCCH: m %d
\n
"
,
m
);
LOG_D
(
PHY
,
"[PHY] PUCCH: n2_pucch %d m %d
\n
"
,
n2_pucch
,
m
);
#endif
nsymb
=
N_UL_symb
<<
1
;
nsymb_slot0
=
((
fp
->
Ncp
==
0
)
?
7
:
6
);
nsymb_pertti
=
nsymb_slot0
<<
1
;
//nsymb = nsymb_slot0<<1;
//for (j=0,l=0;l<(nsymb-1);l++) {
for
(
j
=
0
,
l
=
0
;
l
<
(
nsymb
);
l
++
)
{
if
((
l
<
(
nsymb
>>
1
))
&&
((
m
&
1
)
==
0
))
for
(
j
=
0
,
l
=
0
;
l
<
(
nsymb_pertti
);
l
++
)
{
if
((
l
<
nsymb_slot0
)
&&
((
m
&
1
)
==
0
))
re_offset
=
(
m
*
6
)
+
fp
->
first_carrier_offset
;
else
if
((
l
<
(
nsymb
>>
1
)
)
&&
((
m
&
1
)
==
1
))
else
if
((
l
<
nsymb_slot0
)
&&
((
m
&
1
)
==
1
))
re_offset
=
fp
->
first_carrier_offset
+
(
fp
->
N_RB_DL
-
(
m
>>
1
)
-
1
)
*
12
;
else
if
((
m
&
1
)
==
0
)
re_offset
=
fp
->
first_carrier_offset
+
(
fp
->
N_RB_DL
-
(
m
>>
1
)
-
1
)
*
12
;
...
...
@@ -614,23 +622,33 @@ void generate_pucch2x(int32_t **txdataF,
if
(
re_offset
>
fp
->
ofdm_symbol_size
)
re_offset
-=
(
fp
->
ofdm_symbol_size
);
symbol_offset
=
(
unsigned
int
)
fp
->
ofdm_symbol_size
*
(
l
+
(
subframe
*
nsymb
));
symbol_offset
=
(
unsigned
int
)
fp
->
ofdm_symbol_size
*
(
l
+
(
subframe
*
nsymb_pertti
));
txptr
=
&
txdataF
[
0
][
symbol_offset
];
//LOG_I(PHY,"ofdmSymb %d/%d, firstCarrierOffset %d, symbolOffset[sfn %d] %d, reOffset %d, &txptr: %x \n", l, nsymb, fp->first_carrier_offset, subframe, symbol_offset, re_offset, &txptr[0]);
for
(
i
=
0
;
i
<
12
;
i
++
,
j
++
)
{
txptr
[
re_offset
++
]
=
z
[
j
];
txptr
[
re_offset
]
=
z
[
j
];
re_offset
++
;
if
(
re_offset
==
fp
->
ofdm_symbol_size
)
re_offset
=
0
;
re_offset
-=
(
fp
->
ofdm_symbol_size
)
;
#ifdef DEBUG_PUCCH_TX
printf
(
"[PHY] PUCCH subframe %d (%d,%d,%d,%d) => %d,%d
\n
"
,
subframe
,
l
,
i
,
re_offset
-
1
,
m
,((
int16_t
*
)
&
z
[
j
])[
0
],((
int16_t
*
)
&
z
[
j
])[
1
]);
LOG_D
(
PHY
,
"[PHY] PUCCH subframe %d (%d,%d,%d,%d) => %d,%d
\n
"
,
subframe
,
l
,
i
,
re_offset
-
1
,
m
,((
int16_t
*
)
&
z
[
j
])[
0
],((
int16_t
*
)
&
z
[
j
])[
1
]);
#endif
}
}
}
//#define Amax 13
//void init_pucch2x_rx() {};
uint32_t
rx_pucch
(
PHY_VARS_eNB
*
eNB
,
PUCCH_FMT_t
fmt
,
uint8_t
UE_id
,
...
...
openair1/PHY/LTE_TRANSPORT/uci_tools.c
View file @
bcd98552
...
...
@@ -836,3 +836,5 @@ void print_CQI(void *o,UCI_format_t uci_format,unsigned char eNB_id,int N_RB_DL)
}
openair1/PHY/impl_defs_lte.h
View file @
bcd98552
...
...
@@ -429,16 +429,20 @@ typedef struct {
/// CQI-ReportPeriodic
typedef
struct
{
/// Parameter: \f$n^{(2)}_\text{PUCCH}\f$, see TS 36.213 (7.2). \vr{[0..1185]}
u
int16_t
cqi_PUCCH_ResourceIndex
;
/// Parameter: \f$n^{(2)}_\text{PUCCH}\f$, see TS 36.213 (7.2). \vr{[0..1185]}
, -1 indicates inactivity
int16_t
cqi_PUCCH_ResourceIndex
;
/// Parameter: CQI/PMI Periodicity and Offset Configuration Index \f$I_\text{CQI/PMI}\f$, see TS 36.213 (tables 7.2.2-1A and 7.2.2-1C). \vr{[0..1023]}
u
int16_t
cqi_PMI_ConfigIndex
;
int16_t
cqi_PMI_ConfigIndex
;
/// Parameter: K, see 36.213 (4.2.2). \vr{[1..4]}
uint8_t
K
;
/// Parameter: RI Config Index \f$I_\text{RI}\f$, see TS 36.213 (7.2.2-1B). \vr{[0..1023]}
u
int16_t
ri_ConfigIndex
;
/// Parameter: RI Config Index \f$I_\text{RI}\f$, see TS 36.213 (7.2.2-1B). \vr{[0..1023]}
, -1 indicates inactivity
int16_t
ri_ConfigIndex
;
/// Parameter: Simultaneous-AN-and-CQI, see TS 36.213 (10.1). \vr{[0..1]} 1 indicates that simultaneous transmission of ACK/NACK and CQI is allowed.
uint8_t
simultaneousAckNackAndCQI
;
/// parameter computed from Tables 7.2.2-1A and 7.2.2-1C
uint16_t
Npd
;
/// parameter computed from Tables 7.2.2-1A and 7.2.2-1C
uint16_t
N_OFFSET_CQI
;
}
CQI_REPORTPERIODIC
;
/// Enumeration for parameter reporting mode \ref CQI_REPORT_CONFIG::cqi_ReportModeAperiodic.
...
...
openair1/SCHED/defs.h
View file @
bcd98552
...
...
@@ -446,6 +446,8 @@ void pusch_power_cntl(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_
*/
void
srs_power_cntl
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
*
pnb_rb_srs
,
uint8_t
abstraction_flag
);
void
get_cqipmiri_params
(
PHY_VARS_UE
*
ue
,
uint8_t
eNB_id
);
int8_t
get_PHR
(
uint8_t
Mod_id
,
uint8_t
CC_id
,
uint8_t
eNB_index
);
#ifdef LOCALIZATION
...
...
@@ -461,6 +463,8 @@ double aggregate_eNB_UE_localization_stats(PHY_VARS_eNB *phy_vars_eNB, int8_t UE
#endif
LTE_eNB_UE_stats
*
get_UE_stats
(
uint8_t
Mod_id
,
uint8_t
CC_id
,
uint16_t
rnti
);
LTE_DL_FRAME_PARMS
*
get_lte_frame_parms
(
module_id_t
Mod_id
,
uint8_t
CC_id
);
MU_MIMO_mode
*
get_mu_mimo_mode
(
module_id_t
Mod_id
,
uint8_t
CC_id
,
rnti_t
rnti
);
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
bcd98552
This diff is collapsed.
Click to expand it.
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
bcd98552
...
...
@@ -1006,7 +1006,7 @@ void dump_CCE_table(int *CCE_table,const int nCCE,const unsigned short rnti,cons
for
(
i
=
0
;
i
<
nCCE
;
i
++
)
{
printf
(
"%1d."
,
CCE_table
[
i
]);
if
((
i
&
7
)
==
7
)
printf
(
"
\n
CCE %d: "
);
printf
(
"
\n
CCE %d: "
,
i
);
}
Yk
=
(
unsigned
int
)
rnti
;
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg.c
View file @
bcd98552
...
...
@@ -2663,6 +2663,21 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
// UE_EUTRA_Capability->measParameters.bandListEUTRA.list.count = 0; // no measurements on other bands
// UE_EUTRA_Capability->featureGroupIndicators // null
// featureGroup is mandatory for CMW tests
// featureGroup is filled only for usim-test mode
BIT_STRING_t
*
bit_string
;
uint32_t
featrG
;
bit_string
=
CALLOC
(
1
,
sizeof
(
*
bit_string
));
featrG
=
0x04000800
;
if
(
usim_test
==
0
)
{
bit_string
->
buf
=
&
featrG
;
bit_string
->
size
=
4
;
bit_string
->
bits_unused
=
0
;
UE_EUTRA_Capability
->
featureGroupIndicators
=
bit_string
;
}
// UE_EUTRA_Capability->interRAT_Parameters // null
}
else
{
...
...
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