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
93c5cb89
Commit
93c5cb89
authored
Oct 16, 2017
by
Nick Ho
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
debug to the rrc_mac_data_req_eNB_NB_IoT()
parent
6a95995f
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
183 additions
and
582 deletions
+183
-582
openair1/SCHED/defs_NB_IoT.h
openair1/SCHED/defs_NB_IoT.h
+6
-0
openair1/SCHED/phy_procedures_lte_eNb_NB_IoT.c
openair1/SCHED/phy_procedures_lte_eNb_NB_IoT.c
+115
-10
openair2/RRC/LITE/L2_interface_NB_IoT.c
openair2/RRC/LITE/L2_interface_NB_IoT.c
+57
-510
openair2/RRC/LITE/proto_NB_IoT.h
openair2/RRC/LITE/proto_NB_IoT.h
+5
-62
No files found.
openair1/SCHED/defs_NB_IoT.h
View file @
93c5cb89
...
...
@@ -42,6 +42,12 @@ NB_IoT_DL_FRAME_PARMS *get_NB_IoT_frame_parms(module_id_t Mod_id, uint8_t CC_id)
int16_t
get_hundred_times_delta_IF_eNB_NB_IoT
(
PHY_VARS_eNB_NB_IoT
*
phy_vars_eNB
,
uint8_t
UE_id
,
uint8_t
harq_pid
,
uint8_t
bw_factor
);
uint32_t
is_SIB1_NB_IoT
(
const
frame_t
frameP
,
long
schedulingInfoSIB1
,
//from the mib
int
physCellId
,
//by configuration
NB_IoT_eNB_NDLSCH_t
*
ndlsch_SIB1
);
#endif
openair1/SCHED/phy_procedures_lte_eNb_NB_IoT.c
View file @
93c5cb89
...
...
@@ -88,18 +88,123 @@
///fifo_dump_emos_eNB emos_dump_eNB;
///#endif
/*
#if defined(SMBV)
extern const char smbv_fname[];
extern unsigned short config_frames[4];
extern uint8_t smbv_frame_cnt;
#endif
int
npdsch_rep_to_array
[
3
]
=
{
4
,
8
,
16
};
//TS 36.213 Table 16.4.1.3-3
int
sib1_startFrame_to_array
[
4
]
=
{
0
,
16
,
32
,
48
};
//TS 36.213 Table 16.4.1.3-4
//New----------------------------------------------------
//return -1 whenever no SIB1-NB transmission occur.
//return sib1_startFrame when transmission occur in the current frame
uint32_t
is_SIB1_NB_IoT
(
const
frame_t
frameP
,
long
schedulingInfoSIB1
,
//from the mib
int
physCellId
,
//by configuration
NB_IoT_eNB_NDLSCH_t
*
ndlsch_SIB1
)
{
uint8_t
nb_rep
=
0
;
// number of sib1-nb repetitions within the 256 radio frames
uint32_t
sib1_startFrame
;
uint32_t
sib1_period_NB_IoT
=
256
;
//from specs TS 36.331 (rf)
uint8_t
index
;
int
offset
;
int
period_nb
;
// the number of the actual period over the 1024 frames
if
(
schedulingInfoSIB1
>
11
||
schedulingInfoSIB1
<
0
){
LOG_E
(
RRC
,
"is_SIB1_NB_IoT: schedulingInfoSIB1 value not allowed"
);
return
0
;
}
//SIB1-NB period number
period_nb
=
(
int
)
frameP
/
sib1_period_NB_IoT
;
//number of repetitions
nb_rep
=
npdsch_rep_to_array
[
schedulingInfoSIB1
%
3
];
//based on number of rep. and the physical cell id we derive the starting radio frame (TS 36.213 Table 16.4.1.3-3/4)
switch
(
nb_rep
)
{
case
4
:
//physCellId%4 possible value are 0,1,2,3
sib1_startFrame
=
sib1_startFrame_to_array
[
physCellId
%
4
];
break
;
case
8
:
//physCellId%2possible value are 0,1
sib1_startFrame
=
sib1_startFrame_to_array
[
physCellId
%
2
];
break
;
case
16
:
//physCellId%2 possible value are 0,1
if
(
physCellId
%
2
==
0
)
sib1_startFrame
=
0
;
else
sib1_startFrame
=
1
;
// the only case in which the starting frame is odd
break
;
default:
LOG_E
(
RRC
,
"Number of repetitions %d not allowed"
,
nb_rep
);
return
-
1
;
}
//check the actual frame w.r.t SIB1-NB starting frame
if
(
frameP
<
sib1_startFrame
+
period_nb
*
256
){
LOG_T
(
RRC
,
"the actual frame %d is before the SIB1-NB starting frame %d of the period--> bcch_sdu_legnth = 0"
,
frameP
,
sib1_startFrame
+
period_nb
*
256
);
return
-
1
;
}
//calculate offset between SIB1-NB repetitions (repetitions are equally spaced)
offset
=
(
sib1_period_NB_IoT
-
(
16
*
nb_rep
))
/
nb_rep
;
//loop over the SIB1-NB period
for
(
int
i
=
0
;
i
<
nb_rep
;
i
++
)
{
//find the correct sib1-nb repetition interval in which the actual frame is
//this is the start frame of a repetition
index
=
sib1_startFrame
+
i
*
(
16
+
offset
)
+
period_nb
*
256
;
//the actual frame is in a gap between two consecutive repetitions
if
(
frameP
<
index
)
{
ndlsch_SIB1
->
sib1_rep_start
=
0
;
ndlsch_SIB1
->
relative_sib1_frame
=
0
;
return
-
1
;
}
//this is needed for ndlsch_procedure
else
if
(
frameP
==
index
)
{
//the actual frame is the start of a new repetition (SIB1-NB should be retransmitted)
ndlsch_SIB1
->
sib1_rep_start
=
1
;
ndlsch_SIB1
->
relative_sib1_frame
=
1
;
return
sib1_startFrame
;
}
else
ndlsch_SIB1
->
sib1_rep_start
=
0
;
//check in the current SIB1_NB repetition
if
(
frameP
>=
index
&&
frameP
<=
(
index
+
15
))
{
//find if the actual frame is one of the "every other frame in 16 continuous frame" in which SIB1-NB is transmitted
for
(
int
y
=
0
;
y
<
16
;
y
+=
2
)
//every other frame (increment by 2)
{
if
(
frameP
==
index
+
y
)
{
//this flag tell which is the number of the current frame w.r.t the 8th (over the continuous 16) in a repetition
ndlsch_SIB1
->
relative_sib1_frame
=
y
/
2
+
1
;
//1st, 2nd, 3rd,...
return
sib1_startFrame
;
}
}
//if we are here means that the frame was inside the repetition interval but not considered for SIB1-NB transmission
ndlsch_SIB1
->
relative_sib1_frame
=
0
;
return
-
1
;
}
}
return
-
1
;
}
#ifdef DIAG_PHY
extern int rx_sig_fifo;
#endif
*/
...
...
openair2/RRC/LITE/L2_interface_NB_IoT.c
View file @
93c5cb89
This diff is collapsed.
Click to expand it.
openair2/RRC/LITE/proto_NB_IoT.h
View file @
93c5cb89
...
...
@@ -64,63 +64,7 @@ RRC_status_t rrc_rx_tx_NB_IoT(protocol_ctxt_t* const ctxt_pP, const uint8_t enb
//long binary_search_float(float elements[], long numElem, float value);--> used only at UE side
//----------------------------------------
//New
/**\brief function for evaluate if the SIB1-NB transmission occur
* return the SIB1 starting frame
* called by phy_procedure_eNB_Tx before calling the npdsch_procedure
*/
uint32_t
is_SIB1_NB_IoT
(
const
frame_t
frameP
,
long
schedulingInfoSIB1
,
//from the mib
int
physCellId
,
//by configuration
NB_IoT_eNB_NDLSCH_t
*
ndlsch_SIB1
);
//--------------------------------------
//New
/**\brief function for evaluate if the SIB1-NB period start
* return 0 = TRUE
* return -1 = FALSE
* called by the NB_mac_rrc_data_req
*/
uint8_t
is_SIB1_start_NB_IoT
(
const
frame_t
frameP
,
long
schedulingInfoSIB1
,
//from the mib
int
physCellId
//by configuration
);
//New
/**\brief function for evaluate if the SIB23-NB transmission occurr
* called by the NB_mac_rrc_data_req
*
*/
boolean_t
is_SIB23_NB_IoT
(
const
frame_t
frameP
,
const
frame_t
h_frameP
,
// the HSFN (increased by 1 every SFN wrap around) (10 bits)
long
si_period
,
//SI-periodicity (rf)
long
si_windowLength_ms
,
//Si-windowlength (ms) XXX received as an enumerative (see the IE of SIB1-NB)
long
*
si_RadioFrameOffset
,
//Optional
long
si_RepetitionPattern
// is given as an Enumerated
);
//-----------------------------------
//defined in L2_interface
int8_t
mac_rrc_data_req_eNB_NB_IoT
(
const
module_id_t
Mod_idP
,
const
int
CC_id
,
const
frame_t
frameP
,
const
frame_t
h_frameP
,
const
sub_frame_t
subframeP
,
const
rb_id_t
Srb_id
,
uint8_t
*
const
buffer_pP
,
long
schedulingInfoSIB1
,
//from the mib
int
physCellId
,
//from the MAC instance-> common_channel
mib_flag_t
mib_flag
);
//---------------------------------------
...
...
@@ -550,16 +494,15 @@ uint8_t rrc_eNB_get_next_transaction_identifier_NB_IoT(module_id_t module_idP);
int
rrc_init_global_param_NB_IoT
(
void
);
//L2_interface.c
int8_t
mac_rrc_data_req_NB_IoT
(
int8_t
mac_rrc_data_req_
eNB_
NB_IoT
(
const
module_id_t
Mod_idP
,
const
int
CC_id
,
const
frame_t
frameP
,
const
frame_t
h_frameP
,
const
sub_frame_t
subframeP
,
//need for the case in which both SIB1-NB_IoT and SIB23-NB_IoT will be scheduled in the same frame
const
rb_id_t
Srb_id
,
const
uint8_t
Nb_tb
,
uint8_t
*
const
buffer_pP
,
const
eNB_flag_t
enb_flagP
,
const
uint8_t
eNB_index
,
const
uint8_t
mbsfn_sync_area
uint8_t
*
const
buffer_pP
,
uint8_t
flag
);
...
...
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