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
OpenXG
OpenXG UE
Commits
8892604d
Commit
8892604d
authored
Mar 14, 2017
by
Calisson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
WIP: adding srs channel estimation to eNB. estimation results yet to be checked.
parent
b836f7e5
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
92 additions
and
79 deletions
+92
-79
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
+19
-17
openair1/PHY/LTE_TRANSPORT/proto.h
openair1/PHY/LTE_TRANSPORT/proto.h
+5
-3
openair1/PHY/LTE_TRANSPORT/srs_modulation.c
openair1/PHY/LTE_TRANSPORT/srs_modulation.c
+19
-31
openair1/PHY/TOOLS/lte_phy_scope.c
openair1/PHY/TOOLS/lte_phy_scope.c
+8
-5
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+32
-20
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+7
-1
openair2/RRC/LITE/MESSAGES/asn1_msg.c
openair2/RRC/LITE/MESSAGES/asn1_msg.c
+1
-1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf
...PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf
+1
-1
No files found.
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
View file @
8892604d
...
...
@@ -667,28 +667,28 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB,
}
extern
uint16_t
transmission_offset_tdd
[
16
];
#define DEBUG_SRS
//
#define DEBUG_SRS
int32_t
lte_srs_channel_estimation
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
LTE_eNB_COMMON
*
common_vars
,
LTE_eNB_SRS
*
srs_vars
,
SOUNDINGRS_UL_CONFIG_DEDICATED
*
soundingrs_ul_config_dedicated
,
unsigned
char
sub
_frame_number
,
unsigned
char
sub
frame
,
unsigned
char
eNB_id
)
{
int
T_SFC
,
aa
;
int
aa
;
int
N_symb
,
symbol
;
uint8_t
nb_antennas_rx
=
frame_parms
->
nb_antenna
_ports_eNB
;
uint8_t
nb_antennas_rx
=
frame_parms
->
nb_antenna
s_rx
;
#ifdef DEBUG_SRS
char
fname
[
40
],
vname
[
40
];
#endif
uint8_t
Ssrs
=
frame_parms
->
soundingrs_ul_config_common
.
srs_SubframeConfig
;
//uint8_t Ssrs = frame_parms->soundingrs_ul_config_common.srs_SubframeConfig;
//uint8_t T_SFC = (Ssrs<=7 ? 5 : 10);
N_symb
=
2
*
7
-
frame_parms
->
Ncp
;
symbol
=
(
sub_frame_number
+
1
)
*
N_symb
-
1
;
//SRS is always in last symbol of subframe
T_SFC
=
(
Ssrs
<=
7
?
5
:
10
);
symbol
=
N_symb
-
1
;
//SRS is always in last symbol of subframe
/*
msg("SRS channel estimation eNB %d, subframs %d, %d %d %d %d %d\n",eNB_id,sub_frame_number,
...
...
@@ -699,19 +699,21 @@ int32_t lte_srs_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms,
SRS_parms->Ssrs);
*/
if
((
1
<<
(
sub_frame_number
%
T_SFC
))
&
transmission_offset_tdd
[
Ssrs
])
{
//
if ((1<<(sub_frame_number%T_SFC))&transmission_offset_tdd[Ssrs]) {
if
(
generate_srs_rx
(
frame_parms
,
soundingrs_ul_config_dedicated
,
srs_vars
->
srs
)
==-
1
)
{
msg
(
"lte_srs_channel_estimation: Error in generate_srs_rx
\n
"
);
if
(
generate_srs
(
frame_parms
,
soundingrs_ul_config_dedicated
,
&
srs_vars
->
srs
[
eNB_id
],
0x7FFF
,
subframe
)
==-
1
)
{
LOG_E
(
PHY
,
"lte_srs_channel_estimation: Error in generate_srs_rx
\n
"
);
return
(
-
1
);
}
for
(
aa
=
0
;
aa
<
nb_antennas_rx
;
aa
++
)
{
#ifdef DEBUG_SRS
msg
(
"SRS channel estimation eNB %d, subframs %d, aarx %d, %p, %p, %p
\n
"
,
eNB_id
,
sub_frame_number
,
aa
,
&
common_vars
->
rxdataF
[
eNB_id
][
aa
][
2
*
frame_parms
->
ofdm_symbol_size
*
symbol
],
&
common_vars
->
rxdataF
[
eNB_id
][
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
],
srs_vars
->
srs
,
srs_vars
->
srs_ch_estimates
[
eNB_id
][
aa
]);
#endif
...
...
@@ -719,14 +721,15 @@ int32_t lte_srs_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms,
//write_output("eNB_rxF.m","rxF",&common_vars->rxdataF[0][aa][2*frame_parms->ofdm_symbol_size*symbol],2*(frame_parms->ofdm_symbol_size),2,1);
//write_output("eNB_srs.m","srs_eNB",common_vars->srs,(frame_parms->ofdm_symbol_size),1,1);
mult_cpx_conj_vector
((
int16_t
*
)
&
common_vars
->
rxdataF
[
eNB_id
][
aa
][
2
*
frame_parms
->
ofdm_symbol_size
*
symbol
],
(
int16_t
*
)
srs_vars
->
srs
,
//memcpy(srs_vars->srs_ch_estimates[eNB_id][aa],&srs_vars->srs[eNB_id],frame_parms->ofdm_symbol_size*sizeof(int32_t));
//memcpy(srs_vars->srs_ch_estimates[eNB_id][aa],&common_vars->rxdataF[eNB_id][aa][frame_parms->ofdm_symbol_size*symbol],frame_parms->ofdm_symbol_size*sizeof(int32_t));
mult_cpx_conj_vector
((
int16_t
*
)
&
common_vars
->
rxdataF
[
eNB_id
][
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
],
(
int16_t
*
)
&
srs_vars
->
srs
[
eNB_id
],
(
int16_t
*
)
srs_vars
->
srs_ch_estimates
[
eNB_id
][
aa
],
frame_parms
->
ofdm_symbol_size
,
15
,
0
);
//msg("SRS channel estimation cmult out\n");
#ifdef USER_MODE
#ifdef DEBUG_SRS
sprintf
(
fname
,
"eNB_id%d_an%d_srs_ch_est.m"
,
eNB_id
,
aa
);
...
...
@@ -735,7 +738,6 @@ int32_t lte_srs_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms,
#endif
#endif
}
}
/*
else {
...
...
openair1/PHY/LTE_TRANSPORT/proto.h
View file @
8892604d
...
...
@@ -1538,9 +1538,11 @@ uint8_t SE2I_TBS(float SE,
@param soundingrs_ul_config_dedicated Dynamic configuration from RRC during Connection Establishment
@param txdataF pointer to the frequency domain TX signal
@returns 0 on success*/
int
generate_srs_rx
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
SOUNDINGRS_UL_CONFIG_DEDICATED
*
soundingrs_ul_config_dedicated
,
int
*
txdataF
);
int
generate_srs
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
SOUNDINGRS_UL_CONFIG_DEDICATED
*
soundingrs_ul_config_dedicated
,
int
*
txdataF
,
int16_t
amp
,
uint32_t
subframe
);
int32_t
generate_srs_tx_emul
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
subframe
);
...
...
openair1/PHY/LTE_TRANSPORT/srs_modulation.c
View file @
8892604d
...
...
@@ -120,17 +120,15 @@ int compareints (const void * a, const void * b)
return
(
*
(
unsigned
short
*
)
a
-
*
(
unsigned
short
*
)
b
);
}
int32_t
generate_srs_tx
(
PHY_VARS_UE
*
ue
,
uint8_t
eNB_id
,
int16_t
amp
,
uint32_t
subframe
)
#define DEBUG_SRS
int32_t
generate_srs
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
SOUNDINGRS_UL_CONFIG_DEDICATED
*
soundingrs_ul_config_dedicated
,
int32_t
*
txptr
,
int16_t
amp
,
uint32_t
subframe
)
{
LTE_DL_FRAME_PARMS
*
frame_parms
=&
ue
->
frame_parms
;
SOUNDINGRS_UL_CONFIG_DEDICATED
*
soundingrs_ul_config_dedicated
=&
ue
->
soundingrs_ul_config_dedicated
[
eNB_id
];
int32_t
**
txdataF
=
ue
->
common_vars
.
txdataF
;
uint16_t
msrsb
=
0
,
Nb
=
0
,
nb
,
b
,
msrs0
=
0
,
k
,
Msc_RS
,
Msc_RS_idx
,
carrier_pos
,
symbol_offset
;
uint16_t
msrsb
=
0
,
Nb
=
0
,
nb
,
b
,
msrs0
=
0
,
k
,
Msc_RS
,
Msc_RS_idx
,
carrier_pos
;
uint16_t
*
Msc_idx_ptr
;
int32_t
k0
;
//uint32_t subframe_offset;
...
...
@@ -178,7 +176,7 @@ int32_t generate_srs_tx(PHY_VARS_UE *ue,
}
if
(
k0
<
0
)
{
msg
(
"generate_srs: invalid parameter set msrs0=%d, msrsb=%d, Nb=%d => nb=%d, k0=%d
\n
"
,
msrs0
,
msrsb
,
Nb
,
nb
,
k0
);
LOG_E
(
PHY
,
"generate_srs: invalid parameter set msrs0=%d, msrsb=%d, Nb=%d => nb=%d, k0=%d
\n
"
,
msrs0
,
msrsb
,
Nb
,
nb
,
k0
);
return
(
-
1
);
}
...
...
@@ -188,7 +186,7 @@ int32_t generate_srs_tx(PHY_VARS_UE *ue,
if
(
Msc_idx_ptr
)
Msc_RS_idx
=
Msc_idx_ptr
-
dftsizes
;
else
{
msg
(
"generate_srs: index for Msc_RS=%d not found
\n
"
,
Msc_RS
);
LOG_E
(
PHY
,
"generate_srs: index for Msc_RS=%d not found
\n
"
,
Msc_RS
);
return
(
-
1
);
}
...
...
@@ -199,29 +197,20 @@ int32_t generate_srs_tx(PHY_VARS_UE *ue,
else
if
(
Msc_RS
==
144
)
Msc_RS_idx
=
9
;
else
{
msg
(
"generate_srs: index for Msc_RS=%d not implemented
\n
"
,
Msc_RS
);
LOG_E
(
PHY
,
"generate_srs: index for Msc_RS=%d not implemented
\n
"
,
Msc_RS
);
return
(
-
1
);
}
#endif
#ifdef DEBUG_SRS
msg
(
"generate_srs_tx: Msc_RS = %d, Msc_RS_idx = %d
\n
"
,
Msc_RS
,
Msc_RS_idx
);
LOG_I
(
PHY
,
"generate_srs_tx: Msc_RS = %d, Msc_RS_idx = %d, k0 = %d
\n
"
,
Msc_RS
,
Msc_RS_idx
,
k0
);
#endif
carrier_pos
=
(
frame_parms
->
first_carrier_offset
+
k0
);
if
(
carrier_pos
>
frame_parms
->
ofdm_symbol_size
)
{
carrier_pos
-=
frame_parms
->
ofdm_symbol_size
;
}
uint16_t
nsymb
=
(
frame_parms
->
Ncp
==
0
)
?
14
:
12
;
symbol_offset
=
(
int
)
frame_parms
->
ofdm_symbol_size
*
((
subframe
*
nsymb
)
+
(
nsymb
-
1
));
//msg("carrier_pos = %d\n",carrier_pos);
//subframe_offset = subframe*frame_parms->symbols_per_tti*frame_parms->ofdm_symbol_size;
//symbol_offset = subframe_offset+(frame_parms->symbols_per_tti-1)*frame_parms->ofdm_symbol_size;
int32_t
*
txptr
;
txptr
=
&
txdataF
[
0
][
symbol_offset
];
for
(
k
=
0
;
k
<
Msc_RS
;
k
++
)
{
int32_t
real
=
((
int32_t
)
amp
*
(
int32_t
)
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
k
<<
1
])
>>
15
;
...
...
@@ -245,6 +234,7 @@ int generate_srs_tx_emul(PHY_VARS_UE *phy_vars_ue,uint8_t subframe)
return
(
0
);
}
#if 0
int generate_srs_rx(LTE_DL_FRAME_PARMS *frame_parms,
SOUNDINGRS_UL_CONFIG_DEDICATED *soundingrs_ul_config_dedicated,
int *txdataF)
...
...
@@ -285,7 +275,7 @@ int generate_srs_rx(LTE_DL_FRAME_PARMS *frame_parms,
}
if (k0<0) {
msg
(
"Invalid parameter set msrs0=%d, msrsb=%d, Nb=%d => nb=%d, k0=%d
\n
"
,
msrs0
,
msrsb
,
Nb
,
nb
,
k0
);
LOG_E(PHY,
"Invalid parameter set msrs0=%d, msrsb=%d, Nb=%d => nb=%d, k0=%d\n",msrs0,msrsb,Nb,nb,k0);
return(-1);
}
...
...
@@ -295,7 +285,7 @@ int generate_srs_rx(LTE_DL_FRAME_PARMS *frame_parms,
if (Msc_idx_ptr)
Msc_RS_idx = Msc_idx_ptr - dftsizes;
else {
msg
(
"generate_srs: index for Msc_RS=%d not found
\n
"
,
Msc_RS
);
LOG_E(PHY,
"generate_srs: index for Msc_RS=%d not found\n",Msc_RS);
return(-1);
}
...
...
@@ -306,23 +296,21 @@ int generate_srs_rx(LTE_DL_FRAME_PARMS *frame_parms,
else if (Msc_RS==144)
Msc_RS_idx = 9;
else {
msg
(
"generate_srs: index for Msc_RS=%d not implemented
\n
"
,
Msc_RS
);
LOG_E(PHY,
"generate_srs: index for Msc_RS=%d not implemented\n",Msc_RS);
return(-1);
}
#endif
#ifdef DEBUG_SRS
msg
(
"generate_srs_rx: Msc_RS = %d, Msc_RS_idx = %d, k0=%d
\n
"
,
Msc_RS
,
Msc_RS_idx
,
k0
);
LOG_I
(
PHY
,
"generate_srs_rx: Msc_RS = %d, Msc_RS_idx = %d, k0=%d
\n
"
,
Msc_RS
,
Msc_RS_idx
,
k0
);
#endif
carrier_pos
=
(
frame_parms
->
first_carrier_offset
+
k0
)
%
frame_parms
->
ofdm_symbol_size
;
for
(
k
=
0
;
k
<
Msc_RS
;
k
++
)
{
((
short
*
)
txdataF
)[
carrier_pos
<<
2
]
=
ul_ref_sigs_rx
[
0
][
0
][
Msc_RS_idx
][
k
<<
2
];
((
short
*
)
txdataF
)[(
carrier_pos
<<
2
)
+
1
]
=
ul_ref_sigs_rx
[
0
][
0
][
Msc_RS_idx
][(
k
<<
2
)
+
1
];
((
short
*
)
txdataF
)[(
carrier_pos
<<
2
)
+
2
]
=
ul_ref_sigs_rx
[
0
][
0
][
Msc_RS_idx
][(
k
<<
2
)
+
2
];
((
short
*
)
txdataF
)[(
carrier_pos
<<
2
)
+
3
]
=
ul_ref_sigs_rx
[
0
][
0
][
Msc_RS_idx
][(
k
<<
2
)
+
3
];
((
short
*
)
txdataF
)[
carrier_pos
<<
1
]
=
ul_ref_sigs_rx
[
0
][
0
][
Msc_RS_idx
][
k
<<
1
];
((
short
*
)
txdataF
)[(
carrier_pos
<<
1
)
+
1
]
=
ul_ref_sigs_rx
[
0
][
0
][
Msc_RS_idx
][(
k
<<
1
)
+
1
];
carrier_pos
+=
2
;
if
(
carrier_pos
>=
frame_parms
->
ofdm_symbol_size
)
...
...
@@ -365,7 +353,7 @@ int generate_srs_rx(LTE_DL_FRAME_PARMS *frame_parms,
// write_output("srs_rx.m","srsrx",txdataF,1024,2,1);
return
(
0
);
}
#endif
#ifdef MAIN
main
()
...
...
openair1/PHY/TOOLS/lte_phy_scope.c
View file @
8892604d
...
...
@@ -84,7 +84,7 @@ FD_lte_phy_scope_enb *create_lte_phy_scope_enb( void )
fl_set_xyplot_ybounds
(
fdui
->
rxsig_t
,
10
,
70
);
// Time-domain channel response
fdui
->
chest_t
=
fl_add_xyplot
(
FL_NORMAL_XYPLOT
,
410
,
20
,
370
,
100
,
"
Channel Impulse
Response (samples, abs)"
);
fdui
->
chest_t
=
fl_add_xyplot
(
FL_NORMAL_XYPLOT
,
410
,
20
,
370
,
100
,
"
SRS Frequency
Response (samples, abs)"
);
fl_set_object_boxtype
(
fdui
->
chest_t
,
FL_EMBOSSED_BOX
);
fl_set_object_color
(
fdui
->
chest_t
,
FL_BLACK
,
FL_RED
);
fl_set_object_lcolor
(
fdui
->
chest_t
,
FL_WHITE
);
// Label color
...
...
@@ -196,7 +196,8 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form,
bit
=
malloc
(
coded_bits_per_codeword
*
sizeof
(
float
));
rxsig_t
=
(
int16_t
**
)
phy_vars_enb
->
common_vars
.
rxdata
[
eNB_id
];
chest_t
=
(
int16_t
**
)
phy_vars_enb
->
pusch_vars
[
UE_id
]
->
drs_ch_estimates_time
[
eNB_id
];
//chest_t = (int16_t**) phy_vars_enb->pusch_vars[UE_id]->drs_ch_estimates_time[eNB_id];
chest_t
=
(
int16_t
**
)
phy_vars_enb
->
srs_vars
[
UE_id
].
srs_ch_estimates
[
eNB_id
];
chest_f
=
(
int16_t
**
)
phy_vars_enb
->
pusch_vars
[
UE_id
]
->
drs_ch_estimates
[
eNB_id
];
pusch_llr
=
(
int16_t
*
)
phy_vars_enb
->
pusch_vars
[
UE_id
]
->
llr
;
pusch_comp
=
(
int16_t
*
)
phy_vars_enb
->
pusch_vars
[
UE_id
]
->
rxdataF_comp
[
eNB_id
][
0
];
...
...
@@ -232,8 +233,10 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form,
if
(
chest_t
[
0
]
!=
NULL
)
{
for
(
i
=
0
;
i
<
(
frame_parms
->
ofdm_symbol_size
);
i
++
)
{
i2
=
(
i
+
(
frame_parms
->
ofdm_symbol_size
>>
1
))
%
frame_parms
->
ofdm_symbol_size
;
time2
[
i
]
=
(
float
)(
i
-
(
frame_parms
->
ofdm_symbol_size
>>
1
));
//i2 = (i+(frame_parms->ofdm_symbol_size>>1))%frame_parms->ofdm_symbol_size;
i2
=
i
;
//time2[i] = (float)(i-(frame_parms->ofdm_symbol_size>>1));
time2
[
i
]
=
(
float
)
i
;
chest_t_abs
[
0
][
i
]
=
10
*
log10
((
float
)
(
1
+
chest_t
[
0
][
2
*
i2
]
*
chest_t
[
0
][
2
*
i2
]
+
chest_t
[
0
][
2
*
i2
+
1
]
*
chest_t
[
0
][
2
*
i2
+
1
]));
if
(
chest_t_abs
[
0
][
i
]
>
ymax
)
...
...
@@ -768,4 +771,4 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
}
free
(
chest_t_abs
);
}
\ No newline at end of file
}
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
8892604d
...
...
@@ -2087,7 +2087,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PRACH_RX
,
0
);
}
void
pucch_procedures
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
int
UE_id
,
int
harq_pid
)
void
pucch_procedures
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
int
UE_id
,
int
harq_pid
,
uint8_t
do_srs
)
{
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
uint8_t
SR_payload
=
0
,
*
pucch_payload
=
NULL
,
pucch_payload0
[
2
]
=
{
0
,
0
},
pucch_payload1
[
2
]
=
{
0
,
0
};
...
...
@@ -2099,10 +2099,6 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
PUCCH_FMT_t
format
;
const
int
subframe
=
proc
->
subframe_rx
;
const
int
frame
=
proc
->
frame_rx
;
uint16_t
srsPeriodicity
;
uint16_t
srsOffset
;
uint16_t
do_srs
=
0
;
uint16_t
is_srs_pos
=
0
;
if
((
eNB
->
dlsch
[
UE_id
][
0
])
&&
(
eNB
->
dlsch
[
UE_id
][
0
]
->
rnti
>
0
)
&&
...
...
@@ -2112,16 +2108,6 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
do_SR
=
is_SR_subframe
(
eNB
,
proc
,
UE_id
);
// do_SR = 0;
// check if there is SRS and we have to use shortened format
// TODO: check for exceptions in transmission of SRS together with ACK/NACK
is_srs_pos
=
is_srs_occasion_common
(
fp
,
pdcch_alloc2ul_frame
(
fp
,
frame
,
subframe
),
pdcch_alloc2ul_subframe
(
fp
,
subframe
));
if
(
is_srs_pos
&&
eNB
->
soundingrs_ul_config_dedicated
[
UE_id
].
srsConfigDedicatedSetup
)
{
compute_srs_pos
(
fp
->
frame_type
,
eNB
->
soundingrs_ul_config_dedicated
[
UE_id
].
srs_ConfigIndex
,
&
srsPeriodicity
,
&
srsOffset
);
if
((((
10
*
pdcch_alloc2ul_frame
(
fp
,
frame
,
subframe
)
+
pdcch_alloc2ul_subframe
(
fp
,
subframe
))
%
srsPeriodicity
)
==
srsOffset
))
{
do_srs
=
1
;
}
}
// Now ACK/NAK
// First check subframe_tx flag for earlier subframes
...
...
@@ -2896,6 +2882,11 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
const
int
frame
=
proc
->
frame_rx
;
int
offset
=
eNB
->
CC_id
;
//(proc == &eNB->proc.proc_rxtx[0]) ? 0 : 1;
uint16_t
srsPeriodicity
;
uint16_t
srsOffset
;
uint16_t
do_srs
=
0
;
uint16_t
is_srs_pos
=
0
;
T
(
T_ENB_PHY_UL_TICK
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
));
T
(
T_ENB_PHY_INPUT_SIGNAL
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
),
T_INT
(
0
),
...
...
@@ -2925,13 +2916,34 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
eNB
->
cba_last_reception
[
i
]
=
0
;
}
// Do PUCCH processing first
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
pucch_procedures
(
eNB
,
proc
,
i
,
harq_pid
);
}
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
// Do SRS processing
// check if there is SRS and we have to use shortened format
// TODO: check for exceptions in transmission of SRS together with ACK/NACK
is_srs_pos
=
is_srs_occasion_common
(
fp
,
pdcch_alloc2ul_frame
(
fp
,
frame
,
subframe
),
pdcch_alloc2ul_subframe
(
fp
,
subframe
));
if
(
is_srs_pos
&&
eNB
->
soundingrs_ul_config_dedicated
[
i
].
srsConfigDedicatedSetup
)
{
compute_srs_pos
(
fp
->
frame_type
,
eNB
->
soundingrs_ul_config_dedicated
[
i
].
srs_ConfigIndex
,
&
srsPeriodicity
,
&
srsOffset
);
if
((((
10
*
pdcch_alloc2ul_frame
(
fp
,
frame
,
subframe
)
+
pdcch_alloc2ul_subframe
(
fp
,
subframe
))
%
srsPeriodicity
)
==
srsOffset
))
{
do_srs
=
1
;
}
}
if
(
do_srs
==
1
)
{
if
(
lte_srs_channel_estimation
(
fp
,
&
eNB
->
common_vars
,
&
eNB
->
srs_vars
[
i
],
&
eNB
->
soundingrs_ul_config_dedicated
[
i
],
subframe
,
0
/*eNB_id*/
))
{
LOG_E
(
PHY
,
"problem processing SRS
\n
"
);
}
}
// Do PUCCH processing
pucch_procedures
(
eNB
,
proc
,
i
,
harq_pid
,
do_srs
);
// check for Msg3
if
(
eNB
->
mac_enabled
==
1
)
{
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
8892604d
...
...
@@ -1579,7 +1579,13 @@ void ue_srs_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8
nb_rb_srs
,
tx_amp
);
generate_srs_tx
(
ue
,
eNB_id
,
tx_amp
,
subframe_tx
);
uint16_t
nsymb
=
(
ue
->
frame_parms
.
Ncp
==
0
)
?
14
:
12
;
uint16_t
symbol_offset
=
(
int
)
ue
->
frame_parms
.
ofdm_symbol_size
*
((
subframe_tx
*
nsymb
)
+
(
nsymb
-
1
));
generate_srs
(
&
ue
->
frame_parms
,
&
ue
->
soundingrs_ul_config_dedicated
[
eNB_id
],
&
ue
->
common_vars
.
txdataF
[
eNB_id
][
symbol_offset
],
tx_amp
,
subframe_tx
);
}
}
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg.c
View file @
8892604d
...
...
@@ -1593,7 +1593,7 @@ do_RRCConnectionSetup(
SoundingRS_UL_ConfigDedicated__setup__srs_HoppingBandwidth_hbw0
;
physicalConfigDedicated2
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
freqDomainPosition
=
0
;
physicalConfigDedicated2
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
duration
=
1
;
physicalConfigDedicated2
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
srs_ConfigIndex
=
19
;
physicalConfigDedicated2
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
srs_ConfigIndex
=
2
;
physicalConfigDedicated2
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
transmissionComb
=
0
;
physicalConfigDedicated2
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
cyclicShift
=
SoundingRS_UL_ConfigDedicated__setup__cyclicShift_cs0
;
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf
View file @
8892604d
...
...
@@ -137,7 +137,7 @@ eNBs =
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"192.168.12.
26
"
;
mme_ip_address
= ( {
ipv4
=
"192.168.12.
70
"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
...
...
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