Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
OpenXG
OpenXG UE
Commits
4d58bbb0
Commit
4d58bbb0
authored
Nov 04, 2016
by
fnabet
Browse files
Options
Browse Files
Download
Plain Diff
Merge tag 'v1B0.3' of
https://gitlab.eurecom.fr/oai1B/openairinterface5g
into develop1B
Add fixes for Attach
parents
d0c814c9
1afd6646
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
238 additions
and
17 deletions
+238
-17
openair2/RRC/LITE/MESSAGES/asn1_msg.c
openair2/RRC/LITE/MESSAGES/asn1_msg.c
+1
-1
openair2/RRC/LITE/rrc_UE.c
openair2/RRC/LITE/rrc_UE.c
+228
-14
openair3/NAS/UE/EMM/SAP/emm_recv.c
openair3/NAS/UE/EMM/SAP/emm_recv.c
+9
-2
No files found.
openair2/RRC/LITE/MESSAGES/asn1_msg.c
View file @
4d58bbb0
...
...
@@ -2670,7 +2670,7 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
uint32_t
featrG
;
bit_string
=
CALLOC
(
1
,
sizeof
(
*
bit_string
));
featrG
=
0x04000800
;
if
(
usim_test
==
0
)
if
(
usim_test
==
1
)
{
bit_string
->
buf
=
&
featrG
;
bit_string
->
size
=
4
;
...
...
openair2/RRC/LITE/rrc_UE.c
View file @
4d58bbb0
...
...
@@ -817,6 +817,7 @@ rrc_ue_process_measConfig(
}
}
LOG_I
(
RRC
,
"call rrc_mac_config_req
\n
"
);
rrc_mac_config_req
(
ctxt_pP
->
module_id
,
0
,
ENB_FLAG_NO
,
0
,
eNB_index
,
(
RadioResourceConfigCommonSIB_t
*
)
NULL
,
(
struct
PhysicalConfigDedicated
*
)
NULL
,
...
...
@@ -963,6 +964,199 @@ rrc_ue_process_measConfig(
}
}
void
rrc_ue_update_radioResourceConfigDedicated
(
RadioResourceConfigDedicated_t
*
radioResourceConfigDedicated
,
const
protocol_ctxt_t
*
const
ctxt_pP
,
uint8_t
eNB_index
)
{
PhysicalConfigDedicated_t
*
physicalConfigDedicated2
=
NULL
;
physicalConfigDedicated2
=
CALLOC
(
1
,
sizeof
(
*
physicalConfigDedicated2
));
physicalConfigDedicated2
->
pdsch_ConfigDedicated
=
CALLOC
(
1
,
sizeof
(
*
physicalConfigDedicated2
->
pdsch_ConfigDedicated
));
physicalConfigDedicated2
->
pusch_ConfigDedicated
=
CALLOC
(
1
,
sizeof
(
*
physicalConfigDedicated2
->
pusch_ConfigDedicated
));
physicalConfigDedicated2
->
pucch_ConfigDedicated
=
CALLOC
(
1
,
sizeof
(
*
physicalConfigDedicated2
->
pucch_ConfigDedicated
));
physicalConfigDedicated2
->
cqi_ReportConfig
=
CALLOC
(
1
,
sizeof
(
*
physicalConfigDedicated2
->
cqi_ReportConfig
));
physicalConfigDedicated2
->
soundingRS_UL_ConfigDedicated
=
CALLOC
(
1
,
sizeof
(
*
physicalConfigDedicated2
->
soundingRS_UL_ConfigDedicated
));
physicalConfigDedicated2
->
schedulingRequestConfig
=
CALLOC
(
1
,
sizeof
(
*
physicalConfigDedicated2
->
schedulingRequestConfig
));
physicalConfigDedicated2
->
antennaInfo
=
CALLOC
(
1
,
sizeof
(
*
physicalConfigDedicated2
->
antennaInfo
));
physicalConfigDedicated2
->
uplinkPowerControlDedicated
=
CALLOC
(
1
,
sizeof
(
*
physicalConfigDedicated2
->
uplinkPowerControlDedicated
));
physicalConfigDedicated2
->
tpc_PDCCH_ConfigPUSCH
=
CALLOC
(
1
,
sizeof
(
*
physicalConfigDedicated2
->
tpc_PDCCH_ConfigPUSCH
));
physicalConfigDedicated2
->
tpc_PDCCH_ConfigPUCCH
=
CALLOC
(
1
,
sizeof
(
*
physicalConfigDedicated2
->
tpc_PDCCH_ConfigPUCCH
));
// Update pdsch_ConfigDedicated
if
(
radioResourceConfigDedicated
->
physicalConfigDedicated
->
pdsch_ConfigDedicated
!=
NULL
)
{
LOG_I
(
RRC
,
"Update pdsch_ConfigDedicated config
\n
"
);
if
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
pdsch_ConfigDedicated
==
NULL
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
pdsch_ConfigDedicated
=
CALLOC
(
1
,
sizeof
(
PDSCH_ConfigDedicated_t
));
memcpy
((
char
*
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
pdsch_ConfigDedicated
,
(
char
*
)
radioResourceConfigDedicated
->
physicalConfigDedicated
->
pdsch_ConfigDedicated
,
sizeof
(
physicalConfigDedicated2
->
pdsch_ConfigDedicated
));
}
else
{
LOG_I
(
RRC
,
"Keep old config for pdsch_ConfigDedicated
\n
"
);
}
// Update pusch_ConfigDedicated
if
(
radioResourceConfigDedicated
->
physicalConfigDedicated
->
pusch_ConfigDedicated
!=
NULL
)
{
LOG_I
(
RRC
,
"Update pusch_ConfigDedicated config
\n
"
);
if
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
pusch_ConfigDedicated
==
NULL
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
pusch_ConfigDedicated
=
CALLOC
(
1
,
sizeof
(
PUSCH_ConfigDedicated_t
));
memcpy
((
char
*
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
pusch_ConfigDedicated
,
(
char
*
)
radioResourceConfigDedicated
->
physicalConfigDedicated
->
pusch_ConfigDedicated
,
sizeof
(
physicalConfigDedicated2
->
pusch_ConfigDedicated
));
}
else
{
LOG_I
(
RRC
,
"Keep old config for pusch_ConfigDedicated
\n
"
);
}
// Update pucch_ConfigDedicated
if
(
radioResourceConfigDedicated
->
physicalConfigDedicated
->
pucch_ConfigDedicated
!=
NULL
)
{
LOG_I
(
RRC
,
"Update pucch_ConfigDedicated config
\n
"
);
if
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
pucch_ConfigDedicated
==
NULL
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
pucch_ConfigDedicated
=
CALLOC
(
1
,
sizeof
(
PUCCH_ConfigDedicated_t
));
memcpy
((
char
*
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
pucch_ConfigDedicated
,
(
char
*
)
radioResourceConfigDedicated
->
physicalConfigDedicated
->
pucch_ConfigDedicated
,
sizeof
(
physicalConfigDedicated2
->
pucch_ConfigDedicated
));
}
else
{
LOG_I
(
RRC
,
"Keep old config for pucch_ConfigDedicated
\n
"
);
}
// Update cqi_ReportConfig
if
(
radioResourceConfigDedicated
->
physicalConfigDedicated
->
cqi_ReportConfig
!=
NULL
)
{
LOG_I
(
RRC
,
"Update cqi_ReportConfig config
\n
"
);
if
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
cqi_ReportConfig
==
NULL
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
cqi_ReportConfig
=
CALLOC
(
1
,
sizeof
(
CQI_ReportConfig_t
));
memcpy
((
char
*
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
cqi_ReportConfig
,
(
char
*
)
radioResourceConfigDedicated
->
physicalConfigDedicated
->
cqi_ReportConfig
,
sizeof
(
physicalConfigDedicated2
->
cqi_ReportConfig
));
}
else
{
LOG_I
(
RRC
,
"Keep old config for cqi_ReportConfig
\n
"
);
}
// Update schedulingRequestConfig
if
(
radioResourceConfigDedicated
->
physicalConfigDedicated
->
schedulingRequestConfig
!=
NULL
)
{
LOG_I
(
RRC
,
"Update schedulingRequestConfig config
\n
"
);
if
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
schedulingRequestConfig
==
NULL
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
schedulingRequestConfig
=
CALLOC
(
1
,
sizeof
(
SchedulingRequestConfig_t
));
memcpy
((
char
*
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
schedulingRequestConfig
,
(
char
*
)
radioResourceConfigDedicated
->
physicalConfigDedicated
->
schedulingRequestConfig
,
sizeof
(
physicalConfigDedicated2
->
schedulingRequestConfig
));
}
else
{
LOG_I
(
RRC
,
"Keep old config for schedulingRequestConfig
\n
"
);
}
// Update soundingRS_UL_ConfigDedicated
if
(
radioResourceConfigDedicated
->
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
!=
NULL
)
{
LOG_I
(
RRC
,
"Update soundingRS_UL_ConfigDedicated config
\n
"
);
if
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
soundingRS_UL_ConfigDedicated
==
NULL
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
soundingRS_UL_ConfigDedicated
=
CALLOC
(
1
,
sizeof
(
SoundingRS_UL_ConfigDedicated_t
));
memcpy
((
char
*
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
soundingRS_UL_ConfigDedicated
,
(
char
*
)
radioResourceConfigDedicated
->
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
,
sizeof
(
physicalConfigDedicated2
->
soundingRS_UL_ConfigDedicated
));
}
else
{
LOG_I
(
RRC
,
"Keep old config for soundingRS_UL_ConfigDedicated
\n
"
);
}
// Update antennaInfo
if
(
radioResourceConfigDedicated
->
physicalConfigDedicated
->
antennaInfo
!=
NULL
)
{
LOG_I
(
RRC
,
"Update antennaInfo config
\n
"
);
if
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
antennaInfo
==
NULL
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
antennaInfo
=
CALLOC
(
1
,
sizeof
(
struct
PhysicalConfigDedicated__antennaInfo
));
memcpy
((
char
*
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
antennaInfo
,
(
char
*
)
radioResourceConfigDedicated
->
physicalConfigDedicated
->
antennaInfo
,
sizeof
(
physicalConfigDedicated2
->
antennaInfo
));
}
else
{
LOG_I
(
RRC
,
"Keep old config for antennaInfo
\n
"
);
}
// Update uplinkPowerControlDedicated
if
(
radioResourceConfigDedicated
->
physicalConfigDedicated
->
uplinkPowerControlDedicated
!=
NULL
)
{
LOG_I
(
RRC
,
"Update uplinkPowerControlDedicated config
\n
"
);
if
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
uplinkPowerControlDedicated
==
NULL
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
uplinkPowerControlDedicated
=
CALLOC
(
1
,
sizeof
(
UplinkPowerControlDedicated_t
));
memcpy
((
char
*
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
uplinkPowerControlDedicated
,
(
char
*
)
radioResourceConfigDedicated
->
physicalConfigDedicated
->
uplinkPowerControlDedicated
,
sizeof
(
physicalConfigDedicated2
->
uplinkPowerControlDedicated
));
}
else
{
LOG_I
(
RRC
,
"Keep old config for uplinkPowerControlDedicated
\n
"
);
}
// Update tpc_PDCCH_ConfigPUCCH
if
(
radioResourceConfigDedicated
->
physicalConfigDedicated
->
tpc_PDCCH_ConfigPUCCH
!=
NULL
)
{
LOG_I
(
RRC
,
"Update tpc_PDCCH_ConfigPUCCH config
\n
"
);
if
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
tpc_PDCCH_ConfigPUCCH
==
NULL
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
tpc_PDCCH_ConfigPUCCH
=
CALLOC
(
1
,
sizeof
(
TPC_PDCCH_Config_t
));
memcpy
((
char
*
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
tpc_PDCCH_ConfigPUCCH
,
(
char
*
)
radioResourceConfigDedicated
->
physicalConfigDedicated
->
tpc_PDCCH_ConfigPUCCH
,
sizeof
(
physicalConfigDedicated2
->
tpc_PDCCH_ConfigPUCCH
));
}
else
{
LOG_I
(
RRC
,
"Keep old config for tpc_PDCCH_ConfigPUCCH
\n
"
);
}
// Update tpc_PDCCH_ConfigPUSCH
if
(
radioResourceConfigDedicated
->
physicalConfigDedicated
->
tpc_PDCCH_ConfigPUSCH
!=
NULL
)
{
LOG_I
(
RRC
,
"Update tpc_PDCCH_ConfigPUSCH config
\n
"
);
if
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
tpc_PDCCH_ConfigPUSCH
==
NULL
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
tpc_PDCCH_ConfigPUSCH
=
CALLOC
(
1
,
sizeof
(
TPC_PDCCH_Config_t
));
memcpy
((
char
*
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
->
tpc_PDCCH_ConfigPUSCH
,
(
char
*
)
radioResourceConfigDedicated
->
physicalConfigDedicated
->
tpc_PDCCH_ConfigPUSCH
,
sizeof
(
physicalConfigDedicated2
->
tpc_PDCCH_ConfigPUSCH
));
}
else
{
LOG_I
(
RRC
,
"Keep old config for tpc_PDCCH_ConfigPUSCH
\n
"
);
}
}
//-----------------------------------------------------------------------------
void
rrc_ue_process_radioResourceConfigDedicated
(
...
...
@@ -983,11 +1177,17 @@ rrc_ue_process_radioResourceConfigDedicated(
// Save physicalConfigDedicated if present
if
(
radioResourceConfigDedicated
->
physicalConfigDedicated
)
{
LOG_I
(
RRC
,
"Save physicalConfigDedicated if present
\n
"
);
if
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
])
{
#if 1
rrc_ue_update_radioResourceConfigDedicated
(
radioResourceConfigDedicated
,
ctxt_pP
,
eNB_index
);
#else
memcpy
((
char
*
)
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
],(
char
*
)
radioResourceConfigDedicated
->
physicalConfigDedicated
,
sizeof
(
struct
PhysicalConfigDedicated
));
#endif
}
else
{
LOG_I
(
RRC
,
"Init physicalConfigDedicated UE_rrc_inst to radioResourceConfigDedicated->physicalConfigDedicated
\n
"
);
UE_rrc_inst
[
ctxt_pP
->
module_id
].
physicalConfigDedicated
[
eNB_index
]
=
radioResourceConfigDedicated
->
physicalConfigDedicated
;
}
}
...
...
@@ -1105,7 +1305,7 @@ rrc_ue_process_radioResourceConfigDedicated(
SRB1_logicalChannelConfig
=
&
SRB1_logicalChannelConfig_defaultValue
;
}
LOG_
D
(
RRC
,
"[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ (SRB1 eNB %d) --->][MAC_UE][MOD %02d][]
\n
"
,
LOG_
I
(
RRC
,
"[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ (SRB1 eNB %d) --->][MAC_UE][MOD %02d][]
\n
"
,
ctxt_pP
->
frame
,
ctxt_pP
->
module_id
,
eNB_index
,
ctxt_pP
->
module_id
);
rrc_mac_config_req
(
ctxt_pP
->
module_id
,
0
,
ENB_FLAG_NO
,
0
,
eNB_index
,
(
RadioResourceConfigCommonSIB_t
*
)
NULL
,
...
...
@@ -1160,7 +1360,7 @@ rrc_ue_process_radioResourceConfigDedicated(
SRB2_logicalChannelConfig
=
&
SRB2_logicalChannelConfig_defaultValue
;
}
LOG_
D
(
RRC
,
"[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ (SRB2 eNB %d) --->][MAC_UE][MOD %02d][]
\n
"
,
LOG_
I
(
RRC
,
"[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ (SRB2 eNB %d) --->][MAC_UE][MOD %02d][]
\n
"
,
ctxt_pP
->
frame
,
ctxt_pP
->
module_id
,
eNB_index
,
...
...
@@ -1267,7 +1467,7 @@ rrc_ue_process_radioResourceConfigDedicated(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
DRB_config
[
eNB_index
][
DRB_id
]
=
radioResourceConfigDedicated
->
drb_ToAddModList
->
list
.
array
[
i
];
rrc_ue_establish_drb
(
ctxt_pP
->
module_id
,
ctxt_pP
->
frame
,
eNB_index
,
radioResourceConfigDedicated
->
drb_ToAddModList
->
list
.
array
[
i
]);
// MAC/PHY Configuration
LOG_
D
(
RRC
,
"[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ (DRB %d eNB %d) --->][MAC_UE][MOD %02d][]
\n
"
,
LOG_
I
(
RRC
,
"[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ (DRB %d eNB %d) --->][MAC_UE][MOD %02d][]
\n
"
,
ctxt_pP
->
frame
,
ctxt_pP
->
module_id
,
radioResourceConfigDedicated
->
drb_ToAddModList
->
list
.
array
[
i
]
->
drb_Identity
,
eNB_index
,
...
...
@@ -1825,7 +2025,7 @@ rrc_ue_process_mobilityControlInfo(
UE_rrc_inst[ue_mod_idP].DRB_config[eNB_index][0] = NULL;
*/
//Synchronisation to DL of target cell
LOG_
D
(
RRC
,
LOG_
I
(
RRC
,
"HO: Reset PDCP and RLC for configured RBs..
\n
[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ (SRB2 eNB %d) --->][MAC_UE][MOD %02d][]
\n
"
,
ctxt_pP
->
frame
,
ctxt_pP
->
module_id
,
eNB_index
,
ctxt_pP
->
module_id
);
...
...
@@ -2685,7 +2885,7 @@ static int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
UE_rrc_inst
[
ctxt_pP
->
module_id
].
Info
[
eNB_index
].
SIperiod
=
siPeriod_int
[
sib1
->
schedulingInfoList
.
list
.
array
[
0
]
->
si_Periodicity
];
UE_rrc_inst
[
ctxt_pP
->
module_id
].
Info
[
eNB_index
].
SIwindowsize
=
siWindowLength_int
[
sib1
->
si_WindowLength
];
LOG_
D
(
RRC
,
"[FRAME unknown][RRC_UE][MOD %02"
PRIu8
"][][--- MAC_CONFIG_REQ (SIB1 params eNB %"
PRIu8
") --->][MAC_UE][MOD %02"
PRIu8
"][]
\n
"
,
LOG_
I
(
RRC
,
"[FRAME unknown][RRC_UE][MOD %02"
PRIu8
"][][--- MAC_CONFIG_REQ (SIB1 params eNB %"
PRIu8
") --->][MAC_UE][MOD %02"
PRIu8
"][]
\n
"
,
ctxt_pP
->
module_id
,
eNB_index
,
ctxt_pP
->
module_id
);
rrc_mac_config_req
(
ctxt_pP
->
module_id
,
0
,
ENB_FLAG_NO
,
0
,
eNB_index
,
...
...
@@ -3499,7 +3699,7 @@ static int decode_SI( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_in
LOG_I
(
RRC
,
"[UE %"
PRIu8
"] Frame %"
PRIu32
" Found SIB13 from eNB %"
PRIu8
"
\n
"
,
ctxt_pP
->
module_id
,
ctxt_pP
->
frame
,
eNB_index
);
dump_sib13
(
UE_rrc_inst
[
ctxt_pP
->
module_id
].
sib13
[
eNB_index
]
);
// adding here function to store necessary parameters for using in decode_MCCH_Message + maybe transfer to PHY layer
LOG_
D
(
RRC
,
"[FRAME %05"
PRIu32
"][RRC_UE][MOD %02"
PRIu8
"][][--- MAC_CONFIG_REQ (SIB13 params eNB %"
PRIu8
") --->][MAC_UE][MOD %02"
PRIu8
"][]
\n
"
,
LOG_
I
(
RRC
,
"[FRAME %05"
PRIu32
"][RRC_UE][MOD %02"
PRIu8
"][][--- MAC_CONFIG_REQ (SIB13 params eNB %"
PRIu8
") --->][MAC_UE][MOD %02"
PRIu8
"][]
\n
"
,
ctxt_pP
->
frame
,
ctxt_pP
->
module_id
,
eNB_index
,
ctxt_pP
->
module_id
);
rrc_mac_config_req
(
ctxt_pP
->
module_id
,
0
,
ENB_FLAG_NO
,
0
,
eNB_index
,
(
RadioResourceConfigCommonSIB_t
*
)
NULL
,
...
...
@@ -3956,7 +4156,7 @@ static void decode_MBSFNAreaConfiguration( module_id_t ue_mod_idP, uint8_t eNB_i
{
protocol_ctxt_t
ctxt
;
LOG_
D
(
RRC
,
"[UE %d] Frame %d : Number of MCH(s) in the MBSFN Sync Area %d is %d
\n
"
,
LOG_
I
(
RRC
,
"[UE %d] Frame %d : Number of MCH(s) in the MBSFN Sync Area %d is %d
\n
"
,
ue_mod_idP
,
frameP
,
mbsfn_sync_area
,
UE_rrc_inst
[
ue_mod_idP
].
mcch_message
[
eNB_index
]
->
pmch_InfoList_r9
.
list
.
count
);
// store to MAC/PHY necessary parameters for receiving MTCHs
rrc_mac_config_req
(
ue_mod_idP
,
0
,
ENB_FLAG_NO
,
0
,
eNB_index
,
...
...
@@ -4301,12 +4501,26 @@ void *rrc_ue_task( void *args_p )
/* Transfer data to PDCP */
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
ue_mod_id
,
ENB_FLAG_NO
,
UE_rrc_inst
[
ue_mod_id
].
Info
[
0
].
rnti
,
0
,
0
,
0
);
rrc_data_req
(
&
ctxt
,
DCCH
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
length
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
// check if SRB2 is created, if yes request data_req on DCCH1 (SRB2)
if
(
UE_rrc_inst
[
ue_mod_id
].
SRB2_config
[
0
]
==
NULL
)
{
rrc_data_req
(
&
ctxt
,
DCCH
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
length
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
}
else
{
rrc_data_req
(
&
ctxt
,
DCCH1
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
length
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
}
break
;
}
...
...
openair3/NAS/UE/EMM/SAP/emm_recv.c
View file @
4d58bbb0
...
...
@@ -137,8 +137,15 @@ int emm_recv_attach_accept(attach_accept_msg *msg, int *emm_cause)
/*
* Message checking
*/
if
(
msg
->
tailist
.
typeoflist
!=
TRACKING_AREA_IDENTITY_LIST_ONE_PLMN_CONSECUTIVE_TACS
)
{
// supported cases:
// typeoflist = 1 Or
// typeoflist = 0 and numberofelements = 1 (ie numberofelements equal to zero see 3gpp 24.301 9.9.3.33.1)
LOG_D
(
NAS
,
"attach accept type of list: %d, number of element: %d
\n
"
,
msg
->
tailist
.
typeoflist
,
msg
->
tailist
.
numberofelements
);
if
(
!
(
(
msg
->
tailist
.
typeoflist
==
TRACKING_AREA_IDENTITY_LIST_ONE_PLMN_CONSECUTIVE_TACS
)
||
((
msg
->
tailist
.
typeoflist
==
0
)
&&
(
msg
->
tailist
.
numberofelements
==
0
))
)
)
{
/* Only list of TACs belonging to one PLMN with consecutive
* TAC values is supported */
*
emm_cause
=
EMM_CAUSE_IE_NOT_IMPLEMENTED
;
...
...
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