Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
openairinterface5G
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
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
dyyu
openairinterface5G
Commits
b6288566
Commit
b6288566
authored
Jul 01, 2016
by
knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updates in UE for new process scheduling
parent
3fd226f7
Changes
20
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
2360 additions
and
2815 deletions
+2360
-2815
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+6
-6
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
+2
-2
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
+11
-11
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+8
-7
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+1
-1
openair1/PHY/LTE_TRANSPORT/drs_modulation.c
openair1/PHY/LTE_TRANSPORT/drs_modulation.c
+2
-1
openair1/PHY/LTE_TRANSPORT/initial_sync.c
openair1/PHY/LTE_TRANSPORT/initial_sync.c
+14
-9
openair1/PHY/LTE_TRANSPORT/phich.c
openair1/PHY/LTE_TRANSPORT/phich.c
+9
-8
openair1/PHY/LTE_TRANSPORT/print_stats.c
openair1/PHY/LTE_TRANSPORT/print_stats.c
+3
-3
openair1/PHY/LTE_TRANSPORT/proto.h
openair1/PHY/LTE_TRANSPORT/proto.h
+12
-9
openair1/PHY/LTE_TRANSPORT/pucch.c
openair1/PHY/LTE_TRANSPORT/pucch.c
+6
-3
openair1/PHY/LTE_TRANSPORT/rar_tools.c
openair1/PHY/LTE_TRANSPORT/rar_tools.c
+4
-3
openair1/PHY/TOOLS/lte_phy_scope.c
openair1/PHY/TOOLS/lte_phy_scope.c
+1
-1
openair1/PHY/defs.h
openair1/PHY/defs.h
+63
-39
openair1/SCHED/defs.h
openair1/SCHED/defs.h
+18
-82
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+1909
-2346
openair1/SCHED/pucch_pc.c
openair1/SCHED/pucch_pc.c
+3
-3
openair1/SCHED/pusch_pc.c
openair1/SCHED/pusch_pc.c
+5
-5
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+1
-1
targets/RT/USER/lte-ue.c
targets/RT/USER/lte-ue.c
+282
-275
No files found.
openair1/PHY/INIT/lte_init.c
View file @
b6288566
...
...
@@ -259,7 +259,7 @@ void phy_config_sib2_ue(uint8_t Mod_id,int CC_id,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_UE_CONFIG_SIB2
,
VCD_FUNCTION_IN
);
LOG_I
(
PHY
,
"[UE%d]
Frame %d: Applying radioResourceConfigCommon from eNB%d
\n
"
,
Mod_id
,
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
->
frame_rx
,
CH_index
);
LOG_I
(
PHY
,
"[UE%d]
Applying radioResourceConfigCommon from eNB%d
\n
"
,
Mod_id
,
CH_index
);
frame_parms
->
prach_config_common
.
rootSequenceIndex
=
radioResourceConfigCommon
->
prach_Config
.
rootSequenceIndex
;
...
...
@@ -369,7 +369,7 @@ void phy_config_sib13_ue(uint8_t Mod_id,int CC_id,uint8_t CH_index,int mbsfn_Are
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
->
frame_parms
;
LOG_I
(
PHY
,
"[UE%d]
Frame %d: Applying MBSFN_Area_id %d for index %d
\n
"
,
Mod_id
,
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
->
frame_rx
,
mbsfn_AreaId_r9
,
mbsfn_Area_idx
);
LOG_I
(
PHY
,
"[UE%d]
Applying MBSFN_Area_id %d for index %d
\n
"
,
Mod_id
,
mbsfn_AreaId_r9
,
mbsfn_Area_idx
);
if
(
mbsfn_Area_idx
==
0
)
{
frame_parms
->
Nid_cell_mbsfn
=
(
uint16_t
)
mbsfn_AreaId_r9
;
...
...
@@ -517,8 +517,8 @@ void phy_config_afterHO_ue(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_id, Mobility
// uint8_t prach_fmt;
// int u;
LOG_I
(
PHY
,
"[UE%d]
Frame %d:
Handover triggered: Applying radioResourceConfigCommon from eNB %d
\n
"
,
Mod_id
,
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
->
frame_rx
,
eNB_id
);
LOG_I
(
PHY
,
"[UE%d] Handover triggered: Applying radioResourceConfigCommon from eNB %d
\n
"
,
Mod_id
,
eNB_id
);
frame_parms
->
prach_config_common
.
rootSequenceIndex
=
radioResourceConfigCommon
->
prach_Config
.
rootSequenceIndex
;
frame_parms
->
prach_config_common
.
prach_Config_enabled
=
1
;
...
...
@@ -752,7 +752,7 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t CH_index,
if
(
physicalConfigDedicated
)
{
LOG_D
(
PHY
,
"[UE %d]
Frame %d: Received physicalConfigDedicated from eNB %d
\n
"
,
Mod_id
,
phy_vars_ue
->
frame_rx
,
CH_index
);
LOG_D
(
PHY
,
"[UE %d]
Received physicalConfigDedicated from eNB %d
\n
"
,
Mod_id
,
CH_index
);
LOG_D
(
PHY
,
"------------------------------------------------------------------------
\n
"
);
if
(
physicalConfigDedicated
->
pdsch_ConfigDedicated
)
{
...
...
@@ -843,7 +843,7 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t CH_index,
#endif
}
else
{
LOG_D
(
PHY
,
"[PHY][UE %d]
Frame %d: Received NULL radioResourceConfigDedicated from eNB %d
\n
"
,
Mod_id
,
phy_vars_ue
->
frame_rx
,
CH_index
);
LOG_D
(
PHY
,
"[PHY][UE %d]
Received NULL radioResourceConfigDedicated from eNB %d
\n
"
,
Mod_id
,
CH_index
);
return
;
}
...
...
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
View file @
b6288566
...
...
@@ -51,7 +51,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
ncoef
=
32767
-
coef
;
#ifdef DEBUG_PHY
LOG_D
(
PHY
,
"frame %d
, slot %d: rx_offset (before) = %d
\n
"
,
ue
->
frame_rx
,
ue
->
slot
_rx
,
ue
->
rx_offset
);
LOG_D
(
PHY
,
"frame %d
: rx_offset (before) = %d
\n
"
,
ue
->
proc
.
proc_rxtx
[
0
].
frame
_rx
,
ue
->
rx_offset
);
#endif //DEBUG_PHY
...
...
@@ -95,7 +95,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
#ifdef DEBUG_PHY
LOG_D
(
PHY
,
"frame %d: rx_offset (after) = %d : max_pos = %d,max_pos_fil = %d (peak %d)
\n
"
,
ue
->
frame_rx
,
ue
->
rx_offset
,
max_pos
,
max_pos_fil
,
temp
);
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
,
ue
->
rx_offset
,
max_pos
,
max_pos_fil
,
temp
);
#endif //DEBUG_PHY
...
...
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
View file @
b6288566
...
...
@@ -77,7 +77,7 @@ int16_t get_PL(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_index)
RSoffset = 3;
*/
LOG_D
(
PHY
,
"get_PL : Frame %d : rsrp %f dBm/RE (%f), eNB power %d dBm/RE
\n
"
,
ue
->
frame_rx
,
LOG_D
(
PHY
,
"get_PL : Frame %d : rsrp %f dBm/RE (%f), eNB power %d dBm/RE
\n
"
,
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
,
(
1
.
0
*
dB_fixed_times10
(
ue
->
measurements
.
rsrp
[
eNB_index
])
-
(
10
.
0
*
ue
->
rx_total_gain_dB
))
/
10
.
0
,
10
*
log10
((
double
)
ue
->
measurements
.
rsrp
[
eNB_index
]),
ue
->
frame_parms
.
pdsch_config_common
.
referenceSignalPower
);
...
...
@@ -172,7 +172,7 @@ int8_t set_RSRQ_filtered(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_index,float rs
}
void
ue_rrc_measurements
(
PHY_VARS_UE
*
ue
,
uint8_t
s
lot
,
uint8_t
s
ubframe
,
uint8_t
abstraction_flag
)
{
...
...
@@ -192,7 +192,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
if
(
abstraction_flag
==
0
)
{
if
((
ue
->
frame_parms
.
frame_type
==
FDD
)
&&
((
s
lot
==
0
)
||
(
slot
==
10
)))
{
// FDD PSS/SSS, compute noise in DTX REs
((
s
ubframe
==
0
)
||
(
subframe
==
5
)))
{
// FDD PSS/SSS, compute noise in DTX REs
if
(
ue
->
frame_parms
.
Ncp
==
NORMAL
)
{
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
...
...
@@ -240,7 +240,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
}
}
else
if
((
ue
->
frame_parms
.
frame_type
==
TDD
)
&&
(
s
lot
==
1
))
{
// TDD SSS, compute noise in DTX REs
(
s
ubframe
==
0
))
{
// TDD SSS, compute noise in DTX REs
if
(
ue
->
frame_parms
.
Ncp
==
NORMAL
)
{
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
...
...
@@ -294,7 +294,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
for
(
l
=
0
,
nu
=
0
;
l
<=
(
4
-
ue
->
frame_parms
.
Ncp
);
l
+=
(
4
-
ue
->
frame_parms
.
Ncp
),
nu
=
3
)
{
k
=
(
nu
+
nushift
)
%
6
;
#ifdef DEBUG_MEAS
LOG_I
(
PHY
,
"[UE %d] Frame %d s
lot %d Doing ue_rrc_measurements rsrp/rssi (Nid_cell %d, nushift %d, eNB_offset %d, k %d, l %d)
\n
"
,
ue
->
Mod_id
,
ue
->
frame_rx
,
slot
,
Nid_cell
,
nushift
,
LOG_I
(
PHY
,
"[UE %d] Frame %d s
ubframe %d Doing ue_rrc_measurements rsrp/rssi (Nid_cell %d, nushift %d, eNB_offset %d, k %d, l %d)
\n
"
,
ue
->
Mod_id
,
ue
->
proc
.
proc_rxtx
[
subframe
&
1
].
frame_rx
,
subframe
,
Nid_cell
,
nushift
,
eNB_offset
,
k
,
l
);
#endif
...
...
@@ -376,15 +376,15 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
// if (slot == 0) {
if
(
eNB_offset
==
0
)
LOG_I
(
PHY
,
"[UE %d] Frame %d, s
lot
%d RRC Measurements => rssi %3.1f dBm (digital: %3.1f dB, gain %d), N0 %d dBm
\n
"
,
ue
->
Mod_id
,
ue
->
frame_rx
,
slot
,
10
*
log10
(
ue
->
measurements
.
rssi
)
-
ue
->
rx_total_gain_dB
,
LOG_I
(
PHY
,
"[UE %d] Frame %d, s
ubframe
%d RRC Measurements => rssi %3.1f dBm (digital: %3.1f dB, gain %d), N0 %d dBm
\n
"
,
ue
->
Mod_id
,
ue
->
proc
.
proc_rxtx
[
subframe
&
1
].
frame_rx
,
subframe
,
10
*
log10
(
ue
->
measurements
.
rssi
)
-
ue
->
rx_total_gain_dB
,
10
*
log10
(
ue
->
measurements
.
rssi
),
ue
->
rx_total_gain_dB
,
ue
->
measurements
.
n0_power_tot_dBm
);
LOG_I
(
PHY
,
"[UE %d] Frame %d, s
lot
%d RRC Measurements (idx %d, Cell id %d) => rsrp: %3.1f dBm/RE (%d), rsrq: %3.1f dB
\n
"
,
LOG_I
(
PHY
,
"[UE %d] Frame %d, s
ubframe
%d RRC Measurements (idx %d, Cell id %d) => rsrp: %3.1f dBm/RE (%d), rsrq: %3.1f dB
\n
"
,
ue
->
Mod_id
,
ue
->
frame_rx
,
slot
,
eNB_offset
,
ue
->
proc
.
proc_rxtx
[
subframe
&
1
].
frame_rx
,
subframe
,
eNB_offset
,
(
eNB_offset
>
0
)
?
ue
->
measurements
.
adj_cell_id
[
eNB_offset
-
1
]
:
ue
->
frame_parms
.
Nid_cell
,
10
*
log10
(
ue
->
measurements
.
rsrp
[
eNB_offset
])
-
ue
->
rx_total_gain_dB
,
ue
->
measurements
.
rsrp
[
eNB_offset
],
...
...
@@ -699,9 +699,9 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
}
void
lte_ue_measurements_emul
(
PHY_VARS_UE
*
ue
,
uint8_t
last_slot
,
uint8_t
eNB_id
)
void
lte_ue_measurements_emul
(
PHY_VARS_UE
*
ue
,
uint8_t
subframe
,
uint8_t
eNB_id
)
{
msg
(
"[PHY] EMUL UE lte_ue_measurements_emul
last slot %d, eNB_id %d
\n
"
,
last_slot
,
eNB_id
);
msg
(
"[PHY] EMUL UE lte_ue_measurements_emul
subframe %d, eNB_id %d
\n
"
,
subframe
,
eNB_id
);
}
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
b6288566
...
...
@@ -6236,6 +6236,7 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
uint8_t
subframe
,
DCI_format_t
dci_format
,
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
uint16_t
si_rnti
,
uint16_t
ra_rnti
,
uint16_t
p_rnti
,
...
...
@@ -6269,12 +6270,12 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
harq_pid
=
0
;
else
harq_pid
=
subframe2harq_pid
(
frame_parms
,
pdcch_alloc2ul_frame
(
frame_parms
,
ue
->
frame_rx
,
subframe
),
pdcch_alloc2ul_frame
(
frame_parms
,
proc
->
frame_rx
,
subframe
),
pdcch_alloc2ul_subframe
(
frame_parms
,
subframe
));
if
(
harq_pid
==
255
)
{
LOG_E
(
PHY
,
"frame %d, subframe %d, rnti %x, format %d: illegal harq_pid!
\n
"
,
ue
->
frame_rx
,
subframe
,
rnti
,
dci_format
);
proc
->
frame_rx
,
subframe
,
rnti
,
dci_format
);
return
(
-
1
);
}
...
...
@@ -6401,7 +6402,7 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
if
(
rballoc
>
RIV_max
)
{
LOG_E
(
PHY
,
"frame %d, subframe %d, rnti %x, format %d: FATAL ERROR: generate_ue_ulsch_params_from_dci, rb_alloc > RIV_max
\n
"
,
ue
->
frame_rx
,
subframe
,
rnti
,
dci_format
);
proc
->
frame_rx
,
subframe
,
rnti
,
dci_format
);
return
(
-
1
);
}
...
...
@@ -6416,13 +6417,13 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
if
(
ue
->
ul_power_control_dedicated
[
eNB_id
].
accumulationEnabled
==
1
)
{
LOG_D
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d: f_pusch (ACC) %d, adjusting by %d (TPC %d)
\n
"
,
ue
->
Mod_id
,
harq_pid
,
ue
->
frame_rx
,
subframe
,
ulsch
->
f_pusch
,
ue
->
Mod_id
,
harq_pid
,
proc
->
frame_rx
,
subframe
,
ulsch
->
f_pusch
,
delta_PUSCH_acc
[
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
TPC
],
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
TPC
);
ulsch
->
f_pusch
+=
delta_PUSCH_acc
[
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
TPC
];
}
else
{
LOG_D
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d: f_pusch (ABS) %d, adjusting to %d (TPC %d)
\n
"
,
ue
->
Mod_id
,
harq_pid
,
ue
->
frame_rx
,
subframe
,
ulsch
->
f_pusch
,
ue
->
Mod_id
,
harq_pid
,
proc
->
frame_rx
,
subframe
,
ulsch
->
f_pusch
,
delta_PUSCH_abs
[
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
TPC
],
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
TPC
);
ulsch
->
f_pusch
=
delta_PUSCH_abs
[
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
TPC
];
...
...
@@ -7044,7 +7045,7 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
}
LOG_D
(
PHY
,
"[UE %d][PUSCH %d] Frame %d, subframe %d : Programming PUSCH with n_DMRS2 %d (cshift %d), nb_rb %d, first_rb %d, mcs %d, round %d, rv %d
\n
"
,
ue
->
Mod_id
,
harq_pid
,
ue
->
frame_rx
,
subframe
,
ulsch
->
harq_processes
[
harq_pid
]
->
n_DMRS2
,
cshift
,
ulsch
->
harq_processes
[
harq_pid
]
->
nb_rb
,
ulsch
->
harq_processes
[
harq_pid
]
->
first_rb
,
ue
->
Mod_id
,
harq_pid
,
proc
->
frame_rx
,
subframe
,
ulsch
->
harq_processes
[
harq_pid
]
->
n_DMRS2
,
cshift
,
ulsch
->
harq_processes
[
harq_pid
]
->
nb_rb
,
ulsch
->
harq_processes
[
harq_pid
]
->
first_rb
,
ulsch
->
harq_processes
[
harq_pid
]
->
mcs
,
ulsch
->
harq_processes
[
harq_pid
]
->
round
,
ulsch
->
harq_processes
[
harq_pid
]
->
rvidx
);
// ulsch->n_DMRS2 = ((DCI0_5MHz_TDD_1_6_t *)dci_pdu)->cshift;
...
...
@@ -7071,7 +7072,7 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
return
(
0
);
}
else
{
LOG_E
(
PHY
,
"frame %d, subframe %d: FATAL ERROR, generate_ue_ulsch_params_from_dci, Illegal dci_format %d
\n
"
,
ue
->
frame_rx
,
subframe
,
dci_format
);
proc
->
frame_rx
,
subframe
,
dci_format
);
return
(
-
1
);
}
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
View file @
b6288566
...
...
@@ -123,7 +123,7 @@ int rx_pdsch(PHY_VARS_UE *ue,
break
;
default:
LOG_E
(
PHY
,
"[UE %d][FATAL] Frame %d subframe %d: Unknown PDSCH format %d
\n
"
,
ue
->
frame_rx
,
subframe
,
type
);
LOG_E
(
PHY
,
"[UE %d][FATAL] Frame %d subframe %d: Unknown PDSCH format %d
\n
"
,
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
,
subframe
,
type
);
return
(
-
1
);
break
;
}
...
...
openair1/PHY/LTE_TRANSPORT/drs_modulation.c
View file @
b6288566
...
...
@@ -43,6 +43,7 @@
//#define DEBUG_DRS
int
generate_drs_pusch
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
short
amp
,
unsigned
int
subframe
,
...
...
@@ -70,7 +71,7 @@ int generate_drs_pusch(PHY_VARS_UE *ue,
uint32_t
v0
=
frame_parms
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
seqhop
[
subframe
<<
1
];
uint32_t
v1
=
frame_parms
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
seqhop
[
1
+
(
subframe
<<
1
)];
int32_t
ref_re
,
ref_im
;
uint8_t
harq_pid
=
subframe2harq_pid
(
frame_parms
,
ue
->
frame_tx
,
subframe
);
uint8_t
harq_pid
=
subframe2harq_pid
(
frame_parms
,
proc
->
frame_tx
,
subframe
);
cyclic_shift0
=
(
frame_parms
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
cyclicShift
+
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
n_DMRS2
+
...
...
openair1/PHY/LTE_TRANSPORT/initial_sync.c
View file @
b6288566
...
...
@@ -239,20 +239,25 @@ int pbch_detection(PHY_VARS_UE *ue, runmode_t mode)
break
;
}
ue
->
frame_rx
=
(((
ue
->
pbch_vars
[
0
]
->
decoded_output
[
2
]
&
3
)
<<
6
)
+
(
ue
->
pbch_vars
[
0
]
->
decoded_output
[
1
]
>>
2
))
<<
2
;
ue
->
frame_rx
+=
frame_mod4
;
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
=
(((
ue
->
pbch_vars
[
0
]
->
decoded_output
[
2
]
&
3
)
<<
6
)
+
(
ue
->
pbch_vars
[
0
]
->
decoded_output
[
1
]
>>
2
))
<<
2
;
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
+=
frame_mod4
;
ue
->
proc
.
proc_rxtx
[
1
].
frame_rx
=
(((
ue
->
pbch_vars
[
0
]
->
decoded_output
[
2
]
&
3
)
<<
6
)
+
(
ue
->
pbch_vars
[
0
]
->
decoded_output
[
1
]
>>
2
))
<<
2
;
ue
->
proc
.
proc_rxtx
[
1
].
frame_rx
+=
frame_mod4
;
#ifndef USER_MODE
// one frame delay
ue
->
frame_rx
++
;
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
++
;
ue
->
proc
.
proc_rxtx
[
1
].
frame_rx
++
;
#endif
ue
->
frame_tx
=
ue
->
frame_rx
;
ue
->
proc
.
proc_rxtx
[
0
].
frame_tx
=
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
;
ue
->
proc
.
proc_rxtx
[
1
].
frame_tx
=
ue
->
proc
.
proc_rxtx
[
1
].
frame_rx
;
#ifdef DEBUG_INITIAL_SYNCH
LOG_I
(
PHY
,
"[UE%d] Initial sync: pbch decoded sucessfully mode1_flag %d, tx_ant %d, frame %d, N_RB_DL %d, phich_duration %d, phich_resource %s!
\n
"
,
ue
->
Mod_id
,
frame_parms
->
mode1_flag
,
pbch_tx_ant
,
ue
->
frame_rx
,
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
,
frame_parms
->
N_RB_DL
,
frame_parms
->
phich_config_common
.
phich_duration
,
phich_resource
);
//frame_parms->phich_config_common.phich_resource);
...
...
@@ -475,7 +480,7 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
if
(
ue
->
mac_enabled
==
1
)
{
LOG_I
(
PHY
,
"[UE%d] Sending synch status to higher layers
\n
"
,
ue
->
Mod_id
);
//mac_resynch();
mac_xface
->
dl_phy_sync_success
(
ue
->
Mod_id
,
ue
->
frame_rx
,
0
,
1
);
//ue->common_vars.eNb_id);
mac_xface
->
dl_phy_sync_success
(
ue
->
Mod_id
,
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
,
0
,
1
);
//ue->common_vars.eNb_id);
ue
->
UE_mode
[
0
]
=
PRACH
;
}
else
{
...
...
@@ -491,7 +496,7 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
}
LOG_I
(
PHY
,
"[UE %d] Frame %d RRC Measurements => rssi %3.1f dBm (dig %3.1f dB, gain %d), N0 %d dBm, rsrp %3.1f dBm/RE, rsrq %3.1f dB
\n
"
,
ue
->
Mod_id
,
ue
->
frame_rx
,
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
,
10
*
log10
(
ue
->
measurements
.
rssi
)
-
ue
->
rx_total_gain_dB
,
10
*
log10
(
ue
->
measurements
.
rssi
),
ue
->
rx_total_gain_dB
,
...
...
@@ -502,7 +507,7 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
LOG_I
(
PHY
,
"[UE %d] Frame %d MIB Information => %s, %s, NidCell %d, N_RB_DL %d, PHICH DURATION %d, PHICH RESOURCE %s, TX_ANT %d
\n
"
,
ue
->
Mod_id
,
ue
->
frame_rx
,
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
,
duplex_string
[
ue
->
frame_parms
.
frame_type
],
prefix_string
[
ue
->
frame_parms
.
Ncp
],
ue
->
frame_parms
.
Nid_cell
,
...
...
@@ -513,7 +518,7 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
LOG_I
(
PHY
,
"[UE %d] Frame %d Measured Carrier Frequency %.0f Hz (offset %d Hz)
\n
"
,
ue
->
Mod_id
,
ue
->
frame_rx
,
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
,
openair0_cfg
[
0
].
rx_freq
[
0
]
-
ue
->
common_vars
.
freq_offset
,
ue
->
common_vars
.
freq_offset
);
...
...
openair1/PHY/LTE_TRANSPORT/phich.c
View file @
b6288566
...
...
@@ -1055,6 +1055,7 @@ void generate_phich(LTE_DL_FRAME_PARMS *frame_parms,
void
rx_phich
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
subframe
,
uint8_t
eNB_id
)
{
...
...
@@ -1064,7 +1065,7 @@ void rx_phich(PHY_VARS_UE *ue,
LTE_UE_PDCCH
**
pdcch_vars
=
ue
->
pdcch_vars
;
// uint8_t HI;
uint8_t
harq_pid
=
phich_subframe_to_harq_pid
(
frame_parms
,
ue
->
frame_rx
,
subframe
);
uint8_t
harq_pid
=
phich_subframe_to_harq_pid
(
frame_parms
,
proc
->
frame_rx
,
subframe
);
LTE_UE_ULSCH_t
*
ulsch
=
ue
->
ulsch
[
eNB_id
];
int16_t
phich_d
[
24
],
*
phich_d_ptr
,
HI16
;
// unsigned int i,aa;
...
...
@@ -1082,10 +1083,10 @@ void rx_phich(PHY_VARS_UE *ue,
uint8_t
pusch_subframe
;
// check if we're expecting a PHICH in this subframe
LOG_D
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH RX
\n
"
,
ue
->
Mod_id
,
harq_pid
,
ue
->
frame_rx
,
subframe
);
LOG_D
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH RX
\n
"
,
ue
->
Mod_id
,
harq_pid
,
proc
->
frame_rx
,
subframe
);
if
(
ulsch
->
harq_processes
[
harq_pid
]
->
status
==
ACTIVE
)
{
LOG_D
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH RX ACTIVE
\n
"
,
ue
->
Mod_id
,
harq_pid
,
ue
->
frame_rx
,
subframe
);
LOG_D
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH RX ACTIVE
\n
"
,
ue
->
Mod_id
,
harq_pid
,
proc
->
frame_rx
,
subframe
);
Ngroup_PHICH
=
(
frame_parms
->
phich_config_common
.
phich_resource
*
frame_parms
->
N_RB_DL
)
/
48
;
if
(((
frame_parms
->
phich_config_common
.
phich_resource
*
frame_parms
->
N_RB_DL
)
%
48
)
>
0
)
...
...
@@ -1349,14 +1350,14 @@ void rx_phich(PHY_VARS_UE *ue,
if
(
ue
->
ulsch_Msg3_active
[
eNB_id
]
==
1
)
{
LOG_D
(
PHY
,
"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received NAK (%d) nseq %d, ngroup %d
\n
"
,
ue
->
Mod_id
,
harq_pid
,
ue
->
frame_rx
,
proc
->
frame_rx
,
subframe
,
HI16
,
nseq_PHICH
,
ngroup_PHICH
);
get_Msg3_alloc_ret
(
&
ue
->
frame_parms
,
subframe
,
ue
->
frame_rx
,
proc
->
frame_rx
,
&
ue
->
ulsch_Msg3_frame
[
eNB_id
],
&
ue
->
ulsch_Msg3_subframe
[
eNB_id
]);
ulsch
->
harq_processes
[
harq_pid
]
->
subframe_scheduling_flag
=
1
;
...
...
@@ -1374,7 +1375,7 @@ void rx_phich(PHY_VARS_UE *ue,
//#ifdef DEBUG_PHICH
LOG_D
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received NAK (%d) nseq %d, ngroup %d
\n
"
,
ue
->
Mod_id
,
harq_pid
,
ue
->
frame_rx
,
proc
->
frame_rx
,
subframe
,
HI16
,
nseq_PHICH
,
...
...
@@ -1394,7 +1395,7 @@ void rx_phich(PHY_VARS_UE *ue,
if
(
ue
->
ulsch_Msg3_active
[
eNB_id
]
==
1
)
{
LOG_D
(
PHY
,
"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received ACK (%d) nseq %d, ngroup %d
\n\n
"
,
ue
->
Mod_id
,
harq_pid
,
ue
->
frame_rx
,
proc
->
frame_rx
,
subframe
,
HI16
,
nseq_PHICH
,
ngroup_PHICH
);
...
...
@@ -1402,7 +1403,7 @@ void rx_phich(PHY_VARS_UE *ue,
//#ifdef PHICH_DEBUG
LOG_D
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received ACK (%d) nseq %d, ngroup %d
\n\n
"
,
ue
->
Mod_id
,
harq_pid
,
ue
->
frame_rx
,
proc
->
frame_rx
,
subframe
,
HI16
,
nseq_PHICH
,
ngroup_PHICH
);
//#endif
...
...
openair1/PHY/LTE_TRANSPORT/print_stats.c
View file @
b6288566
...
...
@@ -55,7 +55,7 @@ extern int mac_get_rrc_status(uint8_t Mod_id,uint8_t eNB_flag,uint8_t index);
extern
openair0_config_t
openair0_cfg
[];
#endif
int
dump_ue_stats
(
PHY_VARS_UE
*
ue
,
char
*
buffer
,
int
length
,
runmode_t
mode
,
int
input_level_dBm
)
int
dump_ue_stats
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
char
*
buffer
,
int
length
,
runmode_t
mode
,
int
input_level_dBm
)
{
uint8_t
eNB
=
0
;
...
...
@@ -78,7 +78,7 @@ int dump_ue_stats(PHY_VARS_UE *ue, char* buffer, int length, runmode_t mode, int
/*
len += sprintf(&buffer[len],
"[UE PROC] Frame count: %d\neNB0 RSSI %d dBm/RE (%d dB, %d dB)\neNB1 RSSI %d dBm/RE (%d dB, %d dB)neNB2 RSSI %d dBm/RE (%d dB, %d dB)\nN0 %d dBm/RE, %f dBm/%dPRB (%d dB, %d dB)\n",
ue
->frame_rx,
proc
->frame_rx,
ue->measurements.rx_rssi_dBm[0],
ue->measurements.rx_power_dB[0][0],
ue->measurements.rx_power_dB[0][1],
...
...
@@ -535,7 +535,7 @@ int dump_ue_stats(PHY_VARS_UE *ue, char* buffer, int length, runmode_t mode, int
}
else
{
len
+=
sprintf
(
&
buffer
[
len
],
"[UE PROC] Frame count: %d, RSSI %3.2f dB (%d dB, %d dB), N0 %3.2f dB (%d dB, %d dB)
\n
"
,
ue
->
frame_rx
,
proc
->
frame_rx
,
10
*
log10
(
ue
->
measurements
.
rssi
),
ue
->
measurements
.
rx_power_dB
[
0
][
0
],
ue
->
measurements
.
rx_power_dB
[
0
][
1
],
...
...
openair1/PHY/LTE_TRANSPORT/proto.h
View file @
b6288566
...
...
@@ -1328,6 +1328,7 @@ int32_t generate_srs_tx(PHY_VARS_UE *phy_vars_ue,
*/
int32_t
generate_drs_pusch
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
int16_t
amp
,
uint32_t
subframe
,
...
...
@@ -1398,7 +1399,8 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
uint8_t
subframe
,
DCI_format_t
dci_format
,
PHY_VARS_UE
*
phy_vars_ue
,
uint16_t
si_rnti
,
UE_rxtx_proc_t
*
proc
,
uint16_t
si_rnti
,
uint16_t
ra_rnti
,
uint16_t
p_rnti
,
uint16_t
cba_rnti
,
...
...
@@ -1406,7 +1408,8 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
uint8_t
use_srs
);
int32_t
generate_ue_ulsch_params_from_rar
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
);
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
);
double
sinr_eff_cqi_calc
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
);
int
generate_eNB_ulsch_params_from_dci
(
PHY_VARS_eNB
*
PHY_vars_eNB
,
...
...
@@ -1424,16 +1427,13 @@ int generate_eNB_ulsch_params_from_dci(PHY_VARS_eNB *PHY_vars_eNB,
void
dump_ulsch
(
PHY_VARS_eNB
*
phy_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
uint8_t
UE_id
);
void
dump_dlsch
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
,
uint8_t
harq_pid
);
void
dump_dlsch_SI
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
);
void
dump_dlsch_ra
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
);
void
dump_dlsch2
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint16_t
coded_bits_per_codeword
,
int
round
);
int
dump_dci
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
DCI_ALLOC_t
*
dci
);
int
dump_ue_stats
(
PHY_VARS_UE
*
phy_vars_ue
,
char
*
buffer
,
int
length
,
runmode_t
mode
,
int
input_level_dBm
);
int
dump_ue_stats
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
char
*
buffer
,
int
length
,
runmode_t
mode
,
int
input_level_dBm
);
int
dump_eNB_stats
(
PHY_VARS_eNB
*
phy_vars_eNB
,
char
*
buffer
,
int
length
);
...
...
@@ -1550,11 +1550,13 @@ void generate_phich_top(PHY_VARS_eNB *phy_vars_eNB,
/* \brief This routine demodulates the PHICH and updates PUSCH/ULSCH parameters.
@param phy_vars_ue Pointer to UE variables
@param proc Pointer to RXN_TXNp4 proc
@param subframe Subframe of received PDCCH/PHICH
@param eNB_id Index of eNB
*/
void
rx_phich
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
subframe
,
uint8_t
eNB_id
);
...
...
@@ -1653,11 +1655,12 @@ void generate_pucch(int32_t **txdataF,
uint8_t
subframe
);
void
generate_pucch_emul
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
PUCCH_FMT_t
format
,
uint8_t
ncs1
,
uint8_t
*
pucch_ack_payload
,
uint8_t
sr
,
uint8_t
subframe
);
uint8_t
sr
);
uint32_t
rx_pucch
(
PHY_VARS_eNB
*
phy_vars_eNB
,
...
...
openair1/PHY/LTE_TRANSPORT/pucch.c
View file @
b6288566
...
...
@@ -403,13 +403,16 @@ void generate_pucch(int32_t **txdataF,
}
void
generate_pucch_emul
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
PUCCH_FMT_t
format
,
uint8_t
ncs1
,
uint8_t
*
pucch_payload
,
uint8_t
sr
,
uint8_t
subframe
)
uint8_t
sr
)
{
int
subframe
=
proc
->
subframe_tx
;
UE_transport_info
[
ue
->
Mod_id
][
ue
->
CC_id
].
cntl
.
pucch_flag
=
format
;
UE_transport_info
[
ue
->
Mod_id
][
ue
->
CC_id
].
cntl
.
pucch_Ncs1
=
ncs1
;
...
...
@@ -428,7 +431,7 @@ void generate_pucch_emul(PHY_VARS_UE *ue,
ue
->
pucch_payload
[
0
]
=
pucch_payload
[
0
]
+
(
pucch_payload
[
1
]
<<
1
);
UE_transport_info
[
ue
->
Mod_id
][
ue
->
CC_id
].
cntl
.
pucch_payload
=
pucch_payload
[
0
]
+
(
pucch_payload
[
1
]
<<
1
);
}
else
if
(
format
==
pucch_format1
)
{
LOG_D
(
PHY
,
"[UE %d] Frame %d subframe %d Generating PUCCH for SR %d
\n
"
,
ue
->
Mod_id
,
ue
->
frame_tx
,
subframe
,
sr
);
LOG_D
(
PHY
,
"[UE %d] Frame %d subframe %d Generating PUCCH for SR %d
\n
"
,
ue
->
Mod_id
,
proc
->
frame_tx
,
subframe
,
sr
);
}
ue
->
sr
[
subframe
]
=
sr
;
...
...
openair1/PHY/LTE_TRANSPORT/rar_tools.c
View file @
b6288566
...
...
@@ -175,6 +175,7 @@ int generate_eNB_ulsch_params_from_rar(unsigned char *rar_pdu,
int8_t
delta_PUSCH_msg2
[
8
]
=
{
-
6
,
-
4
,
-
2
,
0
,
2
,
4
,
6
,
8
};
int
generate_ue_ulsch_params_from_rar
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
unsigned
char
eNB_id
)
{
...
...
@@ -189,13 +190,13 @@ int generate_ue_ulsch_params_from_rar(PHY_VARS_UE *ue,
// int current_dlsch_cqi = ue->current_dlsch_cqi[eNB_id];
uint8_t
*
rar
=
(
uint8_t
*
)(
rar_pdu
+
1
);
uint8_t
harq_pid
=
subframe2harq_pid
(
frame_parms
,
ue
->
frame_tx
,
subframe
);
uint8_t
harq_pid
=
subframe2harq_pid
(
frame_parms
,
proc
->
frame_tx
,
subframe
);
uint16_t
rballoc
;
uint8_t
cqireq
;
uint16_t
*
RIV2nb_rb_LUT
,
*
RIV2first_rb_LUT
;
uint16_t
RIV_max
=
0
;
LOG_D
(
PHY
,
"[eNB][RAPROC] Frame %d: generate_ue_ulsch_params_from_rar: subframe %d (harq_pid %d)
\n
"
,
ue
->
frame_tx
,
subframe
,
harq_pid
);
LOG_D
(
PHY
,
"[eNB][RAPROC] Frame %d: generate_ue_ulsch_params_from_rar: subframe %d (harq_pid %d)
\n
"
,
proc
->
frame_tx
,
subframe
,
harq_pid
);
switch
(
frame_parms
->
N_RB_DL
)
{
case
6
:
...
...
@@ -272,7 +273,7 @@ int generate_ue_ulsch_params_from_rar(PHY_VARS_UE *ue,
ulsch
->
uci_format
=
HLC_subband_cqi_nopmi
;
fill_CQI
(
ulsch
,
meas
,
eNB_id
,
0
,
ue
->
frame_parms
.
N_RB_DL
,
0
,
transmission_mode
,
ue
->
sinr_eff
);
if
(((
ue
->
frame_tx
%
100
)
==
0
)
||
(
ue
->
frame_tx
<
10
))
if
(((
proc
->
frame_tx
%
100
)
==
0
)
||
(
proc
->
frame_tx
<
10
))
print_CQI
(
ulsch
->
o
,
ulsch
->
uci_format
,
eNB_id
,
ue
->
frame_parms
.
N_RB_DL
);
}
else
{
ulsch
->
O_RI
=
0
;
...
...
openair1/PHY/TOOLS/lte_phy_scope.c
View file @
b6288566
...
...
@@ -509,7 +509,7 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
float
**
chest_t_abs
;
float
time
[
FRAME_LENGTH_COMPLEX_SAMPLES
];
float
freq
[
nsymb_ce
*
nb_antennas_rx
*
nb_antennas_tx
];
int
frame
=
phy_vars_ue
->
frame_rx
;
int
frame
=
phy_vars_ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
;
uint32_t
total_dlsch_bitrate
=
phy_vars_ue
->
bitrate
[
eNB_id
];
int
coded_bits_per_codeword
=
0
;
int
mcs
=
0
;
...
...
openair1/PHY/defs.h
View file @
b6288566
...
...
@@ -157,11 +157,11 @@ enum transmission_access_mode {
SCHEDULED_ACCESS
,
CBA_ACCESS
};
typedef
enum
{
eNodeB_3GPP
=
0
,
// classical eNodeB function
eNodeB_3GPP_BBU
,
// classical eNodeB function with transport interface
NGFI_RRU_IF4
,
// NGFI_RRU (NGFI remote radio-unit, currently split at common - ue_specific interface, IF4)
NGFI_RCC_IF4
// NGFI_RCC (NGFI radio cloud center, currently split at common - ue_specific interface, IF4)
typedef
enum
{
eNodeB_3GPP
=
0
,
// classical eNodeB function
eNodeB_3GPP_BBU
,
// eNodeB with NGFI IF5
NGFI_RRU_IF4
,
// NGFI_RRU (NGFI remote radio-unit, currently split at common - ue_specific interface, IF4)
NGFI_RCC_IF4
// NGFI_RCC (NGFI radio cloud center, currently split at common - ue_specific interface, IF4)
}
eNB_func_t
;
typedef
struct
UE_SCAN_INFO_s
{
...
...
@@ -250,8 +250,58 @@ typedef struct {
eNB_rxtx_proc_t
proc_rxtx
[
2
];
}
eNB_proc_t
;
//! \brief Number of eNB TX and RX threads.
//! This number must be equal to the number of LTE subframes (10). Each thread is responsible for a single subframe.
/// Context data structure for RX/TX portion of subframe processing
typedef
struct
{
/// Component Carrier index
uint8_t
CC_id
;
/// timestamp transmitted to HW
openair0_timestamp
timestamp_tx
;
/// subframe to act upon for transmission
int
subframe_tx
;
/// subframe to act upon for reception
int
subframe_rx
;
/// frame to act upon for transmission
int
frame_tx
;
/// frame to act upon for reception
int
frame_rx
;
/// \brief Instance count for RXn-TXnp4 processing thread.
/// \internal This variable is protected by \ref mutex_rxtx.
int
instance_cnt_rxtx
;
/// pthread structure for RXn-TXnp4 processing thread
pthread_t
pthread_rxtx
;
/// pthread attributes for RXn-TXnp4 processing thread
pthread_attr_t
attr_rxtx
;
/// condition variable for tx processing thread
pthread_cond_t
cond_rxtx
;
/// mutex for RXn-TXnp4 processing thread
pthread_mutex_t
mutex_rxtx
;
/// scheduling parameters for RXn-TXnp4 thread
struct
sched_param
sched_param_rxtx
;
}
UE_rxtx_proc_t
;
/// Context data structure for eNB subframe processing
typedef
struct
{
/// Component Carrier index
uint8_t
CC_id
;
/// Last RX timestamp
openair0_timestamp
timestamp_rx
;
/// \brief Instance count for synch thread.
/// \internal This variable is protected by \ref mutex_synch.
int
instance_cnt_synch
;
/// pthread attributes for prach processing thread
pthread_attr_t
attr_synch
;
/// scheduling parameters for synch thread
struct
sched_param
sched_param_synch
;
/// pthread descriptor synch thread
pthread_t
pthread_synch
;
/// condition variable for UE synch thread;
pthread_cond_t
cond_synch
;
/// mutex for UE synch thread
pthread_mutex_t
mutex_synch
;
/// set of scheduling variables RXn-TXnp4 threads
UE_rxtx_proc_t
proc_rxtx
[
2
];
}
UE_proc_t
;