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
lizhongxiao
OpenXG-RAN
Commits
180f9787
Commit
180f9787
authored
Apr 26, 2023
by
Swetank Srivastava
Committed by
Vijay C
May 09, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sync issue fix for portman, sys task and rrc
parent
73a46650
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
537 additions
and
344 deletions
+537
-344
common/utils/LOG/log.c
common/utils/LOG/log.c
+1
-0
common/utils/LOG/log.h
common/utils/LOG/log.h
+3
-0
common/utils/T/T_messages.txt
common/utils/T/T_messages.txt
+21
-0
common/utils/ocp_itti/intertask_interface.h
common/utils/ocp_itti/intertask_interface.h
+1
-0
executables/create_tasks.c
executables/create_tasks.c
+4
-1
openair2/COMMON/rrc_messages_def.h
openair2/COMMON/rrc_messages_def.h
+3
-0
openair2/COMMON/rrc_messages_types.h
openair2/COMMON/rrc_messages_types.h
+16
-0
openair2/COMMON/ss_messages_types.h
openair2/COMMON/ss_messages_types.h
+1
-0
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+1
-21
openair2/RRC/LTE/MESSAGES/asn1_msg.c
openair2/RRC/LTE/MESSAGES/asn1_msg.c
+2
-2
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+71
-31
openair3/SS/ss_eNB_context.h
openair3/SS/ss_eNB_context.h
+11
-2
openair3/SS/ss_eNB_port_man_task.c
openair3/SS/ss_eNB_port_man_task.c
+81
-49
openair3/SS/ss_eNB_port_man_task.h
openair3/SS/ss_eNB_port_man_task.h
+1
-1
openair3/SS/ss_eNB_sys_task.c
openair3/SS/ss_eNB_sys_task.c
+320
-237
No files found.
common/utils/LOG/log.c
View file @
180f9787
...
...
@@ -472,6 +472,7 @@ int logInit (void)
register_log_component
(
"ENB_APP"
,
"log"
,
ENB_APP
);
register_log_component
(
"ENB_SS"
,
"log"
,
ENB_SS
);
register_log_component
(
"ENB_SS_PORTMAN"
,
"log"
,
ENB_SS_PORTMAN
);
register_log_component
(
"ENB_SS_PORTMAN_ACP"
,
"log"
,
ENB_SS_PORTMAN_ACP
);
register_log_component
(
"ENB_SS_SYS_TASK"
,
"log"
,
ENB_SS_SYS_TASK
);
register_log_component
(
"ENB_SS_SRB_ACP"
,
"log"
,
ENB_SS_SRB_ACP
);
register_log_component
(
"ENB_SS_SYSIND"
,
"log"
,
ENB_SS_SYSIND
);
...
...
common/utils/LOG/log.h
View file @
180f9787
...
...
@@ -172,6 +172,7 @@ extern "C" {
#define DEBUG_ENB_SS_VNG (1<<30)
#define DEBUG_ENB_SS_VTP (1<<31)
#define DEBUG_ENB_SS_VT_TIMER (1<<32)
#define DEBUG_ENB_SS_PORTMAN_ACP (1<<33)
#define LOG_MASKMAP_INIT {\
{"PRACH", DEBUG_PRACH},\
...
...
@@ -192,6 +193,7 @@ extern "C" {
{"UE_TIMING", UE_TIMING},\
{"ENB_SS", DEBUG_ENB_SS},\
{"ENB_SS_PORTMAN", DEBUG_ENB_SS_PORTMAN},\
{"ENB_SS_PORTMAN_ACP", DEBUG_ENB_SS_PORTMAN_ACP},\
{"ENB_SS_SYS_TASK", DEBUG_ENB_SS_SYS_TASK},\
{"ENB_SS_SRB_ACP", DEBUG_ENB_SS_SRB_ACP},\
{"ENB_SS_SYSIND", DEBUG_ENB_SS_SYSIND},\
...
...
@@ -253,6 +255,7 @@ typedef enum {
ENB_APP
,
ENB_SS
,
ENB_SS_PORTMAN
,
ENB_SS_PORTMAN_ACP
,
ENB_SS_SYS_TASK
,
ENB_SS_SRB_ACP
,
ENB_SS_SYSIND
,
...
...
common/utils/T/T_messages.txt
View file @
180f9787
...
...
@@ -655,6 +655,27 @@ ID = LEGACY_ENB_SS_PORTMAN_TRACE
GROUP = ALL:LEGACY_ENB_SS_PORTMAN:LEGACY_GROUP_TRACE:LEGACY
FORMAT = string,log
ID = LEGACY_ENB_SS_PORTMAN_ACP_INFO
DESC = ENB_SS_PORTMAN_ACP legacy logs - info level
GROUP = ALL:LEGACY_ENB_SS_PORTMAN_ACP:LEGACY_GROUP_INFO:LEGACY
FORMAT = string,log
ID = LEGACY_ENB_SS_PORTMAN_ACP_ERROR
DESC = ENB_SS_PORTMAN_ACP legacy logs - error level
GROUP = ALL:LEGACY_ENB_SS_PORTMAN_ACP:LEGACY_GROUP_ERROR:LEGACY
FORMAT = string,log
ID = LEGACY_ENB_SS_PORTMAN_ACP_WARNING
DESC = ENB_SS_PORTMAN_ACP legacy logs - warning level
GROUP = ALL:LEGACY_ENB_SS_PORTMAN_ACP:LEGACY_GROUP_WARNING:LEGACY
FORMAT = string,log
ID = LEGACY_ENB_SS_PORTMAN_ACP_DEBUG
DESC = ENB_SS_PORTMAN_ACP legacy logs - debug level
GROUP = ALL:LEGACY_ENB_SS_PORTMAN_ACP:LEGACY_GROUP_DEBUG:LEGACY
FORMAT = string,log
ID = LEGACY_ENB_SS_PORTMAN_ACP_TRACE
DESC = ENB_SS_PORTMAN_ACP legacy logs - trace level
GROUP = ALL:LEGACY_ENB_SS_PORTMAN_ACP:LEGACY_GROUP_TRACE:LEGACY
FORMAT = string,log
ID = LEGACY_ENB_SS_SYS_TASK_INFO
DESC = ENB_SS_SYS_TASK legacy logs - info level
GROUP = ALL:LEGACY_ENB_SS_SYS_TASK:LEGACY_GROUP_INFO:LEGACY
...
...
common/utils/ocp_itti/intertask_interface.h
View file @
180f9787
...
...
@@ -327,6 +327,7 @@ void *rrc_enb_process_msg(void *);
TASK_DEF(TASK_M3AP_MCE, TASK_PRIORITY_MED, 200, NULL, NULL) \
TASK_DEF(TASK_SCTP, TASK_PRIORITY_MED, 200, NULL, NULL) \
TASK_DEF(TASK_SS_PORTMAN, TASK_PRIORITY_MED, 200, NULL, NULL) \
TASK_DEF(TASK_SS_PORTMAN_ACP, TASK_PRIORITY_MED, 200, NULL, NULL) \
TASK_DEF(TASK_SS_PORTMAN_GNB, TASK_PRIORITY_MED, 200, NULL, NULL) \
TASK_DEF(TASK_SYS, TASK_PRIORITY_MED, 200, NULL, NULL) \
TASK_DEF(TASK_SYS_GNB, TASK_PRIORITY_MED, 200, NULL, NULL) \
...
...
executables/create_tasks.c
View file @
180f9787
...
...
@@ -62,7 +62,10 @@ int create_tasks(uint32_t enb_nb) {
if
(
RC
.
ss
.
mode
>=
SS_SOFTMODEM
)
{
rc
=
itti_create_task
(
TASK_SS_PORTMAN
,
ss_eNB_port_man_task
,
NULL
);
rc
=
itti_create_task
(
TASK_SS_PORTMAN
,
ss_eNB_port_man_eNB_task
,
NULL
);
AssertFatal
(
rc
>=
0
,
"Create task for SS manager failed
\n
"
);
rc
=
itti_create_task
(
TASK_SS_PORTMAN_ACP
,
ss_eNB_port_man_acp_task
,
NULL
);
AssertFatal
(
rc
>=
0
,
"Create task for SS manager failed
\n
"
);
rc
=
itti_create_task
(
TASK_SYS
,
ss_eNB_sys_task
,
NULL
);
...
...
openair2/COMMON/rrc_messages_def.h
View file @
180f9787
...
...
@@ -54,9 +54,12 @@ MESSAGE_DEF(RRC_STATE_IND, MESSAGE_PRIORITY_MED, RrcStateInd,
//-------------------------------------------------------------------------------------------//
// eNB: ENB_APP -> RRC messages
MESSAGE_DEF
(
RRC_CONFIGURATION_REQ
,
MESSAGE_PRIORITY_MED
,
RrcConfigurationReq
,
rrc_configuration_req
)
MESSAGE_DEF
(
RRC_CONFIGURATION_CNF
,
MESSAGE_PRIORITY_MED
,
RrcConfigurationCnf
,
rrc_configuration_cnf
)
MESSAGE_DEF
(
RRC_RBLIST_CFG_REQ
,
MESSAGE_PRIORITY_MED
,
RrcRblistCfgReq
,
rrc_rblist_cfg_req
)
MESSAGE_DEF
(
RRC_RBLIST_CFG_CNF
,
MESSAGE_PRIORITY_MED
,
RrcRblistCfgCnf
,
rrc_rblist_cfg_cnf
)
MESSAGE_DEF
(
RRC_UE_CAT_INFO
,
MESSAGE_PRIORITY_MED
,
rrcUECatInfo
,
rrc_ue_cat_info
)
MESSAGE_DEF
(
RRC_AS_SECURITY_CONFIG_REQ
,
MESSAGE_PRIORITY_MED
,
RrcAsSecurityConfigReq
,
rrc_as_security_config_req
)
MESSAGE_DEF
(
RRC_AS_SECURITY_CONFIG_CNF
,
MESSAGE_PRIORITY_MED
,
RrcAsSecurityConfigCnf
,
rrc_as_security_config_cnf
)
MESSAGE_DEF
(
NBIOTRRC_CONFIGURATION_REQ
,
MESSAGE_PRIORITY_MED
,
NbIoTRrcConfigurationReq
,
nbiotrrc_configuration_req
)
// gNB: gNB_APP -> RRC messages
...
...
openair2/COMMON/rrc_messages_types.h
View file @
180f9787
...
...
@@ -83,12 +83,15 @@
#define RRC_STATE_IND(mSGpTR) (mSGpTR)->ittiMsg.rrc_state_ind
#define RRC_CONFIGURATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_configuration_req
#define RRC_CONFIGURATION_CNF(mSGpTR) (mSGpTR)->ittiMsg.rrc_configuration_cnf
#define RRC_RBLIST_CFG_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_rblist_cfg_req
#define RRC_RBLIST_CFG_CNF(mSGpTR) (mSGpTR)->ittiMsg.rrc_rblist_cfg_cnf
#define RRC_UE_CAT_INFO(mSGpTR) (mSGpTR)->ittiMsg.rrc_ue_cat_info
#define RRC_AS_SECURITY_CONFIG_REQ(mSGpTR) (mSGpTR)->ittiMsg.rrc_as_security_config_req
#define RRC_AS_SECURITY_CONFIG_CNF(mSGpTR) (mSGpTR)->ittiMsg.rrc_as_security_config_cnf
#define NBIOTRRC_CONFIGURATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nbiotrrc_configuration_req
...
...
@@ -167,6 +170,10 @@ typedef struct RrcAsSecurityConfigReq_s {
int
rnti
;
}
RrcAsSecurityConfigReq
;
typedef
struct
RrcAsSecurityConfigCnf_s
{
bool
status
;
}
RrcAsSecurityConfigCnf
;
enum
ue_CategoryDL_v1310_e
{
ue_CategoryDL_v1310_e_n17
=
0
,
ue_CategoryDL_v1310_e_m1
=
1
,
...
...
@@ -228,6 +235,10 @@ typedef struct RrcRblistCfgReq_s {
rb_info
rb_list
[
MAX_RBS
];
}
RrcRblistCfgReq
;
typedef
struct
RrcRblistCfgCnf_s
{
bool
status
;
}
RrcRblistCfgCnf
;
typedef
struct
RrcStateInd_s
{
Rrc_State_t
state
;
Rrc_Sub_State_t
sub_state
;
...
...
@@ -575,6 +586,11 @@ typedef struct RrcConfigurationReq_s {
}
RrcConfigurationReq
;
typedef
struct
RrcConfigurationCnf_s
{
bool
status
;
}
RrcConfigurationCnf
;
#define MAX_NUM_NBIOT_CELEVELS 3
typedef
struct
NbIoTRrcConfigurationReq_s
{
...
...
openair2/COMMON/ss_messages_types.h
View file @
180f9787
...
...
@@ -48,6 +48,7 @@
#define SS_SYS_PROXY_MSG_CNF(mSGpTR) (mSGpTR)->ittiMsg.udp_data_ind
#define SS_PAGING_IND(mSGpTR) (mSGpTR)->ittiMsg.ss_paging_ind
#define SS_NR_PAGING_IND(mSGpTR) (mSGpTR)->ittiMsg.ss_nr_paging_ind
#define SS_PAGING_CNF(mSGpTR) (mSGpTR)->ittiMsg.ss_paging_cnf
#define SS_L1MACIND_CTRL(mSGpTR) (mSGpTR)->ittiMsg.ss_l1macind_ctrl
#define SS_ULGRANT_INFO(mSGpTR) (mSGpTR)->ittiMsg.ss_ulgrant_info
...
...
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
180f9787
...
...
@@ -495,7 +495,6 @@ rx_sdu(const module_id_t enb_mod_idP,
}
UE_template_ptr
->
ul_SR
=
1
;
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d rnti:%d ul_SR=1
\n
"
,
__FUNCTION__
,
__LINE__
,
UE_RNTI
(
enb_mod_idP
,
UE_id
));
UE_scheduling_control
->
crnti_reconfigurationcomplete_flag
=
1
;
UE_info
->
UE_template
[
UE_PCCID
(
enb_mod_idP
,
UE_id
)][
UE_id
].
configured
=
1
;
cancel_ra_proc
(
enb_mod_idP
,
...
...
@@ -559,7 +558,6 @@ rx_sdu(const module_id_t enb_mod_idP,
}
UE_template_ptr
->
ul_SR
=
1
;
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d rnti:%d ul_SR=1
\n
"
,
__FUNCTION__
,
__LINE__
,
UE_RNTI
(
enb_mod_idP
,
UE_id
));
UE_scheduling_control
->
crnti_reconfigurationcomplete_flag
=
1
;
}
else
{
cancel_ra_proc
(
enb_mod_idP
,
CC_idP
,
frameP
,
current_rnti
);
...
...
@@ -1897,7 +1895,6 @@ schedule_ulsch_rnti(module_id_t module_idP,
//uint8_t aggregation = 2;
int
sched_frame
=
frameP
;
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
sched_subframeP
<
subframeP
)
{
sched_frame
++
;
...
...
@@ -1924,7 +1921,6 @@ schedule_ulsch_rnti(module_id_t module_idP,
for
(
int
UE_id
=
UE_info
->
list
.
head
;
UE_id
>=
0
;
UE_id
=
UE_info
->
list
.
next
[
UE_id
])
{
if
(
UE_info
->
UE_template
[
CC_id
][
UE_id
].
rach_resource_type
>
0
)
{
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
continue
;
}
...
...
@@ -2552,7 +2548,6 @@ schedule_ulsch_ss(module_id_t module_idP,
uint8_t
ue_found
=
0
;
/* Note: RC.nb_mac_CC[module_idP] should be lower than or equal to NFAPI_CC_MAX */
LOG_D
(
MAC
,
"swetank: num CC:%d
\n
"
,
RC
.
nb_mac_CC
[
module_idP
]);
for
(
int
CC_id
=
0
;
CC_id
<
RC
.
nb_mac_CC
[
module_idP
];
CC_id
++
,
cc
++
)
{
/* MultiCell: Common channels modify for multiple CC */
cc
=
&
RC
.
mac
[
module_idP
]
->
common_channels
[
CC_id
];
...
...
@@ -2568,7 +2563,7 @@ schedule_ulsch_ss(module_id_t module_idP,
if
(
ue_found
==
0
)
{
LOG_D
(
MAC
,
"%s No UE found
\n
"
,
__FUNCTION__
);
return
;
continue
;
}
/* if schedule is false, it means SFN/SF for ULGrant had not yet arrived */
...
...
@@ -2584,7 +2579,6 @@ schedule_ulsch_ss(module_id_t module_idP,
switch
(
subframeP
)
{
case
0
:
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
if
((
tdd_sfa
==
0
)
||
(
tdd_sfa
==
3
))
sched_subframe
=
4
;
else
if
(
tdd_sfa
==
6
)
...
...
@@ -2595,7 +2589,6 @@ schedule_ulsch_ss(module_id_t module_idP,
break
;
case
1
:
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
if
((
tdd_sfa
==
0
)
||
(
tdd_sfa
==
1
))
sched_subframe
=
7
;
else
if
(
tdd_sfa
==
6
)
...
...
@@ -2606,11 +2599,9 @@ schedule_ulsch_ss(module_id_t module_idP,
break
;
case
2
:
// Don't schedule UL in subframe 2 for TDD
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
return
;
case
3
:
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
tdd_sfa
==
2
)
sched_subframe
=
7
;
else
...
...
@@ -2619,7 +2610,6 @@ schedule_ulsch_ss(module_id_t module_idP,
break
;
case
4
:
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
tdd_sfa
==
1
)
sched_subframe
=
8
;
else
...
...
@@ -2628,7 +2618,6 @@ schedule_ulsch_ss(module_id_t module_idP,
break
;
case
5
:
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
tdd_sfa
==
0
)
sched_subframe
=
9
;
else
if
(
tdd_sfa
==
6
)
...
...
@@ -2639,7 +2628,6 @@ schedule_ulsch_ss(module_id_t module_idP,
break
;
case
6
:
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
tdd_sfa
==
0
||
tdd_sfa
==
1
)
sched_subframe
=
2
;
else
if
(
tdd_sfa
==
6
)
...
...
@@ -2650,11 +2638,9 @@ schedule_ulsch_ss(module_id_t module_idP,
break
;
case
7
:
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
return
;
case
8
:
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
if
((
tdd_sfa
>=
2
)
&&
(
tdd_sfa
<=
5
))
sched_subframe
=
2
;
else
...
...
@@ -2663,7 +2649,6 @@ schedule_ulsch_ss(module_id_t module_idP,
break
;
case
9
:
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
if
((
tdd_sfa
==
1
)
||
(
tdd_sfa
==
3
)
||
(
tdd_sfa
==
4
))
sched_subframe
=
3
;
else
if
(
tdd_sfa
==
6
)
...
...
@@ -2674,7 +2659,6 @@ schedule_ulsch_ss(module_id_t module_idP,
break
;
default:
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
return
;
}
}
...
...
@@ -2687,9 +2671,7 @@ schedule_ulsch_ss(module_id_t module_idP,
int
emtc_active
[
5
];
memset
(
emtc_active
,
0
,
5
*
sizeof
(
int
));
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
schedule_ulsch_rnti_emtc
(
module_idP
,
frameP
,
subframeP
,
sched_subframe
,
emtc_active
);
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
is_prach_subframe0
(
cc
->
tdd_Config
!=
NULL
?
cc
->
tdd_Config
->
subframeAssignment
:
0
,
cc
->
tdd_Config
!=
NULL
?
1
:
0
,
cc
->
radioResourceConfigCommon
->
prach_Config
.
prach_ConfigInfo
.
prach_ConfigIndex
,
...
...
@@ -2704,7 +2686,6 @@ schedule_ulsch_ss(module_id_t module_idP,
for
(
int
i
=
0
;
i
<
6
;
i
++
)
cc
->
vrb_map_UL
[
start_rb
+
i
]
=
1
;
}
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
/* HACK: let's remove the PUCCH from available RBs
* we suppose PUCCH size is:
...
...
@@ -2740,7 +2721,6 @@ schedule_ulsch_ss(module_id_t module_idP,
exit
(
1
);
}
LOG_D
(
MAC
,
"swetank: fxn:%s line:%d
\n
"
,
__FUNCTION__
,
__LINE__
);
schedule_ulsch_rnti
(
module_idP
,
CC_id
,
frameP
,
subframeP
,
sched_subframe
);
}
...
...
openair2/RRC/LTE/MESSAGES/asn1_msg.c
View file @
180f9787
...
...
@@ -257,7 +257,7 @@ void free_LTE_PagingRecord_t(LTE_PagingRecord_t * ptr)
}
}
uint8_
t
do_MIB_FeMBMS
(
rrc_eNB_carrier_data_t
*
carrier
,
uint32_t
N_RB_DL
,
uint32_t
additionalNonMBSFN
,
uint32_t
frame
)
{
in
t
do_MIB_FeMBMS
(
rrc_eNB_carrier_data_t
*
carrier
,
uint32_t
N_RB_DL
,
uint32_t
additionalNonMBSFN
,
uint32_t
frame
)
{
asn_enc_rval_t
enc_rval
;
LTE_BCCH_BCH_Message_MBMS_t
*
mib_fembms
=&
carrier
->
mib_fembms
;
frame
=
198
;
...
...
@@ -461,7 +461,7 @@ uint8_t do_MIB_SL(const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index,
return
((
enc_rval
.
encoded
+
7
)
/
8
);
}
uint8_
t
do_SIB1_MBMS
(
rrc_eNB_carrier_data_t
*
carrier
,
in
t
do_SIB1_MBMS
(
rrc_eNB_carrier_data_t
*
carrier
,
int
Mod_id
,
int
CC_id
,
RrcConfigurationReq
*
configuration
)
{
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
180f9787
...
...
@@ -136,6 +136,37 @@ pthread_mutex_t lock_ue_freelist;
uint8_t
ul_sqn
,
dl_sqn
;
void
rrc_send_cnf_to_ss
(
MessageDef
*
msg_p
)
{
MessageDef
*
message_p
=
NULL
;
instance_t
instance
=
ITTI_MSG_DESTINATION_INSTANCE
(
msg_p
);
LOG_I
(
RRC
,
"Sending confirmation to SYS_TASK for message:%s
\n
"
,
ITTI_MSG_NAME
(
msg_p
));
switch
(
ITTI_MSG_ID
(
msg_p
))
{
case
RRC_CONFIGURATION_REQ
:
message_p
=
itti_alloc_new_message
(
TASK_RRC_ENB
,
instance
,
RRC_CONFIGURATION_CNF
);
RRC_CONFIGURATION_CNF
(
message_p
).
status
=
1
;
break
;
case
RRC_AS_SECURITY_CONFIG_REQ
:
message_p
=
itti_alloc_new_message
(
TASK_RRC_ENB
,
instance
,
RRC_AS_SECURITY_CONFIG_CNF
);
RRC_AS_SECURITY_CONFIG_CNF
(
message_p
).
status
=
1
;
break
;
case
RRC_RBLIST_CFG_REQ
:
message_p
=
itti_alloc_new_message
(
TASK_RRC_ENB
,
instance
,
RRC_RBLIST_CFG_CNF
);
RRC_RBLIST_CFG_CNF
(
message_p
).
status
=
1
;
break
;
default:
LOG_E
(
RRC
,
"fxn:%s Received invalid message type
\n
"
,
__FUNCTION__
);
break
;
}
itti_send_msg_to_task
(
TASK_SYS
,
instance
,
message_p
);
LOG_I
(
RRC
,
"Sent Message to SYS_TASK
\n
"
);
}
void
openair_rrc_on
(
const
protocol_ctxt_t
*
const
ctxt_pP
...
...
@@ -9741,6 +9772,8 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
case
RRC_CONFIGURATION_REQ
:
LOG_I
(
RRC
,
"[eNB %ld] Received %s : %p
\n
"
,
instance
,
msg_name_p
,
&
RRC_CONFIGURATION_REQ
(
msg_p
));
openair_rrc_eNB_configuration
(
ENB_INSTANCE_TO_MODULE_ID
(
instance
),
&
RRC_CONFIGURATION_REQ
(
msg_p
));
if
(
RC
.
ss
.
mode
>=
SS_SOFTMODEM
)
rrc_send_cnf_to_ss
(
msg_p
);
break
;
/* Messages from F1AP task */
...
...
@@ -9799,7 +9832,6 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
RLC_SDU_INDICATION
(
msg_p
).
message_id
);
break
;
//#ifdef ENB_SS
case
SS_RRC_PDU_REQ
:
if
(
RC
.
ss
.
mode
>=
SS_SOFTMODEM
)
{
...
...
@@ -10044,42 +10076,49 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
pdcp_data_req
(
&
ctxt
,
SRB_FLAG_NO
,
SS_DRB_PDU_REQ
(
msg_p
).
drb_id
,
0
,
0
,
SS_DRB_PDU_REQ
(
msg_p
).
sdu_size
,
SS_DRB_PDU_REQ
(
msg_p
).
sdu
,
PDCP_TRANSMISSION_MODE_DATA
,
NULL
,
NULL
);
break
;
case
RRC_AS_SECURITY_CONFIG_REQ
:
LOG_A
(
RRC
,
"[eNB %ld] Received %s : %p, Integrity_Algo: %d, Ciphering_Algo: %ld
\n
"
,
instance
,
msg_name_p
,
&
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
),
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Integrity
.
integrity_algorithm
,
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Ciphering
.
ciphering_algorithm
);
if
(
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
isIntegrityInfoPresent
&&
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Integrity
.
kRRCint
)
{
printf
(
"kRRCint in RRC:
\n
"
);
for
(
int
i
=
0
;
i
<
32
;
i
++
)
case
RRC_AS_SECURITY_CONFIG_REQ
:
LOG_A
(
RRC
,
"[eNB %ld] Received %s : %p, Integrity_Algo: %d, Ciphering_Algo: %ld
\n
"
,
instance
,
msg_name_p
,
&
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
),
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Integrity
.
integrity_algorithm
,
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Ciphering
.
ciphering_algorithm
);
if
(
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
isIntegrityInfoPresent
&&
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Integrity
.
kRRCint
)
{
LOG_D
(
RRC
,
"kRRCint in RRC: %02x
\n
"
,
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Integrity
.
kRRCint
[
i
]);
printf
(
"kRRCint in RRC:
\n
"
);
for
(
int
i
=
0
;
i
<
32
;
i
++
)
{
LOG_D
(
RRC
,
"kRRCint in RRC: %02x
\n
"
,
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Integrity
.
kRRCint
[
i
]);
}
printf
(
"
\n
"
);
}
printf
(
"
\n
"
);
}
if
(
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
isCipheringInfoPresent
&&
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Ciphering
.
kRRCenc
)
{
printf
(
"kRRCenc in RRC:
\n
"
);
for
(
int
j
=
0
;
j
<
16
;
j
++
)
if
(
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
isCipheringInfoPresent
&&
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Ciphering
.
kRRCenc
)
{
LOG_D
(
RRC
,
"kRRCenc in RRC: %02x
\n
"
,
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Ciphering
.
kRRCenc
[
j
]);
printf
(
"kRRCenc in RRC:
\n
"
);
for
(
int
j
=
0
;
j
<
16
;
j
++
)
{
LOG_D
(
RRC
,
"kRRCenc in RRC: %02x
\n
"
,
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Ciphering
.
kRRCenc
[
j
]);
}
printf
(
"
\n
"
);
}
printf
(
"
\n
"
);
}
if
(
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
isCipheringInfoPresent
&&
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Ciphering
.
kUPenc
)
{
LOG_D
(
RRC
,
"kUPenc in RRC:
\n
"
);
for
(
int
k
=
0
;
k
<
16
;
k
++
)
if
(
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
isCipheringInfoPresent
&&
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Ciphering
.
kUPenc
)
{
LOG_D
(
RRC
,
"kUPenc in RRC: %02x
\n
"
,
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Ciphering
.
kUPenc
[
k
]);
LOG_D
(
RRC
,
"kUPenc in RRC:
\n
"
);
for
(
int
k
=
0
;
k
<
16
;
k
++
)
{
LOG_D
(
RRC
,
"kUPenc in RRC: %02x
\n
"
,
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
Ciphering
.
kUPenc
[
k
]);
}
LOG_D
(
RRC
,
"
\n
"
);
}
LOG_D
(
RRC
,
"
\n
"
);
}
PROTOCOL_CTXT_SET_BY_INSTANCE
(
&
ctxt
,
instance
,
ENB_FLAG_YES
,
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
rnti
,
msg_p
->
ittiMsgHeader
.
lte_time
.
frame
,
msg_p
->
ittiMsgHeader
.
lte_time
.
slot
);
rrc_eNB_as_security_configuration_req
(
&
ctxt
,
ENB_INSTANCE_TO_MODULE_ID
(
instance
),
&
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
));
PROTOCOL_CTXT_SET_BY_INSTANCE
(
&
ctxt
,
instance
,
ENB_FLAG_YES
,
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
).
rnti
,
msg_p
->
ittiMsgHeader
.
lte_time
.
frame
,
msg_p
->
ittiMsgHeader
.
lte_time
.
slot
);
rrc_eNB_as_security_configuration_req
(
&
ctxt
,
ENB_INSTANCE_TO_MODULE_ID
(
instance
),
&
RRC_AS_SECURITY_CONFIG_REQ
(
msg_p
));
rrc_send_cnf_to_ss
(
msg_p
);
break
;
case
SS_SS_PAGING_IND
:
...
...
@@ -10092,6 +10131,7 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
case
RRC_RBLIST_CFG_REQ
:
LOG_A
(
RRC
,
"[eNB %ld] Received %s : %p, RB Count:%d
\n
"
,
instance
,
msg_name_p
,
&
RRC_RBLIST_CFG_REQ
(
msg_p
),
RRC_RBLIST_CFG_REQ
(
msg_p
).
rb_count
);
rrc_eNB_rblist_configuration
(
ENB_INSTANCE_TO_MODULE_ID
(
instance
),
&
RRC_RBLIST_CFG_REQ
(
msg_p
));
rrc_send_cnf_to_ss
(
msg_p
);
break
;
default:
...
...
openair3/SS/ss_eNB_context.h
View file @
180f9787
...
...
@@ -22,7 +22,7 @@
#define _SS_ENB_CONTEXT_
#include "SidlCommon.h"
#include "SIDL_EUTRA_SYSTEM_PORT.h"
#if 0
#define SYS_L LOG_SYS(evId, SSConfig.sfn, SSConfig.sf, __VA_ARGS__)
#define SRB_L LOG_SRB(evId, SSConfig.sfn, SSConfig.sf, __VA_ARGS__)
...
...
@@ -62,6 +62,15 @@ typedef struct SS_Cell_Context_s{
uint16_t
ss_rnti_g
;
}
SS_Cell_Context_t
;
typedef
struct
sys_cnf_info
{
enum
ConfirmationResult_Type_Sel
resType
;
bool
resVal
;
enum
SystemConfirm_Type_Sel
cnfType
;
uint8_t
msg_buffer
[
1000
];
uint8_t
cnfFlag
;
}
sys_cnf_info_t
;
typedef
struct
SSConfigContext_s
{
/** List of Cells */
SS_Cell_Context_t
SSCell_list
[
8
];
...
...
@@ -73,8 +82,8 @@ typedef struct SSConfigContext_s {
ss_set_timinfo_t
vtinfo
;
hash_table_t
*
vt_timer_table
;
// key is SFN_SF
bool
send_atten_cnf
;
sys_cnf_info_t
sys_cnf
;
/** TODO: To add more */
}
SSConfigContext_t
;
typedef
enum
{
...
...
openair3/SS/ss_eNB_port_man_task.c
View file @
180f9787
...
...
@@ -63,6 +63,23 @@ enum MsgUserId
};
extern
SSConfigContext_t
SS_context
;
pthread_cond_t
sys_confirm_done_cond
;
pthread_mutex_t
sys_confirm_done_mutex
;
int
sys_confirm_done
=-
1
;
static
void
wait_sys_confirm
(
char
*
thread_name
)
{
LOG_I
(
ENB_SS_PORTMAN_ACP
,
"Entry in fxn:%s
\n
"
,
__FUNCTION__
);
LOG_I
(
ENB_SS_PORTMAN_ACP
,
"waiting for SYS CONFRIM DONE Indication (%s)
\n
"
,
thread_name
);
pthread_mutex_lock
(
&
sys_confirm_done_mutex
);
while
(
sys_confirm_done
<
0
)
pthread_cond_wait
(
&
sys_confirm_done_cond
,
&
sys_confirm_done_mutex
);
pthread_mutex_unlock
(
&
sys_confirm_done_mutex
);
LOG_I
(
ENB_SS_PORTMAN_ACP
,
"Received SYS CONFIRM (%s)
\n
"
,
thread_name
);
LOG_I
(
ENB_SS_PORTMAN_ACP
,
"Exit from fxn:%s
\n
"
,
__FUNCTION__
);
}
/*
* Function : ss_dumpReqMsg
* Description: Function for print the received message
...
...
@@ -286,7 +303,7 @@ void ss_port_man_send_data(
void
ss_eNB_port_man_init
(
void
)
{
IpAddress_t
ipaddr
;
LOG_A
(
ENB_SS_PORTMAN
,
"Starting System Simulator Manager
\n
"
);
LOG_A
(
ENB_SS_PORTMAN
_ACP
,
"Starting System Simulator Manager
\n
"
);
const
char
*
hostIp
;
hostIp
=
RC
.
ss
.
hostIp
;
...
...
@@ -311,11 +328,11 @@ void ss_eNB_port_man_init(void)
int
ret
=
acpServerInitWithCtx
(
ipaddr
,
port
,
msgTable
,
aSize
,
&
ctx_g
);
if
(
ret
<
0
)
{
LOG_A
(
ENB_SS_PORTMAN
,
"Connection failure err=%d
\n
"
,
ret
);
LOG_A
(
ENB_SS_PORTMAN
_ACP
,
"Connection failure err=%d
\n
"
,
ret
);
return
;
}
int
fd1
=
acpGetSocketFd
(
ctx_g
);
LOG_A
(
ENB_SS_PORTMAN
,
"Connection performed : %d
\n
"
,
fd1
);
LOG_A
(
ENB_SS_PORTMAN
_ACP
,
"Connection performed : %d
\n
"
,
fd1
);
//itti_subscribe_event_fd(TASK_SS_PORTMAN, fd1);
...
...
@@ -338,7 +355,7 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx)
size_t
msgSize
=
size
;
//2
unsigned
char
*
buffer
=
(
unsigned
char
*
)
acpMalloc
(
size
);
assert
(
buffer
);
LOG_D
(
ENB_SS_PORTMAN
,
"Entry in fxn:%s
\n
"
,
__FUNCTION__
);
LOG_D
(
ENB_SS_PORTMAN
_ACP
,
"Entry in fxn:%s
\n
"
,
__FUNCTION__
);
int
userId
=
acpRecvMsg
(
ctx
,
&
msgSize
,
buffer
);
// Error handling
...
...
@@ -349,23 +366,23 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx)
// Message not mapped to user id,
// this error should not appear on server side for the messages
// received from clients
LOG_E
(
GNB_AP
P
,
"Error: Message not mapped to user id
\n
"
);
LOG_E
(
ENB_SS_PORTMAN_AC
P
,
"Error: Message not mapped to user id
\n
"
);
}
else
if
(
userId
==
-
ACP_ERR_SIDL_FAILURE
)
{
// Server returned service error,
// this error should not appear on server side for the messages
// received from clients
LOG_E
(
GNB_AP
P
,
"Error: Server returned service error
\n
"
);
LOG_E
(
ENB_SS_PORTMAN_AC
P
,
"Error: Server returned service error
\n
"
);
SidlStatus
sidlStatus
=
-
1
;
acpGetMsgSidlStatus
(
msgSize
,
buffer
,
&
sidlStatus
);
acpFree
(
buffer
);
}
else
if
(
userId
==
-
ACP_PEER_DISCONNECTED
){
LOG_E
(
GNB_APP
,
"[SS_SRB]
Error: Peer ordered shutdown
\n
"
);
LOG_E
(
ENB_SS_PORTMAN_ACP
,
"
Error: Peer ordered shutdown
\n
"
);
}
else
if
(
userId
==
-
ACP_PEER_CONNECTED
){
LOG_A
(
GNB_APP
,
"[SS_SRB]
Peer connection established
\n
"
);
LOG_A
(
ENB_SS_PORTMAN_ACP
,
"
Peer connection established
\n
"
);
}
else
{
...
...
@@ -378,7 +395,7 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx)
//Send Dummy Wake up ITTI message to SRB task.
if
(
RC
.
ss
.
mode
>=
SS_SOFTMODEM
&&
SS_context
.
SSCell_list
[
cell_index_pm
].
State
>=
SS_STATE_CELL_ACTIVE
)
{
LOG_A
(
ENB_SS_PORTMAN
,
"Sending Wake up signal/SS_RRC_PDU_IND (msg_Id:%d) to TASK_SS_SRB task
\n
"
,
SS_RRC_PDU_IND
);
LOG_A
(
ENB_SS_PORTMAN
_ACP
,
"Sending Wake up signal/SS_RRC_PDU_IND (msg_Id:%d) to TASK_SS_SRB task
\n
"
,
SS_RRC_PDU_IND
);
MessageDef
*
message_p
=
itti_alloc_new_message
(
TASK_SS_PORTMAN
,
0
,
SS_RRC_PDU_IND
);
if
(
message_p
)
{
...
...
@@ -392,58 +409,62 @@ static inline void ss_eNB_read_from_socket(acpCtx_t ctx)
int
send_res
=
itti_send_msg_to_task
(
TASK_SS_SRB
,
0
,
message_p
);
if
(
send_res
<
0
)
{
LOG_E
(
ENB_SS_PORTMAN
,
"Error in sending Wake up signal /SS_RRC_PDU_IND (msg_Id:%d) to TASK_SS_SRB
\n
"
,
SS_RRC_PDU_IND
);
LOG_E
(
ENB_SS_PORTMAN
_ACP
,
"Error in sending Wake up signal /SS_RRC_PDU_IND (msg_Id:%d) to TASK_SS_SRB
\n
"
,
SS_RRC_PDU_IND
);
}
}
}
}
else
{
LOG_A
(
ENB_SS_PORTMAN
,
"received msg %d from the client.
\n
"
,
userId
);
if
(
acpSysProcessDecSrv
(
ctx
,
buffer
,
msgSize
,
&
req
)
!=
0
)
LOG_A
(
ENB_SS_PORTMAN_ACP
,
"received msg %d from the client.
\n
"
,
userId
);
if
(
acpSysProcessDecSrv
(
ctx
,
buffer
,
msgSize
,
&
req
)
!=
0
)
{
acpFree
(
buffer
);
return
;
}
ss_dumpReqMsg
(
req
);
if
(
userId
==
MSG_SysProcess_userId
)
{
bool
ret_Val
=
false
;
struct
SYSTEM_CTRL_REQ
*
sys_req
=
(
struct
SYSTEM_CTRL_REQ
*
)
req
;
if
(
sys_req
->
Request
.
d
==
SystemRequest_Type_EnquireTiming
)
{
acpFree
(
buffer
);
return
;
LOG_I
(
ENB_SS_PORTMAN_ACP
,
"Received EnquireTiming
\n
"
);
ret_Val
=
ss_eNB_port_man_handle_enquiryTiming
(
sys_req
);
if
(
ret_Val
==
false
)
LOG_E
(
ENB_SS_PORTMAN_ACP
,
"Error Sending EnquiryTiming Respone to TTCN
\n
"
);
}
ss_dumpReqMsg
(
req
);
if
(
userId
==
MSG_SysProcess_userId
)
else
{
bool
ret_Val
=
false
;
struct
SYSTEM_CTRL_REQ
*
sys_req
=
(
struct
SYSTEM_CTRL_REQ
*
)
req
;
if
(
sys_req
->
Request
.
d
==
SystemRequest_Type_EnquireTiming
)
{
LOG_I
(
ENB_SS_PORTMAN
,
"Locked the mutex for enq Timing
\n
"
);
LOG_I
(
ENB_SS_PORTMAN
,
"Received EnquireTiming
\n
"
);
ret_Val
=
ss_eNB_port_man_handle_enquiryTiming
(
sys_req
);
if
(
ret_Val
==
false
)
LOG_E
(
ENB_SS_PORTMAN
,
"Error Sending EnquiryTiming Respone to TTCN
\n
"
);
}
else
int
rc
=
0
;
MessageDef
*
message_p
=
itti_alloc_new_message
(
TASK_SS_PORTMAN
,
0
,
SS_SYS_PORT_MSG_IND
);
if
(
message_p
)
{
MessageDef
*
message_p
=
itti_alloc_new_message
(
TASK_SS_PORTMAN
,
0
,
SS_SYS_PORT_MSG_IND
);
if
(
message_p
)
SS_SYS_PORT_MSG_IND
(
message_p
).
req
=
(
struct
SYSTEM_CTRL_REQ
*
)
malloc
(
sizeof
(
struct
SYSTEM_CTRL_REQ
));
if
(
SS_SYS_PORT_MSG_IND
(
message_p
).
req
==
NULL
)
{
LOG_E
(
ENB_SS_PORTMAN_ACP
,
"Error allocating memory for SYSTEM CTRL REQ
\n
"
);
return
;
}
memset
(
SS_SYS_PORT_MSG_IND
(
message_p
).
req
,
0
,
sizeof
(
struct
SYSTEM_CTRL_REQ
));
memcpy
(
SS_SYS_PORT_MSG_IND
(
message_p
).
req
,
req
,
sizeof
(
struct
SYSTEM_CTRL_REQ
));
SS_SYS_PORT_MSG_IND
(
message_p
).
userId
=
userId
;
rc
=
itti_send_msg_to_task
(
TASK_SYS
,
0
,
message_p
);
if
(
rc
==
0
)
{
SS_SYS_PORT_MSG_IND
(
message_p
).
req
=
(
struct
SYSTEM_CTRL_REQ
*
)
malloc
(
sizeof
(
struct
SYSTEM_CTRL_REQ
));
if
(
SS_SYS_PORT_MSG_IND
(
message_p
).
req
==
NULL
)
{
LOG_E
(
ENB_SS_PORTMAN
,
"Error allocating memory for SYSTEM CTRL REQ
\n
"
);
return
;
}
memset
(
SS_SYS_PORT_MSG_IND
(
message_p
).
req
,
0
,
sizeof
(
struct
SYSTEM_CTRL_REQ
));
memcpy
(
SS_SYS_PORT_MSG_IND
(
message_p
).
req
,
req
,
sizeof
(
struct
SYSTEM_CTRL_REQ
));
SS_SYS_PORT_MSG_IND
(
message_p
).
userId
=
userId
;
if
(
SS_SYS_PORT_MSG_IND
(
message_p
).
req
)
itti_send_msg_to_task
(
TASK_SYS
,
0
,
message_p
);
sys_confirm_done
=
-
1
;
/* wait for signal */
wait_sys_confirm
(
"TASK_SYS"
);
}
}
sys_req
=
NULL
;
}
sys_req
=
NULL
;
}
}
acpSysProcessFreeSrv
(
req
);
LOG_D
(
ENB_SS_PORTMAN
,
"Exit from fxn:%s
\n
"
,
__FUNCTION__
);
LOG_D
(
ENB_SS_PORTMAN
_ACP
,
"Exit from fxn:%s
\n
"
,
__FUNCTION__
);
acpFree
(
buffer
);
return
;
...
...
@@ -463,7 +484,7 @@ void *ss_port_man_process_itti_msg(void *notUsed)
MessageDef
*
received_msg
=
NULL
;
int
result
;
LOG_D
(
ENB_SS_PORTMAN
,
"Entry in fxn:%s
\n
"
,
__FUNCTION__
);
itti_
poll
_msg
(
TASK_SS_PORTMAN
,
&
received_msg
);
itti_
receive
_msg
(
TASK_SS_PORTMAN
,
&
received_msg
);
if
(
received_msg
!=
NULL
)
{
LOG_A
(
ENB_SS_PORTMAN
,
"Received a message id : %d
\n
"
,
...
...
@@ -502,7 +523,6 @@ void *ss_port_man_process_itti_msg(void *notUsed)
received_msg
=
NULL
;
}
ss_eNB_read_from_socket
(
ctx_g
);
LOG_D
(
ENB_SS_PORTMAN
,
"Exit from fxn:%s
\n
"
,
__FUNCTION__
);
return
NULL
;
}
...
...
@@ -517,13 +537,25 @@ void *ss_port_man_process_itti_msg(void *notUsed)
* newState: No impact on state machine.
*
*/
void
*
ss_eNB_port_man_task
(
void
*
arg
)
void
*
ss_eNB_port_man_eNB_task
(
void
*
arg
)
{
while
(
1
)
{
/* Now handle notifications for other sockets */
ss_port_man_process_itti_msg
(
NULL
);
}
return
NULL
;
}
void
*
ss_eNB_port_man_acp_task
(
void
*
arg
)
{
ss_eNB_port_man_init
();
while
(
1
)
{
/* Now handle notifications for other sockets */
(
void
)
ss_port_man_process_itti_msg
(
NULL
);
ss_eNB_read_from_socket
(
ctx_g
);
}
return
NULL
;
...
...
openair3/SS/ss_eNB_port_man_task.h
View file @
180f9787
...
...
@@ -24,7 +24,7 @@
#include "acpSys.h"
void
ss_eNB_port_man_init
(
void
);
void
*
ss_eNB_port_man_task
(
void
*
arg
);
void
*
ss_eNB_port_man_
eNB_
task
(
void
*
arg
);
void
*
ss_eNB_port_man_acp_task
(
void
*
arg
);
bool
ss_eNB_port_man_handle_enquiryTiming
(
struct
SYSTEM_CTRL_REQ
*
sys_req
);
...
...
openair3/SS/ss_eNB_sys_task.c
View file @
180f9787
This diff is collapsed.
Click to expand it.
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