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
c5a8dbfe
Commit
c5a8dbfe
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
f55c4e46
04acbd4d
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 @
c5a8dbfe
...
@@ -762,7 +762,8 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
...
@@ -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_received_last
[
eNB_id
]
=
0
;
phy_vars_ue
->
dlsch_fer
[
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
)
{
if
(
physicalConfigDedicated
)
{
LOG_D
(
PHY
,
"[UE %d] Received physicalConfigDedicated from eNB %d
\n
"
,
Mod_id
,
eNB_id
);
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,
...
@@ -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
#ifdef CBA
if
(
physicalConfigDedicated
->
pusch_CBAConfigDedicated_vlola
)
{
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,
...
@@ -910,6 +936,9 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
return
;
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
)
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 @
c5a8dbfe
...
@@ -1445,6 +1445,9 @@ int32_t generate_ue_ulsch_params_from_rar(PHY_VARS_UE *phy_vars_ue,
...
@@ -1445,6 +1445,9 @@ int32_t generate_ue_ulsch_params_from_rar(PHY_VARS_UE *phy_vars_ue,
uint8_t
eNB_id
);
uint8_t
eNB_id
);
double
sinr_eff_cqi_calc
(
PHY_VARS_UE
*
phy_vars_ue
,
double
sinr_eff_cqi_calc
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
);
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
,
int
generate_eNB_ulsch_params_from_dci
(
PHY_VARS_eNB
*
PHY_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
eNB_rxtx_proc_t
*
proc
,
void
*
dci_pdu
,
void
*
dci_pdu
,
...
@@ -1712,6 +1715,20 @@ void generate_pucch1x(int32_t **txdataF,
...
@@ -1712,6 +1715,20 @@ void generate_pucch1x(int32_t **txdataF,
int16_t
amp
,
int16_t
amp
,
uint8_t
subframe
);
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
,
void
generate_pucch_emul
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
UE_rxtx_proc_t
*
proc
,
PUCCH_FMT_t
format
,
PUCCH_FMT_t
format
,
...
...
openair1/PHY/LTE_TRANSPORT/pucch.c
View file @
c5a8dbfe
...
@@ -442,7 +442,7 @@ inline void pucch2x_scrambling(LTE_DL_FRAME_PARMS *fp,int subframe,uint16_t rnti
...
@@ -442,7 +442,7 @@ inline void pucch2x_scrambling(LTE_DL_FRAME_PARMS *fp,int subframe,uint16_t rnti
int
i
;
int
i
;
uint8_t
c
;
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
);
s
=
lte_gold_generic
(
&
x1
,
&
x2
,
1
);
for
(
i
=
0
;
i
<
19
;
i
++
)
{
for
(
i
=
0
;
i
<
19
;
i
++
)
{
c
=
(
uint8_t
)((
s
>>
i
)
&
1
);
c
=
(
uint8_t
)((
s
>>
i
)
&
1
);
...
@@ -456,22 +456,24 @@ inline void pucch2x_modulation(uint8_t *btilde,int16_t *d,int16_t amp) {
...
@@ -456,22 +456,24 @@ inline void pucch2x_modulation(uint8_t *btilde,int16_t *d,int16_t amp) {
int
i
;
int
i
;
for
(
i
=
0
;
i
<
20
;
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
,
uint32_t
pucch_code
[
13
]
=
{
0xFFFFF
,
0x5A933
,
0x10E5A
,
0x6339C
,
0x73CE0
,
0xFFC00
,
0xD8E64
,
0x4F6B0
,
0x218EC
,
0x1B746
,
0xFFC00
,
0xD8E64
,
0x4F6B0
,
0x218EC
,
0x1B746
,
0x0FFFF
,
0x33FFF
,
0x3FFFC
};
0x0FFFF
,
0x33FFF
,
0x3FFFC
};
void
generate_pucch2x
(
int32_t
**
txdataF
,
void
generate_pucch2x
(
int32_t
**
txdataF
,
LTE_DL_FRAME_PARMS
*
fp
,
LTE_DL_FRAME_PARMS
*
fp
,
uint8_t
ncs_cell
[
20
][
7
],
uint8_t
ncs_cell
[
20
][
7
],
PUCCH_FMT_t
fmt
,
PUCCH_FMT_t
fmt
,
PUCCH_CONFIG_DEDICATED
*
pucch_config_dedicated
,
PUCCH_CONFIG_DEDICATED
*
pucch_config_dedicated
,
uint16_t
n2_pucch
,
uint16_t
n2_pucch
,
uint8_t
shortened_format
,
uint16_t
*
payload
,
uint32_t
*
payload
,
int
A
,
int
A
,
int
B2
,
int
B2
,
int16_t
amp
,
int16_t
amp
,
...
@@ -486,13 +488,14 @@ void generate_pucch2x(int32_t **txdataF,
...
@@ -486,13 +488,14 @@ void generate_pucch2x(int32_t **txdataF,
uint8_t
NRB2
=
fp
->
pucch_config_common
.
nRB_CQI
;
uint8_t
NRB2
=
fp
->
pucch_config_common
.
nRB_CQI
;
uint8_t
Ncs1
=
fp
->
pucch_config_common
.
nCS_AN
;
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
u0
=
fp
->
pucch_config_common
.
grouphop
[
subframe
<<
1
];
uint32_t
u1
=
(
fp
->
Nid_cell
+
fp
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
grouphop
[
1
+
(
subframe
<<
1
)])
%
30
;
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
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
v1
=
fp
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
seqhop
[
1
+
(
subframe
<<
1
)];
uint32_t
z
[
12
*
14
],
*
zptr
;
uint32_t
z
[
12
*
14
],
*
zptr
;
uint32_t
u
,
v
,
n
;
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
;
uint32_t
nprime
,
l
,
n_cs
;
int
alpha_ind
,
data_ind
;
int
alpha_ind
,
data_ind
;
int16_t
ref_re
,
ref_im
;
int16_t
ref_re
,
ref_im
;
...
@@ -509,7 +512,6 @@ void generate_pucch2x(int32_t **txdataF,
...
@@ -509,7 +512,6 @@ void generate_pucch2x(int32_t **txdataF,
return
;
return
;
}
}
// pucch2x_encoding
// pucch2x_encoding
for
(
i
=
0
;
i
<
A
;
i
++
)
for
(
i
=
0
;
i
<
A
;
i
++
)
if
((
*
payload
&
(
1
<<
i
))
>
0
)
if
((
*
payload
&
(
1
<<
i
))
>
0
)
...
@@ -545,66 +547,72 @@ void generate_pucch2x(int32_t **txdataF,
...
@@ -545,66 +547,72 @@ void generate_pucch2x(int32_t **txdataF,
}
}
}
}
zptr
=
z
;
#ifdef DEBUG_PUCCH_TX
#ifdef DEBUG_PUCCH_TX
printf
(
"[PHY] PUCCH2x: n2_pucch %d
\n
"
,
n2_pucch
);
printf
(
"[PHY] PUCCH2x: n2_pucch %d
\n
"
,
n2_pucch
);
#endif
#endif
N_UL_symb
=
(
fp
->
Ncp
==
0
)
?
7
:
6
;
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
)
{
for
(
ns
=
(
subframe
<<
1
),
u
=
u0
,
v
=
v0
;
ns
<
(
2
+
(
subframe
<<
1
));
ns
++
,
u
=
u1
,
v
=
v1
)
{
if
((
ns
&
1
)
==
0
)
if
((
ns
&
1
)
==
0
)
nprime
=
(
n2_pucch
<
12
*
NRB2
)
?
nprime
=
(
n2_pucch
<
12
*
NRB2
)
?
n2_pucch
%
12
:
n2_pucch
%
12
:
(
n2_pucch
+
Ncs1
+
1
)
%
12
;
(
n2_pucch
+
Ncs1
+
1
)
%
12
;
else
else
{
nprime
=
(
n2_pucch
<
12
*
NRB2
)
?
nprime
=
(
n2_pucch
<
12
*
NRB2
)
?
((
12
*
(
nprime
+
1
))
%
13
)
-
1
:
((
12
*
(
nprime
+
1
))
%
13
)
-
1
:
(
10
-
n2_pucch
)
%
12
;
(
10
-
n2_pucch
)
%
12
;
}
//loop over symbols in slot
//loop over symbols in slot
for
(
l
=
0
;
l
<
N_UL_symb
;
l
++
)
{
for
(
l
=
0
;
l
<
N_UL_symb
;
l
++
)
{
// Compute n_cs (36.211 p. 18)
// Compute n_cs (36.211 p. 18)
n_cs
=
(
ncs_cell
[
ns
][
l
]
+
nprime
)
%
12
;
n_cs
=
(
ncs_cell
[
ns
][
l
]
+
nprime
)
%
12
;
alpha_ind
=
n_cs
;
alpha_ind
=
0
;
data_ind
=
0
;
for
(
n
=
0
;
n
<
12
;
n
++
)
{
for
(
n
=
0
;
n
<
12
;
n
++
)
{
// this is r_uv^alpha(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_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
);
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
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
])[
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
;
((
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
{
else
{
((
int16_t
*
)
&
zptr
[
n
])[
0
]
=
ref_re
;
((
int16_t
*
)
&
zptr
[
n
])[
0
]
=
((
int32_t
)
amp
*
ref_re
>>
15
);
((
int16_t
*
)
&
zptr
[
n
])[
1
]
=
ref_im
;
((
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
}
// n
if
((
l
<
2
)
||
(
l
>=
(
N_UL_symb
-
2
)))
//these are PUCCH data symbols so increment data index
zptr
+=
12
;
data_ind
+=
2
;
if
((
l
!=
1
)
&&
(
l
!=
5
))
//these are PUCCH data symbols so increment data index
data_ind
+=
2
;
}
// l
}
// l
}
//ns
}
//ns
m
=
n2_pucch
/
12
;
m
=
n2_pucch
/
12
;
#ifdef DEBUG_PUCCH_TX
#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
#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-1);l++) {
for
(
j
=
0
,
l
=
0
;
l
<
(
nsymb
);
l
++
)
{
for
(
j
=
0
,
l
=
0
;
l
<
(
nsymb_pertti
);
l
++
)
{
if
((
l
<
(
nsymb
>>
1
))
&&
((
m
&
1
)
==
0
))
if
((
l
<
nsymb_slot0
)
&&
((
m
&
1
)
==
0
))
re_offset
=
(
m
*
6
)
+
fp
->
first_carrier_offset
;
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
;
re_offset
=
fp
->
first_carrier_offset
+
(
fp
->
N_RB_DL
-
(
m
>>
1
)
-
1
)
*
12
;
else
if
((
m
&
1
)
==
0
)
else
if
((
m
&
1
)
==
0
)
re_offset
=
fp
->
first_carrier_offset
+
(
fp
->
N_RB_DL
-
(
m
>>
1
)
-
1
)
*
12
;
re_offset
=
fp
->
first_carrier_offset
+
(
fp
->
N_RB_DL
-
(
m
>>
1
)
-
1
)
*
12
;
...
@@ -614,23 +622,33 @@ void generate_pucch2x(int32_t **txdataF,
...
@@ -614,23 +622,33 @@ void generate_pucch2x(int32_t **txdataF,
if
(
re_offset
>
fp
->
ofdm_symbol_size
)
if
(
re_offset
>
fp
->
ofdm_symbol_size
)
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
];
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
++
)
{
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
)
if
(
re_offset
==
fp
->
ofdm_symbol_size
)
re_offset
=
0
;
re_offset
-=
(
fp
->
ofdm_symbol_size
)
;
#ifdef DEBUG_PUCCH_TX
#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
#endif
}
}
}
}
}
}
//#define Amax 13
//void init_pucch2x_rx() {};
uint32_t
rx_pucch
(
PHY_VARS_eNB
*
eNB
,
uint32_t
rx_pucch
(
PHY_VARS_eNB
*
eNB
,
PUCCH_FMT_t
fmt
,
PUCCH_FMT_t
fmt
,
uint8_t
UE_id
,
uint8_t
UE_id
,
...
...
openair1/PHY/LTE_TRANSPORT/uci_tools.c
View file @
c5a8dbfe
...
@@ -836,3 +836,5 @@ void print_CQI(void *o,UCI_format_t uci_format,unsigned char eNB_id,int N_RB_DL)
...
@@ -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 @
c5a8dbfe
...
@@ -429,16 +429,20 @@ typedef struct {
...
@@ -429,16 +429,20 @@ typedef struct {
/// CQI-ReportPeriodic
/// CQI-ReportPeriodic
typedef
struct
{
typedef
struct
{
/// Parameter: \f$n^{(2)}_\text{PUCCH}\f$, see TS 36.213 (7.2). \vr{[0..1185]}
/// Parameter: \f$n^{(2)}_\text{PUCCH}\f$, see TS 36.213 (7.2). \vr{[0..1185]}
, -1 indicates inactivity
u
int16_t
cqi_PUCCH_ResourceIndex
;
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]}
/// 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]}
/// Parameter: K, see 36.213 (4.2.2). \vr{[1..4]}
uint8_t
K
;
uint8_t
K
;
/// Parameter: RI Config Index \f$I_\text{RI}\f$, see TS 36.213 (7.2.2-1B). \vr{[0..1023]}
/// Parameter: RI Config Index \f$I_\text{RI}\f$, see TS 36.213 (7.2.2-1B). \vr{[0..1023]}
, -1 indicates inactivity
u
int16_t
ri_ConfigIndex
;
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.
/// 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
;
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
;
}
CQI_REPORTPERIODIC
;
/// Enumeration for parameter reporting mode \ref CQI_REPORT_CONFIG::cqi_ReportModeAperiodic.
/// Enumeration for parameter reporting mode \ref CQI_REPORT_CONFIG::cqi_ReportModeAperiodic.
...
...
openair1/SCHED/defs.h
View file @
c5a8dbfe
...
@@ -446,6 +446,8 @@ void pusch_power_cntl(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_
...
@@ -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
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
);
int8_t
get_PHR
(
uint8_t
Mod_id
,
uint8_t
CC_id
,
uint8_t
eNB_index
);
#ifdef LOCALIZATION
#ifdef LOCALIZATION
...
@@ -461,6 +463,8 @@ double aggregate_eNB_UE_localization_stats(PHY_VARS_eNB *phy_vars_eNB, int8_t UE
...
@@ -461,6 +463,8 @@ double aggregate_eNB_UE_localization_stats(PHY_VARS_eNB *phy_vars_eNB, int8_t UE
#endif
#endif
LTE_eNB_UE_stats
*
get_UE_stats
(
uint8_t
Mod_id
,
uint8_t
CC_id
,
uint16_t
rnti
);
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
);
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
);
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 @
c5a8dbfe
This diff is collapsed.
Click to expand it.
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
c5a8dbfe
...
@@ -1006,7 +1006,7 @@ void dump_CCE_table(int *CCE_table,const int nCCE,const unsigned short rnti,cons
...
@@ -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
++
)
{
for
(
i
=
0
;
i
<
nCCE
;
i
++
)
{
printf
(
"%1d."
,
CCE_table
[
i
]);
printf
(
"%1d."
,
CCE_table
[
i
]);
if
((
i
&
7
)
==
7
)
if
((
i
&
7
)
==
7
)
printf
(
"
\n
CCE %d: "
);
printf
(
"
\n
CCE %d: "
,
i
);
}
}
Yk
=
(
unsigned
int
)
rnti
;
Yk
=
(
unsigned
int
)
rnti
;
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg.c
View file @
c5a8dbfe
...
@@ -2663,6 +2663,21 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
...
@@ -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->measParameters.bandListEUTRA.list.count = 0; // no measurements on other bands
// UE_EUTRA_Capability->featureGroupIndicators // null
// 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
// UE_EUTRA_Capability->interRAT_Parameters // null
}
else
{
}
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