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
32e19dbb
Commit
32e19dbb
authored
Aug 09, 2019
by
laurent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
removed all frame/subframe copies distributed update, replace by a single function
parent
88d57390
Changes
6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
149 additions
and
94 deletions
+149
-94
executables/main-fs6.c
executables/main-fs6.c
+102
-61
executables/main-ocp.c
executables/main-ocp.c
+4
-2
executables/split_headers.h
executables/split_headers.h
+13
-9
executables/transport_split.c
executables/transport_split.c
+28
-20
openair1/PHY/LTE_TRANSPORT/pbch.c
openair1/PHY/LTE_TRANSPORT/pbch.c
+1
-1
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+1
-1
No files found.
executables/main-fs6.c
View file @
32e19dbb
This diff is collapsed.
Click to expand it.
executables/main-ocp.c
View file @
32e19dbb
...
...
@@ -632,10 +632,12 @@ void rx_rf(RU_t *ru,int *frame,int *subframe) {
}
if
(
proc
->
first_rx
==
1
)
{
ru
->
ts_offset
=
proc
->
timestamp_rx
;
proc
->
timestamp_rx
=
0
;
//ru->ts_offset = proc->timestamp_rx;
//proc->timestamp_rx = 0;
proc
->
first_rx
=
false
;
}
else
{
if
(
proc
->
timestamp_rx
-
old_ts
!=
fp
->
samples_per_tti
)
{
LOG_E
(
HW
,
"impossible shift in RFSIM
\n
"
);
ru
->
ts_offset
+=
(
proc
->
timestamp_rx
-
old_ts
-
fp
->
samples_per_tti
);
proc
->
timestamp_rx
=
ts
-
ru
->
ts_offset
;
}
...
...
executables/split_headers.h
View file @
32e19dbb
...
...
@@ -4,11 +4,18 @@
#include <stdint.h>
#include <stdbool.h>
#include <openair1/PHY/defs_eNB.h>
#define CU_IP "127.0.0.1"
#define CU_PORT "7878"
#define DU_IP "127.0.0.1"
#define DU_PORT "8787"
#define MTU 65536
#define UDP_TIMEOUT 100000L // in nano second
#define MAX_BLOCKS 16
#define blockAlign 32 //bytes
typedef
struct
{
char
*
sourceIP
;
char
*
sourcePort
;
...
...
@@ -38,8 +45,6 @@ typedef struct frequency_s {
}
frequency_t
;
typedef
struct
{
int
frame
;
int
subframe
;
uint16_t
max_preamble
[
4
];
uint16_t
max_preamble_energy
[
4
];
uint16_t
max_preamble_delay
[
4
];
...
...
@@ -47,10 +52,6 @@ typedef struct {
}
fs6_ul_t
;
typedef
struct
{
int
frame
;
int
subframe
;
int
ul_frame
;
int
ul_subframe
;
int
num_pdcch_symbols
;
int
num_dci
;
DCI_ALLOC_t
dci_alloc
[
32
];
...
...
@@ -70,15 +71,17 @@ typedef struct {
}
fs6_dl_uespec_t
;
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
,
uint16_t
contentType
);
int
receiveSubFrame
(
UDPsock_t
*
sock
,
void
*
bufferZone
,
int
bufferSize
,
uint16_t
contentType
);
int
sendSubFrame
(
UDPsock_t
*
sock
,
void
*
bufferZone
,
ssize_t
secondHeaderSize
,
uint16_t
contentType
);
#define initBufferZone(xBuf) \
uint8_t xBuf[FS6_BUF_SIZE];\
uint8_t xBuf[FS6_BUF_SIZE];
\
((commonUDP_t *)xBuf)->nbBlocks=0;
#define hUDP(xBuf) ((commonUDP_t *)xBuf)
#define hDL(xBuf) (((fs6_dl_t*)((commonUDP_t *)xBuf)+1))
#define hDL(xBuf) ((fs6_dl_t*)(((commonUDP_t *)xBuf)+1))
#define hUL(xBuf) ((fs6_ul_t*)(((commonUDP_t *)xBuf)+1))
#define hDLUE(xBuf) ((fs6_dl_uespec_t*) (((fs6_dl_t*)(((commonUDP_t *)xBuf)+1))+1))
static
inline
size_t
alignedSize
(
uint8_t
*
ptr
)
{
commonUDP_t
*
header
=
(
commonUDP_t
*
)
ptr
;
...
...
@@ -115,4 +118,5 @@ void phy_init_RU(RU_t *);
void
feptx_prec
(
RU_t
*
);
void
feptx_ofdm
(
RU_t
*
);
void
oai_subframe_ind
(
uint16_t
sfn
,
uint16_t
sf
);
extern
uint16_t
sf_ahead
;
#endif
executables/transport_split.c
View file @
32e19dbb
...
...
@@ -68,11 +68,20 @@ bool createUDPsock (char *sourceIP, char *sourcePort, char *destIP, char *destPo
}
// sock: udp socket
// expectedTS: the expected timestamp, 0 if unknown
// bufferZone: a reception area of bufferSize
int
receiveSubFrame
(
UDPsock_t
*
sock
,
uint64_t
expectedTS
,
void
*
bufferZone
,
int
bufferSize
,
uint16_t
contentType
)
{
int
receiveSubFrame
(
UDPsock_t
*
sock
,
void
*
bufferZone
,
int
bufferSize
,
uint16_t
contentType
)
{
int
rcved
=
0
;
commonUDP_t
*
bufOrigin
=
(
commonUDP_t
*
)
bufferZone
;
static
uint8_t
crossData
[
65536
];
static
int
crossDataSize
=
0
;
if
(
crossDataSize
)
{
LOG_D
(
HW
,
"copy a block received in previous subframe
\n
"
);
memcpy
(
bufferZone
,
crossData
,
crossDataSize
);
rcved
=
1
;
bufferZone
+=
crossDataSize
;
crossDataSize
=
0
;
}
do
{
//read all subframe data from the control unit
...
...
@@ -80,7 +89,8 @@ int receiveSubFrame(UDPsock_t *sock, uint64_t expectedTS, void *bufferZone, int
if
(
ret
==-
1
)
{
if
(
errno
==
EWOULDBLOCK
||
errno
==
EINTR
)
{
return
rcved
;
// Timeout, subframe incomplete
LOG_I
(
HW
,
"Received: Timeout, subframe incomplete
\n
"
);
return
rcved
;
}
else
{
LOG_E
(
HW
,
"Critical issue in socket: %s
\n
"
,
strerror
(
errno
));
return
-
1
;
...
...
@@ -89,28 +99,26 @@ int receiveSubFrame(UDPsock_t *sock, uint64_t expectedTS, void *bufferZone, int
if
(
hUDP
(
bufferZone
)
->
contentType
!=
contentType
)
abort
();
if
(
hUDP
(
bufferZone
)
->
timestamp
!=
expectedTS
)
{
if
(
hUDP
(
bufferZone
)
->
timestamp
<
expectedTS
)
{
LOG_W
(
HW
,
"Received a paquet from past subframes, dropping it
\n
"
);
if
(
rcved
&&
bufOrigin
->
timestamp
!=
hUDP
(
bufferZone
)
->
timestamp
)
{
if
(
hUDP
(
bufferZone
)
->
timestamp
>
bufOrigin
->
timestamp
)
{
LOG_W
(
HW
,
"Received data for TS: %lu before end of TS : %lu completion
\n
"
,
hUDP
(
bufferZone
)
->
timestamp
,
bufOrigin
->
timestamp
);
memcpy
(
crossData
,
bufferZone
,
ret
);
crossDataSize
=
ret
;
return
rcved
;
}
else
{
LOG_W
(
HW
,
"Received a paquet in future subframes
\n
"
);
if
(
rcved
==
0
)
{
LOG_W
(
HW
,
"First paquet in the sub-frame, keeping it
\n
"
);
rcved
++
;
bufferZone
+=
ret
;
expectedTS
=
hUDP
(
bufferZone
)
->
timestamp
;
LOG_W
(
HW
,
"Dropping late packet
\n
"
);
continue
;
}
}
}
else
{
rcved
++
;
bufferZone
+=
ret
;
}
}
}
while
(
!
rcved
||
rcved
<
hUDP
(
bufferZone
)
->
nbBlocks
);
}
while
(
rcved
==
0
||
rcved
<
bufOrigin
->
nbBlocks
);
LOG_D
(
HW
,
"Received: nb_blocks: %d, TS: %lu, frame: %d, subframe: %d
\n
"
,
rcved
,
bufOrigin
->
timestamp
,
*
(((
int
*
)
bufOrigin
)
+
1
),
*
(((
int
*
)
bufOrigin
)
+
2
));
LOG_D
(
HW
,
"Received: nb_blocks: %d, TS: %lu
\n
"
,
rcved
,
bufOrigin
->
timestamp
);
return
rcved
;
}
...
...
openair1/PHY/LTE_TRANSPORT/pbch.c
View file @
32e19dbb
...
...
@@ -195,7 +195,7 @@ int generate_pbch(LTE_eNB_PBCH *eNB_pbch,
pbch_E
=
(
frame_parms
->
Ncp
==
NORMAL
)
?
1920
:
1728
;
//RE/RB * #RB * bits/RB (QPSK)
// pbch_E_bytes = pbch_coded_bits>>3;
LOG_D
(
PHY
,
"%s(eNB_pbch:%p txdataF:%p amp:%d frame_parms:%p pbch_pdu:%p frame_mod4:%d)
\n
"
,
__FUNCTION__
,
eNB_pbch
,
txdataF
,
amp
,
frame_parms
,
pbch_pdu
,
frame_mod4
==
0
);
LOG_D
(
PHY
,
"%s(eNB_pbch:%p txdataF:%p amp:%d frame_parms:%p pbch_pdu:%p frame_mod4:%d)
\n
"
,
__FUNCTION__
,
eNB_pbch
,
txdataF
,
amp
,
frame_parms
,
pbch_pdu
,
frame_mod4
);
if
(
frame_mod4
==
0
)
{
bzero
(
pbch_a
,
PBCH_A
>>
3
);
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
32e19dbb
...
...
@@ -162,7 +162,7 @@ void common_signal_procedures (PHY_VARS_eNB *eNB,int frame, int subframe) {
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
int
**
txdataF
=
eNB
->
common_vars
.
txdataF
;
uint8_t
*
pbch_pdu
=&
eNB
->
pbch_pdu
[
0
];
//
LOG_D(PHY,"common_signal_procedures: frame %d, subframe %d fdd:%s dir:%s\n",frame,subframe,fp->frame_type == FDD?"FDD":"TDD", subframe_select(fp,subframe) == SF_DL?"DL":"UL?");
LOG_D
(
PHY
,
"common_signal_procedures: frame %d, subframe %d fdd:%s dir:%s
\n
"
,
frame
,
subframe
,
fp
->
frame_type
==
FDD
?
"FDD"
:
"TDD"
,
subframe_select
(
fp
,
subframe
)
==
SF_DL
?
"DL"
:
"UL?"
);
// generate Cell-Specific Reference Signals for both slots
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_RS_TX
,
1
);
...
...
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