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
8814974e
Commit
8814974e
authored
Jan 29, 2019
by
Matthieu Kanj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
replacing params in NPUSCH
parent
6d554b24
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
64 additions
and
71 deletions
+64
-71
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation_NB_IoT.c
...ir1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation_NB_IoT.c
+6
-6
openair1/PHY/LTE_TRANSPORT/SIB_NB_IoT.c
openair1/PHY/LTE_TRANSPORT/SIB_NB_IoT.c
+2
-0
openair1/PHY/LTE_TRANSPORT/nprach_NB_IoT.c
openair1/PHY/LTE_TRANSPORT/nprach_NB_IoT.c
+1
-1
openair1/PHY/LTE_TRANSPORT/proto_NB_IoT.h
openair1/PHY/LTE_TRANSPORT/proto_NB_IoT.h
+9
-12
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation_NB_IoT.c
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation_NB_IoT.c
+36
-30
openair1/SCHED/phy_procedures_lte_eNb_NB_IoT.c
openair1/SCHED/phy_procedures_lte_eNb_NB_IoT.c
+10
-22
No files found.
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation_NB_IoT.c
View file @
8814974e
...
...
@@ -163,14 +163,14 @@ int ul_chest_tmp_f2_NB_IoT(int32_t **rxdataF_ext,
uint8_t
flag
,
uint8_t
subframerx
,
uint8_t
Qm
,
uint
32_t
I_sc
,
uint
16_t
ul_sc_start
,
LTE_DL_FRAME_PARMS
*
frame_parms
)
{
// NB-IoT: 36.211, Section 5.5.2.2.1, Table 5.5.2.2.1-2
int16_t
bar_w_re
[
9
]
=
{
32767
,
32767
,
32767
,
32767
,
-
16384
,
-
16384
,
32767
,
-
16384
,
-
16384
};
int16_t
bar_w_im
[
9
]
=
{
0
,
0
,
0
,
0
,
28377
,
-
28377
,
0
,
-
28377
,
28377
};
int
pilot_pos_format2_15k
[
6
]
=
{
2
,
3
,
4
,
9
,
10
,
11
};
// holds for npusch format 2, and 15 kHz subcarrier bandwidth
uint16_t
ul_sc_start
;
// subcarrier start index into UL RB
//
uint16_t ul_sc_start; // subcarrier start index into UL RB
//uint8_t Qm = 1; // needed to rotate the estimated channel
uint32_t
u
;
//for group hopping
//uint32_t I_sc = 0;
...
...
@@ -189,7 +189,7 @@ int ul_chest_tmp_f2_NB_IoT(int32_t **rxdataF_ext,
pilot_pos_format2
=
pilot_pos_format2_15k
;
// In futur version, this could be adapted for 3.75 kHz
u
=
frame_parms
->
Nid_cell
%
16
;
ul_sc_start
=
get_UL_sc_start_NB_IoT
(
I_sc
);
// NB-IoT: get the used subcarrier in RB
//
ul_sc_start = get_UL_sc_start_NB_IoT(I_sc); // NB-IoT: get the used subcarrier in RB
symbol
=
l
+
7
*
(
Ns
&
1
);
if
(
l
==
pilot_pos_format2
[
0
]
||
l
==
pilot_pos_format2
[
1
]
||
l
==
pilot_pos_format2
[
2
])
...
...
@@ -283,12 +283,12 @@ int ul_chest_tmp_NB_IoT(int32_t **rxdataF_ext,
uint8_t
counter_msg3
,
/// should be replaced by the number of the received part of UL data
uint8_t
pilot_pos1
,
uint8_t
pilot_pos2
,
uint
32_t
I_sc
,
uint
16_t
ul_sc_start
,
uint8_t
Qm
,
LTE_DL_FRAME_PARMS
*
frame_parms
)
{
//int pilot_pos1 = 3, pilot_pos2 = 10; // holds for npusch format 1, and 15 kHz subcarrier bandwidth
uint16_t
ul_sc_start
;
// subcarrier start index into UL RB
//
uint16_t ul_sc_start; // subcarrier start index into UL RB
//uint8_t Qm = 2; // needed to rotate the estimated channel
uint32_t
u
;
//for group hopping
int
symbol_offset
;
...
...
@@ -302,7 +302,7 @@ int ul_chest_tmp_NB_IoT(int32_t **rxdataF_ext,
int16_t
*
ul_ch1
,
*
ul_ch2
;
u
=
frame_parms
->
Nid_cell
%
16
;
//Ncell_ID%16;
ul_sc_start
=
get_UL_sc_start_NB_IoT
(
I_sc
);
// NB-IoT: get the used subcarrier in RB // I_sc = 11 for testing
//
ul_sc_start = get_UL_sc_start_NB_IoT(I_sc); // NB-IoT: get the used subcarrier in RB // I_sc = 11 for testing
symbol
=
l
+
7
*
(
Ns
&
1
);
if
(
l
==
pilot_pos1
)
...
...
openair1/PHY/LTE_TRANSPORT/SIB_NB_IoT.c
View file @
8814974e
...
...
@@ -220,6 +220,8 @@ int generate_NDLSCH_NB_IoT(NB_IoT_eNB_NDLSCH_t *RAR,
{
uint8_t
*
RAR_pdu
=
RAR
->
harq_process
->
pdu
;
// TODO: process the RAR PDU to get the subcarrier indication for NPUSCH , Then set value in NPUSCH
// to be added at the end of NPDSCH process
// make different between RAR data and NPDSCH data // add a flag in NPDSCH to switch between RA and normal data transmission
uint32_t
rep
=
RAR
->
repetition_number
;
uint8_t
eutra_control_region
=
3
;
...
...
openair1/PHY/LTE_TRANSPORT/nprach_NB_IoT.c
View file @
8814974e
...
...
@@ -405,7 +405,7 @@ void filtering_signal(int16_t *input_buffer, int16_t *filtered_buffer, uint32_t
}
uint32_t
process_nprach_NB_IoT
(
PHY_VARS_eNB
*
eNB
,
int
frame
,
uint8_t
subframe
,
uint
32
_t
*
rnti
,
uint16_t
*
preamble_index
,
uint16_t
*
timing_advance
){
uint32_t
process_nprach_NB_IoT
(
PHY_VARS_eNB
*
eNB
,
int
frame
,
uint8_t
subframe
,
uint
16
_t
*
rnti
,
uint16_t
*
preamble_index
,
uint16_t
*
timing_advance
){
//uint32_t estimated_TA_coarse=0;
...
...
openair1/PHY/LTE_TRANSPORT/proto_NB_IoT.h
View file @
8814974e
...
...
@@ -357,15 +357,14 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
eNB_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
// this is the effective sector id
uint8_t
UE_id
,
NB_IoT_eNB_NULSCH_t
**
ulsch
,
uint8_t
npusch_format
,
// 1, 2
//
NB_IoT_eNB_NULSCH_t **ulsch,
//
uint8_t npusch_format, // 1, 2
uint16_t
UL_RB_ID_NB_IoT
,
// 22 , to be included in // to be replaced by NB_IoT_start ??
uint8_t
subcarrier_spacing
,
// 0 (3.75 KHz) or 1 (15 KHz)
uint32_t
rnti_tmp
,
//= 65522
// uint8_t subcarrier_spacing, // 0 (3.75 KHz) or 1 (15 KHz)
uint8_t
scrambling_subframe_msg3
,
uint32_t
scrambling_frame_msg3
,
uint16_t
nb_slot
,
// total number of occupied slots
uint16_t
I_sc
,
//
uint16_t I_sc,
uint16_t
Nsc_RU
,
uint16_t
Mcs
,
unsigned
int
A
,
...
...
@@ -376,10 +375,8 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
void
ulsch_extract_rbs_single_NB_IoT
(
int32_t
**
rxdataF
,
int32_t
**
rxdataF_ext
,
// uint32_t first_rb,
uint16_t
UL_RB_ID_NB_IoT
,
// index of UL NB_IoT resource block !!! may be defined twice : in frame_parms and in NB_IoT_UL_eNB_HARQ_t
uint8_t
N_sc_RU
,
// number of subcarriers in UL
uint8_t
subframe
,
// uint32_t I_sc, // NB_IoT: subcarrier indication field: must be defined in higher layer
uint8_t
l
,
uint8_t
Ns
,
LTE_DL_FRAME_PARMS
*
frame_parms
);
...
...
@@ -405,7 +402,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
process_nprach_NB_IoT
(
PHY_VARS_eNB
*
eNB
,
int
frame
,
uint8_t
subframe
,
uint
32
_t
*
rnti
,
uint16_t
*
preamble_index
,
uint16_t
*
timing_advance
);
uint32_t
process_nprach_NB_IoT
(
PHY_VARS_eNB
*
eNB
,
int
frame
,
uint8_t
subframe
,
uint
16
_t
*
rnti
,
uint16_t
*
preamble_index
,
uint16_t
*
timing_advance
);
uint32_t
TA_estimation_NB_IoT
(
PHY_VARS_eNB
*
eNB
,
int16_t
*
Rx_sub_sampled_buffer
,
...
...
@@ -453,7 +450,7 @@ void rotate_single_carrier_NB_IoT(PHY_VARS_eNB *eNB,
uint8_t
UE_id
,
uint8_t
symbol
,
uint8_t
counter_msg3
,
uint
32_t
I_sc
,
uint
16_t
ul_sc_start
,
uint8_t
Qm
,
uint8_t
option
);
...
...
@@ -550,7 +547,7 @@ int ul_chest_tmp_NB_IoT(int32_t **rxdataF_ext,
uint8_t
counter_msg3
,
uint8_t
pilot_pos1
,
uint8_t
pilot_pos2
,
uint
32_t
I_sc
,
uint
16_t
ul_sc_start
,
uint8_t
Qm
,
LTE_DL_FRAME_PARMS
*
frame_parms
);
...
...
@@ -563,7 +560,7 @@ int ul_chest_tmp_f2_NB_IoT(int32_t **rxdataF_ext,
uint8_t
flag
,
uint8_t
subframerx
,
uint8_t
Qm
,
uint
32_t
I_sc
,
uint
16_t
ul_sc_start
,
LTE_DL_FRAME_PARMS
*
frame_parms
);
void
rotate_channel_sc_tmp_NB_IoT
(
int16_t
*
estimated_channel
,
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation_NB_IoT.c
View file @
8814974e
...
...
@@ -611,10 +611,8 @@ void ulsch_detection_mrc_NB_IoT(LTE_DL_FRAME_PARMS *frame_parms,
void
ulsch_extract_rbs_single_NB_IoT
(
int32_t
**
rxdataF
,
int32_t
**
rxdataF_ext
,
// uint32_t first_rb,
uint16_t
UL_RB_ID_NB_IoT
,
// index of UL NB_IoT resource block !!! may be defined twice : in frame_parms and in NB_IoT_UL_eNB_HARQ_t
uint8_t
N_sc_RU
,
// number of subcarriers in UL
uint8_t
I_sc
,
// uint32_t I_sc, // NB_IoT: subcarrier indication field: must be defined in higher layer
uint8_t
l
,
uint8_t
Ns
,
LTE_DL_FRAME_PARMS
*
frame_parms
)
...
...
@@ -1369,13 +1367,13 @@ void rotate_single_carrier_NB_IoT(PHY_VARS_eNB *eNB,
uint8_t
eNB_id
,
// to be removed ??? since not used
uint8_t
l
,
//symbol within subframe
uint8_t
counter_msg3
,
/// to be replaced by the number of received part
uint
32_t
I_sc
,
uint
16_t
ul_sc_start
,
uint8_t
Qm
,
uint8_t
option
)
// 0 for data and 1 for ACK
{
//uint32_t I_sc = 11;//eNB->ulsch_NB_IoT[UE_id]->harq_process->I_sc; // NB_IoT: subcarrier indication field: must be defined in higher layer
uint16_t
ul_sc_start
;
// subcarrier start index into UL RB
//
uint16_t ul_sc_start; // subcarrier start index into UL RB
int16_t
pi_2_re
[
2
]
=
{
32767
,
0
};
int16_t
pi_2_im
[
2
]
=
{
0
,
32767
};
//int16_t pi_4_re[2] = {32767 , 25735};
...
...
@@ -1389,7 +1387,7 @@ void rotate_single_carrier_NB_IoT(PHY_VARS_eNB *eNB,
int16_t
*
rxdataF_comp16
;
int16_t
rxdataF_comp16_re
,
rxdataF_comp16_im
,
rxdataF_comp16_re_2
,
rxdataF_comp16_im_2
;
ul_sc_start
=
get_UL_sc_start_NB_IoT
(
I_sc
);
// NB-IoT: get the used subcarrier in RB
//
ul_sc_start = get_UL_sc_start_NB_IoT(I_sc); // NB-IoT: get the used subcarrier in RB
rxdataF_comp16
=
(
int16_t
*
)
&
rxdataF_comp
[
eNB_id
][
l
*
frame_parms
->
N_RB_DL
*
12
+
ul_sc_start
];
rxdataF_comp16_re
=
rxdataF_comp16
[
0
];
rxdataF_comp16_im
=
rxdataF_comp16
[
1
];
...
...
@@ -1620,15 +1618,14 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
eNB_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
// this is the effective sector id
uint8_t
UE_id
,
NB_IoT_eNB_NULSCH_t
**
ulsch
,
uint8_t
npusch_format
,
// 1, 2
//NB_IoT_eNB_NULSCH_t **ulsch_NB_IoT,
// npusch format
uint16_t
UL_RB_ID_NB_IoT
,
// 22 , to be included in // to be replaced by NB_IoT_start ??
uint8_t
subcarrier_spacing
,
// 0 (3.75 KHz) or 1 (15 KHz)
uint32_t
rnti_tmp
,
//= 65522
// uint8_t subcarrier_spacing, // 0 (3.75 KHz) or 1 (15 KHz)
uint8_t
scrambling_subframe_msg3
,
// first received subframe
uint32_t
scrambling_frame_msg3
,
// first received frame
uint16_t
nb_slot
,
// total number of occupied slots
uint16_t
I_sc
,
// I_sc
uint16_t
Nsc_RU
,
// to remove and create function Nsc_RU = f(I_sc)
uint16_t
Mcs
,
unsigned
int
A
,
// A = TBS
...
...
@@ -1637,21 +1634,31 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
uint8_t
rvdx
,
uint8_t
msg3_flag
)
// data (0) or control (1)
{
//LTE_eNB_PUSCH *pusch_vars = eNB->pusch_vars[UE_id];
LTE_eNB_PUSCH
*
pusch_vars
=
eNB
->
pusch_vars
[
UE_id
];
LTE_eNB_COMMON
*
common_vars
=
&
eNB
->
common_vars
;
//NB_IoT_DL_FRAME_PARMS *frame_parms = &eNB->frame_parms;
// uint8_t Nsc_RU = eNB->ulsch_NB_IoT[UE_id]->harq_process->N_sc_RU; // Vincent: number of sc 1,3,6,12
LTE_DL_FRAME_PARMS
*
fp
=
&
eNB
->
frame_parms
;
NB_IoT_eNB_NULSCH_t
**
ulsch_NB_IoT
=
&
eNB
->
ulsch_NB_IoT
;
//[0][0];
// NB_IoT_eNB_NULSCH_t **ulsch_NB_IoT = &eNB->ulsch_NB_IoT[0];//[0][0];
NB_IoT_eNB_NULSCH_t
*
ulsch_NB_IoT
=
eNB
->
ulsch_NB_IoT
[
0
];
NB_IoT_UL_eNB_HARQ_t
*
ulsch_harq
=
ulsch_NB_IoT
->
harq_process
;
//int l;
//int16_t *llrp;
int16_t
*
llrp
,
*
llrp2
;
//uint8_t nb_rb=1; //ulsch_NB_IoT[0]->harq_process->nb_rb, high level parameter always one, to take into account in case it is changed in the 3GPP spec
uint32_t
l
,
ii
=
0
;
//,i;
uint32_t
rnti_tmp
=
ulsch_NB_IoT
->
rnti
;
////////////////////////////////////////////////////////
uint8_t
npusch_format
=
ulsch_NB_IoT
->
npusch_format
;
// 1, 2 /// TOFIXE values 0, 1
uint8_t
subcarrier_spacing
=
ulsch_harq
->
subcarrier_spacing
;
// can be set as fix value //values are OK // 0 (3.75 KHz) or 1 (15 KHz)
uint16_t
I_sc
=
ulsch_harq
->
subcarrier_indication
;
// Isc =0->18 , or 0->47 // format 2, 0->3 or 0->7
//int32_t avgs;
// uint8_t log2_maxh = 0,aarx;
//uint8_t harq_pid;
uint16_t
ul_sc_start
=
get_UL_sc_index_start_NB_IoT
(
subcarrier_spacing
,
I_sc
,
npusch_format
);
uint8_t
Qm
;
int
subframe
=
proc
->
subframe_rx
;
// only used in the crc_indication !!
int
frame
=
proc
->
frame_rx
;
// only used in the crc_indication !!
...
...
@@ -1674,25 +1681,25 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
switch
(
npusch_format
+
subcarrier_spacing
*
2
)
{
case
1
:
case
0
:
// data
pilot_pos1
=
pilot_pos1_format1_3_75k
;
pilot_pos2
=
pilot_pos2_format1_3_75k
;
pilots_slot
=
1
;
break
;
case
2
:
case
1
:
// ACK
pilot_pos1
=
pilot_pos1_format2_3_75k
;
pilot_pos2
=
pilot_pos2_format2_3_75k
;
pilots_slot
=
3
;
break
;
case
3
:
case
2
:
// data
pilot_pos1
=
pilot_pos1_format1_15k
;
pilot_pos2
=
pilot_pos2_format1_15k
;
pilots_slot
=
1
;
break
;
case
4
:
case
3
:
// ACK
pilot_pos1
=
pilot_pos1_format2_15k
;
pilot_pos2
=
pilot_pos2_format2_15k
;
pilots_slot
=
3
;
...
...
@@ -1709,11 +1716,10 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
pusch_vars
->
rxdataF_ext
[
eNB_id
],
UL_RB_ID_NB_IoT
,
//ulsch[UE_id]->harq_process->UL_RB_ID_NB_IoT, // index of UL NB_IoT resource block
Nsc_RU
,
//1, //ulsch_NB_IoT[0]->harq_process->N_sc_RU, // number of subcarriers in UL //////////////// high level parameter
I_sc
,
//used??????? // ulsch[UE_id]->harq_process->I_sc, // subcarrier indication field
l
%
(
fp
->
symbols_per_tti
/
2
),
// (0..13)
l
/
(
fp
->
symbols_per_tti
/
2
),
// (0,1)
fp
);
if
(
npusch_format
==
1
)
if
(
npusch_format
==
0
)
{
ul_chest_tmp_NB_IoT
(
pusch_vars
->
rxdataF_ext
[
eNB_id
],
pusch_vars
->
drs_ch_estimates
[
eNB_id
],
...
...
@@ -1722,7 +1728,7 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
counter_msg
,
pilot_pos1
,
pilot_pos2
,
I_sc
,
ul_sc_start
,
Qm
,
fp
);
}
else
{
...
...
@@ -1735,7 +1741,7 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
proc
->
flag_msg5
,
// =1
subframerx
,
Qm
,
// =1
I_sc
,
// = 0
ul_sc_start
,
// = 0
fp
);
}
}
...
...
@@ -1752,7 +1758,7 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
fp
);
}
if
(
npusch_format
==
1
)
if
(
npusch_format
==
0
)
{
for
(
l
=
0
;
l
<
fp
->
symbols_per_tti
;
l
++
)
{
...
...
@@ -1764,7 +1770,7 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
UE_id
,
// UE ID
l
,
counter_msg
,
I_sc
,
ul_sc_start
,
Qm
,
0
);
// or data
}
...
...
@@ -1779,7 +1785,7 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
eNB_id
,
// eNB_ID ID
l
,
counter_msg
,
I_sc
,
// carrier 0
ul_sc_start
,
// carrier 0
Qm
,
// Qm
1
);
// for ACK
}
...
...
@@ -1788,7 +1794,7 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
if
(
npusch_format
==
1
)
if
(
npusch_format
==
0
)
{
llrp
=
(
int16_t
*
)
&
pusch_vars
->
llr
[
0
+
(
8
-
counter_msg
)
*
24
];
...
...
@@ -1801,7 +1807,7 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
{
if
(
l
==
pilot_pos1
||
l
==
pilot_pos2
)
// skip pilots // option 0 pilots = x,y, for option 1 pilots = 2,9 (subcarrier_spacing=1, npush_format=1)
{
if
(
npusch_format
==
1
)
if
(
npusch_format
==
0
)
{
l
++
;
}
else
{
...
...
@@ -1826,7 +1832,7 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
if
(
counter_msg
==
1
)
{
int16_t
*
ulsch_llr
=
eNB
->
pusch_vars
[
eNB_id
]
->
llr
;
//UE_id=0
NB_IoT_UL_eNB_HARQ_t
*
ulsch_harq
=
ulsch_NB_IoT
[
UE_id
]
->
harq_process
;
//unsigned int A;
unsigned
int
j
,
j2
;
//i2,
int
iprime
;
...
...
@@ -1845,7 +1851,7 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
uint8_t
counter_ack
;
// ack counter for decision ack/nack
int32_t
counter_ack_soft
;
if
(
npusch_format
==
1
)
if
(
npusch_format
==
0
)
{
// NB-IoT ///////////////////////////////////////////////
// x1 is set in lte_gold_generic
...
...
@@ -2050,7 +2056,7 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
Kr
,
f1f2mat_old
[
iind
*
2
],
f1f2mat_old
[(
iind
*
2
)
+
1
],
ulsch_NB_IoT
[
UE_id
]
->
max_turbo_iterations
,
//MAX_TURBO_ITERATIONS,
ulsch_NB_IoT
->
max_turbo_iterations
,
//MAX_TURBO_ITERATIONS,
crc_type
,
(
r
==
0
)
?
ulsch_harq
->
F
:
0
,
&
eNB
->
ulsch_tc_init_stats
,
...
...
@@ -2061,7 +2067,7 @@ uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB,
&
eNB
->
ulsch_tc_intl1_stats
,
&
eNB
->
ulsch_tc_intl2_stats
);
if
(
ret
!=
(
1
+
ulsch_NB_IoT
[
UE_id
]
->
max_turbo_iterations
))
if
(
ret
!=
(
1
+
ulsch_NB_IoT
->
max_turbo_iterations
))
{
//printf("\n in last cdn \n");
if
(
r
<
ulsch_harq
->
Cminus
)
...
...
openair1/SCHED/phy_procedures_lte_eNb_NB_IoT.c
View file @
8814974e
...
...
@@ -1247,14 +1247,14 @@ void phy_procedures_eNB_TX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,
* (in stand alone i can put whatever the number)in other case consider the PRB index in the Table R&Shwartz pag 9
*
*/
/*
generate_npbch(eNB->npbch,
txdataF,
AMP,
fp,
eNB->npbch->pdu,
frame%64,
fp
->
NB_IoT_RB_ID
);
fp->NB_IoT_RB_ID);
*/
}
...
...
@@ -1542,12 +1542,6 @@ uint32_t rx_nprach_NB_IoT(PHY_VARS_eNB *eNB, int frame, uint8_t subframe, uint16
//int frame,frame_mod; // subframe,
// subframe = eNB->proc.subframe_prach;
// frame = eNB->proc.frame_prach;
//printf("frame = %i \n sf = %i\n",frame,subframe);
// frame_mod = 0;//(frame)%32;
//if (subframe==1 && frame_mod==0 && frame!=0){
//if (frame_mod==0 && frame!=0){
//printf("\n frame_in = %i\n",frame);
estimated_TA
=
process_nprach_NB_IoT
(
eNB
,
frame
,
subframe
,
rnti
,
preamble_index
,
timing_advance
);
//printf("estim = %i\n",estimated_TA);
// }
...
...
@@ -1598,10 +1592,6 @@ void npusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
{
//ulsch_NB_IoT = eNB->ulsch_NB_IoT[i];
//ulsch_harq = ulsch_NB_IoT->harq_process;
nulsch
->
Msg3_active
=
1
;
nulsch
->
Msg3_flag
=
1
;
// if eNB is ready to receive UL data
// define a flag to trigger on or off the decoding process
//if ((ulsch) && (ulsch->rnti>0) && (ulsch_harq->status == ACTIVE) && (ulsch_harq->frame == frame) && (ulsch_harq->subframe == subframe) && (ulsch_harq->handled == 0))
...
...
@@ -1624,15 +1614,14 @@ void npusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
proc
,
0
,
// this is the effective sector id
0
,
nulsch
,
nulsch
->
npusch_format
,
//npusch_format, // 1, 2
//
nulsch,
//
nulsch->npusch_format, //npusch_format, // 1, 2
22
,
// 22 , to be included in // to be replaced by NB_IoT_start ??
1
,
// 0 (3.75 KHz) or 1 (15 KHz)
nulsch
->
rnti
,
//= 65522
// 1, // 0 (3.75 KHz) or 1 (15 KHz)
nulsch
->
Msg3_subframe
,
// first received subframe
nulsch
->
Msg3_frame
,
// first received frame
N_slots
,
// total number of occupied slots = get_nb_slot_per_RU * NB_of_RU
get_UL_sc_index_start_NB_IoT
(
nulsch_harq
->
subcarrier_spacing
,
nulsch_harq
->
subcarrier_indication
,
nulsch
->
npusch_format
),
//
get_UL_sc_index_start_NB_IoT(nulsch_harq->subcarrier_spacing,nulsch_harq->subcarrier_indication,nulsch->npusch_format),
get_UL_N_ru_NB_IoT
(
nulsch_harq
->
mcs
,
nulsch_harq
->
resource_assignment
,
nulsch
->
Msg3_flag
),
// N_RU
//if 0<get_numb_UL_sc_NB_IoT(uint8_t subcarrier_spacing, uint8_t I_sc, uint8_t npush_format),// Nsc,
nulsch_harq
->
mcs
,
// I_mcs
...
...
@@ -1648,15 +1637,14 @@ void npusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
proc
,
0
,
// this is the effective sector id
0
,
nulsch
,
nulsch
->
npusch_format
,
//npusch_format, // 1, 2
//
nulsch,
//
nulsch->npusch_format, //npusch_format, // 1, 2
22
,
// 22 , to be included in // to be replaced by NB_IoT_start ??
1
,
// 0 (3.75 KHz) or 1 (15 KHz)
nulsch
->
rnti
,
//= 65522
// 1, // 0 (3.75 KHz) or 1 (15 KHz)
nulsch
->
Msg3_subframe
,
// first received subframe
nulsch
->
Msg3_frame
,
// first received frame
N_slots
,
// total number of occupied slots = get_nb_slot_per_RU * NB_of_RU
get_UL_sc_index_start_NB_IoT
(
nulsch_harq
->
subcarrier_spacing
,
nulsch_harq
->
subcarrier_indication
,
nulsch
->
npusch_format
),
//
get_UL_sc_index_start_NB_IoT(nulsch_harq->subcarrier_spacing,nulsch_harq->subcarrier_indication,nulsch->npusch_format),
get_UL_N_ru_NB_IoT
(
nulsch_harq
->
mcs
,
nulsch_harq
->
resource_assignment
,
nulsch
->
Msg3_flag
),
// N_RU
nulsch_harq
->
mcs
,
// I_mcs
nulsch_harq
->
TBS
,
// A = TBS
...
...
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