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
wangjie
OpenXG-RAN
Commits
71c0544e
Commit
71c0544e
authored
Mar 15, 2021
by
masayuki.harada
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix Reconfiguration message after Reestablishment.
parent
093e194b
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
243 additions
and
139 deletions
+243
-139
openair2/RRC/LTE/L2_interface.c
openair2/RRC/LTE/L2_interface.c
+1
-1
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+242
-138
No files found.
openair2/RRC/LTE/L2_interface.c
View file @
71c0544e
...
@@ -220,7 +220,7 @@ mac_rrc_data_req(
...
@@ -220,7 +220,7 @@ mac_rrc_data_req(
}
}
if
(
flag
==
0
){
if
(
flag
==
0
){
eNB_RRC_UE_t
*
ue_p
=
&
ue_context_p
->
ue_context
;
eNB_RRC_UE_t
*
ue_p
=
&
ue_context_p
->
ue_context
;
LOG_T
(
RRC
,
"[eNB %d] Frame %d CCCH request (Srb_id %d, rnti %x)
\n
"
,
Mod_idP
,
frameP
,
Srb_id
,
rnti
);
LOG_T
(
RRC
,
"[eNB %d] Frame %d CCCH request (Srb_id %
l
d, rnti %x)
\n
"
,
Mod_idP
,
frameP
,
Srb_id
,
rnti
);
Srb_info
=&
ue_p
->
Srb0
;
Srb_info
=&
ue_p
->
Srb0
;
}
}
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
71c0544e
...
@@ -1559,11 +1559,14 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
...
@@ -1559,11 +1559,14 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
uint16_t
size
;
uint16_t
size
;
LTE_MeasObjectToAddModList_t
*
MeasObj_list
=
NULL
;
LTE_MeasObjectToAddModList_t
*
MeasObj_list
=
NULL
;
LTE_MeasObjectToAddMod_t
*
MeasObj
=
NULL
;
LTE_MeasObjectToAddMod_t
*
MeasObj
=
NULL
;
LTE_MeasObjectToAddMod_t
*
MeasObj2
=
NULL
;
LTE_ReportConfigToAddModList_t
*
ReportConfig_list
=
NULL
;
LTE_ReportConfigToAddModList_t
*
ReportConfig_list
=
NULL
;
LTE_ReportConfigToAddMod_t
*
ReportConfig_per
,
*
ReportConfig_A1
,
LTE_ReportConfigToAddMod_t
*
ReportConfig_per
,
*
ReportConfig_A1
,
*
ReportConfig_A2
,
*
ReportConfig_A3
,
*
ReportConfig_A4
,
*
ReportConfig_A5
;
*
ReportConfig_A2
,
*
ReportConfig_A3
,
*
ReportConfig_A4
,
*
ReportConfig_A5
;
LTE_ReportConfigToAddMod_t
*
ReportConfig_NR
=
NULL
;
LTE_MeasIdToAddModList_t
*
MeasId_list
=
NULL
;
LTE_MeasIdToAddModList_t
*
MeasId_list
=
NULL
;
LTE_MeasIdToAddMod_t
*
MeasId0
,
*
MeasId1
,
*
MeasId2
,
*
MeasId3
,
*
MeasId4
,
*
MeasId5
;
LTE_MeasIdToAddMod_t
*
MeasId0
,
*
MeasId1
,
*
MeasId2
,
*
MeasId3
,
*
MeasId4
,
*
MeasId5
;
LTE_MeasIdToAddMod_t
*
MeasId6
;
LTE_RSRP_Range_t
*
rsrp
=
NULL
;
LTE_RSRP_Range_t
*
rsrp
=
NULL
;
struct
LTE_MeasConfig__speedStatePars
*
Sparams
=
NULL
;
struct
LTE_MeasConfig__speedStatePars
*
Sparams
=
NULL
;
LTE_QuantityConfig_t
*
quantityConfig
=
NULL
;
LTE_QuantityConfig_t
*
quantityConfig
=
NULL
;
...
@@ -1765,6 +1768,19 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
...
@@ -1765,6 +1768,19 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
MeasId5
->
measObjectId
=
1
;
MeasId5
->
measObjectId
=
1
;
MeasId5
->
reportConfigId
=
6
;
MeasId5
->
reportConfigId
=
6
;
ASN_SEQUENCE_ADD
(
&
MeasId_list
->
list
,
MeasId5
);
ASN_SEQUENCE_ADD
(
&
MeasId_list
->
list
,
MeasId5
);
if
(
ue_context_pP
->
ue_context
.
does_nr
)
{
MeasId6
=
calloc
(
1
,
sizeof
(
LTE_MeasIdToAddMod_t
));
if
(
MeasId6
==
NULL
)
exit
(
1
);
MeasId6
->
measId
=
7
;
MeasId6
->
measObjectId
=
2
;
MeasId6
->
reportConfigId
=
7
;
ASN_SEQUENCE_ADD
(
&
MeasId_list
->
list
,
MeasId6
);
}
// LTE_RRCConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->measIdToAddModList = MeasId_list;
// LTE_RRCConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->measIdToAddModList = MeasId_list;
// Add one EUTRA Measurement Object
// Add one EUTRA Measurement Object
MeasObj_list
=
CALLOC
(
1
,
sizeof
(
*
MeasObj_list
));
MeasObj_list
=
CALLOC
(
1
,
sizeof
(
*
MeasObj_list
));
...
@@ -1774,8 +1790,10 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
...
@@ -1774,8 +1790,10 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
memset
((
void
*
)
MeasObj
,
0
,
sizeof
(
*
MeasObj
));
memset
((
void
*
)
MeasObj
,
0
,
sizeof
(
*
MeasObj
));
MeasObj
->
measObjectId
=
1
;
MeasObj
->
measObjectId
=
1
;
MeasObj
->
measObject
.
present
=
LTE_MeasObjectToAddMod__measObject_PR_measObjectEUTRA
;
MeasObj
->
measObject
.
present
=
LTE_MeasObjectToAddMod__measObject_PR_measObjectEUTRA
;
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
carrierFreq
=
3350
;
//band 7, 2.68GHz
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
carrierFreq
=
//MeasObj->measObject.choice.measObjectEUTRA.carrierFreq = 36090; //band 33, 1.909GHz
to_earfcn_DL
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
configuration
.
eutra_band
[
0
],
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
configuration
.
downlink_frequency
[
0
],
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
configuration
.
N_RB_DL
[
0
]);
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
allowedMeasBandwidth
=
LTE_AllowedMeasBandwidth_mbw25
;
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
allowedMeasBandwidth
=
LTE_AllowedMeasBandwidth_mbw25
;
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
presenceAntennaPort1
=
1
;
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
presenceAntennaPort1
=
1
;
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
neighCellConfig
.
buf
=
CALLOC
(
1
,
sizeof
(
uint8_t
));
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
neighCellConfig
.
buf
=
CALLOC
(
1
,
sizeof
(
uint8_t
));
...
@@ -1783,21 +1801,71 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
...
@@ -1783,21 +1801,71 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
neighCellConfig
.
size
=
1
;
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
neighCellConfig
.
size
=
1
;
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
neighCellConfig
.
bits_unused
=
6
;
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
neighCellConfig
.
bits_unused
=
6
;
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
offsetFreq
=
NULL
;
// Default is 15 or 0dB
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
offsetFreq
=
NULL
;
// Default is 15 or 0dB
if
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
num_neigh_cells
>
0
)
{
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
cellsToAddModList
=
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
cellsToAddModList
=
(
LTE_CellsToAddModList_t
*
)
CALLOC
(
1
,
sizeof
(
*
CellsToAddModList
));
(
LTE_CellsToAddModList_t
*
)
CALLOC
(
1
,
sizeof
(
*
CellsToAddModList
));
CellsToAddModList
=
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
cellsToAddModList
;
CellsToAddModList
=
MeasObj
->
measObject
.
choice
.
measObjectEUTRA
.
cellsToAddModList
;
}
if
(
!
ue_context_pP
->
ue_context
.
measurement_info
)
{
ue_context_pP
->
ue_context
.
measurement_info
=
CALLOC
(
1
,
sizeof
(
*
(
ue_context_pP
->
ue_context
.
measurement_info
)));
}
//TODO: Assign proper values
ue_context_pP
->
ue_context
.
measurement_info
->
offsetFreq
=
0
;
ue_context_pP
->
ue_context
.
measurement_info
->
cellIndividualOffset
[
0
]
=
LTE_Q_OffsetRange_dB0
;
// Add adjacent cell lists (6 per eNB)
/* TODO: Extend to multiple carriers */
for
(
i
=
0
;
i
<
6
;
i
++
)
{
// Add adjacent cell lists (max 6 per eNB)
for
(
i
=
0
;
i
<
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
num_neigh_cells
;
i
++
)
{
CellToAdd
=
(
LTE_CellsToAddMod_t
*
)
CALLOC
(
1
,
sizeof
(
*
CellToAdd
));
CellToAdd
=
(
LTE_CellsToAddMod_t
*
)
CALLOC
(
1
,
sizeof
(
*
CellToAdd
));
CellToAdd
->
cellIndex
=
i
+
1
;
CellToAdd
->
cellIndex
=
i
+
1
;
CellToAdd
->
physCellId
=
get_adjacent_cell_id
(
ctxt_pP
->
module_id
,
i
);
CellToAdd
->
physCellId
=
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
neigh_cells_id
[
i
][
0
];
//
get_adjacent_cell_id(ctxt_pP->module_id, i);
CellToAdd
->
cellIndividualOffset
=
LTE_Q_OffsetRange_dB0
;
CellToAdd
->
cellIndividualOffset
=
LTE_Q_OffsetRange_dB0
;
ue_context_pP
->
ue_context
.
measurement_info
->
cellIndividualOffset
[
i
+
1
]
=
CellToAdd
->
cellIndividualOffset
;
ASN_SEQUENCE_ADD
(
&
CellsToAddModList
->
list
,
CellToAdd
);
ASN_SEQUENCE_ADD
(
&
CellsToAddModList
->
list
,
CellToAdd
);
}
}
ASN_SEQUENCE_ADD
(
&
MeasObj_list
->
list
,
MeasObj
);
ASN_SEQUENCE_ADD
(
&
MeasObj_list
->
list
,
MeasObj
);
// LTE_RRCConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->measObjectToAddModList = MeasObj_list;
// LTE_RRCConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->measObjectToAddModList = MeasObj_list;
if
(
ue_context_pP
->
ue_context
.
does_nr
)
{
MeasObj2
=
calloc
(
1
,
sizeof
(
LTE_MeasObjectToAddMod_t
));
if
(
MeasObj2
==
NULL
)
exit
(
1
);
MeasObj2
->
measObjectId
=
2
;
MeasObj2
->
measObject
.
present
=
LTE_MeasObjectToAddMod__measObject_PR_measObjectNR_r15
;
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
carrierFreq_r15
=
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
nr_scg_ssb_freq
;
//641272; //634000; //(634000 = 3.51GHz) (640000 = 3.6GHz) (641272 = 3619.08MHz = 3600 + 30/1000*106*12/2) (642256 is for 3.6GHz and absoluteFrequencySSB = 642016)
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
rs_ConfigSSB_r15
.
measTimingConfig_r15
.
periodicityAndOffset_r15
.
present
=
LTE_MTC_SSB_NR_r15__periodicityAndOffset_r15_PR_sf20_r15
;
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
rs_ConfigSSB_r15
.
measTimingConfig_r15
.
periodicityAndOffset_r15
.
choice
.
sf20_r15
=
0
;
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
rs_ConfigSSB_r15
.
measTimingConfig_r15
.
ssb_Duration_r15
=
LTE_MTC_SSB_NR_r15__ssb_Duration_r15_sf4
;
if
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
nr_scg_ssb_freq
>
2016666
)
//FR2
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
rs_ConfigSSB_r15
.
subcarrierSpacingSSB_r15
=
LTE_RS_ConfigSSB_NR_r15__subcarrierSpacingSSB_r15_kHz120
;
else
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
rs_ConfigSSB_r15
.
subcarrierSpacingSSB_r15
=
LTE_RS_ConfigSSB_NR_r15__subcarrierSpacingSSB_r15_kHz30
;
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
quantityConfigSet_r15
=
1
;
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
ext1
=
calloc
(
1
,
sizeof
(
struct
LTE_MeasObjectNR_r15__ext1
));
if
(
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
ext1
==
NULL
)
exit
(
1
);
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
ext1
->
bandNR_r15
=
calloc
(
1
,
sizeof
(
struct
LTE_MeasObjectNR_r15__ext1__bandNR_r15
));
if
(
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
ext1
->
bandNR_r15
==
NULL
)
exit
(
1
);
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
ext1
->
bandNR_r15
->
present
=
LTE_MeasObjectNR_r15__ext1__bandNR_r15_PR_setup
;
if
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
nr_scg_ssb_freq
>
2016666
)
//FR2
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
ext1
->
bandNR_r15
->
choice
.
setup
=
261
;
else
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
ext1
->
bandNR_r15
->
choice
.
setup
=
78
;
ASN_SEQUENCE_ADD
(
&
MeasObj_list
->
list
,
MeasObj2
);
}
if
(
!
ue_context_pP
->
ue_context
.
measurement_info
->
events
)
{
ue_context_pP
->
ue_context
.
measurement_info
->
events
=
CALLOC
(
1
,
sizeof
(
*
(
ue_context_pP
->
ue_context
.
measurement_info
->
events
)));
}
// Report Configurations for periodical, A1-A5 events
// Report Configurations for periodical, A1-A5 events
ReportConfig_list
=
CALLOC
(
1
,
sizeof
(
*
ReportConfig_list
));
ReportConfig_list
=
CALLOC
(
1
,
sizeof
(
*
ReportConfig_list
));
ReportConfig_per
=
CALLOC
(
1
,
sizeof
(
*
ReportConfig_per
));
ReportConfig_per
=
CALLOC
(
1
,
sizeof
(
*
ReportConfig_per
));
...
@@ -1806,6 +1874,11 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
...
@@ -1806,6 +1874,11 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
ReportConfig_A3
=
CALLOC
(
1
,
sizeof
(
*
ReportConfig_A3
));
ReportConfig_A3
=
CALLOC
(
1
,
sizeof
(
*
ReportConfig_A3
));
ReportConfig_A4
=
CALLOC
(
1
,
sizeof
(
*
ReportConfig_A4
));
ReportConfig_A4
=
CALLOC
(
1
,
sizeof
(
*
ReportConfig_A4
));
ReportConfig_A5
=
CALLOC
(
1
,
sizeof
(
*
ReportConfig_A5
));
ReportConfig_A5
=
CALLOC
(
1
,
sizeof
(
*
ReportConfig_A5
));
if
(
ue_context_pP
->
ue_context
.
does_nr
)
{
ReportConfig_NR
=
CALLOC
(
1
,
sizeof
(
*
ReportConfig_NR
));
}
ReportConfig_per
->
reportConfigId
=
1
;
ReportConfig_per
->
reportConfigId
=
1
;
ReportConfig_per
->
reportConfig
.
present
=
LTE_ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA
;
ReportConfig_per
->
reportConfig
.
present
=
LTE_ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA
;
ReportConfig_per
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
present
=
ReportConfig_per
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
present
=
...
@@ -1835,7 +1908,6 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
...
@@ -1835,7 +1908,6 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
ReportConfig_A1
->
reportConfig
.
choice
.
reportConfigEUTRA
.
reportAmount
=
LTE_ReportConfigEUTRA__reportAmount_infinity
;
ReportConfig_A1
->
reportConfig
.
choice
.
reportConfigEUTRA
.
reportAmount
=
LTE_ReportConfigEUTRA__reportAmount_infinity
;
ASN_SEQUENCE_ADD
(
&
ReportConfig_list
->
list
,
ReportConfig_A1
);
ASN_SEQUENCE_ADD
(
&
ReportConfig_list
->
list
,
ReportConfig_A1
);
if
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
HO_flag
==
1
/*HO_MEASUREMENT */
)
{
LOG_I
(
RRC
,
"[eNB %d] frame %d: requesting A2, A3, A4, A5, and A6 event reporting
\n
"
,
LOG_I
(
RRC
,
"[eNB %d] frame %d: requesting A2, A3, A4, A5, and A6 event reporting
\n
"
,
ctxt_pP
->
module_id
,
ctxt_pP
->
frame
);
ctxt_pP
->
module_id
,
ctxt_pP
->
frame
);
ReportConfig_A2
->
reportConfigId
=
3
;
ReportConfig_A2
->
reportConfigId
=
3
;
...
@@ -1861,7 +1933,7 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
...
@@ -1861,7 +1933,7 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
LTE_ReportConfigEUTRA__triggerType_PR_event
;
LTE_ReportConfigEUTRA__triggerType_PR_event
;
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
eventId
.
present
=
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
eventId
.
present
=
LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA3
;
LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA3
;
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
eventId
.
choice
.
eventA3
.
a3_Offset
=
1
;
//10;
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
eventId
.
choice
.
eventA3
.
a3_Offset
=
0
;
//10;
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
eventId
.
choice
.
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
eventId
.
choice
.
eventA3
.
reportOnLeave
=
1
;
eventA3
.
reportOnLeave
=
1
;
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerQuantity
=
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerQuantity
=
...
@@ -1870,7 +1942,7 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
...
@@ -1870,7 +1942,7 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
maxReportCells
=
2
;
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
maxReportCells
=
2
;
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
reportInterval
=
LTE_ReportInterval_ms120
;
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
reportInterval
=
LTE_ReportInterval_ms120
;
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
reportAmount
=
LTE_ReportConfigEUTRA__reportAmount_infinity
;
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
reportAmount
=
LTE_ReportConfigEUTRA__reportAmount_infinity
;
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
hysteresis
=
0
.
5
;
// FIXME ...hysteresis is of type long!
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
hysteresis
=
0
;
// FIXME ...hysteresis is of type long!
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
timeToTrigger
=
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
timeToTrigger
=
LTE_TimeToTrigger_ms40
;
LTE_TimeToTrigger_ms40
;
ASN_SEQUENCE_ADD
(
&
ReportConfig_list
->
list
,
ReportConfig_A3
);
ASN_SEQUENCE_ADD
(
&
ReportConfig_list
->
list
,
ReportConfig_A3
);
...
@@ -1912,16 +1984,46 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
...
@@ -1912,16 +1984,46 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
ReportConfig_A5
->
reportConfig
.
choice
.
reportConfigEUTRA
.
reportInterval
=
LTE_ReportInterval_ms120
;
ReportConfig_A5
->
reportConfig
.
choice
.
reportConfigEUTRA
.
reportInterval
=
LTE_ReportInterval_ms120
;
ReportConfig_A5
->
reportConfig
.
choice
.
reportConfigEUTRA
.
reportAmount
=
LTE_ReportConfigEUTRA__reportAmount_infinity
;
ReportConfig_A5
->
reportConfig
.
choice
.
reportConfigEUTRA
.
reportAmount
=
LTE_ReportConfigEUTRA__reportAmount_infinity
;
ASN_SEQUENCE_ADD
(
&
ReportConfig_list
->
list
,
ReportConfig_A5
);
ASN_SEQUENCE_ADD
(
&
ReportConfig_list
->
list
,
ReportConfig_A5
);
if
(
ue_context_pP
->
ue_context
.
does_nr
)
{
ReportConfig_NR
->
reportConfigId
=
7
;
ReportConfig_NR
->
reportConfig
.
present
=
LTE_ReportConfigToAddMod__reportConfig_PR_reportConfigInterRAT
;
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
triggerType
.
present
=
LTE_ReportConfigInterRAT__triggerType_PR_event
;
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
triggerType
.
choice
.
event
.
eventId
.
present
=
LTE_ReportConfigInterRAT__triggerType__event__eventId_PR_eventB1_NR_r15
;
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
triggerType
.
choice
.
event
.
eventId
.
choice
.
eventB1_NR_r15
.
b1_ThresholdNR_r15
.
present
=
LTE_ThresholdNR_r15_PR_nr_RSRP_r15
;
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
triggerType
.
choice
.
event
.
eventId
.
choice
.
eventB1_NR_r15
.
b1_ThresholdNR_r15
.
choice
.
nr_RSRP_r15
=
0
;
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
triggerType
.
choice
.
event
.
eventId
.
choice
.
eventB1_NR_r15
.
reportOnLeave_r15
=
FALSE
;
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
triggerType
.
choice
.
event
.
hysteresis
=
2
;
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
triggerType
.
choice
.
event
.
timeToTrigger
=
LTE_TimeToTrigger_ms80
;
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
maxReportCells
=
4
;
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
reportInterval
=
LTE_ReportInterval_ms120
;
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
reportAmount
=
LTE_ReportConfigInterRAT__reportAmount_infinity
;
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
ext7
=
calloc
(
1
,
sizeof
(
struct
LTE_ReportConfigInterRAT__ext7
));
if
(
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
ext7
==
NULL
)
exit
(
1
);
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
ext7
->
reportQuantityCellNR_r15
=
calloc
(
1
,
sizeof
(
struct
LTE_ReportQuantityNR_r15
));
if
(
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
ext7
->
reportQuantityCellNR_r15
==
NULL
)
exit
(
1
);
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
ext7
->
reportQuantityCellNR_r15
->
ss_rsrp
=
TRUE
;
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
ext7
->
reportQuantityCellNR_r15
->
ss_rsrq
=
TRUE
;
ReportConfig_NR
->
reportConfig
.
choice
.
reportConfigInterRAT
.
ext7
->
reportQuantityCellNR_r15
->
ss_sinr
=
TRUE
;
ASN_SEQUENCE_ADD
(
&
ReportConfig_list
->
list
,
ReportConfig_NR
);
}
// LTE_RRCConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->reportConfigToAddModList = ReportConfig_list;
// LTE_RRCConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->reportConfigToAddModList = ReportConfig_list;
#if 0
/* TODO: set a proper value.
/* A3 event update */
* 20 means: UE does not report if RSRP of serving cell is higher
if
(
!
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
)
{
* than -120 dB (see 36.331 5.5.3.1).
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
=
CALLOC
(
1
,
sizeof
(
*
(
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
)));
* This is too low for the X2 handover experiment.
}
*/
rsrp = CALLOC(1, sizeof(LTE_RSRP_Range_t));
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
->
a3_offset
=
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
eventId
.
choice
.
eventA3
.
a3_Offset
;
*rsrp = 20;
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
->
reportOnLeave
=
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
eventId
.
choice
.
eventA3
.
reportOnLeave
;
#endif
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
->
hysteresis
=
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
hysteresis
;
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
->
timeToTrigger
=
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
triggerType
.
choice
.
event
.
timeToTrigger
;
ue_context_pP
->
ue_context
.
measurement_info
->
events
->
a3_event
->
maxReportCells
=
ReportConfig_A3
->
reportConfig
.
choice
.
reportConfigEUTRA
.
maxReportCells
;
Sparams
=
CALLOC
(
1
,
sizeof
(
*
Sparams
));
Sparams
=
CALLOC
(
1
,
sizeof
(
*
Sparams
));
Sparams
->
present
=
LTE_MeasConfig__speedStatePars_PR_setup
;
Sparams
->
present
=
LTE_MeasConfig__speedStatePars_PR_setup
;
Sparams
->
choice
.
setup
.
timeToTrigger_SF
.
sf_High
=
LTE_SpeedStateScaleFactors__sf_Medium_oDot75
;
Sparams
->
choice
.
setup
.
timeToTrigger_SF
.
sf_High
=
LTE_SpeedStateScaleFactors__sf_Medium_oDot75
;
...
@@ -1943,6 +2045,9 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
...
@@ -1943,6 +2045,9 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
CALLOC
(
1
,
sizeof
(
*
(
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
)));
CALLOC
(
1
,
sizeof
(
*
(
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
)));
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRP
=
LTE_FilterCoefficient_fc4
;
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRP
=
LTE_FilterCoefficient_fc4
;
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
=
LTE_FilterCoefficient_fc4
;
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
=
LTE_FilterCoefficient_fc4
;
ue_context_pP
->
ue_context
.
measurement_info
->
filterCoefficientRSRP
=
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRP
;
ue_context_pP
->
ue_context
.
measurement_info
->
filterCoefficientRSRQ
=
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
;
LOG_I
(
RRC
,
LOG_I
(
RRC
,
"[eNB %d] Frame %d: potential handover preparation: store the information in an intermediate structure in case of failure
\n
"
,
"[eNB %d] Frame %d: potential handover preparation: store the information in an intermediate structure in case of failure
\n
"
,
ctxt_pP
->
module_id
,
ctxt_pP
->
frame
);
ctxt_pP
->
module_id
,
ctxt_pP
->
frame
);
...
@@ -1964,7 +2069,6 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
...
@@ -1964,7 +2069,6 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
(
void
*
)
ue_context_pP
->
ue_context
.
physicalConfigDedicated
,
sizeof
(
LTE_PhysicalConfigDedicated_t
));
(
void
*
)
ue_context_pP
->
ue_context
.
physicalConfigDedicated
,
sizeof
(
LTE_PhysicalConfigDedicated_t
));
ue_context_pP
->
ue_context
.
handover_info
->
as_config
.
sourceRadioResourceConfig
.
sps_Config
=
NULL
;
ue_context_pP
->
ue_context
.
handover_info
->
as_config
.
sourceRadioResourceConfig
.
sps_Config
=
NULL
;
//memcpy((void *)rrc_inst->handover_info[ue_mod_idP]->as_config.sourceRadioResourceConfig.sps_Config,(void *)rrc_inst->sps_Config[ue_mod_idP],sizeof(SPS_Config_t));
//memcpy((void *)rrc_inst->handover_info[ue_mod_idP]->as_config.sourceRadioResourceConfig.sps_Config,(void *)rrc_inst->sps_Config[ue_mod_idP],sizeof(SPS_Config_t));
}
/* Initialize NAS list */
/* Initialize NAS list */
dedicatedInfoNASList
=
CALLOC
(
1
,
sizeof
(
struct
LTE_RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
));
dedicatedInfoNASList
=
CALLOC
(
1
,
sizeof
(
struct
LTE_RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
));
...
@@ -2018,7 +2122,7 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
...
@@ -2018,7 +2122,7 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
measurements_enabled
?
(
LTE_MeasObjectToAddModList_t
*
)
MeasObj_list
:
NULL
,
// MeasObj_list,
measurements_enabled
?
(
LTE_MeasObjectToAddModList_t
*
)
MeasObj_list
:
NULL
,
// MeasObj_list,
measurements_enabled
?
(
LTE_ReportConfigToAddModList_t
*
)
ReportConfig_list
:
NULL
,
// ReportConfig_list,
measurements_enabled
?
(
LTE_ReportConfigToAddModList_t
*
)
ReportConfig_list
:
NULL
,
// ReportConfig_list,
measurements_enabled
?
(
LTE_QuantityConfig_t
*
)
quantityConfig
:
NULL
,
//quantityConfig,
measurements_enabled
?
(
LTE_QuantityConfig_t
*
)
quantityConfig
:
NULL
,
//quantityConfig,
(
LTE_MeasIdToAddModList_t
*
)
NULL
,
measurements_enabled
?
(
LTE_MeasIdToAddModList_t
*
)
MeasId_list
:
NULL
,
//#endif
//#endif
(
LTE_MAC_MainConfig_t
*
)
ue_context_pP
->
ue_context
.
mac_MainConfig
,
(
LTE_MAC_MainConfig_t
*
)
ue_context_pP
->
ue_context
.
mac_MainConfig
,
(
LTE_MeasGapConfig_t
*
)
NULL
,
(
LTE_MeasGapConfig_t
*
)
NULL
,
...
...
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