Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Michael Black
OpenXG UE
Commits
5912b889
Commit
5912b889
authored
Jul 18, 2019
by
laurent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
merge develop (split pdsch/dlsch)
parent
0f4a1ac2
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
42 additions
and
27 deletions
+42
-27
executables/dl_fs6.c
executables/dl_fs6.c
+37
-27
executables/split_headers.h
executables/split_headers.h
+5
-0
No files found.
executables/dl_fs6.c
View file @
5912b889
...
...
@@ -6,6 +6,23 @@
#define FS6_BUF_SIZE 100*1000
static
UDPsock_t
sockFS6
;
typedef
struct
{
int
frame
;
int
subframe
;
}
fs6_ul_t
;
typedef
struct
{
int
frame
;
int
subframe
;
int
num_pdcch_symbols
;
int
num_dci
;
int
amp
;
bool
UE_active
[
NUMBER_OF_UE_MAX
];
LTE_eNB_PHICH
phich_vars
;
}
fs6_dl_t
;
#if 0
void pdsch_procedures(PHY_VARS_eNB *eNB,
...
...
@@ -90,17 +107,11 @@ void phy_procedures_eNB_uespec_RX_extract(PHY_VARS_eNB *phy_vars_eNB,L1_rxtx_pro
void
phy_procedures_eNB_uespec_RX_process
(
PHY_VARS_eNB
*
phy_vars_eNB
,
L1_rxtx_proc_t
*
proc
)
{
}
typedef
struct
{
int
frame
;
int
subframe
;
int
num_pdcch_symbols
;
int
num_dci
;
int
amp
;
bool
UE_active
[
NUMBER_OF_UE_MAX
];
LTE_eNB_PHICH
phich_vars
;
}
fs6_dl_t
;
void
phy_procedures_eNB_TX_process
(
uint8_t
*
bufferZone
,
int
bufSize
,
PHY_VARS_eNB
*
eNB
,
L1_rxtx_proc_t
*
proc
,
int
do_meas
)
{
commonUDP_t
*
UDPheader
=
(
commonUDP_t
*
)
bufferZone
;
UDPheader
->
contentBytes
=
1000
;
UDPheader
->
nbBlocks
=
1
;
fs6_dl_t
*
header
=
(
fs6_dl_t
*
)
commonUDPdata
(
bufferZone
);
// TBD: read frame&subframe from received data
int
frame
=
proc
->
frame_tx
;
int
subframe
=
proc
->
subframe_tx
;
...
...
@@ -114,6 +125,7 @@ void phy_procedures_eNB_TX_process(uint8_t *bufferZone, int bufSize, PHY_VARS_eN
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
LTE_UL_eNB_HARQ_t
*
ulsch_harq
;
if
(
do_meas
==
1
)
{
start_meas
(
&
eNB
->
phy_proc_tx
);
start_meas
(
&
eNB
->
dlsch_common_and_dci
);
...
...
@@ -149,7 +161,7 @@ void phy_procedures_eNB_TX_process(uint8_t *bufferZone, int bufSize, PHY_VARS_eN
header
->
num_dci
,
&
eNB
->
pdcch_vars
[
subframe
&
1
].
dci_alloc
[
0
],
0
,
header
AMP
,
header
->
amp
,
fp
,
eNB
->
common_vars
.
txdataF
,
header
->
subframe
);
...
...
@@ -162,9 +174,9 @@ void phy_procedures_eNB_TX_process(uint8_t *bufferZone, int bufSize, PHY_VARS_eN
}
for
(
int
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE_id
++
)
{
if
(
header
.
UE_active
[
UE_id
])
{
// if we generate dlsch, we must generate pdsch
dlsch0
=
eNB
->
dlsch
[
UE_id
][
0
];
dlsch1
=
eNB
->
dlsch
[
UE_id
][
1
];
if
(
header
->
UE_active
[
UE_id
])
{
// if we generate dlsch, we must generate pdsch
LTE_eNB_DLSCH_t
*
dlsch0
=
eNB
->
dlsch
[
UE_id
][
0
];
LTE_eNB_DLSCH_t
*
dlsch1
=
eNB
->
dlsch
[
UE_id
][
1
];
pdsch_procedures
(
eNB
,
proc
,
harq_pid
,
...
...
@@ -173,13 +185,14 @@ void phy_procedures_eNB_TX_process(uint8_t *bufferZone, int bufSize, PHY_VARS_eN
}
}
eNB
->
phich_vars
[
subframe
&
1
]
=
header
.
phich_vars
;
eNB
->
phich_vars
[
subframe
&
1
]
=
header
->
phich_vars
;
generate_phich_top
(
eNB
,
proc
,
AMP
);
}
void
phy_procedures_eNB_TX_extract
(
PHY_VARS_eNB
*
eNB
,
L1_rxtx_proc_t
*
proc
,
int
do_meas
,
uint8_t
*
buf
,
int
bufSize
)
{
void
phy_procedures_eNB_TX_extract
(
uint8_t
bufferZone
,
PHY_VARS_eNB
*
eNB
,
L1_rxtx_proc_t
*
proc
,
int
do_meas
,
uint8_t
*
buf
,
int
bufSize
)
{
fs6_dl_t
*
header
=
(
fs6_dl_t
*
)
commonUDPdata
(
bufferZone
);
int
frame
=
proc
->
frame_tx
;
int
subframe
=
proc
->
subframe_tx
;
uint32_t
i
,
aa
;
...
...
@@ -195,8 +208,8 @@ void phy_procedures_eNB_TX_extract(PHY_VARS_eNB *eNB, L1_rxtx_proc_t *proc, int
if
((
fp
->
frame_type
==
TDD
)
&&
(
subframe_select
(
fp
,
subframe
)
==
SF_UL
))
return
;
header
.
frame
=
frame
;
header
.
subframe
=
subframe
;
header
->
frame
=
frame
;
header
->
subframe
=
subframe
;
// clear existing ulsch dci allocations before applying info from MAC (this is table
ul_subframe
=
pdcch_alloc2ul_subframe
(
fp
,
subframe
);
ul_frame
=
pdcch_alloc2ul_frame
(
fp
,
frame
,
subframe
);
...
...
@@ -247,9 +260,9 @@ void phy_procedures_eNB_TX_extract(PHY_VARS_eNB *eNB, L1_rxtx_proc_t *proc, int
LOG_D
(
PHY
,
"num_pdcch_symbols %"
PRIu8
",number dci %"
PRIu8
"
\n
"
,
num_pdcch_symbols
,
num_dci
);
if
(
NFAPI_MODE
==
NFAPI_MONOLITHIC
||
NFAPI_MODE
==
NFAPI_MODE_PNF
)
{
header
.
num_pdcch_symbols
=
num_pdcch_symbols
;
header
.
num_dci
=
num_dci
;
header
.
amp
=
AMP
;
header
->
num_pdcch_symbols
=
num_pdcch_symbols
;
header
->
num_dci
=
num_dci
;
header
->
amp
=
AMP
;
}
if
(
do_meas
==
1
)
stop_meas
(
&
eNB
->
dlsch_common_and_dci
);
...
...
@@ -286,7 +299,7 @@ void phy_procedures_eNB_TX_extract(PHY_VARS_eNB *eNB, L1_rxtx_proc_t *proc, int
dlsch0
->
harq_ids
[
frame
%
2
][
6
],
dlsch0
->
harq_ids
[
frame
%
2
][
7
]);
}
else
{
header
.
UE_active
[
UE_id
]
=
true
;
header
->
UE_active
[
UE_id
]
=
true
;
if
(
dlsch_procedures
(
eNB
,
proc
,
...
...
@@ -308,15 +321,12 @@ void phy_procedures_eNB_TX_extract(PHY_VARS_eNB *eNB, L1_rxtx_proc_t *proc, int
}
}
header
.
phich_vars
=
eNB
->
phich_vars
[
subframe
&
1
];
header
->
phich_vars
=
eNB
->
phich_vars
[
subframe
&
1
];
if
(
do_meas
==
1
)
stop_meas
(
&
eNB
->
dlsch_ue_specific
);
if
(
do_meas
==
1
)
stop_meas
(
&
eNB
->
phy_proc_tx
);
commonUDP_t
*
header
=
(
commonUDP_t
*
)
buf
;
header
->
contentBytes
=
1000
;
header
->
nbBlocks
=
1
;
return
;
}
...
...
@@ -385,7 +395,7 @@ void DL_cu_fs6(RU_t *ru,int frame, int subframe) {
eNB
->
if_inst
->
UL_indication
(
&
eNB
->
UL_INFO
);
pthread_mutex_unlock
(
&
eNB
->
UL_INFO_mutex
);
uint8_t
bufferZone
[
FS6_BUF_SIZE
];
phy_procedures_eNB_TX_extract
(
eNB
,
&
proc
->
L1_proc
,
1
,
bufferZone
,
FS6_BUF_SIZE
);
phy_procedures_eNB_TX_extract
(
bufferZone
,
eNB
,
&
proc
->
L1_proc
,
1
,
bufferZone
,
FS6_BUF_SIZE
);
sendSubFrame
(
&
sockFS6
,
bufferZone
);
}
...
...
executables/split_headers.h
View file @
5912b889
...
...
@@ -37,11 +37,16 @@ typedef struct frequency_s {
bool
createUDPsock
(
char
*
sourceIP
,
char
*
sourcePort
,
char
*
destIP
,
char
*
destPort
,
UDPsock_t
*
result
);
int
receiveSubFrame
(
UDPsock_t
*
sock
,
uint64_t
expectedTS
,
void
*
bufferZone
,
int
bufferSize
);
int
sendSubFrame
(
UDPsock_t
*
sock
,
void
*
bufferZone
);
inline
size_t
alignedSize
(
void
*
ptr
)
{
commonUDP_t
*
header
=
(
commonUDP_t
*
)
ptr
;
return
((
header
->
contentBytes
+
sizeof
(
commonUDP_t
)
+
blockAlign
-
1
)
/
blockAlign
)
*
blockAlign
;
}
inline
void
*
commonUDPdata
(
void
*
ptr
)
{
return
(
void
*
)
(((
commonUDP_t
*
)
ptr
)
+
1
);
}
void
*
cu_fs6
(
void
*
arg
);
void
*
du_fs6
(
void
*
arg
);
void
fill_rf_config
(
RU_t
*
ru
,
char
*
rf_config_file
);
...
...
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