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
Michael Black
OpenXG-RAN
Commits
2de24be2
Commit
2de24be2
authored
Oct 16, 2017
by
Tien-Thinh Nguyen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add SIB18 support - eNB
parent
931ae713
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
667 additions
and
4 deletions
+667
-4
openair2/COMMON/rrc_messages_types.h
openair2/COMMON/rrc_messages_types.h
+22
-0
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+115
-0
openair2/ENB_APP/enb_paramdef.h
openair2/ENB_APP/enb_paramdef.h
+29
-1
openair2/RRC/LITE/MESSAGES/asn1_msg.c
openair2/RRC/LITE/MESSAGES/asn1_msg.c
+191
-1
openair2/RRC/LITE/defs.h
openair2/RRC/LITE/defs.h
+8
-0
openair2/RRC/LITE/rrc_UE.c
openair2/RRC/LITE/rrc_UE.c
+40
-1
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+34
-1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210-d2d.conf
...ENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210-d2d.conf
+228
-0
No files found.
openair2/COMMON/rrc_messages_types.h
View file @
2de24be2
...
...
@@ -37,6 +37,11 @@
#else
#include "RRC/LITE/MESSAGES/SystemInformationBlockType2.h"
#endif
#include "SL-OffsetIndicator-r12.h"
#include "SubframeBitmapSL-r12.h"
#include "SL-CP-Len-r12.h"
#include "SL-PeriodComm-r12.h"
//-------------------------------------------------------------------------------------------//
// Messages for RRC logging
...
...
@@ -166,6 +171,23 @@ typedef struct RrcConfigurationReq_s {
long
ue_TimersAndConstants_n310
[
MAX_NUM_CCs
];
long
ue_TimersAndConstants_n311
[
MAX_NUM_CCs
];
long
ue_TransmissionMode
[
MAX_NUM_CCs
];
//TTN - for D2D
e_SL_CP_Len_r12
rxPool_sc_CP_Len
[
MAX_NUM_CCs
];
e_SL_PeriodComm_r12
rxPool_sc_Period
[
MAX_NUM_CCs
];
e_SL_CP_Len_r12
rxPool_data_CP_Len
[
MAX_NUM_CCs
];
long
rxPool_ResourceConfig_prb_Num
[
MAX_NUM_CCs
];
long
rxPool_ResourceConfig_prb_Start
[
MAX_NUM_CCs
];
long
rxPool_ResourceConfig_prb_End
[
MAX_NUM_CCs
];
SL_OffsetIndicator_r12_PR
rxPool_ResourceConfig_offsetIndicator_present
[
MAX_NUM_CCs
];
long
rxPool_ResourceConfig_offsetIndicator_choice
[
MAX_NUM_CCs
];
SubframeBitmapSL_r12_PR
rxPool_ResourceConfig_subframeBitmap_present
[
MAX_NUM_CCs
];
char
*
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf
[
MAX_NUM_CCs
];
long
rxPool_ResourceConfig_subframeBitmap_choice_bs_size
[
MAX_NUM_CCs
];
long
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
MAX_NUM_CCs
];
}
RrcConfigurationReq
;
// UE: NAS -> RRC messages
...
...
openair2/ENB_APP/enb_config.c
View file @
2de24be2
...
...
@@ -438,6 +438,21 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
int32_t
ue_TimersAndConstants_n311
=
0
;
int32_t
ue_TransmissionMode
=
0
;
//TTN - for D2D
const
char
*
rxPool_sc_CP_Len
=
NULL
;
const
char
*
rxPool_sc_Period
=
NULL
;
const
char
*
rxPool_data_CP_Len
=
NULL
;
libconfig_int
rxPool_ResourceConfig_prb_Num
=
0
;
libconfig_int
rxPool_ResourceConfig_prb_Start
=
0
;
libconfig_int
rxPool_ResourceConfig_prb_End
=
0
;
const
char
*
rxPool_ResourceConfig_offsetIndicator_present
=
NULL
;
libconfig_int
rxPool_ResourceConfig_offsetIndicator_choice
=
0
;
const
char
*
rxPool_ResourceConfig_subframeBitmap_present
=
NULL
;
const
char
*
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf
=
NULL
;
libconfig_int
rxPool_ResourceConfig_subframeBitmap_choice_bs_size
=
0
;
libconfig_int
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
=
0
;
int32_t
srb1_timer_poll_retransmit
=
0
;
int32_t
srb1_timer_reordering
=
0
;
...
...
@@ -1717,6 +1732,106 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
RC
.
config_file_name
,
i
,
ue_TransmissionMode
);
break
;
}
//TTN - for D2D
if
(
strcmp
(
rxPool_sc_CP_Len
,
"normal"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_CP_Len
[
j
]
=
SL_CP_Len_r12_normal
;
}
else
if
(
strcmp
(
rxPool_sc_CP_Len
,
"extended"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_CP_Len
[
j
]
=
SL_CP_Len_r12_extended
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for rxPool_sc_CP_Len choice: normal,extended!
\n
"
,
RC
.
config_file_name
,
i
,
rxPool_sc_CP_Len
);
if
(
strcmp
(
rxPool_sc_Period
,
"sf40"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_sf40
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"sf60"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_sf60
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"sf70"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_sf70
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"sf80"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_sf80
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"sf120"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_sf120
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"sf40"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_sf140
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"sf160"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_sf160
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"sf240"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_sf240
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"sf280"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_sf280
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"sf320"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_sf320
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"spare6"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_spare6
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"spare5"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_spare5
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"spare4"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_spare4
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"spare3"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_spare3
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"spare2"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_spare2
;
}
else
if
(
strcmp
(
rxPool_sc_Period
,
"spare"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_sc_Period
[
j
]
=
SL_PeriodComm_r12_spare
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for rxPool_sc_Period choice: prNothing,prSmal,prLarge!
\n
"
,
RC
.
config_file_name
,
i
,
rxPool_sc_Period
);
if
(
strcmp
(
rxPool_data_CP_Len
,
"normal"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_data_CP_Len
[
j
]
=
SL_CP_Len_r12_normal
;
}
else
if
(
strcmp
(
rxPool_data_CP_Len
,
"extended"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_data_CP_Len
[
j
]
=
SL_CP_Len_r12_extended
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for rxPool_data_CP_Len choice: normal,extended!
\n
"
,
RC
.
config_file_name
,
i
,
rxPool_data_CP_Len
);
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_prb_Num
[
j
]
=
rxPool_ResourceConfig_prb_Num
;
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_prb_Start
[
j
]
=
rxPool_ResourceConfig_prb_Start
;
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_prb_End
[
j
]
=
rxPool_ResourceConfig_prb_End
;
if
(
strcmp
(
rxPool_ResourceConfig_offsetIndicator_present
,
"prNothing"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_offsetIndicator_present
[
j
]
=
SL_OffsetIndicator_r12_PR_NOTHING
;
}
else
if
(
strcmp
(
rxPool_ResourceConfig_offsetIndicator_present
,
"prSmall"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_offsetIndicator_present
[
j
]
=
SL_OffsetIndicator_r12_PR_small_r12
;
}
else
if
(
strcmp
(
rxPool_ResourceConfig_offsetIndicator_present
,
"prLarge"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_offsetIndicator_present
[
j
]
=
SL_OffsetIndicator_r12_PR_large_r12
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for rxPool_ResourceConfig_offsetIndicator_present choice: prNothing,prSmal,prLarge!
\n
"
,
RC
.
config_file_name
,
i
,
rxPool_ResourceConfig_offsetIndicator_present
);
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_offsetIndicator_choice
[
j
]
=
rxPool_ResourceConfig_offsetIndicator_choice
;
if
(
strcmp
(
rxPool_ResourceConfig_subframeBitmap_present
,
"prNothing"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_NOTHING
;
}
else
if
(
strcmp
(
rxPool_ResourceConfig_subframeBitmap_present
,
"prBs4"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_bs4_r12
;
}
else
if
(
strcmp
(
rxPool_ResourceConfig_subframeBitmap_present
,
"prBs8"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_bs8_r12
;
}
else
if
(
strcmp
(
rxPool_ResourceConfig_subframeBitmap_present
,
"prBs12"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_bs12_r12
;
}
else
if
(
strcmp
(
rxPool_ResourceConfig_subframeBitmap_present
,
"prBs16"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_bs16_r12
;
}
else
if
(
strcmp
(
rxPool_ResourceConfig_subframeBitmap_present
,
"prBs30"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_bs30_r12
;
}
else
if
(
strcmp
(
rxPool_ResourceConfig_subframeBitmap_present
,
"prBs40"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_bs40_r12
;
}
else
if
(
strcmp
(
rxPool_ResourceConfig_subframeBitmap_present
,
"prBs42"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_bs42_r12
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for rxPool_ResourceConfig_subframeBitmap_present choice: prNothing,prBs4,prBs8,prBs12,prBs16,prBs30,prBs40,prBs42!
\n
"
,
RC
.
config_file_name
,
i
,
rxPool_ResourceConfig_subframeBitmap_present
);
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf
[
j
]
=
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf
;
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_subframeBitmap_choice_bs_size
[
j
]
=
rxPool_ResourceConfig_subframeBitmap_choice_bs_size
;
RRC_CONFIGURATION_REQ
(
msg_p
).
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
j
]
=
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
;
}
}
char
srb1path
[
MAX_OPTNAME_SIZE
*
2
+
8
];
...
...
openair2/ENB_APP/enb_paramdef.h
View file @
2de24be2
...
...
@@ -371,6 +371,22 @@ static int DEFENBS[] = {0};
#define ENB_CONFIG_STRING_UETIMERS_N310 "ue_TimersAndConstants_n310"
#define ENB_CONFIG_STRING_UETIMERS_N311 "ue_TimersAndConstants_n311"
#define ENB_CONFIG_STRING_UE_TRANSMISSION_MODE "ue_TransmissionMode"
//TTN - for D2D
#define ENB_CONFIG_STRING_RXPOOL_SC_CP_LEN "rxPool_sc_CP_Len"
#define ENB_CONFIG_STRING_RXPOOL_SC_PRIOD "rxPool_sc_Period"
#define ENB_CONFIG_STRING_RXPOOL_DATA_CP_LEN "rxPool_data_CP_Len"
#define ENB_CONFIG_STRING_RXPOOL_RC_PRB_NUM "rxPool_ResourceConfig_prb_Num"
#define ENB_CONFIG_STRING_RXPOOL_RC_PRB_START "rxPool_ResourceConfig_prb_Start"
#define ENB_CONFIG_STRING_RXPOOL_RC_PRB_END "rxPool_ResourceConfig_prb_End"
#define ENB_CONFIG_STRING_RXPOOL_RC_OFFSETIND_PRESENT "rxPool_ResourceConfig_offsetIndicator_present"
#define ENB_CONFIG_STRING_RXPOOL_RC_OFFSETIND_CHOICE "rxPool_ResourceConfig_offsetIndicator_choice"
#define ENB_CONFIG_STRING_RXPOOL_RC_SFBITMAP_PRESENT "rxPool_ResourceConfig_subframeBitmap_present"
#define ENB_CONFIG_STRING_RXPOOL_RC_SFBITMAP_CHOICE_BS_BUF "rxPool_ResourceConfig_subframeBitmap_choice_bs_buf"
#define ENB_CONFIG_STRING_RXPOOL_RC_SFBITMAP_CHOICE_BS_SIZE "rxPool_ResourceConfig_subframeBitmap_choice_bs_size"
#define ENB_CONFIG_STRING_RXPOOL_RC_SFBITMAP_CHOICE_BS_ASN_BITS_UNUSED "rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused"
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* component carriers configuration parameters */
...
...
@@ -444,7 +460,19 @@ static int DEFENBS[] = {0};
{ENB_CONFIG_STRING_UETIMERS_T311, NULL, 0, iptr:&ue_TimersAndConstants_t311, defintval:10000, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_UETIMERS_N310, NULL, 0, iptr:&ue_TimersAndConstants_n310, defintval:20, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_UETIMERS_N311, NULL, 0, iptr:&ue_TimersAndConstants_n311, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_UE_TRANSMISSION_MODE, NULL, 0, iptr:&ue_TransmissionMode, defintval:1, TYPE_UINT, 0} \
{ENB_CONFIG_STRING_UE_TRANSMISSION_MODE, NULL, 0, iptr:&ue_TransmissionMode, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_RXPOOL_SC_CP_LEN, NULL, 0, strptr:&rxPool_sc_CP_Len, defstrval:"normal", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_RXPOOL_SC_PRIOD, NULL, 0, strptr:&rxPool_sc_Period, defstrval:"sf40", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_RXPOOL_DATA_CP_LEN, NULL, 0, strptr:&rxPool_data_CP_Len, defstrval:"normal", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_RXPOOL_RC_PRB_NUM, NULL, 0, iptr:&rxPool_ResourceConfig_prb_Num, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_RXPOOL_RC_PRB_START, NULL, 0, iptr:&rxPool_ResourceConfig_prb_Start, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_RXPOOL_RC_PRB_END, NULL, 0, iptr:&rxPool_ResourceConfig_prb_End, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_RXPOOL_RC_OFFSETIND_PRESENT, NULL, 0, strptr:&rxPool_ResourceConfig_offsetIndicator_present, defstrval:"prNothing", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_RXPOOL_RC_OFFSETIND_CHOICE, NULL, 0, iptr:&rxPool_ResourceConfig_offsetIndicator_choice, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_RXPOOL_RC_SFBITMAP_PRESENT, NULL, 0, strptr:&rxPool_ResourceConfig_subframeBitmap_present, defstrval:"prNothing", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_RXPOOL_RC_SFBITMAP_CHOICE_BS_BUF, NULL, 0, strptr:&rxPool_ResourceConfig_subframeBitmap_choice_bs_buf, defstrval:"001001", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_RXPOOL_RC_SFBITMAP_CHOICE_BS_SIZE, NULL, 0, iptr:&rxPool_ResourceConfig_subframeBitmap_choice_bs_size, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_RXPOOL_RC_SFBITMAP_CHOICE_BS_ASN_BITS_UNUSED,NULL, 0, iptr:&rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused, defintval:1, TYPE_UINT, 0} \
}
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg.c
View file @
2de24be2
...
...
@@ -427,6 +427,11 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
ASN_SEQUENCE_ADD
(
&
schedulingInfo
.
sib_MappingInfo
.
list
,
&
sib_type
);
ASN_SEQUENCE_ADD
(
&
(
*
sib1
)
->
schedulingInfoList
.
list
,
&
schedulingInfo
);
//TTN - This is for SIB18
sib_type
=
SIB_Type_sibType18_v1250
;
ASN_SEQUENCE_ADD
(
&
schedulingInfo
.
sib_MappingInfo
.
list
,
&
sib_type
);
ASN_SEQUENCE_ADD
(
&
(
*
sib1
)
->
schedulingInfoList
.
list
,
&
schedulingInfo
);
// ASN_SEQUENCE_ADD(&schedulingInfo.sib_MappingInfo.list,NULL);
#if defined(ENABLE_ITTI)
...
...
@@ -503,6 +508,14 @@ uint8_t do_SIB23(uint8_t Mod_id,
)
{
struct
SystemInformation_r8_IEs__sib_TypeAndInfo__Member
*
sib2_part
,
*
sib3_part
;
//TTN - for D2D
struct
SystemInformation_r8_IEs__sib_TypeAndInfo__Member
*
sib18_part
,
*
sib19_part
,
*
sib21_part
;
SL_CommRxPoolList_r12_t
*
SL_CommRxPoolList
;
//for SIB18
struct
SL_CommResourcePool_r12
*
SL_CommResourcePool
;
//for SIB18
SL_DiscRxPoolList_r12_t
*
SL_DiscRxPoolList
;
//for SIB19
struct
SL_DiscResourcePool_r12
*
SL_DiscResourcePool
;
//for SIB19
#if defined(Rel10) || defined(Rel14)
struct
SystemInformation_r8_IEs__sib_TypeAndInfo__Member
*
sib13_part
;
MBSFN_SubframeConfigList_t
*
MBSFNSubframeConfigList
;
...
...
@@ -520,6 +533,12 @@ uint8_t do_SIB23(uint8_t Mod_id,
uint8_t
MBMS_flag
=
RC
.
rrc
[
Mod_id
]
->
carrier
[
CC_id
].
MBMS_flag
;
#endif
//TTN - for D2D
SystemInformationBlockType18_r12_t
**
sib18
=
&
RC
.
rrc
[
Mod_id
]
->
carrier
[
CC_id
].
sib18
;
//SystemInformationBlockType19_r12_t **sib19 = &RC.rrc[Mod_id]->carrier[CC_id].sib19;
//SystemInformationBlockType21_r14_t **sib21 = &RC.rrc[Mod_id]->carrier[CC_id].sib21;
if
(
bcch_message
)
{
memset
(
bcch_message
,
0
,
sizeof
(
BCCH_DL_SCH_Message_t
));
}
else
{
...
...
@@ -564,6 +583,24 @@ uint8_t do_SIB23(uint8_t Mod_id,
#endif
//TTN - for D2D
sib18_part
=
CALLOC
(
1
,
sizeof
(
struct
SystemInformation_r8_IEs__sib_TypeAndInfo__Member
));
//sib19_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
//sib21_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
memset
(
sib18_part
,
0
,
sizeof
(
struct
SystemInformation_r8_IEs__sib_TypeAndInfo__Member
));
//memset(sib19_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
//memset(sib21_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
sib18_part
->
present
=
SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib18_v1250
;
//sib19_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib19_v1250;
//sib21_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib21_v14x0;
*
sib18
=
&
sib18_part
->
choice
.
sib18_v1250
;
//*sib19 = &sib19_part->choice.sib19_v1250;
//*sib21 = &sib19_part->choice.sib21_v14x0;
// sib2
(
*
sib2
)
->
ac_BarringInfo
=
NULL
;
...
...
@@ -957,6 +994,153 @@ uint8_t do_SIB23(uint8_t Mod_id,
#endif
//TTN - for D2D
// SIB18
// fill in all elements of SIB18 if present
//later we can read the parameters from the configuration file as for eNB's parameters
asn_struct_ctx_t
asn_ctx_default
;
asn_ctx_default
.
phase
=
0
;
//Decoding phase
asn_ctx_default
.
step
=
0
;
//Elementary step of a phase
asn_ctx_default
.
context
=
0
;
//Other context information
asn_ctx_default
.
ptr
=
NULL
;
//Decoder-specific stuff (stack elements)
asn_ctx_default
.
left
=
0
;
//Number of bytes left, -1 for indefinite
//commRxPool_r12 - should be filled with real values
(
*
sib18
)
->
commConfig_r12
=
CALLOC
(
1
,
sizeof
(
*
(
*
sib18
)
->
commConfig_r12
));
SL_CommRxPoolList
=
&
(
*
sib18
)
->
commConfig_r12
->
commRxPool_r12
;
memset
(
SL_CommRxPoolList
,
0
,
sizeof
(
*
SL_CommRxPoolList
));
SL_CommResourcePool
=
CALLOC
(
1
,
sizeof
(
*
SL_CommResourcePool
));
SL_CommResourcePool
->
sc_CP_Len_r12
=
configuration
->
rxPool_sc_CP_Len
[
CC_id
];
SL_CommResourcePool
->
sc_Period_r12
=
configuration
->
rxPool_sc_Period
[
CC_id
];
SL_CommResourcePool
->
data_CP_Len_r12
=
configuration
->
rxPool_data_CP_Len
[
CC_id
];
//sc_TF_ResourceConfig_r12
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
prb_Num_r12
=
configuration
->
rxPool_ResourceConfig_prb_Num
[
CC_id
];
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
prb_Start_r12
=
configuration
->
rxPool_ResourceConfig_prb_Start
[
CC_id
];
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
prb_End_r12
=
configuration
->
rxPool_ResourceConfig_prb_End
[
CC_id
];
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
offsetIndicator_r12
.
present
=
configuration
->
rxPool_ResourceConfig_offsetIndicator_present
[
CC_id
];
if
(
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
offsetIndicator_r12
.
present
==
SL_OffsetIndicator_r12_PR_small_r12
)
{
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
offsetIndicator_r12
.
choice
.
small_r12
=
configuration
->
rxPool_ResourceConfig_offsetIndicator_choice
[
CC_id
]
;
}
else
if
(
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
offsetIndicator_r12
.
present
==
SL_OffsetIndicator_r12_PR_large_r12
){
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
offsetIndicator_r12
.
choice
.
large_r12
=
configuration
->
rxPool_ResourceConfig_offsetIndicator_choice
[
CC_id
]
;
}
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
present
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_present
[
CC_id
];
if
(
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs4_r12
){
//for BS4
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs4_r12
.
size
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs4_r12
.
buf
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs4_r12
.
bits_unused
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
else
if
(
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs8_r12
){
//for BS8
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs8_r12
.
size
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs8_r12
.
buf
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs8_r12
.
bits_unused
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
else
if
(
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs12_r12
){
//for BS12
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs12_r12
.
size
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs12_r12
.
buf
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs12_r12
.
bits_unused
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
else
if
(
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs16_r12
){
//for BS16
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs16_r12
.
size
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs16_r12
.
buf
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs16_r12
.
bits_unused
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
else
if
(
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs30_r12
){
//for BS30
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs30_r12
.
size
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs30_r12
.
buf
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs30_r12
.
bits_unused
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
else
if
(
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs40_r12
){
//for BS40
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs40_r12
.
size
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs40_r12
.
buf
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs40_r12
.
bits_unused
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
else
if
(
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs42_r12
){
//for BS42
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs42_r12
.
size
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs42_r12
.
buf
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_CommResourcePool
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs42_r12
.
bits_unused
=
configuration
->
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
//dataHoppingConfig_r12
SL_CommResourcePool
->
dataHoppingConfig_r12
.
hoppingParameter_r12
=
0
;
SL_CommResourcePool
->
dataHoppingConfig_r12
.
numSubbands_r12
=
SL_HoppingConfigComm_r12__numSubbands_r12_ns1
;
SL_CommResourcePool
->
dataHoppingConfig_r12
.
rb_Offset_r12
=
0
;
SL_CommResourcePool
->
dataHoppingConfig_r12
.
_asn_ctx
=
asn_ctx_default
;
//ue_SelectedResourceConfig_r12
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
=
CALLOC
(
1
,
sizeof
(
*
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
));
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
prb_Num_r12
=
0
;
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
prb_Start_r12
=
0
;
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
prb_End_r12
=
0
;
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
offsetIndicator_r12
.
present
=
SL_OffsetIndicator_r12_PR_NOTHING
;
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
offsetIndicator_r12
.
choice
.
small_r12
=
0
;
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
offsetIndicator_r12
.
_asn_ctx
.
phase
=
0
;
//Decoding phase
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
offsetIndicator_r12
.
_asn_ctx
.
step
=
0
;
//Elementary step of a phase
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
offsetIndicator_r12
.
_asn_ctx
.
context
=
0
;
//Other context information
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
offsetIndicator_r12
.
_asn_ctx
.
ptr
=
NULL
;
//Decoder-specific stuff (stack elements)
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
offsetIndicator_r12
.
_asn_ctx
.
left
=
0
;
//Number of bytes left, -1 for indefinite
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
present
=
SubframeBitmapSL_r12_PR_NOTHING
;
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs4_r12
.
size
=
0
;
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs4_r12
.
buf
=
NULL
;
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs4_r12
.
bits_unused
=
0
;
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
data_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs4_r12
.
_asn_ctx
=
asn_ctx_default
;
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
trpt_Subset_r12
=
CALLOC
(
1
,
sizeof
(
*
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
trpt_Subset_r12
));
SL_CommResourcePool
->
ue_SelectedResourceConfig_r12
->
_asn_ctx
=
asn_ctx_default
;
//rxParametersNCell_r12
SL_CommResourcePool
->
rxParametersNCell_r12
=
CALLOC
(
1
,
sizeof
(
*
SL_CommResourcePool
->
rxParametersNCell_r12
));
SL_CommResourcePool
->
rxParametersNCell_r12
->
tdd_Config_r12
=
CALLOC
(
1
,
sizeof
(
*
SL_CommResourcePool
->
rxParametersNCell_r12
->
tdd_Config_r12
));
SL_CommResourcePool
->
rxParametersNCell_r12
->
tdd_Config_r12
->
subframeAssignment
=
0
;
SL_CommResourcePool
->
rxParametersNCell_r12
->
tdd_Config_r12
->
specialSubframePatterns
=
0
;
SL_CommResourcePool
->
rxParametersNCell_r12
->
tdd_Config_r12
->
_asn_ctx
=
asn_ctx_default
;
SL_CommResourcePool
->
rxParametersNCell_r12
->
syncConfigIndex_r12
=
0
;
SL_CommResourcePool
->
rxParametersNCell_r12
->
_asn_ctx
=
asn_ctx_default
;
//txParameters_r12
SL_CommResourcePool
->
txParameters_r12
=
CALLOC
(
1
,
sizeof
(
*
SL_CommResourcePool
->
txParameters_r12
));
SL_CommResourcePool
->
txParameters_r12
->
sc_TxParameters_r12
.
alpha_r12
=
Alpha_r12_al0
;
SL_CommResourcePool
->
txParameters_r12
->
sc_TxParameters_r12
.
p0_r12
=
0
;
SL_CommResourcePool
->
txParameters_r12
->
sc_TxParameters_r12
.
_asn_ctx
=
asn_ctx_default
;
//SL_CommResourcePool->ext1->priorityList_r13 ;//optional
SL_CommResourcePool
->
ext1
=
NULL
;
//Context for parsing across buffer boundaries
SL_CommResourcePool
->
_asn_ctx
=
asn_ctx_default
;
//end SL_CommResourcePool
//add SL_CommResourcePool to SL_CommRxPoolList
ASN_SEQUENCE_ADD
(
&
SL_CommRxPoolList
->
list
,
SL_CommResourcePool
);
SL_CommRxPoolList
->
_asn_ctx
=
asn_ctx_default
;
//end commRxPool_r12
//TODO: commTxPoolNormalCommon_r12, similar to commRxPool_r12
//TODO: commTxPoolExceptional_r12
//TODO: commSyncConfig_r12
(
*
sib18
)
->
commConfig_r12
->
_asn_ctx
=
asn_ctx_default
;
(
*
sib18
)
->
ext1
=
NULL
;
(
*
sib18
)
->
lateNonCriticalExtension
=
NULL
;
(
*
sib18
)
->
_asn_ctx
=
asn_ctx_default
;
// SIB19
// fill in all elements of SIB19 if present
/*
SL_DiscRxPoolList= &(*sib19)->discConfig_r12->discRxPool_r12;
//fill SL_DiscResourcePool
//SL_DiscResourcePool->
//add SL_DiscResourcePool to SL_DiscRxPoolList
ASN_SEQUENCE_ADD(&SL_DiscRxPoolList->list,SL_DiscResourcePool);
*/
bcch_message
->
message
.
present
=
BCCH_DL_SCH_MessageType_PR_c1
;
bcch_message
->
message
.
choice
.
c1
.
present
=
BCCH_DL_SCH_MessageType__c1_PR_systemInformation
;
...
...
@@ -964,7 +1148,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
(void*)systemInformation,
sizeof(SystemInformation_t));*/
bcch_message
->
message
.
choice
.
c1
.
choice
.
systemInformation
.
criticalExtensions
.
present
=
SystemInformation__criticalExtensions_PR_
systemInformation_r8
;
bcch_message
->
message
.
choice
.
c1
.
choice
.
systemInformation
.
criticalExtensions
.
present
=
SystemInformation__criticalExtensions_PR_
criticalExtensionsFuture
;
//SystemInformation__criticalExtensions_PR_systemInformation_r8
bcch_message
->
message
.
choice
.
c1
.
choice
.
systemInformation
.
criticalExtensions
.
choice
.
systemInformation_r8
.
sib_TypeAndInfo
.
list
.
count
=
0
;
...
...
@@ -982,6 +1166,12 @@ uint8_t do_SIB23(uint8_t Mod_id,
#endif
//TTN - for D2D
ASN_SEQUENCE_ADD
(
&
bcch_message
->
message
.
choice
.
c1
.
choice
.
systemInformation
.
criticalExtensions
.
choice
.
systemInformation_r8
.
sib_TypeAndInfo
.
list
,
sib18_part
);
//ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list, sib19_part);
//ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list, sib21_part);
#ifdef XER_PRINT
xer_fprint
(
stdout
,
&
asn_DEF_BCCH_DL_SCH_Message
,
(
void
*
)
bcch_message
);
...
...
openair2/RRC/LITE/defs.h
View file @
2de24be2
...
...
@@ -495,6 +495,11 @@ typedef struct {
MBSFNAreaConfiguration_r9_t
*
mcch_message
;
SRB_INFO
MCCH_MESS
[
8
];
// MAX_MBSFN_AREA
#endif
//TTN - SIB 18,19,21 for D2D
SystemInformationBlockType18_r12_t
*
sib18
;
SystemInformationBlockType19_r12_t
*
sib19
;
SystemInformationBlockType21_r14_t
*
sib21
;
// End - TTN
SRB_INFO
SI
;
SRB_INFO
Srb0
;
}
rrc_eNB_carrier_data_t
;
...
...
@@ -584,6 +589,9 @@ typedef struct UE_RRC_INST_s {
SystemInformationBlockType9_t
*
sib9
[
NB_CNX_UE
];
SystemInformationBlockType10_t
*
sib10
[
NB_CNX_UE
];
SystemInformationBlockType11_t
*
sib11
[
NB_CNX_UE
];
//TTN - SIB18
SystemInformationBlockType18_r12_t
*
sib18
[
NB_CNX_UE
];
#if defined(Rel10) || defined(Rel14)
uint8_t
MBMS_flag
;
...
...
openair2/RRC/LITE/rrc_UE.c
View file @
2de24be2
...
...
@@ -3520,6 +3520,24 @@ static void dump_sib13( SystemInformationBlockType13_r9_t *sib13 )
}
#endif
//TTN
//-----------------------------------------------------------------------------
static
void
dump_sib18
(
SystemInformationBlockType18_r12_t
*
sib18
){
LOG_I
(
RRC
,
"[UE] Dumping SIB18
\n
"
);
for
(
int
i
=
0
;
i
<
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
count
;
i
++
)
{
LOG_I
(
RRC
,
" Contents of SIB18 %d/%d
\n
"
,
i
+
1
,
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
count
);
LOG_I
(
RRC
,
" SIB18 rxPool_sc_CP_Len: %d
\n
"
,
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
i
]
->
sc_CP_Len_r12
);
LOG_I
(
RRC
,
" SIB18 sc_Period_r12: %d
\n
"
,
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
i
]
->
sc_Period_r12
);
LOG_I
(
RRC
,
" SIB18 data_CP_Len_r12: %d
\n
"
,
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
i
]
->
data_CP_Len_r12
);
LOG_I
(
RRC
,
" SIB18 prb_Num_r12: %d
\n
"
,
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
i
]
->
sc_TF_ResourceConfig_r12
.
prb_Num_r12
);
LOG_I
(
RRC
,
" SIB18 prb_Start_r12: %d
\n
"
,
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
i
]
->
sc_TF_ResourceConfig_r12
.
prb_Start_r12
);
LOG_I
(
RRC
,
" SIB18 prb_End_r12: %d
\n
"
,
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
i
]
->
sc_TF_ResourceConfig_r12
.
prb_End_r12
);
//to add more log
}
}
//-----------------------------------------------------------------------------
static
int
decode_SI
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
uint8_t
eNB_index
)
{
...
...
@@ -3531,7 +3549,10 @@ static int decode_SI( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_in
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_UE_DECODE_SI
,
VCD_FUNCTION_IN
);
// Dump contents
if
((
*
si
)
->
criticalExtensions
.
present
==
SystemInformation__criticalExtensions_PR_systemInformation_r8
)
{
//TTN - should be modified since we use SystemInformation__criticalExtensions_PR_criticalExtensionsFuture
// instead of SystemInformation__criticalExtensions_PR_systemInformation_r8
//if ((*si)->criticalExtensions.present == SystemInformation__criticalExtensions_PR_systemInformation_r8) {
if
((
*
si
)
->
criticalExtensions
.
present
==
SystemInformation__criticalExtensions_PR_criticalExtensionsFuture
)
{
LOG_D
(
RRC
,
"[UE] (*si)->criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list.count %d
\n
"
,
(
*
si
)
->
criticalExtensions
.
choice
.
systemInformation_r8
.
sib_TypeAndInfo
.
list
.
count
);
}
else
{
...
...
@@ -3767,6 +3788,24 @@ static int decode_SI( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_in
break
;
}
#endif
//TTN - SIB18
case
SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib18_v1250
:
if
((
UE_rrc_inst
[
ctxt_pP
->
module_id
].
Info
[
eNB_index
].
SIStatus
&
8192
)
==
0
)
{
UE_rrc_inst
[
ctxt_pP
->
module_id
].
Info
[
eNB_index
].
SIStatus
|=
8192
;
new_sib
=
1
;
memcpy
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
sib18
[
eNB_index
],
&
typeandinfo
->
choice
.
sib18_v1250
,
sizeof
(
SystemInformationBlockType18_r12_t
)
);
LOG_I
(
RRC
,
"[UE %"
PRIu8
"] Frame %"
PRIu32
" Found SIB18 from eNB %"
PRIu8
"
\n
"
,
ctxt_pP
->
module_id
,
ctxt_pP
->
frame
,
eNB_index
);
dump_sib18
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
sib18
[
eNB_index
]
);
// adding here function to store necessary parameters to transfer to PHY layer
LOG_I
(
RRC
,
"[FRAME %05"
PRIu32
"][RRC_UE][MOD %02"
PRIu8
"][][--- MAC_CONFIG_REQ (SIB18 params eNB %"
PRIu8
") --->][MAC_UE][MOD %02"
PRIu8
"][]
\n
"
,
ctxt_pP
->
frame
,
ctxt_pP
->
module_id
,
eNB_index
,
ctxt_pP
->
module_id
);
//should modify function rrc_mac_config_req_ue() to transfer SL-related parameters to PHY
//rrc_mac_config_req_ue();
}
break
;
default:
break
;
}
...
...
openair2/RRC/LITE/rrc_eNB.c
View file @
2de24be2
...
...
@@ -222,7 +222,40 @@ init_SI(
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
),
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib2
->
radioResourceConfigCommon
.
pusch_ConfigCommon
.
ul_ReferenceSignalsPUSCH
.
cyclicShift
);
//TTN - SIB 18
for
(
int
j
=
0
;
j
<
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
count
;
j
++
)
{
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_FMT
" Contents of SIB18 %d/%d
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
),
j
+
1
,
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
count
);
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_FMT
" SIB18 rxPool_sc_CP_Len: %d
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
),
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
j
]
->
sc_CP_Len_r12
);
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_FMT
" SIB18 sc_Period_r12: %d
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
),
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
j
]
->
sc_Period_r12
);
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_FMT
" SIB18 data_CP_Len_r12: %d
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
),
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
j
]
->
data_CP_Len_r12
);
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_FMT
" SIB18 prb_Num_r12: %d
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
),
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
j
]
->
sc_TF_ResourceConfig_r12
.
prb_Num_r12
);
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_FMT
" SIB18 prb_Start_r12: %d
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
),
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
j
]
->
sc_TF_ResourceConfig_r12
.
prb_Start_r12
);
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_FMT
" SIB18 prb_End_r12: %d
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
),
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
j
]
->
sc_TF_ResourceConfig_r12
.
prb_End_r12
);
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_FMT
" SIB18 offsetIndicator: %d
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
),
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
j
]
->
sc_TF_ResourceConfig_r12
.
offsetIndicator_r12
.
choice
.
small_r12
);
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_FMT
" SIB18 subframeBitmap_choice_bs_buf: %s
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
ctxt_pP
),
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
sib18
->
commConfig_r12
->
commRxPool_r12
.
list
.
array
[
j
]
->
sc_TF_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs16_r12
.
buf
);
}
#if defined(Rel10) || defined(Rel14)
if
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
MBMS_flag
>
0
)
{
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210-d2d.conf
0 → 100644
View file @
2de24be2
Active_eNBs
= (
"eNB_Eurecom_LTEBox"
);
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
eNBs
=
(
{
//////////
Identification
parameters
:
eNB_ID
=
0
xe00
;
cell_type
=
"CELL_MACRO_ENB"
;
eNB_name
=
"eNB_Eurecom_LTEBox"
;
//
Tracking
area
code
,
0
x0000
and
0
xfffe
are
reserved
values
tracking_area_code
=
"1"
;
mobile_country_code
=
"208"
;
mobile_network_code
=
"93"
;
tr_s_preference
=
"local_mac"
//////////
Physical
parameters
:
component_carriers
= (
{
node_function
=
"3GPP_eNODEB"
;
node_timing
=
"synch_to_ext_device"
;
node_synch_ref
=
0
;
frame_type
=
"FDD"
;
tdd_config
=
3
;
tdd_config_s
=
0
;
prefix_type
=
"NORMAL"
;
eutra_band
=
7
;
downlink_frequency
=
2685000000
L
;
uplink_frequency_offset
= -
120000000
;
Nid_cell
=
0
;
N_RB_DL
=
50
;
Nid_cell_mbsfn
=
0
;
nb_antenna_ports
=
1
;
nb_antennas_tx
=
1
;
nb_antennas_rx
=
1
;
tx_gain
=
90
;
rx_gain
=
125
;
pbch_repetition
=
"FALSE"
;
prach_root
=
0
;
prach_config_index
=
0
;
prach_high_speed
=
"DISABLE"
;
prach_zero_correlation
=
1
;
prach_freq_offset
=
2
;
pucch_delta_shift
=
1
;
pucch_nRB_CQI
=
1
;
pucch_nCS_AN
=
0
;
pucch_n1_AN
=
32
;
pdsch_referenceSignalPower
= -
27
;
pdsch_p_b
=
0
;
pusch_n_SB
=
1
;
pusch_enable64QAM
=
"DISABLE"
;
pusch_hoppingMode
=
"interSubFrame"
;
pusch_hoppingOffset
=
0
;
pusch_groupHoppingEnabled
=
"ENABLE"
;
pusch_groupAssignment
=
0
;
pusch_sequenceHoppingEnabled
=
"DISABLE"
;
pusch_nDMRS1
=
1
;
phich_duration
=
"NORMAL"
;
phich_resource
=
"ONESIXTH"
;
srs_enable
=
"DISABLE"
;
/*
srs_BandwidthConfig
=;
srs_SubframeConfig
=;
srs_ackNackST
=;
srs_MaxUpPts
=;*/
pusch_p0_Nominal
= -
96
;
pusch_alpha
=
"AL1"
;
pucch_p0_Nominal
= -
104
;
msg3_delta_Preamble
=
6
;
pucch_deltaF_Format1
=
"deltaF2"
;
pucch_deltaF_Format1b
=
"deltaF3"
;
pucch_deltaF_Format2
=
"deltaF0"
;
pucch_deltaF_Format2a
=
"deltaF0"
;
pucch_deltaF_Format2b
=
"deltaF0"
;
rach_numberOfRA_Preambles
=
64
;
rach_preamblesGroupAConfig
=
"DISABLE"
;
/*
rach_sizeOfRA_PreamblesGroupA
= ;
rach_messageSizeGroupA
= ;
rach_messagePowerOffsetGroupB
= ;
*/
rach_powerRampingStep
=
4
;
rach_preambleInitialReceivedTargetPower
= -
108
;
rach_preambleTransMax
=
10
;
rach_raResponseWindowSize
=
10
;
rach_macContentionResolutionTimer
=
48
;
rach_maxHARQ_Msg3Tx
=
4
;
pcch_default_PagingCycle
=
128
;
pcch_nB
=
"oneT"
;
bcch_modificationPeriodCoeff
=
2
;
ue_TimersAndConstants_t300
=
1000
;
ue_TimersAndConstants_t301
=
1000
;
ue_TimersAndConstants_t310
=
1000
;
ue_TimersAndConstants_t311
=
10000
;
ue_TimersAndConstants_n310
=
20
;
ue_TimersAndConstants_n311
=
1
;
ue_TransmissionMode
=
1
;
rxPool_sc_CP_Len
=
"normal"
;
rxPool_sc_Period
=
"sf80"
;
rxPool_data_CP_Len
=
"normal"
;
rxPool_ResourceConfig_prb_Num
=
3
;
rxPool_ResourceConfig_prb_Start
=
4
;
rxPool_ResourceConfig_prb_End
=
9
;
rxPool_ResourceConfig_offsetIndicator_present
=
"prSmall"
;
rxPool_ResourceConfig_offsetIndicator_choice
=
3
;
rxPool_ResourceConfig_subframeBitmap_present
=
"prBs16"
;
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf
=
"1100110011001100"
;
rxPool_ResourceConfig_subframeBitmap_choice_bs_size
=
16
;
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
=
0
;
rxPool_ResourceConfig_dataHoppingConfig_hoppingParameter
=
0
;
}
);
srb1_parameters
:
{
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
timer_poll_retransmit
=
80
;
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
timer_reordering
=
35
;
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
timer_status_prohibit
=
0
;
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
poll_pdu
=
4
;
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
poll_byte
=
99999
;
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
max_retx_threshold
=
4
;
}
# ------- SCTP definitions
SCTP
:
{
# Number of streams to use in input/output
SCTP_INSTREAMS
=
2
;
SCTP_OUTSTREAMS
=
2
;
};
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"127.0.0.3"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
}
);
NETWORK_INTERFACES
:
{
ENB_INTERFACE_NAME_FOR_S1_MME
=
"lo"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"127.0.0.2/24"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"127.0.0.4/24"
;
ENB_PORT_FOR_S1U
=
2152
;
# Spec 2152
};
}
);
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
}
);
L1s
= (
{
num_cc
=
1
;
tr_n_preference
=
"local_mac"
;
}
);
RUs
= (
{
local_rf
=
"yes"
nb_tx
=
1
nb_rx
=
1
att_tx
=
0
att_rx
=
0
;
bands
= [
7
];
max_pdschReferenceSignalPower
= -
27
;
max_rxgain
=
125
;
eNB_instances
= [
0
];
}
);
log_config
:
{
global_log_level
=
"info"
;
global_log_verbosity
=
"medium"
;
hw_log_level
=
"info"
;
hw_log_verbosity
=
"medium"
;
phy_log_level
=
"info"
;
phy_log_verbosity
=
"medium"
;
mac_log_level
=
"info"
;
mac_log_verbosity
=
"high"
;
rlc_log_level
=
"info"
;
rlc_log_verbosity
=
"medium"
;
pdcp_log_level
=
"info"
;
pdcp_log_verbosity
=
"medium"
;
rrc_log_level
=
"info"
;
rrc_log_verbosity
=
"medium"
;
};
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