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
promise
OpenXG-RAN
Commits
7bdee0c7
Commit
7bdee0c7
authored
Dec 16, 2019
by
oai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
RRC forward authentication_rsp & security_mode_cmd to MAC
parent
1f6c08c9
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
359 additions
and
103 deletions
+359
-103
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation_NB_IoT.c
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation_NB_IoT.c
+26
-0
openair2/LAYER2/MAC/eNB_scheduler_NB_IoT.c
openair2/LAYER2/MAC/eNB_scheduler_NB_IoT.c
+2
-2
openair2/LAYER2/MAC/eNB_scheduler_dlsch_NB_IoT.c
openair2/LAYER2/MAC/eNB_scheduler_dlsch_NB_IoT.c
+50
-56
openair2/LAYER2/MAC/proto_NB_IoT.h
openair2/LAYER2/MAC/proto_NB_IoT.h
+1
-1
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
+4
-4
openair2/RRC/LITE/MESSAGES/asn1_msg_NB_IoT.c
openair2/RRC/LITE/MESSAGES/asn1_msg_NB_IoT.c
+1
-1
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+251
-3
openair2/RRC/LITE/rrc_eNB_S1AP.c
openair2/RRC/LITE/rrc_eNB_S1AP.c
+19
-34
openair2/RRC/LITE/rrc_eNB_S1AP.h
openair2/RRC/LITE/rrc_eNB_S1AP.h
+4
-1
openair2/UTIL/LISTS/list.c
openair2/UTIL/LISTS/list.c
+1
-1
No files found.
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation_NB_IoT.c
View file @
7bdee0c7
...
...
@@ -1653,6 +1653,32 @@ uint32_t turbo_decoding_NB_IoT(PHY_VARS_eNB *eNB,
fill_rx_indication_NB_IoT
(
eNB
,
proc
,
npusch_format
,
1
);
printf
(
" NPUSCH OK
\n
"
);
}
else
{
if
(
r
<
ulsch_harq
->
Cminus
)
{
Kr
=
ulsch_harq
->
Kminus
;
}
else
{
Kr
=
ulsch_harq
->
Kplus
;
Kr_bytes
=
Kr
>>
3
;
}
if
(
r
==
0
)
{
memcpy
(
ulsch_harq
->
b
,
&
ulsch_harq
->
c
[
0
][(
ulsch_harq
->
F
>>
3
)],
Kr_bytes
-
(
ulsch_harq
->
F
>>
3
)
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
offset
=
Kr_bytes
-
(
ulsch_harq
->
F
>>
3
)
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
);
}
else
{
memcpy
(
ulsch_harq
->
b
+
offset
,
ulsch_harq
->
c
[
r
],
Kr_bytes
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
offset
+=
(
Kr_bytes
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
}
int
x
=
0
;
LOG_N
(
PHY
,
"Show the undecoded data: "
);
for
(
x
=
0
;
x
<
18
;
x
++
)
printf
(
"%02x "
,
ulsch_harq
->
b
[
x
]);
printf
(
"
\n
"
);
fill_crc_indication_NB_IoT
(
eNB
,
0
,
rx_frame
,
rx_subframe
,
0
);
// indicate NAK to MAC
fill_rx_indication_NB_IoT
(
eNB
,
proc
,
npusch_format
,
0
);
printf
(
" NPUSCH NOT OK
\n
"
);
...
...
openair2/LAYER2/MAC/eNB_scheduler_NB_IoT.c
View file @
7bdee0c7
...
...
@@ -294,8 +294,8 @@ void schedule_uss_NB_IoT(module_id_t module_id, eNB_MAC_INST_NB_IoT *mac_inst, u
UE_template_temp
->
R_dl
=
UE_sched_ctrl_info
->
R_dl_data
;
UE_template_temp
->
I_mcs_dl
=
UE_sched_ctrl_info
->
dci_n1_index_mcs
;
UE_template_temp
->
DLSCH_pdu_size
=
UE_sched_ctrl_info
->
TBS
;
if
(
UE_template_temp
->
HARQ_round
==
0
)
UE_template_temp
->
oldNDI_DL
=
(
UE_template_temp
->
oldNDI_DL
+
1
)
%
2
;
//
if(UE_template_temp->HARQ_round==0)
//
UE_template_temp->oldNDI_DL=(UE_template_temp->oldNDI_DL+1)%2;
UE_template_temp
->
direction
=
3
;
break
;
case
0
:
// Uplink
...
...
openair2/LAYER2/MAC/eNB_scheduler_dlsch_NB_IoT.c
View file @
7bdee0c7
...
...
@@ -54,13 +54,6 @@ int schedule_DL_NB_IoT(module_id_t module_id, eNB_MAC_INST_NB_IoT *mac_inst, UE_
sched_temp_DL_NB_IoT_t
*
NPDSCH_info
=
(
sched_temp_DL_NB_IoT_t
*
)
malloc
(
sizeof
(
sched_temp_DL_NB_IoT_t
));
sched_temp_UL_NB_IoT_t
*
HARQ_info
=
(
sched_temp_UL_NB_IoT_t
*
)
malloc
(
sizeof
(
sched_temp_UL_NB_IoT_t
));
//DCI N1
//DCIFormatN1_t *DCI_N1 = (DCIFormatN1_t*)malloc(sizeof(DCIFormatN1_t));
//RLC Status
//mac_rlc_status_resp_NB_IoT_t rlc_status;
/*Index in DCI_N1*/
uint32_t
I_mcs
,
I_tbs
,
I_delay
,
I_sf
;
/*value for corresponding index*/
...
...
@@ -73,16 +66,18 @@ int schedule_DL_NB_IoT(module_id_t module_id, eNB_MAC_INST_NB_IoT *mac_inst, UE_
int
flag_retransmission
=
0
;
int
HARQ_delay
=
0
;
uint32_t
data_size
;
uint32_t
mac_sdu_size
;
//
uint32_t
mac_sdu_size2
;
//
uint32_t
size_indicated_from_rlc
=
0
;
uint32_t
data_size
=
0
;
uint32_t
rlc_control_pdu_size
=
0
;
//
uint32_t
rlc_data_pdu_size
=
0
;
//
uint32_t
padding_size
=
0
;
//
uint8_t
sdu_temp
[
SCH_PAYLOAD_SIZE_MAX_NB_IoT
];
//
uint8_t
sdu_temp2
[
SCH_PAYLOAD_SIZE_MAX_NB_IoT
];
//
logical_chan_id_t
logical_channel
;
//
uint32_t
subheader_length
=
3
;
uint32_t
subheader_length
=
2
;
uint32_t
payload_offset
;
//
...
...
@@ -125,10 +120,10 @@ int schedule_DL_NB_IoT(module_id_t module_id, eNB_MAC_INST_NB_IoT *mac_inst, UE_
0
,
DCCH0_NB_IoT
,
TBS
-
subheader_length
);
data_size
=
rlc_status
.
bytes_in_buffer
;
LOG_
N
(
MAC
,
"[NB-IoT] RLC indicate to MAC that the data size is : %d
\n
"
,
data_size
);
size_indicated_from_rlc
=
rlc_status
.
bytes_in_buffer
;
LOG_
D
(
MAC
,
"[NB-IoT] RLC indicate to MAC that the data size is : %d
\n
"
,
size_indicated_from_rlc
);
mac_s
du_size
=
mac_rlc_data_req
(
rlc_control_p
du_size
=
mac_rlc_data_req
(
module_id
,
UE_info
->
rnti
,
module_id
,
...
...
@@ -140,7 +135,7 @@ int schedule_DL_NB_IoT(module_id_t module_id, eNB_MAC_INST_NB_IoT *mac_inst, UE_
(
char
*
)
&
sdu_temp
[
0
]);
LOG_I
(
MAC
,
"[NB-IoT][DCCH] Got %d bytes from RLC
\n
"
,
mac_s
du_size
);
//LOG_I(MAC,"[NB-IoT][DCCH] Got %d bytes from RLC\n",rlc_control_p
du_size);
//Get RLC status
rlc_status2
=
mac_rlc_status_ind
(
...
...
@@ -152,8 +147,8 @@ int schedule_DL_NB_IoT(module_id_t module_id, eNB_MAC_INST_NB_IoT *mac_inst, UE_
1
,
0
,
DCCH0_NB_IoT
,
TBS
-
subheader_length
-
mac_s
du_size
);
mac_sdu_size2
=
mac_rlc_data_req
(
TBS
-
subheader_length
-
rlc_control_p
du_size
);
rlc_data_pdu_size
=
mac_rlc_data_req
(
module_id
,
UE_info
->
rnti
,
module_id
,
...
...
@@ -164,23 +159,40 @@ int schedule_DL_NB_IoT(module_id_t module_id, eNB_MAC_INST_NB_IoT *mac_inst, UE_
TBS
,
//not used
(
char
*
)
&
sdu_temp2
[
0
]);
printf
(
"print the second RLC DATA PDU payload, we have %d byte
\n
"
,
mac_sdu_size2
);
printf
(
"print the second RLC DATA PDU payload, we have %d byte
\n
"
,
rlc_data_pdu_size
);
int
y
;
for
(
y
=
0
;
y
<
mac_sdu_size2
;
y
++
){
for
(
y
=
0
;
y
<
rlc_data_pdu_size
;
y
++
){
printf
(
"%02x "
,
sdu_temp2
[
y
]);
}
printf
(
"
\n
"
);
data_size
=
rlc_data_pdu_size
+
rlc_control_pdu_size
;
if
(
data_size
==
0
)
{
LOG_D
(
MAC
,
"[%04d][DLSchedulerUSS][Fail] No data in DCCH0_NB_IoT
\n
"
,
mac_inst
->
current_subframe
);
return
-
1
;
}
if
(
data_size
>
127
)
{
subheader_length
=
3
;
}
if
(
TBS
>
data_size
+
subheader_length
*
2
)
// control and data
{
TBS
=
get_tbs
(
data_size
,
I_tbs
,
&
I_sf
);
LOG_I
(
MAC
,
"[%04d][DLSchedulerUSS] TBS change to %d because data size is smaller than previous TBS
\n
"
,
mac_inst
->
current_subframe
,
TBS
);
}
padding_size
=
TBS
-
subheader_length
*
2
-
data_size
;
//Generate header
payload_offset
=
generate_dlsch_header_NB_IoT
(
UE_info
->
DLSCH_pdu
.
payload
,
1
,
&
logical_channel
,
&
mac_sdu_size2
,
0
,
0
,
TBS
);
payload_offset
=
generate_dlsch_header_NB_IoT
(
UE_info
->
DLSCH_pdu
.
payload
,
1
,
&
logical_channel
,
&
rlc_data_pdu_size
,
0
,
0
,
TBS
,
padding_size
);
//Complete MAC PDU
memcpy
(
UE_info
->
DLSCH_pdu
.
payload
+
payload_offset
,
sdu_temp
,
mac_sdu_size
);
memcpy
(
UE_info
->
DLSCH_pdu
.
payload
+
payload_offset
+
mac_sdu_size
,
sdu_temp2
,
mac_sdu_size2
);
memcpy
(
UE_info
->
DLSCH_pdu
.
payload
+
payload_offset
,
sdu_temp
,
rlc_control_pdu_size
);
memcpy
(
UE_info
->
DLSCH_pdu
.
payload
+
payload_offset
+
rlc_control_pdu_size
,
sdu_temp2
,
rlc_data_pdu_size
);
printf
(
"print the MAC DATA PDU including length payload, we have header %d byte
\n
"
,
payload_offset
);
//int y;
for
(
y
=
0
;
y
<
mac_sdu_size
+
payload_offset
+
mac_sdu_size2
;
y
++
){
for
(
y
=
0
;
y
<
TBS
;
y
++
){
//for (y=0;y<payload_offset+mac_sdu_size2;y++){
printf
(
"%02x "
,
UE_info
->
DLSCH_pdu
.
payload
[
y
]);
}
...
...
@@ -200,29 +212,12 @@ int schedule_DL_NB_IoT(module_id_t module_id, eNB_MAC_INST_NB_IoT *mac_inst, UE_
}
#endif
//data_size=200; //for testing
//LOG_I(MAC,"[%04d][DLSchedulerUSS] UE data size %d\n", mac_inst->current_subframe, data_size);
//Have DCCH data
if
(
data_size
==
0
)
{
LOG_D
(
MAC
,
"[%04d][DLSchedulerUSS][Fail] No data in DCCH0_NB_IoT
\n
"
,
mac_inst
->
current_subframe
);
return
-
1
;
}
if
(
data_size
>
127
)
{
subheader_length
=
3
;
}
if
(
TBS
>
data_size
+
subheader_length
)
{
TBS
=
get_tbs
(
data_size
,
I_tbs
,
&
I_sf
);
LOG_I
(
MAC
,
"[%04d][DLSchedulerUSS] TBS change to %d because data size is smaller than previous TBS
\n
"
,
mac_inst
->
current_subframe
,
TBS
);
}
search_space_end_sf
=
cal_num_dlsf
(
mac_inst
,
hyperSF_start
,
frame_start
,
subframe_start
,
&
h_temp
,
&
f_temp
,
&
sf_temp
,
UE_info
->
R_max
);
LOG_D
(
MAC
,
"[%04d][DLSchedulerUSS] Search_space_start_sf %d Search_space_end_sf %d
\n
"
,
convert_system_number_sf
(
hyperSF_start
,
frame_start
,
subframe_start
),
mac_inst
->
current_subframe
,
search_space_end_sf
);
//LOG_D(MAC,"[%04d][DLSchedulerUSS][%d] Search_space_start_sf %d Search_space_end_sf %d\n", mac_inst->current_subframe, UE_info->rnti, mac_inst->current_subframe, convert_system_number_sf(hyperSF_start, frame_start, subframe_start), search_space_end_sf);
/*Loop all NPDCCH candidate position*/
for
(
cdd_num
=
0
;
cdd_num
<
UE_info
->
R_max
/
UE_sched_ctrl_info
->
R_dci
;
++
cdd_num
)
{
LOG_I
(
MAC
,
"[%04d][DLSchedulerUSS] Candidate num %d DCI Rep %d DCI Rmax: %d rep : %d
\n
"
,
mac_inst
->
current_subframe
,
cdd_num
,
UE_sched_ctrl_info
->
R_dci
,
UE_info
->
R_max
,
UE_sched_ctrl_info
->
R_dl_data
);
...
...
@@ -255,11 +250,7 @@ int schedule_DL_NB_IoT(module_id_t module_id, eNB_MAC_INST_NB_IoT *mac_inst, UE_
if
(
search_space_end_sf
<
NPDCCH_info
->
sf_end
+
get_scheduling_delay
(
I_delay
,
UE_info
->
R_max
)
+
5
)
{
end_flagSCH
=
check_resource_NPDSCH_NB_IoT
(
mac_inst
,
NPDSCH_info
,
NPDCCH_info
->
sf_end
,
I_delay
,
UE_info
->
R_max
,
UE_sched_ctrl_info
->
R_dl_data
,
n_sf
);
int
x
;
for
(
x
=
0
;
x
<
data_size
;
x
++
){
printf
(
"%02x "
,
UE_info
->
DLSCH_pdu
.
payload
[
x
]);
}
printf
(
"
\n
"
);
//Have available resource
/*Check HARQ resource*/
if
(
end_flagSCH
!=-
1
)
...
...
@@ -277,7 +268,11 @@ int schedule_DL_NB_IoT(module_id_t module_id, eNB_MAC_INST_NB_IoT *mac_inst, UE_
//toggle NDI
if
(
flag_retransmission
==
0
)
{
UE_info
->
oldNDI_DL
=
(
UE_info
->
oldNDI_DL
+
1
)
%
2
;
if
(
TBS
==
26
)
{
UE_info
->
oldNDI_DL
=
1
;
}
else
UE_info
->
oldNDI_DL
=
(
UE_info
->
oldNDI_DL
+
1
)
%
2
;
//New transmission need to request data from RLC and generate new MAC PDU
UE_info
->
I_mcs_dl
=
I_mcs
;
...
...
@@ -461,15 +456,14 @@ int check_resource_DL_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, uint32_t hyperSF_sta
return
-
1
;
}
uint32_t
generate_dlsch_header_NB_IoT
(
uint8_t
*
pdu
,
uint32_t
num_sdu
,
logical_chan_id_t
*
logical_channel
,
uint32_t
*
sdu_length
,
uint8_t
flag_drx
,
uint8_t
flag_ta
,
uint32_t
TBS
)
uint32_t
generate_dlsch_header_NB_IoT
(
uint8_t
*
pdu
,
uint32_t
num_sdu
,
logical_chan_id_t
*
logical_channel
,
uint32_t
*
sdu_length
,
uint8_t
flag_drx
,
uint8_t
flag_ta
,
uint32_t
TBS
,
uint32_t
padding_size
)
{
int
i
;
uint32_t
total_sdu_size
=
0
;
//
uint32_t total_sdu_size=0;
//number of control element
uint32_t
num_ce
=
0
;
uint32_t
num_subheader
=
0
;
uint32_t
num_sdu_L_15
;
int32_t
padding_size
;
uint8_t
flag_end_padding
=
0
;
SCH_SUBHEADER_FIXED_NB_IoT
*
mac_header
=
(
SCH_SUBHEADER_FIXED_NB_IoT
*
)
pdu
;
uint32_t
offset
=
0
;
...
...
@@ -481,21 +475,21 @@ uint32_t generate_dlsch_header_NB_IoT(uint8_t *pdu, uint32_t num_sdu, logical_ch
{
num_sdu_L_15
++
;
}
total_sdu_size
+=
sdu_length
[
i
];
//
total_sdu_size+=sdu_length[i];
}
if
(
flag_drx
==
1
)
num_ce
++
;
if
(
flag_ta
==
1
)
num_ce
++
;
num_subheader
=
num_ce
+
num_sdu
;
padding_size
=
TBS
-
total_sdu_size
-
num_ce
;
num_subheader
=
num_ce
+
num_sdu
+
1
;
//
padding_size = TBS-total_sdu_size-num_ce;
if
(
padding_size
<
0
)
{
LOG_D
(
MAC
,
"[ERROR]TBS less than require subheader and control element
\n
"
);
return
-
1
;
}
LOG_D
(
MAC
,
"total SDU size %d
\n
"
,
total_sdu_size
);
LOG_
D
(
MAC
,
"padding size %d
\n
"
,
padding_size
);
//
LOG_D(MAC,"total SDU size %d\n", total_sdu_size);
LOG_
I
(
MAC
,
"padding size %d
\n
"
,
padding_size
);
if
(
padding_size
>
2
)
{
flag_end_padding
=
1
;
...
...
openair2/LAYER2/MAC/proto_NB_IoT.h
View file @
7bdee0c7
...
...
@@ -210,7 +210,7 @@ uint32_t convert_system_number_sf(uint32_t hyperSF, uint32_t frame, uint32_t sub
/*input start position amd num_dlsf DL subframe, caculate the last subframe number*/
uint32_t
cal_num_dlsf
(
eNB_MAC_INST_NB_IoT
*
mac_inst
,
uint32_t
hyperSF
,
uint32_t
frame
,
uint32_t
subframe
,
uint32_t
*
hyperSF_result
,
uint32_t
*
frame_result
,
uint32_t
*
subframe_result
,
uint32_t
num_dlsf_require
);
void
init_dlsf_info
(
eNB_MAC_INST_NB_IoT
*
mac_inst
,
DLSF_INFO_t
*
DLSF_info
);
uint32_t
generate_dlsch_header_NB_IoT
(
uint8_t
*
pdu
,
uint32_t
num_sdu
,
logical_chan_id_t
*
logical_channel
,
uint32_t
*
sdu_length
,
uint8_t
flag_drx
,
uint8_t
flag_ta
,
uint32_t
TBS
);
uint32_t
generate_dlsch_header_NB_IoT
(
uint8_t
*
pdu
,
uint32_t
num_sdu
,
logical_chan_id_t
*
logical_channel
,
uint32_t
*
sdu_length
,
uint8_t
flag_drx
,
uint8_t
flag_ta
,
uint32_t
TBS
,
uint32_t
padding_size
);
void
maintain_resource_DL
(
eNB_MAC_INST_NB_IoT
*
mac_inst
,
sched_temp_DL_NB_IoT_t
*
NPDCCH_info
,
sched_temp_DL_NB_IoT_t
*
NPDSCH_info
);
void
init_tool_sib1
(
eNB_MAC_INST_NB_IoT
*
mac_inst
);
//int is_dlsf(eNB_MAC_INST_NB_IoT *mac_inst, int abs_subframe);
...
...
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
View file @
7bdee0c7
...
...
@@ -421,8 +421,8 @@ rlc_am_get_pdus (
case
RLC_DATA_TRANSFER_READY_STATE
:
printf
(
"rlc_pP->nb_bytes_requested_by_mac=%d
\n
"
,
rlc_pP
->
nb_bytes_requested_by_mac
);
printf
(
"rlc_pP->status_requested=%u
\n
"
,
rlc_pP
->
status_requested
);
//
printf("rlc_pP->nb_bytes_requested_by_mac=%d\n",rlc_pP->nb_bytes_requested_by_mac);
//
printf("rlc_pP->status_requested=%u\n",rlc_pP->status_requested);
/*
if ((rlc_pP->nb_bytes_requested_by_mac > 2) && (rlc_pP->sdu_buffer_occupancy) && (rlc_pP->vt_s != rlc_pP->vt_ms)) {
...
...
@@ -710,7 +710,7 @@ rlc_am_mac_data_request (
#endif
list_init
(
&
data_req
.
data
,
NULL
);
printf
(
"l_rlc_p->nb_bytes_requested_by_mac=%d (in rlc_am.c)
\n
"
,
l_rlc_p
->
nb_bytes_requested_by_mac
);
//
printf("l_rlc_p->nb_bytes_requested_by_mac=%d (in rlc_am.c)\n",l_rlc_p->nb_bytes_requested_by_mac);
rlc_am_get_pdus
(
ctxt_pP
,
l_rlc_p
);
list_add_list
(
&
l_rlc_p
->
pdus_to_mac_layer
,
&
data_req
.
data
);
//printf("*******nb_elements_3=%d (in rlc_am.c)***************\n",data_req.data.nb_elements);
...
...
@@ -921,7 +921,7 @@ rlc_am_mac_data_request (
}
#endif
printf
(
"=========data_req.data=%d=======
\n
"
,
data_req
.
data
);
//
printf("=========data_req.data=%d=======\n",data_req.data);
return
data_req
;
}
//-----------------------------------------------------------------------------
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg_NB_IoT.c
View file @
7bdee0c7
...
...
@@ -1115,7 +1115,7 @@ uint8_t do_RRCConnectionSetup_NB_IoT(
//*periodicBSR_Timer = 2; // PeriodicBSR_Timer_NB_r13_pp8
//logicalChannelSR_Config = CALLOC(1,sizeof(*logicalChannelSR_Config));
mac_main_config_NB_IoT
->
choice
.
explicitValue_r13
.
logicalChannelSR_Config_r13
->
choice
.
setup
.
logicalChannelSR_ProhibitTimer_r13
=
5
;
//MAC_MainConfig_NB_r13__logicalChannelSR_Config_r13__setup__logicalChannelSR_ProhibitTimer_r13_pp8
mac_main_config_NB_IoT
->
choice
.
explicitValue_r13
.
logicalChannelSR_Config_r13
->
choice
.
setup
.
logicalChannelSR_ProhibitTimer_r13
=
4
;
//MAC_MainConfig_NB_r13__logicalChannelSR_Config_r13__setup__logicalChannelSR_ProhibitTimer_r13_pp8
mac_main_config_NB_IoT
->
choice
.
explicitValue_r13
.
logicalChannelSR_Config_r13
->
present
=
MAC_MainConfig_NB_r13__logicalChannelSR_Config_r13_PR_setup
;
//ul_SCH_Config = CALLOC(1,sizeof(*ul_SCH_Config));
...
...
openair2/RRC/LITE/rrc_eNB.c
View file @
7bdee0c7
This diff is collapsed.
Click to expand it.
openair2/RRC/LITE/rrc_eNB_S1AP.c
View file @
7bdee0c7
...
...
@@ -33,7 +33,9 @@
# include "extern.h"
# include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h"
# include "RRC/LITE/MESSAGES/asn1_msg.h"
# include "RRC/LITE/MESSAGES/asn1_msg_NB_IoT.h"
# include "RRC/LITE/defs.h"
# include "RRC/LITE/defs_NB_IoT.h"
# include "rrc_eNB_UE_context.h"
# include "rrc_eNB_S1AP.h"
# include "enb_config.h"
...
...
@@ -507,29 +509,23 @@ void
rrc_eNB_send_S1AP_UPLINK_NAS
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_t
*
const
ue_context_pP
,
UL_DCCH_Message_
t
*
const
ul_dcch_msg
UL_DCCH_Message_
NB_t
*
const
ul_dcch_msg
//UL_DCCH_Message_t
)
//------------------------------------------------------------------------------
{
#if defined(ENABLE_ITTI)
{
ULInformationTransfer_t
*
ulInformationTransfer
=
&
ul_dcch_msg
->
message
.
choice
.
c1
.
choice
.
ulInformationTransfer
;
if
((
ulInformationTransfer
->
criticalExtensions
.
present
==
ULInformationTransfer__criticalExtensions_PR_c1
)
&&
(
ulInformationTransfer
->
criticalExtensions
.
choice
.
c1
.
present
==
ULInformationTransfer__criticalExtensions__c1_PR_ulInformationTransfer_r8
)
&&
(
ulInformationTransfer
->
criticalExtensions
.
choice
.
c1
.
choice
.
ulInformationTransfer_r8
.
dedicatedInfoType
.
present
==
ULInformationTransfer_r8_IEs__dedicatedInfoType_PR_dedicatedInfoNAS
))
{
/* This message hold a dedicated info NAS payload, forward it to NAS */
struct
ULInformationTransfer_r8_IEs__dedicatedInfoType
*
dedicatedInfoType
=
&
ulInformationTransfer
->
criticalExtensions
.
choice
.
c1
.
choice
.
ulInformationTransfer_r8
.
dedicatedInfoType
;
ULInformationTransfer_NB_t
*
ulInformationTransfer
=
&
ul_dcch_msg
->
message
.
choice
.
c1
.
choice
.
ulInformationTransfer_r13
;
if
(
ulInformationTransfer
->
criticalExtensions
.
present
==
ULInformationTransfer_NB__criticalExtensions_PR_ulInformationTransfer_r13
)
{
struct
ULInformationTransfer_NB_r13_IEs
*
ULInformationTransfer_NB_r13_IEs_t
=
&
ulInformationTransfer
->
criticalExtensions
.
choice
.
ulInformationTransfer_r13
;
uint32_t
pdu_length
;
uint8_t
*
pdu_buffer
;
MessageDef
*
msg_p
;
pdu_length
=
dedicatedInfoType
->
choice
.
dedicatedInfoNAS
.
size
;
pdu_buffer
=
dedicatedInfoType
->
choice
.
dedicatedInfoNAS
.
buf
;
pdu_length
=
ULInformationTransfer_NB_r13_IEs_t
->
dedicatedInfoNAS_r13
.
size
;
pdu_buffer
=
ULInformationTransfer_NB_r13_IEs_t
->
dedicatedInfoNAS_r13
.
buf
;
msg_p
=
itti_alloc_new_message
(
TASK_RRC_ENB
,
S1AP_UPLINK_NAS
);
S1AP_UPLINK_NAS
(
msg_p
).
eNB_ue_s1ap_id
=
ue_context_pP
->
ue_context
.
eNB_ue_s1ap_id
;
S1AP_UPLINK_NAS
(
msg_p
).
nas_pdu
.
length
=
pdu_length
;
...
...
@@ -540,33 +536,22 @@ rrc_eNB_send_S1AP_UPLINK_NAS(
}
#else
{
ULInformationTransfer_t
*
ulInformationTransfer
;
ULInformationTransfer_
NB_
t
*
ulInformationTransfer
;
ulInformationTransfer
=
&
ul_dcch_msg
->
message
.
choice
.
c1
.
choice
.
ulInformationTransfer
;
if
(
ulInformationTransfer
->
criticalExtensions
.
present
==
ULInformationTransfer__criticalExtensions_PR_c1
)
{
if
(
ulInformationTransfer
->
criticalExtensions
.
choice
.
c1
.
present
==
ULInformationTransfer__criticalExtensions__c1_PR_ulInformationTransfer_r8
)
{
ULInformationTransfer_r8_IEs_t
*
ulInformationTransferR8
;
ulInformationTransferR8
=
ULInformationTransfer_NB__criticalExtensions_PR_ulInformationTransfer_r13
)
{
ULInformationTransfer_NB_r13_IEs_t
*
ulInformationTransferR13
;
ulInformationTransferR13
=
&
ulInformationTransfer
->
criticalExtensions
.
choice
.
c1
.
choice
.
ulInformationTransfer_r8
;
ulInformationTransfer_r13
;
if
(
ulInformationTransferR8
->
dedicatedInfoType
.
present
==
ULInformationTransfer_r8_IEs__dedicatedInfoType_PR_dedicatedInfoNAS
)
s1ap_eNB_new_data_request
(
mod_id
,
ue_index
,
ulInformationTransferR8
->
dedicatedInfoType
.
choice
.
dedicatedInfoNAS
.
buf
,
ulInformationTransferR8
->
dedicatedInfoType
.
choice
.
dedicatedInfoNAS
.
size
);
}
ulInformationTransferR13
.
buf
,
ulInformationTransferR13
.
size
);
}
}
#endif
...
...
openair2/RRC/LITE/rrc_eNB_S1AP.h
View file @
7bdee0c7
...
...
@@ -35,6 +35,9 @@
#include "defs.h"
#include "UL-DCCH-Message.h"
// NB-IoT Section
#include "UL-DCCH-Message-NB.h"
/* Up link procedures */
...
...
@@ -102,7 +105,7 @@ void
rrc_eNB_send_S1AP_UPLINK_NAS
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_t
*
const
ue_context_pP
,
UL_DCCH_Message_t
*
const
ul_dcch_msg
UL_DCCH_Message_
NB_
t
*
const
ul_dcch_msg
);
/*! \fn void rrc_eNB_send_S1AP_UE_CAPABILITIES_IND(const protocol_ctxt_t * const ctxt_pP, eNB_RRC_UE_t * const ue_context_pP, UL_DCCH_Message_t *ul_dcch_msg)
...
...
openair2/UTIL/LISTS/list.c
View file @
7bdee0c7
...
...
@@ -234,7 +234,7 @@ list_add_list (list_t * sublistP, list_t * listP)
sublistP
->
head
=
NULL
;
sublistP
->
tail
=
NULL
;
listP
->
nb_elements
=
listP
->
nb_elements
+
sublistP
->
nb_elements
;
printf
(
"=============listp->nb_elements=%d (in list.c)=============
\n
"
,
listP
->
nb_elements
);
//
printf("=============listp->nb_elements=%d (in list.c)=============\n",listP->nb_elements);
sublistP
->
nb_elements
=
0
;
}
}
...
...
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