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
alex037yang
OpenXG-RAN
Commits
93627a4c
Commit
93627a4c
authored
Dec 06, 2017
by
matzakos
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://gitlab.eurecom.fr/matzakos/LTE-D2D
Testing of phy_stub
parents
db011d28
a2f8a366
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
315 additions
and
34 deletions
+315
-34
nfapi/nfapi_pnf.c
nfapi/nfapi_pnf.c
+24
-3
openair2/COMMON/rrc_messages_types.h
openair2/COMMON/rrc_messages_types.h
+15
-0
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+97
-2
openair2/ENB_APP/enb_paramdef.h
openair2/ENB_APP/enb_paramdef.h
+29
-3
openair2/RRC/LITE/MESSAGES/asn1_msg.c
openair2/RRC/LITE/MESSAGES/asn1_msg.c
+75
-5
openair2/RRC/LITE/proto.h
openair2/RRC/LITE/proto.h
+1
-1
openair2/RRC/LITE/rrc_UE.c
openair2/RRC/LITE/rrc_UE.c
+59
-14
targets/PROJECTS/GENERIC-LTE-EPC/CONF/oaiL1.nfapi.usrpb210.conf
...s/PROJECTS/GENERIC-LTE-EPC/CONF/oaiL1.nfapi.usrpb210.conf
+3
-3
targets/RT/USER/lte-softmodem-stub.c
targets/RT/USER/lte-softmodem-stub.c
+2
-0
targets/RT/USER/lte-ue.c
targets/RT/USER/lte-ue.c
+10
-3
No files found.
nfapi/nfapi_pnf.c
View file @
93627a4c
...
...
@@ -685,8 +685,18 @@ int config_request(nfapi_pnf_config_t* config, nfapi_pnf_phy_config_t* phy, nfap
pnf_info
*
pnf
=
(
pnf_info
*
)(
config
->
user_data
);
uint8_t
num_tlv
=
0
;
struct
PHY_VARS_eNB_s
*
eNB
=
RC
.
eNB
[
0
][
0
];
LTE_DL_FRAME_PARMS
*
fp
=
&
eNB
->
frame_parms
;
// Panos: In the case of nfapi_mode = 3 (UE = PNF) we should not have dependency on any eNB var. So we aim
// to keep only the necessary just to keep the nfapi FSM rolling by sending a dummy response.
LTE_DL_FRAME_PARMS
*
fp
;
if
(
nfapi_mode
!=
3
)
{
struct
PHY_VARS_eNB_s
*
eNB
=
RC
.
eNB
[
0
][
0
];
fp
=
&
eNB
->
frame_parms
;
}
else
{
fp
=
(
LTE_DL_FRAME_PARMS
*
)
malloc
(
sizeof
(
LTE_DL_FRAME_PARMS
));
}
#if 0
//DJP
...
...
@@ -701,6 +711,7 @@ int config_request(nfapi_pnf_config_t* config, nfapi_pnf_phy_config_t* phy, nfap
//DJP
phy_info
*
phy_info
=
pnf
->
phys
;
//if(nfapi_mode!=3) {
if
(
req
->
nfapi_config
.
timing_window
.
tl
.
tag
==
NFAPI_NFAPI_TIMING_WINDOW_TAG
)
{
phy_info
->
timing_window
=
req
->
nfapi_config
.
timing_window
.
value
;
...
...
@@ -879,6 +890,7 @@ int config_request(nfapi_pnf_config_t* config, nfapi_pnf_phy_config_t* phy, nfap
num_tlv
++
;
}
if
(
nfapi_mode
!=
3
)
{
printf
(
"[PNF] CONFIG_REQUEST[num_tlv:%d] TLVs processed:%d
\n
"
,
req
->
num_tlv
,
num_tlv
);
printf
(
"[PNF] Simulating PHY CONFIG - DJP
\n
"
);
...
...
@@ -890,6 +902,7 @@ int config_request(nfapi_pnf_config_t* config, nfapi_pnf_phy_config_t* phy, nfap
phy_config_request
(
&
phy_config
);
dump_frame_parms
(
fp
);
}
phy_info
->
remote_port
=
req
->
nfapi_config
.
p7_vnf_port
.
value
;
...
...
@@ -907,6 +920,8 @@ int config_request(nfapi_pnf_config_t* config, nfapi_pnf_phy_config_t* phy, nfap
nfapi_resp
.
error_code
=
0
;
// DJP - some value resp->error_code;
nfapi_pnf_config_resp
(
config
,
&
nfapi_resp
);
printf
(
"[PNF] Sent NFAPI_CONFIG_RESPONSE phy_id:%d
\n
"
,
phy_info
->
id
);
if
(
nfapi_mode
==
3
)
free
(
fp
);
return
0
;
}
...
...
@@ -1399,6 +1414,8 @@ int start_request(nfapi_pnf_config_t* config, nfapi_pnf_phy_config_t* phy, nfapi
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"[PNF] DJP - HACK - Set p7_config global ready for subframe ind%s
\n
"
,
__FUNCTION__
);
p7_config_g
=
p7_config
;
printf
(
"Panos-D: start_request, bUFFER SIZE: %d"
,
p7_config_g
->
subframe_buffer_size
);
// Need to wait for main thread to create RU structures
while
(
config_sync_var
<
0
)
{
...
...
@@ -1754,7 +1771,9 @@ void configure_nfapi_pnf(char *vnf_ip_addr, int vnf_p5_port, char *pnf_ip_addr,
{
printf
(
"%s() PNF
\n\n\n\n\n\n
"
,
__FUNCTION__
);
if
(
nfapi_mode
!=
3
)
{
nfapi_mode
=
1
;
// PNF!
}
nfapi_pnf_config_t
*
config
=
nfapi_pnf_config_create
();
...
...
@@ -1822,7 +1841,9 @@ void oai_subframe_ind(uint16_t sfn, uint16_t sf)
if
(
p7_config_g
!=
NULL
&&
sync_var
==
0
)
{
uint16_t
sfn_sf_tx
=
sfn
<<
4
|
sf
;
printf
(
"Panos-D: oai_subframe_ind 1, buffer size:%d"
,
p7_config_g
->
subframe_buffer_size
);
uint16_t
sfn_sf_tx
=
sfn
<<
4
|
sf
;
if
((
sfn
%
100
==
0
)
&&
sf
==
0
)
{
...
...
openair2/COMMON/rrc_messages_types.h
View file @
93627a4c
...
...
@@ -189,6 +189,7 @@ typedef struct RrcConfigurationReq_s {
long
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
MAX_NUM_CCs
];
//SIB19
//for discRxPool
SL_CP_Len_r12_t
discRxPool_cp_Len
[
MAX_NUM_CCs
];
e_SL_DiscResourcePool_r12__discPeriod_r12
discRxPool_discPeriod
[
MAX_NUM_CCs
];
long
discRxPool_numRetx
[
MAX_NUM_CCs
];
...
...
@@ -202,6 +203,20 @@ typedef struct RrcConfigurationReq_s {
char
*
discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf
[
MAX_NUM_CCs
];
long
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size
[
MAX_NUM_CCs
];
long
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
MAX_NUM_CCs
];
//for discRxPoolPS
SL_CP_Len_r12_t
discRxPoolPS_cp_Len
[
MAX_NUM_CCs
];
e_SL_DiscResourcePool_r12__discPeriod_r12
discRxPoolPS_discPeriod
[
MAX_NUM_CCs
];
long
discRxPoolPS_numRetx
[
MAX_NUM_CCs
];
long
discRxPoolPS_numRepetition
[
MAX_NUM_CCs
];
long
discRxPoolPS_ResourceConfig_prb_Num
[
MAX_NUM_CCs
];
long
discRxPoolPS_ResourceConfig_prb_Start
[
MAX_NUM_CCs
];
long
discRxPoolPS_ResourceConfig_prb_End
[
MAX_NUM_CCs
];
SL_OffsetIndicator_r12_PR
discRxPoolPS_ResourceConfig_offsetIndicator_present
[
MAX_NUM_CCs
];
long
discRxPoolPS_ResourceConfig_offsetIndicator_choice
[
MAX_NUM_CCs
];
SubframeBitmapSL_r12_PR
discRxPoolPS_ResourceConfig_subframeBitmap_present
[
MAX_NUM_CCs
];
char
*
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf
[
MAX_NUM_CCs
];
long
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size
[
MAX_NUM_CCs
];
long
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
MAX_NUM_CCs
];
...
...
openair2/ENB_APP/enb_config.c
View file @
93627a4c
...
...
@@ -584,6 +584,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
libconfig_int
rxPool_ResourceConfig_subframeBitmap_choice_bs_size
=
0
;
libconfig_int
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
=
0
;
//SIB19
//For discRxPool
const
char
*
discRxPool_cp_Len
=
NULL
;
const
char
*
discRxPool_discPeriod
=
NULL
;
libconfig_int
discRxPool_numRetx
=
0
;
...
...
@@ -598,7 +599,21 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
const
char
*
discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf
=
NULL
;
libconfig_int
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size
=
0
;
libconfig_int
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
=
0
;
//For discRxPoolPS
const
char
*
discRxPoolPS_cp_Len
=
NULL
;
const
char
*
discRxPoolPS_discPeriod
=
NULL
;
libconfig_int
discRxPoolPS_numRetx
=
0
;
libconfig_int
discRxPoolPS_numRepetition
=
0
;
libconfig_int
discRxPoolPS_ResourceConfig_prb_Num
=
0
;
libconfig_int
discRxPoolPS_ResourceConfig_prb_Start
=
0
;
libconfig_int
discRxPoolPS_ResourceConfig_prb_End
=
0
;
const
char
*
discRxPoolPS_ResourceConfig_offsetIndicator_present
=
NULL
;
libconfig_int
discRxPoolPS_ResourceConfig_offsetIndicator_choice
=
0
;
const
char
*
discRxPoolPS_ResourceConfig_subframeBitmap_present
=
NULL
;
const
char
*
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf
=
NULL
;
libconfig_int
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size
=
0
;
libconfig_int
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused
=
0
;
int32_t
srb1_timer_poll_retransmit
=
0
;
...
...
@@ -1979,7 +1994,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
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
;
//SIB19
//SIB19
- for discRxPool
if
(
strcmp
(
discRxPool_cp_Len
,
"normal"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPool_cp_Len
[
j
]
=
SL_CP_Len_r12_normal
;
}
else
if
(
strcmp
(
discRxPool_cp_Len
,
"extended"
)
==
0
)
{
...
...
@@ -2059,6 +2074,86 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size
[
j
]
=
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size
;
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
j
]
=
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
;
//SIB19 - For discRxPoolPS
if
(
strcmp
(
discRxPoolPS_cp_Len
,
"normal"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_cp_Len
[
j
]
=
SL_CP_Len_r12_normal
;
}
else
if
(
strcmp
(
discRxPoolPS_cp_Len
,
"extended"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_cp_Len
[
j
]
=
SL_CP_Len_r12_extended
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for discRxPoolPS_cp_Len choice: normal,extended!
\n
"
,
RC
.
config_file_name
,
i
,
discRxPoolPS_cp_Len
);
if
(
strcmp
(
discRxPoolPS_discPeriod
,
"rf32"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_discPeriod
[
j
]
=
SL_DiscResourcePool_r12__discPeriod_r12_rf32
;
}
else
if
(
strcmp
(
discRxPoolPS_discPeriod
,
"rf64"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_discPeriod
[
j
]
=
SL_DiscResourcePool_r12__discPeriod_r12_rf64
;
}
else
if
(
strcmp
(
discRxPoolPS_discPeriod
,
"rf128"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_discPeriod
[
j
]
=
SL_DiscResourcePool_r12__discPeriod_r12_rf128
;
}
else
if
(
strcmp
(
discRxPoolPS_discPeriod
,
"rf256"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_discPeriod
[
j
]
=
SL_DiscResourcePool_r12__discPeriod_r12_rf256
;
}
else
if
(
strcmp
(
discRxPoolPS_discPeriod
,
"rf512"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_discPeriod
[
j
]
=
SL_DiscResourcePool_r12__discPeriod_r12_rf512
;
}
else
if
(
strcmp
(
discRxPoolPS_discPeriod
,
"rf1024"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_discPeriod
[
j
]
=
SL_DiscResourcePool_r12__discPeriod_r12_rf1024
;
}
else
if
(
strcmp
(
discRxPoolPS_discPeriod
,
"rf16"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_discPeriod
[
j
]
=
SL_DiscResourcePool_r12__discPeriod_r12_rf16_v1310
;
}
else
if
(
strcmp
(
discRxPoolPS_discPeriod
,
"spare"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_discPeriod
[
j
]
=
SL_DiscResourcePool_r12__discPeriod_r12_spare
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for discRxPoolPS_discPeriod choice: rf32,rf64,rf128,rf512,rf1024,rf16,spare!
\n
"
,
RC
.
config_file_name
,
i
,
discRxPoolPS_discPeriod
);
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_numRetx
[
j
]
=
discRxPoolPS_numRetx
;
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_numRepetition
[
j
]
=
discRxPoolPS_numRepetition
;
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_prb_Num
[
j
]
=
discRxPoolPS_ResourceConfig_prb_Num
;
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_prb_Start
[
j
]
=
discRxPoolPS_ResourceConfig_prb_Start
;
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_prb_End
[
j
]
=
discRxPoolPS_ResourceConfig_prb_End
;
if
(
strcmp
(
discRxPoolPS_ResourceConfig_offsetIndicator_present
,
"prNothing"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_offsetIndicator_present
[
j
]
=
SL_OffsetIndicator_r12_PR_NOTHING
;
}
else
if
(
strcmp
(
discRxPoolPS_ResourceConfig_offsetIndicator_present
,
"prSmall"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_offsetIndicator_present
[
j
]
=
SL_OffsetIndicator_r12_PR_small_r12
;
}
else
if
(
strcmp
(
discRxPoolPS_ResourceConfig_offsetIndicator_present
,
"prLarge"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_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 discRxPoolPS_ResourceConfig_offsetIndicator_present choice: prNothing,prSmal,prLarge!
\n
"
,
RC
.
config_file_name
,
i
,
discRxPoolPS_ResourceConfig_offsetIndicator_present
);
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_offsetIndicator_choice
[
j
]
=
discRxPoolPS_ResourceConfig_offsetIndicator_choice
;
if
(
strcmp
(
discRxPoolPS_ResourceConfig_subframeBitmap_present
,
"prNothing"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_NOTHING
;
}
else
if
(
strcmp
(
discRxPoolPS_ResourceConfig_subframeBitmap_present
,
"prBs4"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_bs4_r12
;
}
else
if
(
strcmp
(
discRxPoolPS_ResourceConfig_subframeBitmap_present
,
"prBs8"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_bs8_r12
;
}
else
if
(
strcmp
(
discRxPoolPS_ResourceConfig_subframeBitmap_present
,
"prBs12"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_bs12_r12
;
}
else
if
(
strcmp
(
discRxPoolPS_ResourceConfig_subframeBitmap_present
,
"prBs16"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_bs16_r12
;
}
else
if
(
strcmp
(
discRxPoolPS_ResourceConfig_subframeBitmap_present
,
"prBs30"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_bs30_r12
;
}
else
if
(
strcmp
(
discRxPoolPS_ResourceConfig_subframeBitmap_present
,
"prBs40"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_subframeBitmap_present
[
j
]
=
SubframeBitmapSL_r12_PR_bs40_r12
;
}
else
if
(
strcmp
(
discRxPoolPS_ResourceConfig_subframeBitmap_present
,
"prBs42"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_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 discRxPoolPS_ResourceConfig_subframeBitmap_present choice: prNothing,prBs4,prBs8,prBs12,prBs16,prBs30,prBs40,prBs42!
\n
"
,
RC
.
config_file_name
,
i
,
discRxPoolPS_ResourceConfig_subframeBitmap_present
);
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf
[
j
]
=
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf
;
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size
[
j
]
=
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size
;
RRC_CONFIGURATION_REQ
(
msg_p
).
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
j
]
=
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused
;
}
}
...
...
openair2/ENB_APP/enb_paramdef.h
View file @
93627a4c
...
...
@@ -386,7 +386,7 @@ static int DEFENBS[] = {0};
#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"
//SIB19
//SIB19
for DiscRxPool
#define ENB_CONFIG_STRING_DISCRXPOOL_CP_LEN "discRxPool_cp_Len"
#define ENB_CONFIG_STRING_DISCRXPOOL_DISCPERIOD "discRxPool_discPeriod"
#define ENB_CONFIG_STRING_DISCRXPOOL_NUMRETX "discRxPool_numRetx"
...
...
@@ -401,7 +401,20 @@ static int DEFENBS[] = {0};
#define ENB_CONFIG_STRING_DISCRXPOOL_RC_SFBITMAP_CHOICE_BS_SIZE "discRxPool_ResourceConfig_subframeBitmap_choice_bs_size"
#define ENB_CONFIG_STRING_DISCRXPOOL_RC_SFBITMAP_CHOICE_BS_ASN_BITS_UNUSED "discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused"
//SIB19 for DiscRxPoolPS
#define ENB_CONFIG_STRING_DISCRXPOOLPS_CP_LEN "DISCRXPOOLPS_cp_Len"
#define ENB_CONFIG_STRING_DISCRXPOOLPS_DISCPERIOD "DISCRXPOOLPS_discPeriod"
#define ENB_CONFIG_STRING_DISCRXPOOLPS_NUMRETX "DISCRXPOOLPS_numRetx"
#define ENB_CONFIG_STRING_DISCRXPOOLPS_NUMREPETITION "DISCRXPOOLPS_numRepetition"
#define ENB_CONFIG_STRING_DISCRXPOOLPS_RC_PRB_NUM "DISCRXPOOLPS_ResourceConfig_prb_Num"
#define ENB_CONFIG_STRING_DISCRXPOOLPS_RC_PRB_START "DISCRXPOOLPS_ResourceConfig_prb_Start"
#define ENB_CONFIG_STRING_DISCRXPOOLPS_RC_PRB_END "DISCRXPOOLPS_ResourceConfig_prb_End"
#define ENB_CONFIG_STRING_DISCRXPOOLPS_RC_OFFSETIND_PRESENT "DISCRXPOOLPS_ResourceConfig_offsetIndicator_present"
#define ENB_CONFIG_STRING_DISCRXPOOLPS_RC_OFFSETIND_CHOICE "DISCRXPOOLPS_ResourceConfig_offsetIndicator_choice"
#define ENB_CONFIG_STRING_DISCRXPOOLPS_RC_SFBITMAP_PRESENT "DISCRXPOOLPS_ResourceConfig_subframeBitmap_present"
#define ENB_CONFIG_STRING_DISCRXPOOLPS_RC_SFBITMAP_CHOICE_BS_BUF "DISCRXPOOLPS_ResourceConfig_subframeBitmap_choice_bs_buf"
#define ENB_CONFIG_STRING_DISCRXPOOLPS_RC_SFBITMAP_CHOICE_BS_SIZE "DISCRXPOOLPS_ResourceConfig_subframeBitmap_choice_bs_size"
#define ENB_CONFIG_STRING_DISCRXPOOLPS_RC_SFBITMAP_CHOICE_BS_ASN_BITS_UNUSED "DISCRXPOOLPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused"
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* component carriers configuration parameters */
...
...
@@ -500,7 +513,20 @@ static int DEFENBS[] = {0};
{ENB_CONFIG_STRING_DISCRXPOOL_RC_SFBITMAP_PRESENT, NULL, 0, strptr:&discRxPool_ResourceConfig_subframeBitmap_present, defstrval:"prNothing", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOL_RC_SFBITMAP_CHOICE_BS_BUF, NULL, 0, strptr:&discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf, defstrval:"001001", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOL_RC_SFBITMAP_CHOICE_BS_SIZE, NULL, 0, iptr:&discRxPool_ResourceConfig_subframeBitmap_choice_bs_size, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOL_RC_SFBITMAP_CHOICE_BS_ASN_BITS_UNUSED,NULL, 0, iptr:&discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused, defintval:1, TYPE_UINT, 0} \
{ENB_CONFIG_STRING_DISCRXPOOL_RC_SFBITMAP_CHOICE_BS_ASN_BITS_UNUSED,NULL, 0, iptr:&discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOLPS_CP_LEN, NULL, 0, strptr:&discRxPoolPS_cp_Len, defstrval:"normal", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOLPS_DISCPERIOD, NULL, 0, strptr:&discRxPoolPS_discPeriod, defstrval:"rf32", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOLPS_NUMRETX, NULL, 0, iptr:&discRxPoolPS_numRetx, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOLPS_NUMREPETITION, NULL, 0, iptr:&discRxPoolPS_numRepetition, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_PRB_NUM, NULL, 0, iptr:&discRxPoolPS_ResourceConfig_prb_Num, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_PRB_START, NULL, 0, iptr:&discRxPoolPS_ResourceConfig_prb_Start, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_PRB_END, NULL, 0, iptr:&discRxPoolPS_ResourceConfig_prb_End, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_OFFSETIND_PRESENT, NULL, 0, strptr:&discRxPoolPS_ResourceConfig_offsetIndicator_present, defstrval:"prNothing", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_OFFSETIND_CHOICE, NULL, 0, iptr:&discRxPoolPS_ResourceConfig_offsetIndicator_choice, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_SFBITMAP_PRESENT, NULL, 0, strptr:&discRxPoolPS_ResourceConfig_subframeBitmap_present, defstrval:"prNothing", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_SFBITMAP_CHOICE_BS_BUF, NULL, 0, strptr:&discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf, defstrval:"001001", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_SFBITMAP_CHOICE_BS_SIZE, NULL, 0, iptr:&discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_SFBITMAP_CHOICE_BS_ASN_BITS_UNUSED,NULL, 0, iptr:&discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused, defintval:1, TYPE_UINT, 0} \
}
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg.c
View file @
93627a4c
...
...
@@ -581,8 +581,11 @@ uint8_t do_SIB23(uint8_t Mod_id,
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
SL_DiscRxPoolList_r12_t
*
SL_DiscRxPoolList
;
//for SIB19 (discRxPool)
struct
SL_DiscResourcePool_r12
*
SL_DiscResourcePool
;
//for SIB19 (discRxPool)
SL_DiscRxPoolList_r12_t
*
SL_DiscRxPoolPSList
;
//for SIB19 (discRxPoolPS)
struct
SL_DiscResourcePool_r12
*
SL_DiscResourcePoolPS
;
//for SIB19 (discRxPoolPS)
#if defined(Rel10) || defined(Rel14)
struct
SystemInformation_r8_IEs__sib_TypeAndInfo__Member
*
sib13_part
;
...
...
@@ -1257,7 +1260,74 @@ uint8_t do_SIB23(uint8_t Mod_id,
//add SL_DiscResourcePool to SL_DiscRxPoolList
ASN_SEQUENCE_ADD
(
&
SL_DiscRxPoolList
->
list
,
SL_DiscResourcePool
);
(
*
sib19
)
->
ext1
=
NULL
;
//for DiscRxPoolPS
(
*
sib19
)
->
ext1
=
CALLOC
(
1
,
sizeof
(
*
(
*
sib19
)
->
ext1
));
(
*
sib19
)
->
ext1
->
discConfigPS_13
=
CALLOC
(
1
,
sizeof
(
*
((
*
sib19
)
->
ext1
->
discConfigPS_13
)));
SL_DiscRxPoolPSList
=
&
(
*
sib19
)
->
ext1
->
discConfigPS_13
->
discRxPoolPS_r13
;
memset
(
SL_DiscRxPoolPSList
,
0
,
sizeof
(
*
SL_DiscRxPoolPSList
));
//fill SL_DiscResourcePool
SL_DiscResourcePoolPS
=
CALLOC
(
1
,
sizeof
(
*
SL_DiscResourcePoolPS
));
SL_DiscResourcePoolPS
->
cp_Len_r12
=
configuration
->
discRxPoolPS_cp_Len
[
CC_id
];
SL_DiscResourcePoolPS
->
discPeriod_r12
=
configuration
->
discRxPoolPS_discPeriod
[
CC_id
];
//sc_TF_ResourceConfig_r12
SL_DiscResourcePoolPS
->
numRetx_r12
=
configuration
->
discRxPoolPS_numRetx
[
CC_id
];
SL_DiscResourcePoolPS
->
numRepetition_r12
=
configuration
->
discRxPoolPS_numRepetition
[
CC_id
];
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
prb_Num_r12
=
configuration
->
discRxPoolPS_ResourceConfig_prb_Num
[
CC_id
];
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
prb_Start_r12
=
configuration
->
discRxPoolPS_ResourceConfig_prb_Start
[
CC_id
];
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
prb_End_r12
=
configuration
->
discRxPoolPS_ResourceConfig_prb_End
[
CC_id
];
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
offsetIndicator_r12
.
present
=
configuration
->
discRxPoolPS_ResourceConfig_offsetIndicator_present
[
CC_id
];
if
(
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
offsetIndicator_r12
.
present
==
SL_OffsetIndicator_r12_PR_small_r12
)
{
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
offsetIndicator_r12
.
choice
.
small_r12
=
configuration
->
discRxPoolPS_ResourceConfig_offsetIndicator_choice
[
CC_id
]
;
}
else
if
(
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
offsetIndicator_r12
.
present
==
SL_OffsetIndicator_r12_PR_large_r12
){
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
offsetIndicator_r12
.
choice
.
large_r12
=
configuration
->
discRxPoolPS_ResourceConfig_offsetIndicator_choice
[
CC_id
]
;
}
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
present
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_present
[
CC_id
];
if
(
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs4_r12
){
//for BS4
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs4_r12
.
size
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs4_r12
.
buf
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs4_r12
.
bits_unused
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
else
if
(
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs8_r12
){
//for BS8
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs8_r12
.
size
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs8_r12
.
buf
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs8_r12
.
bits_unused
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
else
if
(
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs12_r12
){
//for BS12
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs12_r12
.
size
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs12_r12
.
buf
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs12_r12
.
bits_unused
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
else
if
(
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs16_r12
){
//for BS16
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs16_r12
.
size
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs16_r12
.
buf
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs16_r12
.
bits_unused
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
else
if
(
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs30_r12
){
//for BS30
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs30_r12
.
size
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs30_r12
.
buf
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs30_r12
.
bits_unused
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
else
if
(
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs40_r12
){
//for BS40
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs40_r12
.
size
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs40_r12
.
buf
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs40_r12
.
bits_unused
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
else
if
(
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
present
==
SubframeBitmapSL_r12_PR_bs42_r12
){
//for BS42
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs42_r12
.
size
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size
[
CC_id
];
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs42_r12
.
buf
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf
[
CC_id
];;
SL_DiscResourcePoolPS
->
tf_ResourceConfig_r12
.
subframeBitmap_r12
.
choice
.
bs42_r12
.
bits_unused
=
configuration
->
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
CC_id
];
}
//add SL_DiscResourcePool to SL_DiscRxPoolList
ASN_SEQUENCE_ADD
(
&
SL_DiscRxPoolPSList
->
list
,
SL_DiscResourcePoolPS
);
(
*
sib19
)
->
lateNonCriticalExtension
=
NULL
;
//end SIB19
...
...
@@ -1443,7 +1513,7 @@ uint8_t do_SidelinkUEInformation(uint8_t Mod_id, uint8_t *buffer, SL_Destinatio
//3GPP TS 36.331 (Section 5.10.2.3)
sidelinkUEInformation
->
criticalExtensions
.
choice
.
c1
.
present
=
SidelinkUEInformation_r12__criticalExtensions__c1_PR_sidelinkUEInformation_r12
;
switch
(
mode
)
{
//if SIB18 is available
case 1,2,3,4
//if SIB18 is available
case
SL_RECEIVE_COMMUNICATION
:
// to receive sidelink communication
sidelinkUEInformation
->
criticalExtensions
.
choice
.
c1
.
choice
.
sidelinkUEInformation_r12
.
commRxInterestedFreq_r12
=
CALLOC
(
1
,
sizeof
(
*
sidelinkUEInformation
->
criticalExtensions
.
choice
.
c1
.
choice
.
sidelinkUEInformation_r12
.
commRxInterestedFreq_r12
));
...
...
@@ -1511,7 +1581,7 @@ uint8_t do_SidelinkUEInformation(uint8_t Mod_id, uint8_t *buffer, SL_Destinatio
break
;
//if SIB19 is available
//
TTN - for case 6,7, and 8,
we consider only one frequency - a serving frequency
//we consider only one frequency - a serving frequency
case
SL_RECEIVE_DISCOVERY
:
//receive sidelink discovery announcements
sidelinkUEInformation
->
criticalExtensions
.
choice
.
c1
.
choice
.
sidelinkUEInformation_r12
.
discRxInterest_r12
=
CALLOC
(
1
,
...
...
openair2/RRC/LITE/proto.h
View file @
93627a4c
...
...
@@ -172,7 +172,7 @@ void rrc_ue_process_radioResourceConfigDedicated(
\param sib19 Pointer to SIB19 from SI message
\param sl_CommConfig Pointer to SL_CommConfig RRCConnectionConfiguration
\param sl_DiscConfig Pointer to SL_DiscConfig RRCConnectionConfiguration */
void
rrc_ue_process_radioResourceConfig
(
void
rrc_ue_process_
sidelink_
radioResourceConfig
(
module_id_t
Mod_idP
,
uint8_t
eNB_index
,
SystemInformationBlockType18_r12_t
*
sib18
,
...
...
openair2/RRC/LITE/rrc_UE.c
View file @
93627a4c
...
...
@@ -1903,7 +1903,7 @@ rrc_ue_process_rrcConnectionReconfiguration(
if
(
rrcConnectionReconfiguration_r8
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
->
sl_CommConfig_r12
->
commTxResources_r12
->
present
!=
SL_CommConfig_r12__commTxResources_r12_PR_NOTHING
){
LOG_I
(
RRC
,
"sl-CommConfig is present
\n
"
);
//process sl-CommConfig
rrc_ue_process_radioResourceConfig
(
ctxt_pP
->
module_id
,
eNB_index
,
rrc_ue_process_
sidelink_
radioResourceConfig
(
ctxt_pP
->
module_id
,
eNB_index
,
(
SystemInformationBlockType18_r12_t
*
)
NULL
,
(
SystemInformationBlockType19_r12_t
*
)
NULL
,
rrcConnectionReconfiguration_r8
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
->
sl_CommConfig_r12
,
...
...
@@ -1914,7 +1914,7 @@ rrc_ue_process_rrcConnectionReconfiguration(
if
(
rrcConnectionReconfiguration_r8
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
->
nonCriticalExtension
->
sl_DiscConfig_r12
->
discTxResources_r12
->
present
!=
SL_DiscConfig_r12__discTxResources_r12_PR_NOTHING
){
LOG_I
(
RRC
,
"sl-DiscConfig is present
\n
"
);
//process sl-DiscConfig
rrc_ue_process_radioResourceConfig
(
ctxt_pP
->
module_id
,
eNB_index
,
rrc_ue_process_
sidelink_
radioResourceConfig
(
ctxt_pP
->
module_id
,
eNB_index
,
(
SystemInformationBlockType18_r12_t
*
)
NULL
,
(
SystemInformationBlockType19_r12_t
*
)
NULL
,
(
SL_CommConfig_r12_t
*
)
NULL
,
...
...
@@ -3842,7 +3842,7 @@ static int decode_SI( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_in
ctxt_pP
->
frame
,
ctxt_pP
->
module_id
,
eNB_index
,
ctxt_pP
->
module_id
);
//process SIB18 to transfer SL-related parameters to PHY
rrc_ue_process_radioResourceConfig
(
ctxt_pP
->
module_id
,
eNB_index
,
rrc_ue_process_
sidelink_
radioResourceConfig
(
ctxt_pP
->
module_id
,
eNB_index
,
UE_rrc_inst
[
ctxt_pP
->
module_id
].
sib18
[
eNB_index
],
(
SystemInformationBlockType19_r12_t
*
)
NULL
,
(
SL_CommConfig_r12_t
*
)
NULL
,
...
...
@@ -3865,7 +3865,7 @@ static int decode_SI( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_in
LOG_I
(
RRC
,
"[FRAME %05"
PRIu32
"][RRC_UE][MOD %02"
PRIu8
"][][--- MAC_CONFIG_REQ (SIB19 params eNB %"
PRIu8
") --->][MAC_UE][MOD %02"
PRIu8
"][]
\n
"
,
ctxt_pP
->
frame
,
ctxt_pP
->
module_id
,
eNB_index
,
ctxt_pP
->
module_id
);
//process SIB19 to transfer SL-related parameters to PHY
rrc_ue_process_radioResourceConfig
(
ctxt_pP
->
module_id
,
eNB_index
,
rrc_ue_process_
sidelink_
radioResourceConfig
(
ctxt_pP
->
module_id
,
eNB_index
,
(
SystemInformationBlockType18_r12_t
*
)
NULL
,
UE_rrc_inst
[
ctxt_pP
->
module_id
].
sib19
[
eNB_index
],
(
SL_CommConfig_r12_t
*
)
NULL
,
...
...
@@ -4941,7 +4941,7 @@ uint8_t fill_SLSS(const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
*
slss_id
=
UE_rrc_inst
[
ctxt_pP
->
module_id
].
sib18
[
eNB_index
]
->
commConfig_r12
->
commSyncConfig_r12
->
list
.
array
[
0
]
->
slssid_r12
;
syncOffsetIndicator
=
UE_rrc_inst
[
ctxt_pP
->
module_id
].
sib18
[
eNB_index
]
->
commConfig_r12
->
commSyncConfig_r12
->
list
.
array
[
0
]
->
syncOffsetIndicator_r12
;
//if RRC_CONNECTED (Todo: and if networkControlledSyncTx is configured and set to On)
//if RRC_CONNECTED (Todo: and if networkControlledSyncTx
(RRCConnectionReconfiguration)
is configured and set to On)
if
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
Info
[
eNB_index
].
State
==
RRC_CONNECTED
){
//select subframe(s) indicated by syncOffsetIndicator
subframe
=
syncOffsetIndicator
;
...
...
@@ -4974,7 +4974,7 @@ uint8_t fill_SLSS(const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
//-----------------------------------------------------------------------------
void
rrc_ue_process_radioResourceConfig
(
rrc_ue_process_
sidelink_
radioResourceConfig
(
module_id_t
Mod_idP
,
uint8_t
eNB_index
,
SystemInformationBlockType18_r12_t
*
sib18
,
...
...
@@ -4984,19 +4984,39 @@ rrc_ue_process_radioResourceConfig(
)
//-----------------------------------------------------------------------------
{
//process SIB18
//process SIB18
, configure MAC/PHY for receiving SL communication (RRC_IDLE and RRC_CONNECTED), for transmitting SL communication (RRC_IDLE)
if
(
sib18
!=
NULL
)
{
//commRxPool - to receive SL communication
//commTxPoolNormalCommon - to transmit SL communication in RRC_IDLE
//do not consider commTXPoolExceptional for the moment
if
(
sib18
->
commConfig_r12
!=
NULL
)
{
//do not consider commTXPoolExceptional for the moment
//configure PHY/MAC to receive SL communication by using the RPs indicated by commRxPool
//sib18->commConfig_r12->commRxPool_r12
//we can configure a default SLRB to receive one-to-many communication [should be verified]
if
(
sib18
->
commConfig_r12
->
commTxPoolNormalCommon_r12
!=
NULL
)
{
//commTxPoolNormalCommon - to transmit SL communication in RRC_IDLE
//maybe we don't consider this case for the moment since UE will immediately establish a RRC connection after receiving SIB messages
//configure PHY/MAC to transmit SL communication using the RPs indicated by the first entry in commTxPoolNormalCommon
//SL_CommResourcePool_r12_t sl_CommResourcePool = sib18->commConfig_r12->commTxPoolNormalCommon_r12->list.array[0];
}
}
}
//process SIB19
//process SIB19
, configure MAC/PHY for receiving SL discovery (RRC_IDLE and RRC_CONNECTED), for transmitting SL discovery (RRC_IDLE)
if
(
sib19
!=
NULL
)
{
//to receive non-PS related discovery announcements (discRxPool)
//sib19->discConfig_r12->discRxPool_r12;
//to receive PS related discovery announcements (discRxPoolPS)
//sib19->ext1->discConfigPS_13->discRxPoolPS_r13;
//to transmit non-PS related discovery in RRC_IDLE
//sib19->discConfig_r12->discTxPoolCommon_r12;
//to transmit PS related discovery in RRC_IDLE
//sib19->ext1->discConfigPS_13->discTxPoolPS_Common_r13;
}
//process sl_CommConfig
//process sl_CommConfig, configure MAC/PHY for transmitting SL communication (RRC_CONNECTED)
if
(
sl_CommConfig
!=
NULL
)
{
if
(
sl_CommConfig
->
commTxResources_r12
!=
NULL
)
{
...
...
@@ -5020,7 +5040,7 @@ rrc_ue_process_radioResourceConfig(
break
;
case
SL_CommConfig_r12__commTxResources_r12_PR_release
:
//release dedicated resources for SL
//release dedicated resources for SL
communication
break
;
case
SL_CommConfig_r12__commTxResources_r12_PR_NOTHING
:
/* No components present */
...
...
@@ -5033,7 +5053,9 @@ rrc_ue_process_radioResourceConfig(
}
//process sl_DiscConfig, configure MAC/PHY for transmitting SL discovery announcements (RRC_CONNECTED)
if
(
sl_DiscConfig
!=
NULL
)
{
//dedicated resources for transmitting non-PS related discovery
if
(
sl_DiscConfig
->
discTxResources_r12
!=
NULL
)
{
switch
(
sl_DiscConfig
->
discTxResources_r12
->
present
)
{
...
...
@@ -5049,7 +5071,7 @@ rrc_ue_process_radioResourceConfig(
}
break
;
case
SL_DiscConfig_r12__discTxResources_r12_PR_release
:
//
sl_DiscConfig->discTxResources_r12->choice.release;
//
release dedicated resources for SL discovery
break
;
case
SL_DiscConfig_r12__discTxResources_r12_PR_NOTHING
:
/* No components present */
break
;
...
...
@@ -5058,5 +5080,28 @@ rrc_ue_process_radioResourceConfig(
}
}
//dedicated resources for transmitting PS related discovery
if
(
sl_DiscConfig
->
ext2
->
discTxResourcesPS_r13
!=
NULL
){
switch
(
sl_DiscConfig
->
ext2
->
discTxResourcesPS_r13
->
present
)
{
case
SL_DiscConfig_r12__ext2__discTxResourcesPS_r13_PR_setup
:
if
(
sl_DiscConfig
->
ext2
->
discTxResourcesPS_r13
->
choice
.
setup
.
present
==
SL_DiscConfig_r12__ext2__discTxResourcesPS_r13__setup_PR_scheduled_r13
)
{
//sl_DiscConfig->ext2->discTxResourcesPS_r13->choice.setup.choice.scheduled_r13.discHoppingConfig_r13;
//sl_DiscConfig->ext2->discTxResourcesPS_r13->choice.setup.choice.scheduled_r13.discTxConfig_r13
}
else
if
(
sl_DiscConfig
->
ext2
->
discTxResourcesPS_r13
->
choice
.
setup
.
present
==
SL_DiscConfig_r12__ext2__discTxResourcesPS_r13__setup_PR_ue_Selected_r13
)
{
//sl_DiscConfig->ext2->discTxResourcesPS_r13->choice.setup.choice.ue_Selected_r13.discTxPoolPS_Dedicated_r13;
}
else
{
//SL_DiscConfig_r12__ext2__discTxResourcesPS_r13__setup_PR_NOTHING, /* No components present */
}
break
;
case
SL_DiscConfig_r12__ext2__discTxResourcesPS_r13_PR_release
:
break
;
case
SL_DiscConfig_r12__ext2__discTxResourcesPS_r13_PR_NOTHING
:
/* No components present */
break
;
default:
break
;
}
}
}
}
targets/PROJECTS/GENERIC-LTE-EPC/CONF/oaiL1.nfapi.usrpb210.conf
View file @
93627a4c
...
...
@@ -19,9 +19,9 @@ L1s = (
{
num_cc
=
1
;
tr_n_preference
=
"nfapi"
;
local_n_if_name
=
"e
th0
"
;
remote_n_address
=
"10.0.0.2
0
"
;
local_n_address
=
"10.0.0.1
0
"
;
local_n_if_name
=
"e
np0s31f6
"
;
remote_n_address
=
"10.0.0.2"
;
local_n_address
=
"10.0.0.1"
;
local_n_portc
=
50000
;
remote_n_portc
=
50001
;
local_n_portd
=
50010
;
...
...
targets/RT/USER/lte-softmodem-stub.c
View file @
93627a4c
...
...
@@ -1349,6 +1349,8 @@ int main( int argc, char **argv )
init_UE_stub
(
1
,
eMBMS_active
,
uecap_xer_in
);
//init_UE(1,eMBMS_active,uecap_xer_in);
number_of_cards
=
1
;
config_sync_var
=
0
;
if
(
nfapi_mode
==
3
)
// UE-STUB-PNF
{
wait_nfapi_init
(
"main?"
);
...
...
targets/RT/USER/lte-ue.c
View file @
93627a4c
...
...
@@ -875,12 +875,19 @@ static void *UE_phy_stub_thread_rxn_txnp4(void *arg) {
// Panos: is this the right place to call oai_subframe_indication to invoke p7 nfapi callbacks here?
oai_subframe_ind
(
proc
->
frame_rx
,
proc
->
subframe_rx
);
if
(
UE_mac_inst
[
Mod_id
].
tx_req
!=
NULL
)
printf
(
"Panos-D: UE_phy_stub_thread_rxn_txnp4 after oai_subframe_ind
\n
"
);
if
(
UE_mac_inst
[
Mod_id
].
tx_req
!=
NULL
){
printf
(
"Panos-D: UE_phy_stub_thread_rxn_txnp4 after oai_subframe_ind 2
\n
"
);
tx_req_UE_MAC
(
UE_mac_inst
[
Mod_id
].
tx_req
);
if
(
UE_mac_inst
[
Mod_id
].
dl_config_req
!=
NULL
)
}
if
(
UE_mac_inst
[
Mod_id
].
dl_config_req
!=
NULL
)
{
printf
(
"Panos-D: UE_phy_stub_thread_rxn_txnp4 after oai_subframe_ind 3
\n
"
);
dl_config_req_UE_MAC
(
UE_mac_inst
[
Mod_id
].
dl_config_req
);
if
(
UE_mac_inst
[
Mod_id
].
hi_dci0_req
!=
NULL
)
}
if
(
UE_mac_inst
[
Mod_id
].
hi_dci0_req
!=
NULL
){
printf
(
"Panos-D: UE_phy_stub_thread_rxn_txnp4 after oai_subframe_ind 4
\n
"
);
hi_dci0_req_UE_MAC
(
UE_mac_inst
[
Mod_id
].
hi_dci0_req
);
}
//#endif
}
...
...
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