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
wangjie
OpenXG-RAN
Commits
30f1443a
Commit
30f1443a
authored
Jul 25, 2018
by
Matthieu Kanj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
preparing UL_indication
parent
ef3e40df
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
93 additions
and
18 deletions
+93
-18
openair1/PHY/LTE_TRANSPORT/nprach_NB_IoT.c
openair1/PHY/LTE_TRANSPORT/nprach_NB_IoT.c
+7
-7
openair1/PHY/LTE_TRANSPORT/proto_NB_IoT.h
openair1/PHY/LTE_TRANSPORT/proto_NB_IoT.h
+1
-1
openair1/PHY/defs.h
openair1/PHY/defs.h
+7
-5
openair1/SCHED/defs.h
openair1/SCHED/defs.h
+5
-0
openair1/SCHED/defs_NB_IoT.h
openair1/SCHED/defs_NB_IoT.h
+1
-1
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+65
-1
openair1/SCHED/phy_procedures_lte_eNb_NB_IoT.c
openair1/SCHED/phy_procedures_lte_eNb_NB_IoT.c
+2
-2
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+5
-1
No files found.
openair1/PHY/LTE_TRANSPORT/nprach_NB_IoT.c
View file @
30f1443a
...
...
@@ -405,7 +405,7 @@ void filtering_signal(int16_t *input_buffer, int16_t *filtered_buffer, uint32_t
}
uint32_t
RX_NPRACH
_NB_IoT
(
PHY_VARS_eNB
*
eNB
,
int
frame
){
uint32_t
process_nprach
_NB_IoT
(
PHY_VARS_eNB
*
eNB
,
int
frame
){
//uint32_t estimated_TA_coarse=0;
...
...
@@ -443,12 +443,12 @@ uint32_t RX_NPRACH_NB_IoT(PHY_VARS_eNB *eNB, int frame){
if
(
NPRACH_detection_NB_IoT
(
Rx_sub_sampled_buffer_128
,
*
length_ouput
)){
/*estimated_TA_coarse = TA_estimation_NB_IoT(eNB,
Rx_sub_sampled_buffer_128,
sub_sampling_rate,
FRAME_LENGTH_COMPLEX_SUB_SAMPLES,
estimated_TA_coarse,
coarse);
/*
estimated_TA_coarse = TA_estimation_NB_IoT(eNB,
Rx_sub_sampled_buffer_128,
sub_sampling_rate,
FRAME_LENGTH_COMPLEX_SUB_SAMPLES,
estimated_TA_coarse,
coarse);
// 2. Fine TA estimation using sub sampling rate = 16, i.e. fs = 1.92 MHz
...
...
openair1/PHY/LTE_TRANSPORT/proto_NB_IoT.h
View file @
30f1443a
...
...
@@ -378,7 +378,7 @@ void lte_idft_NB_IoT(LTE_DL_FRAME_PARMS *frame_parms,uint32_t *z, uint16_t Msc_P
void
extract_CQI_NB_IoT
(
void
*
o
,
UCI_format_NB_IoT_t
uci_format
,
NB_IoT_eNB_UE_stats
*
stats
,
uint8_t
N_RB_DL
,
uint16_t
*
crnti
,
uint8_t
*
access_mode
);
//*****************Vincent part for nprach ******************//
uint32_t
RX_NPRACH
_NB_IoT
(
PHY_VARS_eNB
*
eNB
,
int
frame
);
uint32_t
process_nprach
_NB_IoT
(
PHY_VARS_eNB
*
eNB
,
int
frame
);
uint32_t
TA_estimation_NB_IoT
(
PHY_VARS_eNB
*
eNB
,
int16_t
*
Rx_sub_sampled_buffer
,
...
...
openair1/PHY/defs.h
View file @
30f1443a
...
...
@@ -507,7 +507,6 @@ typedef struct PHY_VARS_eNB_s {
/// Pointer for ifdevice buffer struct
if_buffer_t
ifbuffer
;
/////////////// NB-IoT testing ////////////////////////////
volatile
uint16_t
preamble_index_NB_IoT
;
NB_IoT_eNB_NPBCH_t
npbch
;
...
...
@@ -519,12 +518,15 @@ NB_IoT_eNB_NPDCCH_temp_t npdcch_tmp;
NB_IoT_eNB_NULSCH_t
*
ulsch_NB_IoT
[
NUMBER_OF_UE_MAX
+
1
];
////////////// For IF Module /////////////////////////////
IF_Module_NB_IoT_t
*
if_inst
;
UL_IND_NB_IoT_t
UL_INFO
;
IF_Module_NB_IoT_t
*
if_inst
;
// should be replaced by if_inst_NB_IoT; to avoid conflict during the merge with develop branch
UL_IND_NB_IoT_t
UL_INFO
;
// should be replaced by UL_INFO_NB_IoT;
pthread_mutex_t
UL_INFO_mutex
;
/// NFAPI NPRACH information
//nfapi_preamble_pdu_t preamble_list_NB_IoT[MAX_NUM_RX_PRACH_PREAMBLES]; // MAX_NUM_RX_PRACH_PREAMBLES in PHY/defs_eNB.h
//nfapi_preamble_pdu_t preamble_list_NB_IoT[4];
uint8_t
msg3_pdu
[
6
];
//////////////////// END /////////////////////////////////
}
PHY_VARS_eNB
;
#define debug_msg if (((mac_xface->frame%100) == 0) || (mac_xface->frame < 50)) msg
...
...
openair1/SCHED/defs.h
View file @
30f1443a
...
...
@@ -203,6 +203,11 @@ void phy_procedures_eNB_S_RX(PHY_VARS_eNB *phy_vars_eNB,eNB_rxtx_proc_t *proc,re
*/
void
prach_procedures
(
PHY_VARS_eNB
*
eNB
);
///////// NB_IoT testing ///////////////////////////
void
prach_procedures_NB_IoT
(
PHY_VARS_eNB
*
eNB
);
///////////////////////////////////////////////////
/*! \brief Function to compute subframe type as a function of Frame type and TDD Configuration (implements Table 4.2.2 from 36.211, p.11 from version 8.6) and subframe index.
@param frame_parms Pointer to DL frame parameter descriptor
@param subframe Subframe index
...
...
openair1/SCHED/defs_NB_IoT.h
View file @
30f1443a
...
...
@@ -48,7 +48,7 @@ uint32_t is_SIB1_NB_IoT(const frame_t frameP,
NB_IoT_eNB_NDLSCH_t
*
ndlsch_SIB1
);
uint32_t
nprach_procedures
_NB_IoT
(
PHY_VARS_eNB
*
eNB
);
uint32_t
rx_nprach
_NB_IoT
(
PHY_VARS_eNB
*
eNB
);
#endif
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
30f1443a
...
...
@@ -2882,6 +2882,70 @@ void get_n1_pucch_eNB(PHY_VARS_eNB *eNB,
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////// NB-IoT ////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void
prach_procedures_NB_IoT
(
PHY_VARS_eNB
*
eNB
)
{
// LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
// uint16_t preamble_energy_list[64],preamble_delay_list[64];
// uint16_t preamble_max,preamble_energy_max;
// uint16_t preamble_max=0;
// uint16_t i;
// int8_t UE_id;
int
subframe
=
eNB
->
proc
.
subframe_prach
;
int
frame
=
eNB
->
proc
.
frame_prach
;
// uint8_t CC_id = eNB->CC_id;
uint32_t
detection
=
0
;
uint16_t
estimated_TA
=
2
;
if
(
eNB
->
abstraction_flag
==
0
)
{
/*LOG_D(PHY,"[eNB %d][RAPROC] Frame %d, Subframe %d : PRACH RX Signal Power : %d dBm\n",eNB->Mod_id,
frame,subframe,dB_fixed(signal_energy(&eNB->common_vars.rxdata[0][0][subframe*fp->samples_per_tti],512)) - eNB->rx_total_gain_dB);
rx_prach(eNB,
preamble_energy_list,
preamble_delay_list,
frame,
0);*/
//usleep(100);
detection
=
rx_nprach_NB_IoT
(
eNB
);
/* } else {
for (UE_id=0; UE_id<NB_UE_INST; UE_id++) {
LOG_D(PHY,"[RAPROC] UE_id %d (%p), generate_prach %d, UE RSI %d, eNB RSI %d preamble index %d\n",
UE_id,PHY_vars_UE_g[UE_id][CC_id],PHY_vars_UE_g[UE_id][CC_id]->generate_prach,
PHY_vars_UE_g[UE_id][CC_id]->frame_parms.prach_config_common.rootSequenceIndex,
fp->prach_config_common.rootSequenceIndex,
PHY_vars_UE_g[UE_id][CC_id]->prach_PreambleIndex);
if ((PHY_vars_UE_g[UE_id][CC_id]->generate_prach==1) &&
(PHY_vars_UE_g[UE_id][CC_id]->frame_parms.prach_config_common.rootSequenceIndex ==
fp->prach_config_common.rootSequenceIndex) ) {
preamble_energy_list[PHY_vars_UE_g[UE_id][CC_id]->prach_PreambleIndex] = 800;
preamble_delay_list[PHY_vars_UE_g[UE_id][CC_id]->prach_PreambleIndex] = 5;
}
} */
}
if
(
detection
==
1
)
{
mac_xface
->
initiate_ra_proc
(
eNB
->
Mod_id
,
eNB
->
CC_id
,
frame
,
eNB
->
preamble_index_NB_IoT
,
estimated_TA
,
0
,
subframe
,
0
);
}
}
//////////////////////////////////////////////////////////// END ///////////////////////////////////////////////////////////
void
prach_procedures
(
PHY_VARS_eNB
*
eNB
)
{
// LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
...
...
@@ -2912,7 +2976,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
frame,
0);*/
//usleep(100);
detection
=
nprach_procedures
_NB_IoT
(
eNB
);
detection
=
rx_nprach
_NB_IoT
(
eNB
);
/* } else {
for (UE_id=0; UE_id<NB_UE_INST; UE_id++) {
...
...
openair1/SCHED/phy_procedures_lte_eNb_NB_IoT.c
View file @
30f1443a
...
...
@@ -1516,7 +1516,7 @@ void phy_procedures_eNB_TX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,
}
uint32_t
nprach_procedures
_NB_IoT
(
PHY_VARS_eNB
*
eNB
)
{
uint32_t
rx_nprach
_NB_IoT
(
PHY_VARS_eNB
*
eNB
)
{
uint32_t
estimated_TA
;
int
frame
,
frame_mod
;
// subframe,
...
...
@@ -1530,7 +1530,7 @@ uint32_t nprach_procedures_NB_IoT(PHY_VARS_eNB *eNB) {
//if (subframe==1 && frame_mod==0 && frame!=0){
if
(
frame_mod
==
0
&&
frame
!=
0
){
//printf("\n frame_in = %i\n",frame);
estimated_TA
=
RX_NPRACH
_NB_IoT
(
eNB
,
frame
);
estimated_TA
=
process_nprach
_NB_IoT
(
eNB
,
frame
);
//printf("estim = %i\n",estimated_TA);
}
return
estimated_TA
;
...
...
targets/RT/USER/lte-enb.c
View file @
30f1443a
...
...
@@ -1602,7 +1602,11 @@ static void* eNB_thread_prach( void* param ) {
if
(
wait_on_condition
(
&
proc
->
mutex_prach
,
&
proc
->
cond_prach
,
&
proc
->
instance_cnt_prach
,
"eNB_prach_thread"
)
<
0
)
break
;
prach_procedures
(
eNB
);
//prach_procedures(eNB);
////// NB_IoT testing ///////
prach_procedures_NB_IoT
(
eNB
);
/////////////////////////////
if
(
release_thread
(
&
proc
->
mutex_prach
,
&
proc
->
instance_cnt_prach
,
"eNB_prach_thread"
)
<
0
)
break
;
}
...
...
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