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
d51d5dee
Commit
d51d5dee
authored
8 years ago
by
S. Sandeep Kumar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix some structures and add more details to if4 functions
parent
d5d1dd0e
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
129 additions
and
135 deletions
+129
-135
openair1/PHY/LTE_TRANSPORT/if4_tools.c
openair1/PHY/LTE_TRANSPORT/if4_tools.c
+94
-115
openair1/PHY/LTE_TRANSPORT/if4_tools.h
openair1/PHY/LTE_TRANSPORT/if4_tools.h
+35
-20
No files found.
openair1/PHY/LTE_TRANSPORT/if4_tools.c
View file @
d51d5dee
...
...
@@ -45,39 +45,62 @@
#include "PHY/LTE_TRANSPORT/if4_tools.h"
#endif
// Define how data blocks are stored and transferred
void
send_IF4
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
)
{
int
frame
=
proc
->
frame_tx
;
int
subframe
=
proc
->
subframe_tx
;
LTE_DL_FRAME_PARMS
*
fp
=
&
eNB
->
frame_parms
;
//void send_IF4(PHY_VARS_eNB *eNB, int subframe){
//eNB_proc_t *proc = &eNB->proc;
//int frame=proc->frame_tx;
//int subframe=proc->subframe_tx;
uint16_t
i
;
//LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
float_t
data_block_length
=
1200
*
(
fp
->
ofdm_symbol_size
/
2048
);
uint16_t
*
data_block
=
(
uint16_t
*
)
malloc
(
data_block_length
*
sizeof
(
uint16_t
));
//uint32_t i,j;
//float *data_block = malloc(length*sizeof(long));
// Caller: RCC - DL *** handle RRU case - UL and PRACH ***
if
(
eNB
->
node_function
==
NGFI_RCC_IF4
)
{
IF4_dl_packet_t
*
dl_packet
=
(
IF4_dl_packet_t
*
)
malloc
(
sizeof_IF4_dl_packet_t
);
gen_IF4_dl_packet
(
dl_packet
,
proc
);
// Generate IF4 packet (for now DL) with frame status information
//dl_packet = gen_IF4_dl_packet( /* ADD INFO and data_block pointer */ );
dl_packet
->
data_block
=
data_block
;
//
for(i=0; i<fp->symbols_per_tti; i++) {
for
(
i
=
0
;
i
<
fp
->
symbols_per_tti
;
i
++
)
{
//
Do compression of the two parts and generate data blocks
//
Do compression of the two parts and generate data blocks
//symbol = eNB->common_vars.txdataF[0][0 /*antenna number*/][subframe*fp->ofdm_symbol_size*(fp->symbols_per_tti)]
//data_block[j] = Atan(symbol[fp->ofmd_symbol_size - NrOfNonZeroValues + j -1])<<16 + Atan(symbol[fp->ofmd_symbol_size - NrOfNonZeroValues + j]);
//data_block[j+NrOfNonZeroValues] = Atan(subframe[i][j+1])<<16 + Atan(subframe[i][j+2]);
// Set data blocks and update subframe no./other information to generated packet
// Update information in generated packet
dl_packet
->
frame_status
.
sym_num
=
i
;
// Write the packet(s) to the fronthaul
}
}
else
{
IF4_ul_packet_t
*
ul_packet
=
(
IF4_ul_packet_t
*
)
malloc
(
sizeof_IF4_ul_packet_t
);
gen_IF4_ul_packet
(
ul_packet
,
proc
);
ul_packet
->
data_block
=
data_block
;
for
(
i
=
0
;
i
<
fp
->
symbols_per_tti
;
i
++
)
{
//Do compression of the two parts and generate data blocks
//symbol = eNB->common_vars.txdataF[0][0 /*antenna number*/][subframe*fp->ofdm_symbol_size*(fp->symbols_per_tti)]
//data_block[j] = Atan(symbol[fp->ofmd_symbol_size - NrOfNonZeroValues + j -1])<<16 + Atan(symbol[fp->ofmd_symbol_size - NrOfNonZeroValues + j]);
//data_block[j+NrOfNonZeroValues] = Atan(subframe[i][j+1])<<16 + Atan(subframe[i][j+2]);
// Update information in generated packet
ul_packet
->
frame_status
.
sym_num
=
i
;
// Write the packet(s) to the fronthaul
//}
}
}
//
}
}
void
recv_IF4
(
/* ADD INFO and data_block pointer */
)
{
void
recv_IF4
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
)
{
// Read packet(s) from the fronthaul
...
...
@@ -85,113 +108,69 @@ void recv_IF4( /* ADD INFO and data_block pointer */ ) {
// Generate and return the OFDM symbols (txdataF)
}
struct
IF4_dl_packet
gen_IF4_dl_packet
(
/* ADD INFO and data_block pointer */
)
{
struct
IF4_dl_packet
dl_packet
;
// Caller: RRU - DL *** handle RCC case - UL and PRACH ***
// Set destination and source address
}
void
gen_IF4_dl_packet
(
IF4_dl_packet_t
*
dl_packet
,
eNB_rxtx_proc_t
*
proc
)
{
// Set Type and Sub-Type
dl_packet
.
type
=
0x080A
;
dl_packet
.
sub_type
=
0x0020
;
dl_packet
->
type
=
0x080A
;
dl_packet
->
sub_type
=
0x0020
;
// Leave reserved as it is
//dl_packet.rsvd =
;
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
=
0
;
dl_packet
.
frame_status
.
sf_num
=
0
;
dl_packet
.
frame_status
.
sym_num
=
0
;
//dl_packet.frame_status.rsvd = ;
// Set data blocks if sent
//if (data_block != NULL) {
//
//} else {
//
//}
dl_packet
->
frame_status
.
ant_num
=
0
;
dl_packet
->
frame_status
.
ant_start
=
0
;
dl_packet
->
frame_status
.
rf_num
=
proc
->
frame_tx
;
dl_packet
->
frame_status
.
sf_num
=
proc
->
subframe_tx
;
dl_packet
->
frame_status
.
sym_num
=
0
;
dl_packet
->
frame_status
.
rsvd
=
0
;
// Set frame check sequence
dl_packet
.
fcs
=
0
;
return
dl_packet
;
dl_packet
->
fcs
=
0
;
}
struct
IF4_ul_packet
gen_IF4_ul_packet
(
/* ADD INFO and data_block pointer */
)
{
struct
IF4_ul_packet
ul_packet
;
// Set destination and source address
void
gen_IF4_ul_packet
(
IF4_ul_packet_t
*
ul_packet
,
eNB_rxtx_proc_t
*
proc
)
{
// Set Type and Sub-Type
ul_packet
.
type
=
0x080A
;
ul_packet
.
sub_type
=
0x0019
;
ul_packet
->
type
=
0x080A
;
ul_packet
->
sub_type
=
0x0019
;
// Leave reserved as it is
//ul_packet.rsvd =
;
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
=
0
;
ul_packet
.
frame_status
.
sf_num
=
0
;
ul_packet
.
frame_status
.
sym_num
=
0
;
//ul_packet.frame_status.rsvd = ;
// Set antenna specific gain
ul_packet
.
gain0
.
exponent
=
0
;
//ul_packet.gain0.rsvd = ;
// Set data blocks if sent
//if (data_block != NULL) {
//
//} else {
//
//}
ul_packet
->
frame_status
.
ant_num
=
0
;
ul_packet
->
frame_status
.
ant_start
=
0
;
ul_packet
->
frame_status
.
rf_num
=
proc
->
frame_rx
;
ul_packet
->
frame_status
.
sf_num
=
proc
->
subframe_rx
;
ul_packet
->
frame_status
.
sym_num
=
0
;
ul_packet
->
frame_status
.
rsvd
=
0
;
// Set frame check sequence
ul_packet
.
fcs
=
0
;
// Set antenna specific gain *** set other antenna gain ***
ul_packet
->
gain0
.
exponent
=
0
;
ul_packet
->
gain0
.
rsvd
=
0
;
return
ul_packet
;
// Set frame check sequence
ul_packet
->
fcs
=
0
;
}
struct
IF4_prach_packet
gen_IF4_prach_packet
(
/* ADD INFO and data_block pointer */
)
{
struct
IF4_prach_packet
prach_packet
;
// Set destination and source address
void
gen_IF4_prach_packet
(
IF4_prach_packet_t
*
prach_packet
,
eNB_rxtx_proc_t
*
proc
)
{
// Set Type and Sub-Type
prach_packet
.
type
=
0x080A
;
prach_packet
.
sub_type
=
0x0021
;
prach_packet
->
type
=
0x080A
;
prach_packet
->
sub_type
=
0x0021
;
// Leave reserved as it is
//prach_packet.rsvd =
;
prach_packet
->
rsvd
=
0
;
// Set LTE Prach configuration
//prach_packet.prach_conf.rsvd = ;
prach_packet
.
prach_conf
.
ant
=
0
;
prach_packet
.
prach_conf
.
rf_num
=
0
;
prach_packet
.
prach_conf
.
sf_num
=
0
;
prach_packet
.
prach_conf
.
exponent
=
0
;
// Set data blocks if sent
//if (data_block != NULL) {
//
//} else {
//
//}
prach_packet
->
prach_conf
.
rsvd
=
0
;
prach_packet
->
prach_conf
.
ant
=
0
;
prach_packet
->
prach_conf
.
rf_num
=
proc
->
frame_rx
;
prach_packet
->
prach_conf
.
sf_num
=
proc
->
subframe_rx
;
prach_packet
->
prach_conf
.
exponent
=
0
;
// Set frame check sequence
prach_packet
.
fcs
=
0
;
return
prach_packet
;
}
int
main
(){
uint32_t
i
=
0
;
return
0
;
prach_packet
->
fcs
=
0
;
}
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/if4_tools.h
View file @
d51d5dee
...
...
@@ -54,6 +54,9 @@ 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
...
...
@@ -62,6 +65,9 @@ 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
...
...
@@ -76,6 +82,9 @@ 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_packet
{
/// Destination Address
...
...
@@ -88,13 +97,15 @@ struct IF4_dl_packet {
/// Reserved
uint32_t
rsvd
;
/// Frame Status
struct
IF4_frame_status
frame_status
;
IF4_frame_status_t
frame_status
;
/// Data Blocks
uint16_t
*
data_block
;
/// Frame Check Sequence
uint32_t
fcs
;
};
typedef
struct
IF4_dl_packet
IF4_dl_packet_t
;
#define sizeof_IF4_dl_packet_t 18
struct
IF4_ul_packet
{
/// Destination Address
...
...
@@ -108,29 +119,32 @@ struct IF4_ul_packet {
/// Reserved
uint32_t
rsvd
;
/// Frame Status
struct
IF4_frame_status
frame_status
;
IF4_frame_status_t
frame_status
;
/// Gain 0
struct
IF4_gain
gain0
;
IF4_gain_t
gain0
;
/// Gain 1
struct
IF4_gain
gain1
;
IF4_gain_t
gain1
;
/// Gain 2
struct
IF4_gain
gain2
;
IF4_gain_t
gain2
;
/// Gain 3
struct
IF4_gain
gain3
;
IF4_gain_t
gain3
;
/// Gain 4
struct
IF4_gain
gain4
;
IF4_gain_t
gain4
;
/// Gain 5
struct
IF4_gain
gain5
;
IF4_gain_t
gain5
;
/// Gain 6
struct
IF4_gain
gain6
;
IF4_gain_t
gain6
;
/// Gain 7
struct
IF4_gain
gain7
;
IF4_gain_t
gain7
;
/// Data Blocks
uint16_t
*
data_block
;
/// Frame Check Sequence
uint32_t
fcs
;
};
typedef
struct
IF4_ul_packet
IF4_ul_packet_t
;
#define sizeof_IF4_ul_packet_t 34
struct
IF4_prach_packet
{
/// Destination Address
...
...
@@ -143,21 +157,22 @@ struct IF4_prach_packet {
/// Reserved
uint32_t
rsvd
;
/// LTE Prach Configuration
struct
IF4_lte_prach_conf
prach_conf
;
IF4_lte_prach_conf_t
prach_conf
;
/// Prach Data Block (one antenna)
uint16_t
*
data_block
;
/// Frame Check Sequence
uint32_t
fcs
;
};
// Needs to be checked
typedef
struct
IF4_prach_packet
IF4_prach_packet_t
;
#define sizeof_IF4_prach_packet_t 18
struct
IF4_dl_packet
gen_IF4_dl_packet
(
);
void
gen_IF4_dl_packet
(
IF4_dl_packet_t
*
,
eNB_rxtx_proc_t
*
);
struct
IF4_ul_packet
gen_IF4_ul_packet
(
);
void
gen_IF4_ul_packet
(
IF4_ul_packet_t
*
,
eNB_rxtx_proc_t
*
);
struct
IF4_prach_packet
gen_IF4_prach_packet
(
);
void
gen_IF4_prach_packet
(
IF4_prach_packet_t
*
,
eNB_rxtx_proc_t
*
);
void
send_IF4
(
/* ADD INFO */
);
void
send_IF4
(
PHY_VARS_eNB
*
,
eNB_rxtx_proc_t
*
);
void
recv_IF4
(
/* ADD INFO */
);
void
recv_IF4
(
PHY_VARS_eNB
*
,
eNB_rxtx_proc_t
*
);
This diff is collapsed.
Click to expand it.
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