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
canghaiwuhen
OpenXG-RAN
Commits
6412b226
Commit
6412b226
authored
Feb 11, 2016
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
phy test for UE
parent
b60c3c95
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
174 additions
and
189 deletions
+174
-189
openair1/PHY/LTE_TRANSPORT/initial_sync.c
openair1/PHY/LTE_TRANSPORT/initial_sync.c
+11
-11
openair1/PHY/LTE_TRANSPORT/print_stats.c
openair1/PHY/LTE_TRANSPORT/print_stats.c
+4
-7
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+133
-168
openair2/LAYER2/MAC/l1_helpers.c
openair2/LAYER2/MAC/l1_helpers.c
+4
-3
targets/SIMU/USER/oaisim_functions.c
targets/SIMU/USER/oaisim_functions.c
+22
-0
No files found.
openair1/PHY/LTE_TRANSPORT/initial_sync.c
View file @
6412b226
...
...
@@ -530,20 +530,20 @@ int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode)
#endif
if
(
phy_vars_ue
->
UE_scan_carrier
==
0
)
{
#ifdef OPENAIR2
LOG_I
(
PHY
,
"[UE%d] Sending synch status to higher layers
\n
"
,
phy_vars_ue
->
Mod_id
);
//mac_resynch();
mac_xface
->
dl_phy_sync_success
(
phy_vars_ue
->
Mod_id
,
phy_vars_ue
->
frame_rx
,
0
,
1
);
//phy_vars_ue->lte_ue_common_vars.eNb_id);
#endif //OPENAIR2
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
LOG_I
(
PHY
,
"[UE%d] Sending synch status to higher layers
\n
"
,
phy_vars_ue
->
Mod_id
);
//mac_resynch();
mac_xface
->
dl_phy_sync_success
(
phy_vars_ue
->
Mod_id
,
phy_vars_ue
->
frame_rx
,
0
,
1
);
//phy_vars_ue->lte_ue_common_vars.eNb_id);
phy_vars_ue
->
UE_mode
[
0
]
=
PRACH
;
}
else
{
phy_vars_ue
->
UE_mode
[
0
]
=
PUSCH
;
}
generate_pcfich_reg_mapping
(
frame_parms
);
generate_phich_reg_mapping
(
frame_parms
);
// init_prach625(frame_parms);
#ifndef OPENAIR2
phy_vars_ue
->
UE_mode
[
0
]
=
PUSCH
;
#else
phy_vars_ue
->
UE_mode
[
0
]
=
PRACH
;
#endif
//phy_vars_ue->lte_ue_pbch_vars[0]->pdu_errors=0;
phy_vars_ue
->
lte_ue_pbch_vars
[
0
]
->
pdu_errors_conseq
=
0
;
//phy_vars_ue->lte_ue_pbch_vars[0]->pdu_errors_last=0;
...
...
openair1/PHY/LTE_TRANSPORT/print_stats.c
View file @
6412b226
...
...
@@ -107,10 +107,10 @@ int dump_ue_stats(PHY_VARS_UE *phy_vars_ue, char* buffer, int length, runmode_t
len
+=
sprintf
(
&
buffer
[
len
],
"[UE PROC] timing_advance = %d
\n
"
,
phy_vars_ue
->
timing_advance
);
if
(
phy_vars_ue
->
UE_mode
[
0
]
==
PUSCH
)
{
len
+=
sprintf
(
&
buffer
[
len
],
"[UE PROC] Po_PUSCH = %d dBm (PL %d dB, Po_NOMINAL_PUSCH %d dBm, PHR %d dB)
\n
"
,
PHY_vars_UE_g
[
0
][
0
]
->
ulsch_ue
[
0
]
->
Po_PUSCH
,
phy_vars_ue
->
ulsch_ue
[
0
]
->
Po_PUSCH
,
get_PL
(
phy_vars_ue
->
Mod_id
,
phy_vars_ue
->
CC_id
,
0
),
mac_xface
->
get_Po_NOMINAL_PUSCH
(
phy_vars_ue
->
Mod_id
,
0
)
,
PHY_vars_UE_g
[
0
][
0
]
->
ulsch_ue
[
0
]
->
PHR
);
phy_vars_ue
->
lte_frame_parms
.
ul_power_control_config_common
.
p0_NominalPUSCH
,
phy_vars_ue
->
ulsch_ue
[
0
]
->
PHR
);
len
+=
sprintf
(
&
buffer
[
len
],
"[UE PROC] Po_PUCCH = %d dBm (Po_NOMINAL_PUCCH %d dBm, g_pucch %d dB)
\n
"
,
get_PL
(
phy_vars_ue
->
Mod_id
,
phy_vars_ue
->
CC_id
,
0
)
+
phy_vars_ue
->
lte_frame_parms
.
ul_power_control_config_common
.
p0_NominalPUCCH
+
...
...
@@ -582,9 +582,7 @@ int dump_eNB_stats(PHY_VARS_eNB *phy_vars_eNB, char* buffer, int length)
len
+=
sprintf
(
&
buffer
[
len
],
"%4d "
,
phy_vars_eNB
->
PHY_measurements_eNB
[
eNB
].
n0_subband_power_tot_dBm
[
i
]);
if
((
i
>
0
)
&&
((
i
%
25
)
==
0
))
len
+=
sprintf
(
&
buffer
[
len
],
"
\n
"
,
phy_vars_eNB
->
PHY_measurements_eNB
[
eNB
].
n0_subband_power_tot_dBm
[
i
]);
len
+=
sprintf
(
&
buffer
[
len
],
"
\n
"
);
}
len
+=
sprintf
(
&
buffer
[
len
],
"
\n
"
);
len
+=
sprintf
(
&
buffer
[
len
],
"
\n
[eNB PROC] PERFORMANCE PARAMETERS
\n
"
);
...
...
@@ -644,7 +642,6 @@ int dump_eNB_stats(PHY_VARS_eNB *phy_vars_eNB, char* buffer, int length)
dB_fixed
(
phy_vars_eNB
->
eNB_UE_stats
[
UE_id
].
Po_PUCCH
/
phy_vars_eNB
->
lte_frame_parms
.
N_RB_UL
)
-
phy_vars_eNB
->
rx_total_gain_eNB_dB
,
phy_vars_eNB
->
lte_frame_parms
.
ul_power_control_config_common
.
p0_NominalPUCCH
,
dB_fixed
(
phy_vars_eNB
->
eNB_UE_stats
[
UE_id
].
Po_PUCCH1_below
/
phy_vars_eNB
->
lte_frame_parms
.
N_RB_UL
)
-
phy_vars_eNB
->
rx_total_gain_eNB_dB
,
dB_fixed
(
phy_vars_eNB
->
eNB_UE_stats
[
UE_id
].
Po_PUCCH1_above
/
phy_vars_eNB
->
lte_frame_parms
.
N_RB_UL
)
-
phy_vars_eNB
->
rx_total_gain_eNB_dB
,
PUCCH1_THRES
+
phy_vars_eNB
->
PHY_measurements_eNB
[
0
].
n0_power_tot_dBm
-
dB_fixed
(
phy_vars_eNB
->
lte_frame_parms
.
N_RB_UL
),
phy_vars_eNB
->
eNB_UE_stats
[
UE_id
].
sector
);
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
6412b226
...
...
@@ -59,20 +59,15 @@ extern int card;
#endif
#endif
//#define DEBUG_PHY_PROC
#define UE_TX_POWER (-10)
#define DEBUG_PHY_PROC
//#ifdef OPENAIR2
#ifndef PUCCH
#define PUCCH
#endif
//#endif
//#ifdef OPENAIR2
#include "LAYER2/MAC/extern.h"
#include "LAYER2/MAC/defs.h"
#include "UTIL/LOG/log.h"
//#endif
#ifdef EMOS
fifo_dump_emos_UE
emos_dump_UE
;
...
...
@@ -639,16 +634,12 @@ void phy_procedures_emos_UE_TX(uint8_t next_slot,uint8_t eNB_id) {
#endif
int
dummy_tx_buffer
[
3840
*
4
]
__attribute__
((
aligned
(
16
)));
#ifndef OPENAIR2
PRACH_RESOURCES_t
prach_resources_local
;
#endif
void
phy_procedures_UE_TX
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
runmode_t
mode
,
relaying_type_t
r_type
)
{
#ifndef OPENAIR2
int
i
;
#endif
uint16_t
first_rb
,
nb_rb
;
uint8_t
harq_pid
;
unsigned
int
input_buffer_length
;
...
...
@@ -721,8 +712,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra
subframe_tx
);
#ifdef OPENAIR2
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
if
((
phy_vars_ue
->
ulsch_ue_Msg3_active
[
eNB_id
]
==
1
)
&&
(
phy_vars_ue
->
ulsch_ue_Msg3_frame
[
eNB_id
]
==
frame_tx
)
&&
(
phy_vars_ue
->
ulsch_ue_Msg3_subframe
[
eNB_id
]
==
subframe_tx
))
{
// Initial Transmission of Msg3
...
...
@@ -753,8 +743,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra
Msg3_flag
=
0
;
}
#endif
}
if
(
phy_vars_ue
->
ulsch_ue
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
subframe_scheduling_flag
==
1
)
{
...
...
@@ -853,19 +842,17 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra
#endif
stop_meas
(
&
phy_vars_ue
->
ulsch_encoding_stats
);
#ifdef OPENAIR2
// signal MAC that Msg3 was sent
mac_xface
->
Msg3_transmitted
(
Mod_id
,
CC_id
,
frame_tx
,
eNB_id
);
#endif
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
// signal MAC that Msg3 was sent
mac_xface
->
Msg3_transmitted
(
Mod_id
,
CC_id
,
frame_tx
,
eNB_id
);
}
}
else
{
input_buffer_length
=
phy_vars_ue
->
ulsch_ue
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
TBS
/
8
;
#ifdef OPENAIR2
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
// LOG_D(PHY,"[UE %d] ULSCH : Searching for MAC SDUs\n",Mod_id);
if
(
phy_vars_ue
->
ulsch_ue
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
round
==
0
)
{
//if (phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->calibration_flag == 0) {
...
...
@@ -902,7 +889,8 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra
LOG_T
(
PHY
,
"
\n
"
);
#endif
#endif
#else //OPENAIR2
}
else
{
// the following lines were necessary for the calibration in CROWN
/*
if (phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->calibration_flag == 0) {
...
...
@@ -925,8 +913,8 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra
for (i=0;i<input_buffer_length;i++)
ulsch_input_buffer[i]= i;
*/
}
#endif //OPENAIR2
start_meas
(
&
phy_vars_ue
->
ulsch_encoding_stats
);
if
(
abstraction_flag
==
0
)
{
...
...
@@ -958,12 +946,13 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra
}
if
(
abstraction_flag
==
0
)
{
#ifdef OPENAIR2
pusch_power_cntl
(
phy_vars_ue
,
subframe_tx
,
eNB_id
,
1
,
abstraction_flag
);
phy_vars_ue
->
tx_power_dBm
=
phy_vars_ue
->
ulsch_ue
[
eNB_id
]
->
Po_PUSCH
;
#else
phy_vars_ue
->
tx_power_dBm
=
UE_TX_POWER
;
#endif
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
pusch_power_cntl
(
phy_vars_ue
,
subframe_tx
,
eNB_id
,
1
,
abstraction_flag
);
phy_vars_ue
->
tx_power_dBm
=
phy_vars_ue
->
ulsch_ue
[
eNB_id
]
->
Po_PUSCH
;
}
else
{
phy_vars_ue
->
tx_power_dBm
=
phy_vars_ue
->
tx_power_max_dBm
;
}
phy_vars_ue
->
tx_total_RE
=
nb_rb
*
12
;
#if defined(EXMIMO) || defined(OAI_USRP)
...
...
@@ -1020,17 +1009,19 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra
if
(
is_SR_TXOp
(
phy_vars_ue
,
eNB_id
,
subframe_tx
)
==
1
)
{
LOG_D
(
PHY
,
"[UE %d][SR %x] Frame %d subframe %d: got SR_TXOp, Checking for SR for PUSCH from MAC
\n
"
,
Mod_id
,
phy_vars_ue
->
lte_ue_pdcch_vars
[
eNB_id
]
->
crnti
,
frame_tx
,
subframe_tx
);
#ifdef OPENAIR2
SR_payload
=
mac_xface
->
ue_get_SR
(
Mod_id
,
CC_id
,
frame_tx
,
eNB_id
,
phy_vars_ue
->
lte_ue_pdcch_vars
[
eNB_id
]
->
crnti
,
subframe_tx
);
// subframe used for meas gap
#else
SR_payload
=
1
;
#endif
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
SR_payload
=
mac_xface
->
ue_get_SR
(
Mod_id
,
CC_id
,
frame_tx
,
eNB_id
,
phy_vars_ue
->
lte_ue_pdcch_vars
[
eNB_id
]
->
crnti
,
subframe_tx
);
// subframe used for meas gap
}
else
{
SR_payload
=
1
;
}
if
(
SR_payload
>
0
)
{
generate_ul_signal
=
1
;
LOG_D
(
PHY
,
"[UE %d][SR %x] Frame %d subframe %d got the SR for PUSCH is %d
\n
"
,
...
...
@@ -1038,8 +1029,9 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra
}
else
{
phy_vars_ue
->
sr
[
subframe_tx
]
=
0
;
}
}
else
}
else
{
SR_payload
=
0
;
}
if
(
get_ack
(
&
phy_vars_ue
->
lte_frame_parms
,
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
harq_ack
,
...
...
@@ -1054,12 +1046,13 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra
pucch_ack_payload
,
SR_payload
);
#ifdef OPENAIR2
Po_PUCCH
=
pucch_power_cntl
(
phy_vars_ue
,
subframe_tx
,
eNB_id
,
format
);
phy_vars_ue
->
tx_power_dBm
=
Po_PUCCH
;
#else
phy_vars_ue
->
tx_power_dBm
=
UE_TX_POWER
;
#endif
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
Po_PUCCH
=
pucch_power_cntl
(
phy_vars_ue
,
subframe_tx
,
eNB_id
,
format
);
}
else
{
Po_PUCCH
=
phy_vars_ue
->
tx_power_max_dBm
;
}
phy_vars_ue
->
tx_power_dBm
=
Po_PUCCH
;
phy_vars_ue
->
tx_total_RE
=
12
;
#if defined(EXMIMO) || defined(OAI_USRP)
...
...
@@ -1117,12 +1110,13 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra
}
}
else
if
(
SR_payload
==
1
)
{
// no ACK/NAK but SR is triggered by MAC
#ifdef OPENAIR2
Po_PUCCH
=
pucch_power_cntl
(
phy_vars_ue
,
subframe_tx
,
eNB_id
,
pucch_format1
);
phy_vars_ue
->
tx_power_dBm
=
Po_PUCCH
;
#else
phy_vars_ue
->
tx_power_dBm
=
UE_TX_POWER
;
#endif
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
Po_PUCCH
=
pucch_power_cntl
(
phy_vars_ue
,
subframe_tx
,
eNB_id
,
pucch_format1
);
}
else
{
Po_PUCCH
=
phy_vars_ue
->
tx_power_max_dBm
;
}
phy_vars_ue
->
tx_power_dBm
=
Po_PUCCH
;
phy_vars_ue
->
tx_total_RE
=
12
;
#if defined(EXMIMO) || defined(OAI_USRP)
...
...
@@ -1342,30 +1336,23 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra
// }// slot_tx is even
// else { // slot_tx is odd, do the PRACH here
#ifdef OPENAIR2
if
((
phy_vars_ue
->
UE_mode
[
eNB_id
]
==
PRACH
)
&&
(
phy_vars_ue
->
lte_frame_parms
.
prach_config_common
.
prach_Config_enabled
==
1
))
{
#else
if
(
1
)
{
#endif
// check if we have PRACH opportunity
if
(
is_prach_subframe
(
&
phy_vars_ue
->
lte_frame_parms
,
frame_tx
,
subframe_tx
))
{
phy_vars_ue
->
generate_prach
=
0
;
#ifdef OPENAIR2
// ask L2 for RACH transport
if
((
mode
!=
rx_calib_ue
)
&&
(
mode
!=
rx_calib_ue_med
)
&&
(
mode
!=
rx_calib_ue_byp
)
&&
(
mode
!=
no_L2_connect
)
)
{
phy_vars_ue
->
prach_resources
[
eNB_id
]
=
mac_xface
->
ue_get_rach
(
Mod_id
,
CC_id
,
frame_tx
,
eNB_id
,
subframe_tx
);
// LOG_I(PHY,"Got prach_resources for eNB %d address %d, RRCCommon %d\n",eNB_id,phy_vars_ue->prach_resources[eNB_id],UE_mac_inst[Mod_id].radioResourceConfigCommon);
}
#endif
if
(
phy_vars_ue
->
mac_enabled
==
1
){
// ask L2 for RACH transport
if
((
mode
!=
rx_calib_ue
)
&&
(
mode
!=
rx_calib_ue_med
)
&&
(
mode
!=
rx_calib_ue_byp
)
&&
(
mode
!=
no_L2_connect
)
)
{
phy_vars_ue
->
prach_resources
[
eNB_id
]
=
mac_xface
->
ue_get_rach
(
Mod_id
,
CC_id
,
frame_tx
,
eNB_id
,
subframe_tx
);
// LOG_I(PHY,"Got prach_resources for eNB %d address %d, RRCCommon %d\n",eNB_id,phy_vars_ue->prach_resources[eNB_id],UE_mac_inst[Mod_id].radioResourceConfigCommon);
}
}
if
(
phy_vars_ue
->
prach_resources
[
eNB_id
]
!=
NULL
)
{
...
...
@@ -1388,16 +1375,13 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra
phy_vars_ue
->
prach_resources
[
eNB_id
]
->
ra_TDD_map_index
,
phy_vars_ue
->
prach_resources
[
eNB_id
]
->
ra_RNTI
);
#ifdef OPENAIR2
if
(
mode
!=
calib_prach_tx
)
if
((
phy_vars_ue
->
mac_enabled
==
1
)
&&
(
mode
!=
calib_prach_tx
))
{
phy_vars_ue
->
tx_power_dBm
=
phy_vars_ue
->
prach_resources
[
eNB_id
]
->
ra_PREAMBLE_RECEIVED_TARGET_POWER
+
get_PL
(
Mod_id
,
CC_id
,
eNB_id
);
}
else
{
phy_vars_ue
->
tx_power_dBm
=
phy_vars_ue
->
tx_power_max_dBm
;
phy_vars_ue
->
prach_resources
[
eNB_id
]
->
ra_PreambleIndex
=
19
;
}
#else
phy_vars_ue
->
tx_power_dBm
=
UE_TX_POWER
;
#endif
phy_vars_ue
->
tx_total_RE
=
96
;
...
...
@@ -1428,12 +1412,12 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra
}
else
{
UE_transport_info
[
Mod_id
][
CC_id
].
cntl
.
prach_flag
=
1
;
UE_transport_info
[
Mod_id
][
CC_id
].
cntl
.
prach_id
=
phy_vars_ue
->
prach_resources
[
eNB_id
]
->
ra_PreambleIndex
;
#ifdef OPENAIR2
mac_xface
->
Msg1_transmitted
(
Mod_id
,
CC_id
,
frame_tx
,
eNB_id
);
#endif
if
(
phy_vars_ue
->
mac_enabled
==
1
){
mac_xface
->
Msg1_transmitted
(
Mod_id
,
CC_id
,
frame_tx
,
eNB_id
);
}
}
LOG_D
(
PHY
,
"[UE %d][RAPROC] Frame %d, subframe %d: Generating PRACH (eNB %d) preamble index %d for UL, TX power %d dBm (PL %d dB), l3msg
\n
"
,
...
...
@@ -1817,11 +1801,11 @@ void lte_ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
frame_tx
+=
((
int
)(
phy_vars_ue
->
lte_ue_pbch_vars
[
eNB_id
]
->
decoded_output
[
1
]
&
0xfc
));
frame_tx
+=
pbch_phase
;
#ifdef OPENAIR2
mac_xface
->
dl_phy_sync_success
(
phy_vars_ue
->
Mod_id
,
frame_rx
,
eNB_id
,
phy_vars_ue
->
UE_mode
[
eNB_id
]
==
NOT_SYNCHED
?
1
:
0
);
#endif
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
mac_xface
->
dl_phy_sync_success
(
phy_vars_ue
->
Mod_id
,
frame_rx
,
eNB_id
,
phy_vars_ue
->
UE_mode
[
eNB_id
]
==
NOT_SYNCHED
?
1
:
0
);
}
#ifdef EMOS
//emos_dump_UE.frame_tx = frame_tx;
//emos_dump_UE.mimo_mode = phy_vars_ue->lte_ue_pbch_vars[eNB_id]->decoded_output[1];
...
...
@@ -1901,16 +1885,15 @@ void lte_ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
phy_vars_ue
->
Mod_id
,
frame_rx
,
slot_rx
);
phy_vars_ue
->
lte_ue_pbch_vars
[
eNB_id
]
->
pdu_errors_conseq
++
;
phy_vars_ue
->
lte_ue_pbch_vars
[
eNB_id
]
->
pdu_errors
++
;
#ifdef OPENAIR2
mac_xface
->
out_of_sync_ind
(
phy_vars_ue
->
Mod_id
,
frame_rx
,
eNB_id
);
#else
if
(
phy_vars_ue
->
lte_ue_pbch_vars
[
eNB_id
]
->
pdu_errors_conseq
>=
100
)
{
LOG_E
(
PHY
,
"More that 100 consecutive PBCH errors! Exiting!
\n
"
);
mac_xface
->
macphy_exit
(
"More that 100 consecutive PBCH errors!"
);
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
mac_xface
->
out_of_sync_ind
(
phy_vars_ue
->
Mod_id
,
frame_rx
,
eNB_id
);
}
else
{
if
(
phy_vars_ue
->
lte_ue_pbch_vars
[
eNB_id
]
->
pdu_errors_conseq
>=
100
)
{
LOG_E
(
PHY
,
"More that 100 consecutive PBCH errors! Exiting!
\n
"
);
mac_xface
->
macphy_exit
(
"More that 100 consecutive PBCH errors!"
);
}
}
#endif
}
if
(
frame_rx
%
100
==
0
)
{
...
...
@@ -2411,9 +2394,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac
int
eNB_id_i
=
1
;
uint8_t
dual_stream_UE
=
0
;
#endif
#ifndef OPENAIR2
uint8_t
*
rar
;
#endif
int
pmch_flag
=
0
;
uint8_t
sync_area
=
255
;
int
pmch_mcs
=-
1
;
...
...
@@ -2422,9 +2403,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac
int
slot_rx
=
phy_vars_ue
->
slot_rx
;
int
subframe_rx
=
slot_rx
>>
1
;
int
subframe_prev
=
(
subframe_rx
+
9
)
%
10
;
#ifdef OPENAIR2
int
CC_id
=
phy_vars_ue
->
CC_id
;
#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX
,
VCD_FUNCTION_IN
);
...
...
@@ -2681,10 +2660,11 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
mcs
,
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
TBS
);
// if (abstraction_flag ==0 )
dump_dlsch
(
phy_vars_ue
,
eNB_id
,
subframe_prev
,
harq_pid
);
mac_xface
->
macphy_exit
(
""
);
//#endif
/*
if (abstraction_flag ==0 )
dump_dlsch(phy_vars_ue,eNB_id,subframe_prev,harq_pid);
mac_xface->macphy_exit("");
*/
}
else
{
LOG_D
(
PHY
,
"[UE %d][PDSCH %x/%d] Frame %d subframe %d (slot_rx %d): Received DLSCH (rv %d,mcs %d,TBS %d)
\n
"
,
phy_vars_ue
->
Mod_id
,
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
rnti
,
...
...
@@ -2703,14 +2683,14 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac
LOG_T
(
PHY
,
"
\n
"
);
#endif
#endif
#ifdef OPENAIR2
mac_xface
->
ue_send_sdu
(
phy_vars_ue
->
Mod_id
,
CC_id
,
frame_rx
,
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
harq_processes
[
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
current_harq_pid
]
->
b
,
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
harq_processes
[
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
current_harq_pid
]
->
TBS
>>
3
,
eNB_id
);
#endif
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
mac_xface
->
ue_send_sdu
(
phy_vars_ue
->
Mod_id
,
CC_id
,
frame_rx
,
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
harq_processes
[
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
current_harq_pid
]
->
b
,
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
harq_processes
[
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
current_harq_pid
]
->
TBS
>>
3
,
eNB_id
);
}
phy_vars_ue
->
total_TBS
[
eNB_id
]
=
phy_vars_ue
->
total_TBS
[
eNB_id
]
+
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
harq_processes
[
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
current_harq_pid
]
->
TBS
;
phy_vars_ue
->
total_received_bits
[
eNB_id
]
=
phy_vars_ue
->
total_TBS
[
eNB_id
]
+
...
...
@@ -2880,24 +2860,20 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac
phy_vars_ue
->
dlsch_ue_SI
[
eNB_id
]
->
harq_processes
[
0
]
->
rb_alloc_even
[
3
]);
#endif
#ifdef OPENAIR2
/*
printf("\n\n");
for (i=0;i<phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->TBS>>3;i++)
printf("%02x ",phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->b[i]);
printf("\n");
*/
mac_xface
->
ue_decode_si
(
phy_vars_ue
->
Mod_id
,
CC_id
,
frame_rx
,
eNB_id
,
phy_vars_ue
->
dlsch_ue_SI
[
eNB_id
]
->
harq_processes
[
0
]
->
b
,
phy_vars_ue
->
dlsch_ue_SI
[
eNB_id
]
->
harq_processes
[
0
]
->
TBS
>>
3
);
/*
if ((frame_rx % 160) < 10)
printf("sending SI to L2 in frame %d\n",frame_rx);
*/
#endif
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
/*
printf("\n\n");
for (i=0;i<phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->TBS>>3;i++)
printf("%02x ",phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->b[i]);
printf("\n");
*/
mac_xface
->
ue_decode_si
(
phy_vars_ue
->
Mod_id
,
CC_id
,
frame_rx
,
eNB_id
,
phy_vars_ue
->
dlsch_ue_SI
[
eNB_id
]
->
harq_processes
[
0
]
->
b
,
phy_vars_ue
->
dlsch_ue_SI
[
eNB_id
]
->
harq_processes
[
0
]
->
TBS
>>
3
);
}
}
}
...
...
@@ -3013,8 +2989,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac
subframe_prev
,
phy_vars_ue
->
UE_mode
[
eNB_id
]);
#endif
#ifdef OPENAIR2
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
if
((
phy_vars_ue
->
UE_mode
[
eNB_id
]
!=
PUSCH
)
&&
(
phy_vars_ue
->
prach_resources
[
eNB_id
]
->
Msg3
!=
NULL
))
{
LOG_D
(
PHY
,
"[UE %d][RAPROC] Frame %d subframe %d Invoking MAC for RAR (current preamble %d)
\n
"
,
phy_vars_ue
->
Mod_id
,
frame_rx
-
((
subframe_prev
==
9
)
?
1
:
0
),
...
...
@@ -3071,14 +3046,13 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac
phy_vars_ue
->
prach_resources
[
eNB_id
]
->
ra_PreambleIndex
);
}
}
// mode != PUSCH
#else //OPENAIR2
rar
=
phy_vars_ue
->
dlsch_ue_ra
[
eNB_id
]
->
harq_processes
[
0
]
->
b
+
1
;
timing_advance
=
((((
uint16_t
)(
rar
[
0
]
&
0x7f
))
<<
4
)
+
(
rar
[
1
]
>>
4
));
//timing_advance = phy_vars_ue->dlsch_ue_ra[eNB_id]->harq_processes[0]->b[0];
process_timing_advance_rar
(
phy_vars_ue
,
timing_advance
);
#endif
}
else
{
rar
=
phy_vars_ue
->
dlsch_ue_ra
[
eNB_id
]
->
harq_processes
[
0
]
->
b
+
1
;
timing_advance
=
((((
uint16_t
)(
rar
[
0
]
&
0x7f
))
<<
4
)
+
(
rar
[
1
]
>>
4
));
//timing_advance = phy_vars_ue->dlsch_ue_ra[eNB_id]->harq_processes[0]->b[0];
process_timing_advance_rar
(
phy_vars_ue
,
timing_advance
);
}
}
//ret <= MAX_ITERATIONS
/*
...
...
@@ -3630,24 +3604,21 @@ void phy_procedures_UE_lte(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstr
int
CC_id
=
0
;
#endif
int
frame_rx
=
phy_vars_ue
->
frame_rx
;
#ifdef OPENAIR2
int
frame_tx
=
phy_vars_ue
->
frame_tx
;
#endif
int
slot_rx
=
phy_vars_ue
->
slot_rx
;
int
slot_tx
=
phy_vars_ue
->
slot_tx
;
int
subframe_tx
=
slot_tx
>>
1
;
int
subframe_rx
=
slot_rx
>>
1
;
#undef DEBUG_PHY_PROC
#ifdef OPENAIR2
UE_L2_STATE_t
ret
;
#endif
#ifndef OPENAIR2
phy_vars_ue
->
UE_mode
[
eNB_id
]
=
PUSCH
;
phy_vars_ue
->
prach_resources
[
eNB_id
]
=
&
prach_resources_local
;
prach_resources_local
.
ra_RNTI
=
0xbeef
;
prach_resources_local
.
ra_PreambleIndex
=
0
;
#endif
if
(
phy_vars_ue
->
mac_enabled
==
0
)
{
phy_vars_ue
->
UE_mode
[
eNB_id
]
=
PUSCH
;
phy_vars_ue
->
prach_resources
[
eNB_id
]
=
&
prach_resources_local
;
prach_resources_local
.
ra_RNTI
=
0xbeef
;
prach_resources_local
.
ra_PreambleIndex
=
0
;
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_LTE
,
1
);
...
...
@@ -3846,16 +3817,14 @@ void phy_procedures_UE_lte(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstr
phy_procedures_UE_RX
(
phy_vars_ue
,
eNB_id
,
abstraction_flag
,
mode
,
r_type
,
phy_vars_rn
);
}
#ifdef OPENAIR2
if
(
slot_rx
%
2
==
0
)
{
ret
=
mac_xface
->
ue_scheduler
(
phy_vars_ue
->
Mod_id
,
frame_tx
,
subframe_rx
,
subframe_select
(
&
phy_vars_ue
->
lte_frame_parms
,
subframe_tx
),
eNB_id
,
0
/*FIXME CC_id*/
);
if
(
phy_vars_ue
->
mac_enabled
==
1
)
{
if
(
slot_rx
%
2
==
0
)
{
ret
=
mac_xface
->
ue_scheduler
(
phy_vars_ue
->
Mod_id
,
frame_tx
,
subframe_rx
,
subframe_select
(
&
phy_vars_ue
->
lte_frame_parms
,
subframe_tx
),
eNB_id
,
0
/*FIXME CC_id*/
);
if
(
ret
==
CONNECTION_LOST
)
{
LOG_E
(
PHY
,
"[UE %d] Frame %d, subframe %d RRC Connection lost, returning to PRACH
\n
"
,
phy_vars_ue
->
Mod_id
,
...
...
@@ -3874,11 +3843,7 @@ void phy_procedures_UE_lte(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstr
phy_vars_ue
->
UE_mode
[
eNB_id
]
=
PRACH
;
}
}
#endif
// if (last_slot == 19)
// phy_vars_ue->frame++;
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_LTE
,
0
);
stop_meas
(
&
phy_vars_ue
->
phy_proc
);
...
...
openair2/LAYER2/MAC/l1_helpers.c
View file @
6412b226
...
...
@@ -47,8 +47,8 @@ int8_t get_Po_NOMINAL_PUSCH(module_id_t module_idP,uint8_t CC_id)
if
(
CC_id
>
0
)
{
LOG_E
(
MAC
,
"Transmission on secondary CCs is not supported yet
\n
"
);
mac_xface
->
macphy_exit
(
"MAC FATAL CC_id>0"
);
return
0
;
// not reached
//
mac_xface->macphy_exit("MAC FATAL CC_id>0");
return
0
;
}
if
(
UE_mac_inst
[
module_idP
].
radioResourceConfigCommon
)
{
...
...
@@ -56,7 +56,8 @@ int8_t get_Po_NOMINAL_PUSCH(module_id_t module_idP,uint8_t CC_id)
}
else
{
LOG_E
(
MAC
,
"[UE %d] CCid %d FATAL radioResourceConfigCommon is NULL !!!
\n
"
,
module_idP
,
CC_id
);
mac_xface
->
macphy_exit
(
"FATAL radioResourceConfigCommon is NULL"
);
//mac_xface->macphy_exit("FATAL radioResourceConfigCommon is NULL");
return
0
;
}
return
(
-
120
+
(
rach_ConfigCommon
->
powerRampingParameters
.
preambleInitialReceivedTargetPower
<<
1
)
+
...
...
targets/SIMU/USER/oaisim_functions.c
View file @
6412b226
...
...
@@ -136,6 +136,8 @@ int td = 0;
int
td_avg
=
0
;
int
sleep_time_us
=
0
;
int
phy_test
=
0
;
#ifdef OPENAIR2
// omv related info
//pid_t omv_pid;
...
...
@@ -206,6 +208,7 @@ void get_simulation_options(int argc, char *argv[])
LONG_OPTION_MALLOC_TRACE_ENABLED
,
LONG_OPTION_CBA_BACKOFF_TIMER
,
LONG_OPTION_PHYTEST
,
};
static
struct
option
long_options
[]
=
{
...
...
@@ -237,11 +240,17 @@ void get_simulation_options(int argc, char *argv[])
{
"cba-backoff"
,
required_argument
,
0
,
LONG_OPTION_CBA_BACKOFF_TIMER
},
{
"phy-test"
,
no_argument
,
NULL
,
LONG_OPTION_PHYTEST
},
{
NULL
,
0
,
NULL
,
0
}
};
while
((
option
=
getopt_long
(
argc
,
argv
,
"aA:b:B:c:C:D:d:eE:f:FGg:hHi:IJ:j:k:K:l:L:m:M:n:N:oO:p:P:qQ:rR:s:S:t:T:u:U:vV:w:W:x:X:y:Y:z:Z:"
,
long_options
,
NULL
))
!=
-
1
)
{
switch
(
option
)
{
case
LONG_OPTION_PHYTEST
:
phy_test
=
1
;
break
;
case
LONG_OPTION_ENB_CONF
:
if
(
optarg
)
{
free
(
conf_config_file_name
);
// prevent memory leak if option is used multiple times
...
...
@@ -976,6 +985,14 @@ void init_openair1(void)
}
}
for
(
eNB_id
=
0
;
eNB_id
<
NB_eNB_INST
;
eNB_id
++
)
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
if
(
phy_test
==
1
)
PHY_vars_eNB_g
[
eNB_id
][
CC_id
]
->
mac_enabled
=
0
;
else
PHY_vars_eNB_g
[
eNB_id
][
CC_id
]
->
mac_enabled
=
1
;
}
// init_ue_status();
for
(
UE_id
=
0
;
UE_id
<
NB_UE_INST
;
UE_id
++
)
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
...
...
@@ -992,6 +1009,11 @@ void init_openair1(void)
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
UE_mode
[
0
]
=
PRACH
;
}
if
(
phy_test
==
1
)
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
mac_enabled
=
0
;
else
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
mac_enabled
=
1
;
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
lte_ue_pdcch_vars
[
0
]
->
crnti
=
0x1235
+
UE_id
;
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
current_dlsch_cqi
[
0
]
=
10
;
...
...
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