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
zzha zzha
OpenXG-RAN
Commits
c48609f9
Commit
c48609f9
authored
Jul 18, 2019
by
laurent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
merge develop (split pdsch/dlsch)
parent
926cf580
Changes
2
Hide 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 @
c48609f9
...
@@ -6,6 +6,23 @@
...
@@ -6,6 +6,23 @@
#define FS6_BUF_SIZE 100*1000
#define FS6_BUF_SIZE 100*1000
static
UDPsock_t
sockFS6
;
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
#if 0
void pdsch_procedures(PHY_VARS_eNB *eNB,
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
...
@@ -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
)
{
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
)
{
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
// TBD: read frame&subframe from received data
int
frame
=
proc
->
frame_tx
;
int
frame
=
proc
->
frame_tx
;
int
subframe
=
proc
->
subframe_tx
;
int
subframe
=
proc
->
subframe_tx
;
...
@@ -113,6 +124,7 @@ void phy_procedures_eNB_TX_process(uint8_t *bufferZone, int bufSize, PHY_VARS_eN
...
@@ -113,6 +124,7 @@ void phy_procedures_eNB_TX_process(uint8_t *bufferZone, int bufSize, PHY_VARS_eN
uint32_t
ul_frame
;
uint32_t
ul_frame
;
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
LTE_UL_eNB_HARQ_t
*
ulsch_harq
;
LTE_UL_eNB_HARQ_t
*
ulsch_harq
;
if
(
do_meas
==
1
)
{
if
(
do_meas
==
1
)
{
start_meas
(
&
eNB
->
phy_proc_tx
);
start_meas
(
&
eNB
->
phy_proc_tx
);
...
@@ -149,7 +161,7 @@ void phy_procedures_eNB_TX_process(uint8_t *bufferZone, int bufSize, PHY_VARS_eN
...
@@ -149,7 +161,7 @@ void phy_procedures_eNB_TX_process(uint8_t *bufferZone, int bufSize, PHY_VARS_eN
header
->
num_dci
,
header
->
num_dci
,
&
eNB
->
pdcch_vars
[
subframe
&
1
].
dci_alloc
[
0
],
&
eNB
->
pdcch_vars
[
subframe
&
1
].
dci_alloc
[
0
],
0
,
0
,
header
AMP
,
header
->
amp
,
fp
,
fp
,
eNB
->
common_vars
.
txdataF
,
eNB
->
common_vars
.
txdataF
,
header
->
subframe
);
header
->
subframe
);
...
@@ -162,9 +174,9 @@ void phy_procedures_eNB_TX_process(uint8_t *bufferZone, int bufSize, PHY_VARS_eN
...
@@ -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
++
)
{
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
if
(
header
->
UE_active
[
UE_id
])
{
// if we generate dlsch, we must generate pdsch
dlsch0
=
eNB
->
dlsch
[
UE_id
][
0
];
LTE_eNB_DLSCH_t
*
dlsch0
=
eNB
->
dlsch
[
UE_id
][
0
];
dlsch1
=
eNB
->
dlsch
[
UE_id
][
1
];
LTE_eNB_DLSCH_t
*
dlsch1
=
eNB
->
dlsch
[
UE_id
][
1
];
pdsch_procedures
(
eNB
,
pdsch_procedures
(
eNB
,
proc
,
proc
,
harq_pid
,
harq_pid
,
...
@@ -173,13 +185,14 @@ void phy_procedures_eNB_TX_process(uint8_t *bufferZone, int bufSize, PHY_VARS_eN
...
@@ -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
,
generate_phich_top
(
eNB
,
proc
,
proc
,
AMP
);
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
frame
=
proc
->
frame_tx
;
int
subframe
=
proc
->
subframe_tx
;
int
subframe
=
proc
->
subframe_tx
;
uint32_t
i
,
aa
;
uint32_t
i
,
aa
;
...
@@ -195,8 +208,8 @@ void phy_procedures_eNB_TX_extract(PHY_VARS_eNB *eNB, L1_rxtx_proc_t *proc, int
...
@@ -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
))
if
((
fp
->
frame_type
==
TDD
)
&&
(
subframe_select
(
fp
,
subframe
)
==
SF_UL
))
return
;
return
;
header
.
frame
=
frame
;
header
->
frame
=
frame
;
header
.
subframe
=
subframe
;
header
->
subframe
=
subframe
;
// clear existing ulsch dci allocations before applying info from MAC (this is table
// clear existing ulsch dci allocations before applying info from MAC (this is table
ul_subframe
=
pdcch_alloc2ul_subframe
(
fp
,
subframe
);
ul_subframe
=
pdcch_alloc2ul_subframe
(
fp
,
subframe
);
ul_frame
=
pdcch_alloc2ul_frame
(
fp
,
frame
,
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
...
@@ -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
);
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
)
{
if
(
NFAPI_MODE
==
NFAPI_MONOLITHIC
||
NFAPI_MODE
==
NFAPI_MODE_PNF
)
{
header
.
num_pdcch_symbols
=
num_pdcch_symbols
;
header
->
num_pdcch_symbols
=
num_pdcch_symbols
;
header
.
num_dci
=
num_dci
;
header
->
num_dci
=
num_dci
;
header
.
amp
=
AMP
;
header
->
amp
=
AMP
;
}
}
if
(
do_meas
==
1
)
stop_meas
(
&
eNB
->
dlsch_common_and_dci
);
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
...
@@ -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
][
6
],
dlsch0
->
harq_ids
[
frame
%
2
][
7
]);
dlsch0
->
harq_ids
[
frame
%
2
][
7
]);
}
else
{
}
else
{
header
.
UE_active
[
UE_id
]
=
true
;
header
->
UE_active
[
UE_id
]
=
true
;
if
(
dlsch_procedures
(
eNB
,
if
(
dlsch_procedures
(
eNB
,
proc
,
proc
,
...
@@ -308,15 +321,12 @@ void phy_procedures_eNB_TX_extract(PHY_VARS_eNB *eNB, L1_rxtx_proc_t *proc, int
...
@@ -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
->
dlsch_ue_specific
);
if
(
do_meas
==
1
)
stop_meas
(
&
eNB
->
phy_proc_tx
);
if
(
do_meas
==
1
)
stop_meas
(
&
eNB
->
phy_proc_tx
);
commonUDP_t
*
header
=
(
commonUDP_t
*
)
buf
;
header
->
contentBytes
=
1000
;
header
->
nbBlocks
=
1
;
return
;
return
;
}
}
...
@@ -385,7 +395,7 @@ void DL_cu_fs6(RU_t *ru,int frame, int subframe) {
...
@@ -385,7 +395,7 @@ void DL_cu_fs6(RU_t *ru,int frame, int subframe) {
eNB
->
if_inst
->
UL_indication
(
&
eNB
->
UL_INFO
);
eNB
->
if_inst
->
UL_indication
(
&
eNB
->
UL_INFO
);
pthread_mutex_unlock
(
&
eNB
->
UL_INFO_mutex
);
pthread_mutex_unlock
(
&
eNB
->
UL_INFO_mutex
);
uint8_t
bufferZone
[
FS6_BUF_SIZE
];
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
);
sendSubFrame
(
&
sockFS6
,
bufferZone
);
}
}
...
...
executables/split_headers.h
View file @
c48609f9
...
@@ -37,11 +37,16 @@ typedef struct frequency_s {
...
@@ -37,11 +37,16 @@ typedef struct frequency_s {
bool
createUDPsock
(
char
*
sourceIP
,
char
*
sourcePort
,
char
*
destIP
,
char
*
destPort
,
UDPsock_t
*
result
);
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
receiveSubFrame
(
UDPsock_t
*
sock
,
uint64_t
expectedTS
,
void
*
bufferZone
,
int
bufferSize
);
int
sendSubFrame
(
UDPsock_t
*
sock
,
void
*
bufferZone
);
int
sendSubFrame
(
UDPsock_t
*
sock
,
void
*
bufferZone
);
inline
size_t
alignedSize
(
void
*
ptr
)
{
inline
size_t
alignedSize
(
void
*
ptr
)
{
commonUDP_t
*
header
=
(
commonUDP_t
*
)
ptr
;
commonUDP_t
*
header
=
(
commonUDP_t
*
)
ptr
;
return
((
header
->
contentBytes
+
sizeof
(
commonUDP_t
)
+
blockAlign
-
1
)
/
blockAlign
)
*
blockAlign
;
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
*
cu_fs6
(
void
*
arg
);
void
*
du_fs6
(
void
*
arg
);
void
*
du_fs6
(
void
*
arg
);
void
fill_rf_config
(
RU_t
*
ru
,
char
*
rf_config_file
);
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