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
139b55b5
Commit
139b55b5
authored
Jun 23, 2016
by
Sandeep Kumar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
getting rid of bit-fields
parent
af78447e
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
52 additions
and
56 deletions
+52
-56
openair1/PHY/LTE_TRANSPORT/if4_tools.c
openair1/PHY/LTE_TRANSPORT/if4_tools.c
+35
-36
openair1/PHY/LTE_TRANSPORT/if4_tools.h
openair1/PHY/LTE_TRANSPORT/if4_tools.h
+17
-20
No files found.
openair1/PHY/LTE_TRANSPORT/if4_tools.c
View file @
139b55b5
...
...
@@ -84,7 +84,8 @@ void send_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t packet_type,
}
// Update information in generated packet
dl_header
->
frame_status
.
sym_num
=
symbol_id
;
dl_header
->
frame_status
&=
~
(
0x000f
<<
26
);
dl_header
->
frame_status
|=
(
symbol_id
&
0x000f
)
<<
26
;
// Write the packet to the fronthaul
if
((
eNB
->
ifdevice
.
trx_write_func
(
&
eNB
->
ifdevice
,
...
...
@@ -122,7 +123,8 @@ void send_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t packet_type,
}
// Update information in generated packet
ul_header
->
frame_status
.
sym_num
=
symbol_id
;
ul_header
->
frame_status
&=
~
(
0x000f
<<
26
);
ul_header
->
frame_status
|=
(
symbol_id
&
0x000f
)
<<
26
;
// Write the packet(s) to the fronthaul
if
((
eNB
->
ifdevice
.
trx_write_func
(
&
eNB
->
ifdevice
,
...
...
@@ -174,7 +176,7 @@ void send_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t packet_type,
}
void
recv_IF4
(
PHY_VARS_eNB
*
eNB
,
int
frame
,
int
subframe
,
uint16_t
*
packet_type
,
uint32_t
*
symbol_number
,
uint16_t
expected_packet
)
{
void
recv_IF4
(
PHY_VARS_eNB
*
eNB
,
int
frame
,
int
subframe
,
uint16_t
*
packet_type
,
uint32_t
*
symbol_number
)
{
LTE_DL_FRAME_PARMS
*
fp
=
&
eNB
->
frame_parms
;
int32_t
**
txdataF
=
eNB
->
common_vars
.
txdataF
[
0
];
int32_t
**
rxdataF
=
eNB
->
common_vars
.
rxdataF
[
0
];
...
...
@@ -182,9 +184,9 @@ void recv_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t *packet_type,
uint16_t
element_id
;
uint16_t
db_fulllength
,
db_halflength
;
int
slotoffsetF
,
blockoffsetF
;
int
slotoffsetF
=
0
,
blockoffsetF
=
0
;
if
(
e
xpected_packet
==
IF4_PDLFFT
)
{
if
(
e
NB
->
node_function
==
NGFI_RRU_IF4
)
{
db_fulllength
=
(
12
*
fp
->
N_RB_DL
);
}
else
{
db_fulllength
=
(
12
*
fp
->
N_RB_UL
);
...
...
@@ -195,6 +197,7 @@ void recv_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t *packet_type,
void
*
rx_buffer
=
NULL
;
int16_t
*
data_block
=
NULL
;
// Read packet(s) from the fronthaul
if
(
eNB
->
ifdevice
.
trx_read_func
(
&
eNB
->
ifdevice
,
ret_type
,
...
...
@@ -204,7 +207,7 @@ void recv_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t *packet_type,
perror
(
"ETHERNET read"
);
}
*
packet_type
=
*
ret_type
;
*
packet_type
=
(
uint16_t
)
*
ret_type
;
if
(
*
packet_type
==
IF4_PDLFFT
)
{
data_block
=
(
int16_t
*
)
(
rx_buffer
+
sizeof_IF4_dl_header_t
);
...
...
@@ -223,7 +226,7 @@ void recv_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t *packet_type,
}
// Find and return symbol_number
*
symbol_number
=
((
IF4_dl_header_t
*
)(
rx_buffer
))
->
frame_status
.
sym_num
;
*
symbol_number
=
((
((
IF4_dl_header_t
*
)(
rx_buffer
))
->
frame_status
)
>>
26
)
&
0x000f
;
}
else
if
(
*
packet_type
==
IF4_PULFFT
)
{
data_block
=
(
int16_t
*
)
(
rx_buffer
+
sizeof_IF4_ul_header_t
);
...
...
@@ -242,12 +245,16 @@ void recv_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t *packet_type,
}
// Find and return symbol_number
*
symbol_number
=
((
IF4_ul_header_t
*
)(
rx_buffer
))
->
frame_status
.
sym_num
;
*
symbol_number
=
((
((
IF4_ul_header_t
*
)(
rx_buffer
))
->
frame_status
)
>>
26
)
&
0x000f
;
}
else
if
(
*
packet_type
==
IF4_PRACH
)
{
data_block
=
(
int16_t
*
)
(
rx_buffer
+
sizeof_IF4_prach_header_t
);
db_fulllength
=
839
;
// hard coded
// FIX: hard coded prach samples length
db_fulllength
=
839
*
2
;
// Generate uncompressed data blocks
memcpy
((
rxsigF
[
0
]
+
slotoffsetF
),
data_block
,
db_fulllength
*
sizeof
(
int16_t
));
}
else
{
AssertFatal
(
1
==
0
,
"recv_IF4 - Unknown packet_type %x"
,
*
packet_type
);
...
...
@@ -263,18 +270,13 @@ void gen_IF4_dl_header(IF4_dl_header_t *dl_packet, int frame, int subframe) {
dl_packet
->
type
=
IF4_PACKET_TYPE
;
dl_packet
->
sub_type
=
IF4_PDLFFT
;
//
Leave reserved as it i
s
//
Reset frame statu
s
dl_packet
->
rsvd
=
0
;
// Set frame status
dl_packet
->
frame_status
.
ant_num
=
0
;
dl_packet
->
frame_status
.
ant_start
=
0
;
dl_packet
->
frame_status
.
rf_num
=
frame
;
dl_packet
->
frame_status
.
sf_num
=
subframe
;
dl_packet
->
frame_status
.
sym_num
=
0
;
dl_packet
->
frame_status
.
rsvd
=
0
;
// Set frame check sequence
dl_packet
->
frame_status
=
0
;
dl_packet
->
frame_status
|=
(
frame
&
0xffff
)
<<
6
;
dl_packet
->
frame_status
|=
(
subframe
&
0x000f
)
<<
22
;
}
...
...
@@ -288,18 +290,19 @@ void gen_IF4_ul_header(IF4_ul_header_t *ul_packet, int frame, int subframe) {
ul_packet
->
rsvd
=
0
;
// Set frame status
ul_packet
->
frame_status
.
ant_num
=
0
;
ul_packet
->
frame_status
.
ant_start
=
0
;
ul_packet
->
frame_status
.
rf_num
=
frame
;
ul_packet
->
frame_status
.
sf_num
=
subframe
;
ul_packet
->
frame_status
.
sym_num
=
0
;
ul_packet
->
frame_status
.
rsvd
=
0
;
ul_packet
->
frame_status
=
0
;
ul_packet
->
frame_status
|=
(
frame
&
0xffff
)
<<
6
;
ul_packet
->
frame_status
|=
(
subframe
&
0x000f
)
<<
22
;
// Set antenna specific gain *** set other antenna gain ***
ul_packet
->
gain0
.
exponent
=
0
;
ul_packet
->
gain0
.
rsvd
=
0
;
// Set frame check sequence
ul_packet
->
gain0
=
0
;
ul_packet
->
gain1
=
0
;
ul_packet
->
gain2
=
0
;
ul_packet
->
gain3
=
0
;
ul_packet
->
gain4
=
0
;
ul_packet
->
gain5
=
0
;
ul_packet
->
gain6
=
0
;
ul_packet
->
gain7
=
0
;
}
...
...
@@ -313,12 +316,8 @@ void gen_IF4_prach_header(IF4_prach_header_t *prach_packet, int frame, int subfr
prach_packet
->
rsvd
=
0
;
// Set LTE Prach configuration
prach_packet
->
prach_conf
.
rsvd
=
0
;
prach_packet
->
prach_conf
.
ant
=
0
;
prach_packet
->
prach_conf
.
rf_num
=
frame
;
prach_packet
->
prach_conf
.
sf_num
=
subframe
;
prach_packet
->
prach_conf
.
exponent
=
0
;
// Set frame check sequence
prach_packet
->
prach_conf
=
0
;
prach_packet
->
prach_conf
|=
(
frame
&
0xffff
)
<<
6
;
prach_packet
->
prach_conf
|=
(
subframe
&
0x000f
)
<<
22
;
}
openair1/PHY/LTE_TRANSPORT/if4_tools.h
View file @
139b55b5
...
...
@@ -47,6 +47,10 @@
#define IF4_PDLFFT 0x0020
#define IF4_PRACH 0x0021
/*
Bit-field reference
/// IF4 Frame Status (32 bits)
struct IF4_frame_status {
/// Antenna Numbers
...
...
@@ -63,9 +67,6 @@ struct IF4_frame_status {
uint32_t rsvd:2;
};
typedef
struct
IF4_frame_status
IF4_frame_status_t
;
#define sizeof_IF4_frame_status_t 4
/// IF4 Antenna Gain (16 bits)
struct IF4_gain {
/// Reserved
...
...
@@ -74,9 +75,6 @@ struct IF4_gain {
uint16_t exponent:6;
};
typedef
struct
IF4_gain
IF4_gain_t
;
#define sizeof_IF_gain_t 2
/// IF4 LTE PRACH Configuration (32 bits)
struct IF4_lte_prach_conf {
/// Reserved
...
...
@@ -91,8 +89,7 @@ struct IF4_lte_prach_conf {
uint32_t exponent:6;
};
typedef
struct
IF4_lte_prach_conf
IF4_lte_prach_conf_t
;
#define sizeof_IF4_lte_prach_conf_t 4
*/
struct
IF4_dl_header
{
/// Destination Address
...
...
@@ -106,7 +103,7 @@ struct IF4_dl_header {
/// Reserved
uint32_t
rsvd
;
/// Frame Status
IF4_frame_status
_t
frame_status
;
uint32
_t
frame_status
;
/// Data Blocks
/// Frame Check Sequence
...
...
@@ -128,23 +125,23 @@ struct IF4_ul_header {
/// Reserved
uint32_t
rsvd
;
/// Frame Status
IF4_frame_status
_t
frame_status
;
uint32
_t
frame_status
;
/// Gain 0
IF4_gain
_t
gain0
;
uint16
_t
gain0
;
/// Gain 1
IF4_gain
_t
gain1
;
uint16
_t
gain1
;
/// Gain 2
IF4_gain
_t
gain2
;
uint16
_t
gain2
;
/// Gain 3
IF4_gain
_t
gain3
;
uint16
_t
gain3
;
/// Gain 4
IF4_gain
_t
gain4
;
uint16
_t
gain4
;
/// Gain 5
IF4_gain
_t
gain5
;
uint16
_t
gain5
;
/// Gain 6
IF4_gain
_t
gain6
;
uint16
_t
gain6
;
/// Gain 7
IF4_gain
_t
gain7
;
uint16
_t
gain7
;
/// Data Blocks
/// Frame Check Sequence
...
...
@@ -166,7 +163,7 @@ struct IF4_prach_header {
/// Reserved
uint32_t
rsvd
;
/// LTE Prach Configuration
IF4_lte_prach_conf
_t
prach_conf
;
uint32
_t
prach_conf
;
/// Prach Data Block (one antenna)
/// Frame Check Sequence
...
...
@@ -184,4 +181,4 @@ void gen_IF4_prach_header(IF4_prach_header_t*, int, int);
void
send_IF4
(
PHY_VARS_eNB
*
,
int
,
int
,
uint16_t
,
int
);
void
recv_IF4
(
PHY_VARS_eNB
*
,
int
,
int
,
uint16_t
*
,
uint32_t
*
,
uint16_t
);
void
recv_IF4
(
PHY_VARS_eNB
*
,
int
,
int
,
uint16_t
*
,
uint32_t
*
);
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