Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
U
UERANSIM
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
Libraries
UERANSIM
Commits
e04f5926
Commit
e04f5926
authored
May 23, 2021
by
aligungr
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
L3 RRC/NAS developments
parent
75266085
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
126 additions
and
126 deletions
+126
-126
src/gnb/app/cmd_handler.cpp
src/gnb/app/cmd_handler.cpp
+2
-2
src/gnb/app/cmd_handler.hpp
src/gnb/app/cmd_handler.hpp
+2
-2
src/gnb/app/task.cpp
src/gnb/app/task.cpp
+3
-3
src/gnb/gnb.cpp
src/gnb/gnb.cpp
+1
-1
src/gnb/gtp/task.cpp
src/gnb/gtp/task.cpp
+8
-8
src/gnb/ngap/context.cpp
src/gnb/ngap/context.cpp
+4
-4
src/gnb/ngap/interface.cpp
src/gnb/ngap/interface.cpp
+3
-3
src/gnb/ngap/nas.cpp
src/gnb/ngap/nas.cpp
+1
-1
src/gnb/ngap/radio.cpp
src/gnb/ngap/radio.cpp
+2
-2
src/gnb/ngap/session.cpp
src/gnb/ngap/session.cpp
+2
-2
src/gnb/ngap/task.cpp
src/gnb/ngap/task.cpp
+9
-9
src/gnb/ngap/transport.cpp
src/gnb/ngap/transport.cpp
+2
-2
src/gnb/nts.hpp
src/gnb/nts.hpp
+22
-22
src/gnb/rls/ctl_task.cpp
src/gnb/rls/ctl_task.cpp
+13
-13
src/gnb/rls/task.cpp
src/gnb/rls/task.cpp
+16
-16
src/gnb/rls/udp_task.cpp
src/gnb/rls/udp_task.cpp
+3
-3
src/gnb/rrc/channel.cpp
src/gnb/rrc/channel.cpp
+5
-5
src/gnb/rrc/connection.cpp
src/gnb/rrc/connection.cpp
+1
-1
src/gnb/rrc/handler.cpp
src/gnb/rrc/handler.cpp
+2
-2
src/gnb/rrc/sap.cpp
src/gnb/rrc/sap.cpp
+3
-3
src/gnb/rrc/task.cpp
src/gnb/rrc/task.cpp
+6
-6
src/gnb/rrc/task.hpp
src/gnb/rrc/task.hpp
+1
-1
src/gnb/sctp/task.cpp
src/gnb/sctp/task.cpp
+15
-15
No files found.
src/gnb/app/cmd_handler.cpp
View file @
e04f5926
...
...
@@ -66,7 +66,7 @@ bool GnbCmdHandler::isAllPaused()
return
true
;
}
void
GnbCmdHandler
::
handleCmd
(
N
w
GnbCliCommand
&
msg
)
void
GnbCmdHandler
::
handleCmd
(
N
m
GnbCliCommand
&
msg
)
{
pauseTasks
();
...
...
@@ -97,7 +97,7 @@ void GnbCmdHandler::handleCmd(NwGnbCliCommand &msg)
unpauseTasks
();
}
void
GnbCmdHandler
::
handleCmdImpl
(
N
w
GnbCliCommand
&
msg
)
void
GnbCmdHandler
::
handleCmdImpl
(
N
m
GnbCliCommand
&
msg
)
{
switch
(
msg
.
cmd
->
present
)
{
...
...
src/gnb/app/cmd_handler.hpp
View file @
e04f5926
...
...
@@ -24,7 +24,7 @@ class GnbCmdHandler
{
}
void
handleCmd
(
N
w
GnbCliCommand
&
msg
);
void
handleCmd
(
N
m
GnbCliCommand
&
msg
);
private:
void
pauseTasks
();
...
...
@@ -32,7 +32,7 @@ class GnbCmdHandler
bool
isAllPaused
();
private:
void
handleCmdImpl
(
N
w
GnbCliCommand
&
msg
);
void
handleCmdImpl
(
N
m
GnbCliCommand
&
msg
);
private:
void
sendResult
(
const
InetAddress
&
address
,
const
std
::
string
&
output
);
...
...
src/gnb/app/task.cpp
View file @
e04f5926
...
...
@@ -32,17 +32,17 @@ void GnbAppTask::onLoop()
switch
(
msg
->
msgType
)
{
case
NtsMessageType
:
:
GNB_STATUS_UPDATE
:
{
auto
*
w
=
dynamic_cast
<
N
w
GnbStatusUpdate
*>
(
msg
);
auto
*
w
=
dynamic_cast
<
N
m
GnbStatusUpdate
*>
(
msg
);
switch
(
w
->
what
)
{
case
N
w
GnbStatusUpdate
:
:
NGAP_IS_UP
:
case
N
m
GnbStatusUpdate
:
:
NGAP_IS_UP
:
m_statusInfo
.
isNgapUp
=
w
->
isNgapUp
;
break
;
}
break
;
}
case
NtsMessageType
:
:
GNB_CLI_COMMAND
:
{
auto
*
w
=
dynamic_cast
<
N
w
GnbCliCommand
*>
(
msg
);
auto
*
w
=
dynamic_cast
<
N
m
GnbCliCommand
*>
(
msg
);
GnbCmdHandler
handler
{
m_base
};
handler
.
handleCmd
(
*
w
);
break
;
...
...
src/gnb/gnb.cpp
View file @
e04f5926
...
...
@@ -70,7 +70,7 @@ void GNodeB::start()
void
GNodeB
::
pushCommand
(
std
::
unique_ptr
<
app
::
GnbCliCommand
>
cmd
,
const
InetAddress
&
address
)
{
taskBase
->
appTask
->
push
(
new
N
w
GnbCliCommand
(
std
::
move
(
cmd
),
address
));
taskBase
->
appTask
->
push
(
new
N
m
GnbCliCommand
(
std
::
move
(
cmd
),
address
));
}
}
// namespace nr::gnb
src/gnb/gtp/task.cpp
View file @
e04f5926
...
...
@@ -55,22 +55,22 @@ void GtpTask::onLoop()
switch
(
msg
->
msgType
)
{
case
NtsMessageType
:
:
GNB_NGAP_TO_GTP
:
{
auto
*
w
=
dynamic_cast
<
N
w
GnbNgapToGtp
*>
(
msg
);
auto
*
w
=
dynamic_cast
<
N
m
GnbNgapToGtp
*>
(
msg
);
switch
(
w
->
present
)
{
case
N
w
GnbNgapToGtp
:
:
UE_CONTEXT_UPDATE
:
{
case
N
m
GnbNgapToGtp
:
:
UE_CONTEXT_UPDATE
:
{
handleUeContextUpdate
(
*
w
->
update
);
break
;
}
case
N
w
GnbNgapToGtp
:
:
UE_CONTEXT_RELEASE
:
{
case
N
m
GnbNgapToGtp
:
:
UE_CONTEXT_RELEASE
:
{
handleUeContextDelete
(
w
->
ueId
);
break
;
}
case
N
w
GnbNgapToGtp
:
:
SESSION_CREATE
:
{
case
N
m
GnbNgapToGtp
:
:
SESSION_CREATE
:
{
handleSessionCreate
(
w
->
resource
);
break
;
}
case
N
w
GnbNgapToGtp
:
:
SESSION_RELEASE
:
{
case
N
m
GnbNgapToGtp
:
:
SESSION_RELEASE
:
{
handleSessionRelease
(
w
->
ueId
,
w
->
psi
);
break
;
}
...
...
@@ -78,10 +78,10 @@ void GtpTask::onLoop()
break
;
}
case
NtsMessageType
:
:
GNB_RLS_TO_GTP
:
{
auto
*
w
=
dynamic_cast
<
N
w
GnbRlsToGtp
*>
(
msg
);
auto
*
w
=
dynamic_cast
<
N
m
GnbRlsToGtp
*>
(
msg
);
switch
(
w
->
present
)
{
case
N
w
GnbRlsToGtp
:
:
DATA_PDU_DELIVERY
:
{
case
N
m
GnbRlsToGtp
:
:
DATA_PDU_DELIVERY
:
{
handleUplinkData
(
w
->
ueId
,
w
->
psi
,
std
::
move
(
w
->
pdu
));
break
;
}
...
...
@@ -240,7 +240,7 @@ void GtpTask::handleUdpReceive(const udp::NwUdpServerReceive &msg)
if
(
m_rateLimiter
->
allowDownlinkPacket
(
sessionInd
,
gtp
->
payload
.
length
()))
{
auto
*
w
=
new
N
wGnbGtpToRls
(
Nw
GnbGtpToRls
::
DATA_PDU_DELIVERY
);
auto
*
w
=
new
N
mGnbGtpToRls
(
Nm
GnbGtpToRls
::
DATA_PDU_DELIVERY
);
w
->
ueId
=
GetUeId
(
sessionInd
);
w
->
psi
=
GetPsi
(
sessionInd
);
w
->
pdu
=
std
::
move
(
gtp
->
payload
);
...
...
src/gnb/ngap/context.cpp
View file @
e04f5926
...
...
@@ -53,7 +53,7 @@ void NgapTask::receiveInitialContextSetup(int amfId, ASN_NGAP_InitialContextSetu
if
(
ie
)
deliverDownlinkNas
(
ue
->
ctxId
,
asn
::
GetOctetString
(
ie
->
NAS_PDU
));
auto
*
w
=
new
N
wGnbNgapToGtp
(
Nw
GnbNgapToGtp
::
UE_CONTEXT_UPDATE
);
auto
*
w
=
new
N
mGnbNgapToGtp
(
Nm
GnbNgapToGtp
::
UE_CONTEXT_UPDATE
);
w
->
update
=
std
::
make_unique
<
GtpUeContextUpdate
>
(
true
,
ue
->
ctxId
,
ue
->
ueAmbr
);
m_base
->
gtpTask
->
push
(
w
);
}
...
...
@@ -67,12 +67,12 @@ void NgapTask::receiveContextRelease(int amfId, ASN_NGAP_UEContextReleaseCommand
return
;
// Notify RRC task
auto
*
w1
=
new
N
wGnbNgapToRrc
(
Nw
GnbNgapToRrc
::
AN_RELEASE
);
auto
*
w1
=
new
N
mGnbNgapToRrc
(
Nm
GnbNgapToRrc
::
AN_RELEASE
);
w1
->
ueId
=
ue
->
ctxId
;
m_base
->
rrcTask
->
push
(
w1
);
// Notify GTP task
auto
*
w2
=
new
N
wGnbNgapToGtp
(
Nw
GnbNgapToGtp
::
UE_CONTEXT_RELEASE
);
auto
*
w2
=
new
N
mGnbNgapToGtp
(
Nm
GnbNgapToGtp
::
UE_CONTEXT_RELEASE
);
w2
->
ueId
=
ue
->
ctxId
;
m_base
->
gtpTask
->
push
(
w2
);
...
...
@@ -108,7 +108,7 @@ void NgapTask::receiveContextModification(int amfId, ASN_NGAP_UEContextModificat
auto
*
response
=
asn
::
ngap
::
NewMessagePdu
<
ASN_NGAP_UEContextModificationResponse
>
({});
sendNgapUeAssociated
(
ue
->
ctxId
,
response
);
auto
*
w
=
new
N
wGnbNgapToGtp
(
Nw
GnbNgapToGtp
::
UE_CONTEXT_UPDATE
);
auto
*
w
=
new
N
mGnbNgapToGtp
(
Nm
GnbNgapToGtp
::
UE_CONTEXT_UPDATE
);
w
->
update
=
std
::
make_unique
<
GtpUeContextUpdate
>
(
false
,
ue
->
ctxId
,
ue
->
ueAmbr
);
m_base
->
gtpTask
->
push
(
w
);
}
...
...
src/gnb/ngap/interface.cpp
View file @
e04f5926
...
...
@@ -99,7 +99,7 @@ void NgapTask::handleAssociationShutdown(int amfId)
amf
->
state
=
EAmfState
::
NOT_CONNECTED
;
auto
*
w
=
new
N
wGnbSctp
(
Nw
GnbSctp
::
CONNECTION_CLOSE
);
auto
*
w
=
new
N
mGnbSctp
(
Nm
GnbSctp
::
CONNECTION_CLOSE
);
w
->
clientId
=
amfId
;
m_base
->
sctpTask
->
push
(
w
);
...
...
@@ -192,11 +192,11 @@ void NgapTask::receiveNgSetupResponse(int amfId, ASN_NGAP_NGSetupResponse *msg)
{
m_isInitialized
=
true
;
auto
*
update
=
new
N
wGnbStatusUpdate
(
Nw
GnbStatusUpdate
::
NGAP_IS_UP
);
auto
*
update
=
new
N
mGnbStatusUpdate
(
Nm
GnbStatusUpdate
::
NGAP_IS_UP
);
update
->
isNgapUp
=
true
;
m_base
->
appTask
->
push
(
update
);
m_base
->
rrcTask
->
push
(
new
N
wGnbNgapToRrc
(
Nw
GnbNgapToRrc
::
RADIO_POWER_ON
));
m_base
->
rrcTask
->
push
(
new
N
mGnbNgapToRrc
(
Nm
GnbNgapToRrc
::
RADIO_POWER_ON
));
}
}
...
...
src/gnb/ngap/nas.cpp
View file @
e04f5926
...
...
@@ -78,7 +78,7 @@ void NgapTask::handleInitialNasTransport(int ueId, const OctetString &nasPdu, lo
void
NgapTask
::
deliverDownlinkNas
(
int
ueId
,
OctetString
&&
nasPdu
)
{
auto
*
w
=
new
N
wGnbNgapToRrc
(
Nw
GnbNgapToRrc
::
NAS_DELIVERY
);
auto
*
w
=
new
N
mGnbNgapToRrc
(
Nm
GnbNgapToRrc
::
NAS_DELIVERY
);
w
->
ueId
=
ueId
;
w
->
pdu
=
std
::
move
(
nasPdu
);
m_base
->
rrcTask
->
push
(
w
);
...
...
src/gnb/ngap/radio.cpp
View file @
e04f5926
...
...
@@ -22,7 +22,7 @@ namespace nr::gnb
void
NgapTask
::
handleRadioLinkFailure
(
int
ueId
)
{
// Notify GTP task
auto
*
w2
=
new
N
wGnbNgapToGtp
(
Nw
GnbNgapToGtp
::
UE_CONTEXT_RELEASE
);
auto
*
w2
=
new
N
mGnbNgapToGtp
(
Nm
GnbNgapToGtp
::
UE_CONTEXT_RELEASE
);
w2
->
ueId
=
ueId
;
m_base
->
gtpTask
->
push
(
w2
);
...
...
@@ -48,7 +48,7 @@ void NgapTask::receivePaging(int amfId, ASN_NGAP_Paging *msg)
return
;
}
auto
*
w
=
new
N
wGnbNgapToRrc
(
Nw
GnbNgapToRrc
::
PAGING
);
auto
*
w
=
new
N
mGnbNgapToRrc
(
Nm
GnbNgapToRrc
::
PAGING
);
w
->
uePagingTmsi
=
asn
::
UniqueCopy
(
*
ieUePagingIdentity
->
UEPagingIdentity
.
choice
.
fiveG_S_TMSI
,
asn_DEF_ASN_NGAP_FiveG_S_TMSI
);
w
->
taiListForPaging
=
asn
::
UniqueCopy
(
ieTaiListForPaging
->
TAIListForPaging
,
asn_DEF_ASN_NGAP_TAIListForPaging
);
...
...
src/gnb/ngap/session.cpp
View file @
e04f5926
...
...
@@ -236,7 +236,7 @@ std::optional<NgapCause> NgapTask::setupPduSessionResource(PduSessionResource *r
resource
->
downTunnel
.
address
=
utils
::
IpToOctetString
(
m_base
->
config
->
gtpIp
);
resource
->
downTunnel
.
teid
=
++
m_downlinkTeidCounter
;
auto
*
w
=
new
N
wGnbNgapToGtp
(
Nw
GnbNgapToGtp
::
SESSION_CREATE
);
auto
*
w
=
new
N
mGnbNgapToGtp
(
Nm
GnbNgapToGtp
::
SESSION_CREATE
);
w
->
resource
=
resource
;
m_base
->
gtpTask
->
push
(
w
);
...
...
@@ -277,7 +277,7 @@ void NgapTask::receiveSessionResourceReleaseCommand(int amfId, ASN_NGAP_PDUSessi
// Perform release
for
(
auto
&
psi
:
psIds
)
{
auto
*
w
=
new
N
wGnbNgapToGtp
(
Nw
GnbNgapToGtp
::
SESSION_RELEASE
);
auto
*
w
=
new
N
mGnbNgapToGtp
(
Nm
GnbNgapToGtp
::
SESSION_RELEASE
);
w
->
ueId
=
ue
->
ctxId
;
w
->
psi
=
psi
;
m_base
->
gtpTask
->
push
(
w
);
...
...
src/gnb/ngap/task.cpp
View file @
e04f5926
...
...
@@ -30,7 +30,7 @@ void NgapTask::onStart()
for
(
auto
&
amfCtx
:
m_amfCtx
)
{
auto
*
msg
=
new
N
wGnbSctp
(
Nw
GnbSctp
::
CONNECTION_REQUEST
);
auto
*
msg
=
new
N
mGnbSctp
(
Nm
GnbSctp
::
CONNECTION_REQUEST
);
msg
->
clientId
=
amfCtx
.
second
->
ctxId
;
msg
->
localAddress
=
m_base
->
config
->
ngapIp
;
msg
->
localPort
=
0
;
...
...
@@ -51,18 +51,18 @@ void NgapTask::onLoop()
switch
(
msg
->
msgType
)
{
case
NtsMessageType
:
:
GNB_RRC_TO_NGAP
:
{
auto
*
w
=
dynamic_cast
<
N
w
GnbRrcToNgap
*>
(
msg
);
auto
*
w
=
dynamic_cast
<
N
m
GnbRrcToNgap
*>
(
msg
);
switch
(
w
->
present
)
{
case
N
w
GnbRrcToNgap
:
:
INITIAL_NAS_DELIVERY
:
{
case
N
m
GnbRrcToNgap
:
:
INITIAL_NAS_DELIVERY
:
{
handleInitialNasTransport
(
w
->
ueId
,
w
->
pdu
,
w
->
rrcEstablishmentCause
);
break
;
}
case
N
w
GnbRrcToNgap
:
:
UPLINK_NAS_DELIVERY
:
{
case
N
m
GnbRrcToNgap
:
:
UPLINK_NAS_DELIVERY
:
{
handleUplinkNasTransport
(
w
->
ueId
,
w
->
pdu
);
break
;
}
case
N
w
GnbRrcToNgap
:
:
RADIO_LINK_FAILURE
:
{
case
N
m
GnbRrcToNgap
:
:
RADIO_LINK_FAILURE
:
{
handleRadioLinkFailure
(
w
->
ueId
);
break
;
}
...
...
@@ -70,16 +70,16 @@ void NgapTask::onLoop()
break
;
}
case
NtsMessageType
:
:
GNB_SCTP
:
{
auto
*
w
=
dynamic_cast
<
N
w
GnbSctp
*>
(
msg
);
auto
*
w
=
dynamic_cast
<
N
m
GnbSctp
*>
(
msg
);
switch
(
w
->
present
)
{
case
N
w
GnbSctp
:
:
ASSOCIATION_SETUP
:
case
N
m
GnbSctp
:
:
ASSOCIATION_SETUP
:
handleAssociationSetup
(
w
->
clientId
,
w
->
associationId
,
w
->
inStreams
,
w
->
outStreams
);
break
;
case
N
w
GnbSctp
:
:
RECEIVE_MESSAGE
:
case
N
m
GnbSctp
:
:
RECEIVE_MESSAGE
:
handleSctpMessage
(
w
->
clientId
,
w
->
stream
,
w
->
buffer
);
break
;
case
N
w
GnbSctp
:
:
ASSOCIATION_SHUTDOWN
:
case
N
m
GnbSctp
:
:
ASSOCIATION_SHUTDOWN
:
handleAssociationShutdown
(
w
->
clientId
);
break
;
default:
...
...
src/gnb/ngap/transport.cpp
View file @
e04f5926
...
...
@@ -109,7 +109,7 @@ void NgapTask::sendNgapNonUe(int associatedAmf, ASN_NGAP_NGAP_PDU *pdu)
m_logger
->
err
(
"NGAP APER encoding failed"
);
else
{
auto
*
msg
=
new
N
wGnbSctp
(
Nw
GnbSctp
::
SEND_MESSAGE
);
auto
*
msg
=
new
N
mGnbSctp
(
Nm
GnbSctp
::
SEND_MESSAGE
);
msg
->
clientId
=
amf
->
ctxId
;
msg
->
stream
=
0
;
msg
->
buffer
=
UniqueBuffer
{
buffer
,
static_cast
<
size_t
>
(
encoded
)};
...
...
@@ -200,7 +200,7 @@ void NgapTask::sendNgapUeAssociated(int ueId, ASN_NGAP_NGAP_PDU *pdu)
m_logger
->
err
(
"NGAP APER encoding failed"
);
else
{
auto
*
msg
=
new
N
wGnbSctp
(
Nw
GnbSctp
::
SEND_MESSAGE
);
auto
*
msg
=
new
N
mGnbSctp
(
Nm
GnbSctp
::
SEND_MESSAGE
);
msg
->
clientId
=
amf
->
ctxId
;
msg
->
stream
=
ue
->
uplinkStream
;
msg
->
buffer
=
UniqueBuffer
{
buffer
,
static_cast
<
size_t
>
(
encoded
)};
...
...
src/gnb/nts.hpp
View file @
e04f5926
...
...
@@ -32,7 +32,7 @@ extern "C"
namespace
nr
::
gnb
{
struct
N
w
GnbRlsToRrc
:
NtsMessage
struct
N
m
GnbRlsToRrc
:
NtsMessage
{
enum
PR
{
...
...
@@ -48,12 +48,12 @@ struct NwGnbRlsToRrc : NtsMessage
OctetString
data
;
rrc
::
RrcChannel
rrcChannel
{};
explicit
N
w
GnbRlsToRrc
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_RLS_TO_RRC
),
present
(
present
)
explicit
N
m
GnbRlsToRrc
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_RLS_TO_RRC
),
present
(
present
)
{
}
};
struct
N
w
GnbRlsToGtp
:
NtsMessage
struct
N
m
GnbRlsToGtp
:
NtsMessage
{
enum
PR
{
...
...
@@ -65,12 +65,12 @@ struct NwGnbRlsToGtp : NtsMessage
int
psi
{};
OctetString
pdu
;
explicit
N
w
GnbRlsToGtp
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_RLS_TO_GTP
),
present
(
present
)
explicit
N
m
GnbRlsToGtp
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_RLS_TO_GTP
),
present
(
present
)
{
}
};
struct
N
w
GnbGtpToRls
:
NtsMessage
struct
N
m
GnbGtpToRls
:
NtsMessage
{
enum
PR
{
...
...
@@ -82,12 +82,12 @@ struct NwGnbGtpToRls : NtsMessage
int
psi
{};
OctetString
pdu
{};
explicit
N
w
GnbGtpToRls
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_GTP_TO_RLS
),
present
(
present
)
explicit
N
m
GnbGtpToRls
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_GTP_TO_RLS
),
present
(
present
)
{
}
};
struct
N
w
GnbRlsToRls
:
NtsMessage
struct
N
m
GnbRlsToRls
:
NtsMessage
{
enum
PR
{
...
...
@@ -136,12 +136,12 @@ struct NwGnbRlsToRls : NtsMessage
// TRANSMISSION_FAILURE
std
::
vector
<
rls
::
PduInfo
>
pduList
;
explicit
N
w
GnbRlsToRls
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_RLS_TO_RLS
),
present
(
present
)
explicit
N
m
GnbRlsToRls
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_RLS_TO_RLS
),
present
(
present
)
{
}
};
struct
N
w
GnbRrcToRls
:
NtsMessage
struct
N
m
GnbRrcToRls
:
NtsMessage
{
enum
PR
{
...
...
@@ -153,12 +153,12 @@ struct NwGnbRrcToRls : NtsMessage
rrc
::
RrcChannel
channel
{};
OctetString
pdu
{};
explicit
N
w
GnbRrcToRls
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_RRC_TO_RLS
),
present
(
present
)
explicit
N
m
GnbRrcToRls
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_RRC_TO_RLS
),
present
(
present
)
{
}
};
struct
N
w
GnbNgapToRrc
:
NtsMessage
struct
N
m
GnbNgapToRrc
:
NtsMessage
{
enum
PR
{
...
...
@@ -179,12 +179,12 @@ struct NwGnbNgapToRrc : NtsMessage
asn
::
Unique
<
ASN_NGAP_FiveG_S_TMSI
>
uePagingTmsi
{};
asn
::
Unique
<
ASN_NGAP_TAIListForPaging
>
taiListForPaging
{};
explicit
N
w
GnbNgapToRrc
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_NGAP_TO_RRC
),
present
(
present
)
explicit
N
m
GnbNgapToRrc
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_NGAP_TO_RRC
),
present
(
present
)
{
}
};
struct
N
w
GnbRrcToNgap
:
NtsMessage
struct
N
m
GnbRrcToNgap
:
NtsMessage
{
enum
PR
{
...
...
@@ -205,12 +205,12 @@ struct NwGnbRrcToNgap : NtsMessage
// INITIAL_NAS_DELIVERY
long
rrcEstablishmentCause
{};
explicit
N
w
GnbRrcToNgap
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_RRC_TO_NGAP
),
present
(
present
)
explicit
N
m
GnbRrcToNgap
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_RRC_TO_NGAP
),
present
(
present
)
{
}
};
struct
N
w
GnbNgapToGtp
:
NtsMessage
struct
N
m
GnbNgapToGtp
:
NtsMessage
{
enum
PR
{
...
...
@@ -233,12 +233,12 @@ struct NwGnbNgapToGtp : NtsMessage
// SESSION_RELEASE
int
psi
{};
explicit
N
w
GnbNgapToGtp
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_NGAP_TO_GTP
),
present
(
present
)
explicit
N
m
GnbNgapToGtp
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_NGAP_TO_GTP
),
present
(
present
)
{
}
};
struct
N
w
GnbSctp
:
NtsMessage
struct
N
m
GnbSctp
:
NtsMessage
{
enum
PR
{
...
...
@@ -278,12 +278,12 @@ struct NwGnbSctp : NtsMessage
UniqueBuffer
buffer
{};
uint16_t
stream
{};
explicit
N
w
GnbSctp
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_SCTP
),
present
(
present
)
explicit
N
m
GnbSctp
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
GNB_SCTP
),
present
(
present
)
{
}
};
struct
N
w
GnbStatusUpdate
:
NtsMessage
struct
N
m
GnbStatusUpdate
:
NtsMessage
{
static
constexpr
const
int
NGAP_IS_UP
=
1
;
...
...
@@ -292,17 +292,17 @@ struct NwGnbStatusUpdate : NtsMessage
// NGAP_IS_UP
bool
isNgapUp
{};
explicit
N
w
GnbStatusUpdate
(
const
int
what
)
:
NtsMessage
(
NtsMessageType
::
GNB_STATUS_UPDATE
),
what
(
what
)
explicit
N
m
GnbStatusUpdate
(
const
int
what
)
:
NtsMessage
(
NtsMessageType
::
GNB_STATUS_UPDATE
),
what
(
what
)
{
}
};
struct
N
w
GnbCliCommand
:
NtsMessage
struct
N
m
GnbCliCommand
:
NtsMessage
{
std
::
unique_ptr
<
app
::
GnbCliCommand
>
cmd
;
InetAddress
address
;
N
w
GnbCliCommand
(
std
::
unique_ptr
<
app
::
GnbCliCommand
>
cmd
,
InetAddress
address
)
N
m
GnbCliCommand
(
std
::
unique_ptr
<
app
::
GnbCliCommand
>
cmd
,
InetAddress
address
)
:
NtsMessage
(
NtsMessageType
::
GNB_CLI_COMMAND
),
cmd
(
std
::
move
(
cmd
)),
address
(
address
)
{
}
...
...
src/gnb/rls/ctl_task.cpp
View file @
e04f5926
...
...
@@ -50,22 +50,22 @@ void RlsControlTask::onLoop()
switch
(
msg
->
msgType
)
{
case
NtsMessageType
:
:
GNB_RLS_TO_RLS
:
{
auto
*
w
=
dynamic_cast
<
N
w
GnbRlsToRls
*>
(
msg
);
auto
*
w
=
dynamic_cast
<
N
m
GnbRlsToRls
*>
(
msg
);
switch
(
w
->
present
)
{
case
N
w
GnbRlsToRls
:
:
SIGNAL_DETECTED
:
case
N
m
GnbRlsToRls
:
:
SIGNAL_DETECTED
:
handleSignalDetected
(
w
->
ueId
);
break
;
case
N
w
GnbRlsToRls
:
:
SIGNAL_LOST
:
case
N
m
GnbRlsToRls
:
:
SIGNAL_LOST
:
handleSignalLost
(
w
->
ueId
);
break
;
case
N
w
GnbRlsToRls
:
:
RECEIVE_RLS_MESSAGE
:
case
N
m
GnbRlsToRls
:
:
RECEIVE_RLS_MESSAGE
:
handleRlsMessage
(
w
->
ueId
,
*
w
->
msg
);
break
;
case
N
w
GnbRlsToRls
:
:
DOWNLINK_DATA
:
case
N
m
GnbRlsToRls
:
:
DOWNLINK_DATA
:
handleDownlinkDataDelivery
(
w
->
ueId
,
w
->
psi
,
std
::
move
(
w
->
data
));
break
;
case
N
w
GnbRlsToRls
:
:
DOWNLINK_RRC
:
case
N
m
GnbRlsToRls
:
:
DOWNLINK_RRC
:
handleDownlinkRrcDelivery
(
w
->
ueId
,
w
->
pduId
,
w
->
rrcChannel
,
std
::
move
(
w
->
data
));
break
;
default:
...
...
@@ -102,14 +102,14 @@ void RlsControlTask::onQuit()
void
RlsControlTask
::
handleSignalDetected
(
int
ueId
)
{
auto
*
w
=
new
N
wGnbRlsToRls
(
Nw
GnbRlsToRls
::
SIGNAL_DETECTED
);
auto
*
w
=
new
N
mGnbRlsToRls
(
Nm
GnbRlsToRls
::
SIGNAL_DETECTED
);
w
->
ueId
=
ueId
;
m_mainTask
->
push
(
w
);
}
void
RlsControlTask
::
handleSignalLost
(
int
ueId
)
{
auto
*
w
=
new
N
wGnbRlsToRls
(
Nw
GnbRlsToRls
::
SIGNAL_LOST
);
auto
*
w
=
new
N
mGnbRlsToRls
(
Nm
GnbRlsToRls
::
SIGNAL_LOST
);
w
->
ueId
=
ueId
;
m_mainTask
->
push
(
w
);
}
...
...
@@ -130,7 +130,7 @@ void RlsControlTask::handleRlsMessage(int ueId, rls::RlsMessage &msg)
if
(
m
.
pduType
==
rls
::
EPduType
::
DATA
)
{
auto
*
w
=
new
N
wGnbRlsToRls
(
Nw
GnbRlsToRls
::
UPLINK_DATA
);
auto
*
w
=
new
N
mGnbRlsToRls
(
Nm
GnbRlsToRls
::
UPLINK_DATA
);
w
->
ueId
=
ueId
;
w
->
psi
=
static_cast
<
int
>
(
m
.
payload
);
w
->
data
=
std
::
move
(
m
.
pdu
);
...
...
@@ -138,7 +138,7 @@ void RlsControlTask::handleRlsMessage(int ueId, rls::RlsMessage &msg)
}
else
if
(
m
.
pduType
==
rls
::
EPduType
::
RRC
)
{
auto
*
w
=
new
N
wGnbRlsToRls
(
Nw
GnbRlsToRls
::
UPLINK_RRC
);
auto
*
w
=
new
N
mGnbRlsToRls
(
Nm
GnbRlsToRls
::
UPLINK_RRC
);
w
->
ueId
=
ueId
;
w
->
rrcChannel
=
static_cast
<
rrc
::
RrcChannel
>
(
m
.
payload
);
w
->
data
=
std
::
move
(
m
.
pdu
);
...
...
@@ -169,7 +169,7 @@ void RlsControlTask::handleDownlinkRrcDelivery(int ueId, uint32_t pduId, rrc::Rr
{
m_pduMap
.
clear
();
auto
*
w
=
new
N
wGnbRlsToRls
(
Nw
GnbRlsToRls
::
RADIO_LINK_FAILURE
);
auto
*
w
=
new
N
mGnbRlsToRls
(
Nm
GnbRlsToRls
::
RADIO_LINK_FAILURE
);
w
->
rlfCause
=
rls
::
ERlfCause
::
PDU_ID_EXISTS
;
m_mainTask
->
push
(
w
);
return
;
...
...
@@ -179,7 +179,7 @@ void RlsControlTask::handleDownlinkRrcDelivery(int ueId, uint32_t pduId, rrc::Rr
{
m_pduMap
.
clear
();
auto
*
w
=
new
N
wGnbRlsToRls
(
Nw
GnbRlsToRls
::
RADIO_LINK_FAILURE
);
auto
*
w
=
new
N
mGnbRlsToRls
(
Nm
GnbRlsToRls
::
RADIO_LINK_FAILURE
);
w
->
rlfCause
=
rls
::
ERlfCause
::
PDU_ID_FULL
;
m_mainTask
->
push
(
w
);
return
;
...
...
@@ -234,7 +234,7 @@ void RlsControlTask::onAckControlTimerExpired()
if
(
!
transmissionFailures
.
empty
())
{
auto
*
w
=
new
N
wGnbRlsToRls
(
Nw
GnbRlsToRls
::
TRANSMISSION_FAILURE
);
auto
*
w
=
new
N
mGnbRlsToRls
(
Nm
GnbRlsToRls
::
TRANSMISSION_FAILURE
);
w
->
pduList
=
std
::
move
(
transmissionFailures
);
m_mainTask
->
push
(
w
);
}
...
...
src/gnb/rls/task.cpp
View file @
e04f5926
...
...
@@ -42,40 +42,40 @@ void GnbRlsTask::onLoop()
switch
(
msg
->
msgType
)
{
case
NtsMessageType
:
:
GNB_RLS_TO_RLS
:
{
auto
*
w
=
dynamic_cast
<
N
w
GnbRlsToRls
*>
(
msg
);
auto
*
w
=
dynamic_cast
<
N
m
GnbRlsToRls
*>
(
msg
);
switch
(
w
->
present
)
{
case
N
w
GnbRlsToRls
:
:
SIGNAL_DETECTED
:
{
auto
*
m
=
new
N
wGnbRlsToRrc
(
Nw
GnbRlsToRrc
::
SIGNAL_DETECTED
);
case
N
m
GnbRlsToRls
:
:
SIGNAL_DETECTED
:
{
auto
*
m
=
new
N
mGnbRlsToRrc
(
Nm
GnbRlsToRrc
::
SIGNAL_DETECTED
);
m
->
ueId
=
w
->
ueId
;
m_base
->
rrcTask
->
push
(
m
);
break
;
}
case
N
w
GnbRlsToRls
:
:
SIGNAL_LOST
:
{
case
N
m
GnbRlsToRls
:
:
SIGNAL_LOST
:
{
m_logger
->
debug
(
"UE[%d] signal lost"
,
w
->
ueId
);
break
;
}
case
N
w
GnbRlsToRls
:
:
UPLINK_DATA
:
{
auto
*
m
=
new
N
wGnbRlsToGtp
(
Nw
GnbRlsToGtp
::
DATA_PDU_DELIVERY
);
case
N
m
GnbRlsToRls
:
:
UPLINK_DATA
:
{
auto
*
m
=
new
N
mGnbRlsToGtp
(
Nm
GnbRlsToGtp
::
DATA_PDU_DELIVERY
);
m
->
ueId
=
w
->
ueId
;
m
->
psi
=
w
->
psi
;
m
->
pdu
=
std
::
move
(
w
->
data
);
m_base
->
gtpTask
->
push
(
m
);
break
;
}
case
N
w
GnbRlsToRls
:
:
UPLINK_RRC
:
{
auto
*
m
=
new
N
wGnbRlsToRrc
(
Nw
GnbRlsToRrc
::
UPLINK_RRC
);
case
N
m
GnbRlsToRls
:
:
UPLINK_RRC
:
{
auto
*
m
=
new
N
mGnbRlsToRrc
(
Nm
GnbRlsToRrc
::
UPLINK_RRC
);
m
->
ueId
=
w
->
ueId
;
m
->
rrcChannel
=
w
->
rrcChannel
;
m
->
data
=
std
::
move
(
w
->
data
);
m_base
->
rrcTask
->
push
(
m
);
break
;
}
case
N
w
GnbRlsToRls
:
:
RADIO_LINK_FAILURE
:
{
case
N
m
GnbRlsToRls
:
:
RADIO_LINK_FAILURE
:
{
m_logger
->
debug
(
"radio link failure [%d]"
,
(
int
)
w
->
rlfCause
);
break
;
}
case
N
w
GnbRlsToRls
:
:
TRANSMISSION_FAILURE
:
{
case
N
m
GnbRlsToRls
:
:
TRANSMISSION_FAILURE
:
{
m_logger
->
debug
(
"transmission failure [%s]"
,
""
);
break
;
}
...
...
@@ -87,11 +87,11 @@ void GnbRlsTask::onLoop()
break
;
}
case
NtsMessageType
:
:
GNB_RRC_TO_RLS
:
{
auto
*
w
=
dynamic_cast
<
N
w
GnbRrcToRls
*>
(
msg
);
auto
*
w
=
dynamic_cast
<
N
m
GnbRrcToRls
*>
(
msg
);
switch
(
w
->
present
)
{
case
N
w
GnbRrcToRls
:
:
RRC_PDU_DELIVERY
:
{
auto
*
m
=
new
N
wGnbRlsToRls
(
Nw
GnbRlsToRls
::
DOWNLINK_RRC
);
case
N
m
GnbRrcToRls
:
:
RRC_PDU_DELIVERY
:
{
auto
*
m
=
new
N
mGnbRlsToRls
(
Nm
GnbRlsToRls
::
DOWNLINK_RRC
);
m
->
ueId
=
w
->
ueId
;
m
->
rrcChannel
=
w
->
channel
;
m
->
pduId
=
0
;
...
...
@@ -103,11 +103,11 @@ void GnbRlsTask::onLoop()
break
;
}
case
NtsMessageType
:
:
GNB_GTP_TO_RLS
:
{
auto
*
w
=
dynamic_cast
<
N
w
GnbGtpToRls
*>
(
msg
);
auto
*
w
=
dynamic_cast
<
N
m
GnbGtpToRls
*>
(
msg
);
switch
(
w
->
present
)
{
case
N
w
GnbGtpToRls
:
:
DATA_PDU_DELIVERY
:
{
auto
*
m
=
new
N
wGnbRlsToRls
(
Nw
GnbRlsToRls
::
DOWNLINK_DATA
);
case
N
m
GnbGtpToRls
:
:
DATA_PDU_DELIVERY
:
{
auto
*
m
=
new
N
mGnbRlsToRls
(
Nm
GnbRlsToRls
::
DOWNLINK_DATA
);
m
->
ueId
=
w
->
ueId
;
m
->
psi
=
w
->
psi
;
m
->
data
=
std
::
move
(
w
->
pdu
);
...
...
src/gnb/rls/udp_task.cpp
View file @
e04f5926
...
...
@@ -115,7 +115,7 @@ void RlsUdpTask::receiveRlsPdu(const InetAddress &addr, std::unique_ptr<rls::Rls
m_ueMap
[
ueId
].
address
=
addr
;
m_ueMap
[
ueId
].
lastSeen
=
utils
::
CurrentTimeMillis
();
auto
*
w
=
new
N
wGnbRlsToRls
(
Nw
GnbRlsToRls
::
SIGNAL_DETECTED
);
auto
*
w
=
new
N
mGnbRlsToRls
(
Nm
GnbRlsToRls
::
SIGNAL_DETECTED
);
w
->
ueId
=
ueId
;
m_ctlTask
->
push
(
w
);
}
...
...
@@ -133,7 +133,7 @@ void RlsUdpTask::receiveRlsPdu(const InetAddress &addr, std::unique_ptr<rls::Rls
return
;
}
auto
*
w
=
new
N
wGnbRlsToRls
(
Nw
GnbRlsToRls
::
RECEIVE_RLS_MESSAGE
);
auto
*
w
=
new
N
mGnbRlsToRls
(
Nm
GnbRlsToRls
::
RECEIVE_RLS_MESSAGE
);
w
->
ueId
=
m_stiToUe
[
msg
->
sti
];
w
->
msg
=
std
::
move
(
msg
);
m_ctlTask
->
push
(
w
);
...
...
@@ -169,7 +169,7 @@ void RlsUdpTask::heartbeatCycle(int64_t time)
for
(
int
ueId
:
lostUeId
)
{
auto
*
w
=
new
N
wGnbRlsToRls
(
Nw
GnbRlsToRls
::
SIGNAL_LOST
);
auto
*
w
=
new
N
mGnbRlsToRls
(
Nm
GnbRlsToRls
::
SIGNAL_LOST
);
w
->
ueId
=
ueId
;
m_ctlTask
->
push
(
w
);
}
...
...
src/gnb/rrc/channel.cpp
View file @
e04f5926
...
...
@@ -74,7 +74,7 @@ void GnbRrcTask::sendRrcMessage(ASN_RRC_BCCH_BCH_Message *msg)
return
;
}
auto
*
w
=
new
N
wGnbRrcToRls
(
Nw
GnbRrcToRls
::
RRC_PDU_DELIVERY
);
auto
*
w
=
new
N
mGnbRrcToRls
(
Nm
GnbRrcToRls
::
RRC_PDU_DELIVERY
);
w
->
ueId
=
0
;
w
->
channel
=
rrc
::
RrcChannel
::
BCCH_BCH
;
w
->
pdu
=
std
::
move
(
pdu
);
...
...
@@ -90,7 +90,7 @@ void GnbRrcTask::sendRrcMessage(ASN_RRC_BCCH_DL_SCH_Message *msg)
return
;
}
auto
*
w
=
new
N
wGnbRrcToRls
(
Nw
GnbRrcToRls
::
RRC_PDU_DELIVERY
);
auto
*
w
=
new
N
mGnbRrcToRls
(
Nm
GnbRrcToRls
::
RRC_PDU_DELIVERY
);
w
->
ueId
=
0
;
w
->
channel
=
rrc
::
RrcChannel
::
BCCH_DL_SCH
;
w
->
pdu
=
std
::
move
(
pdu
);
...
...
@@ -106,7 +106,7 @@ void GnbRrcTask::sendRrcMessage(int ueId, ASN_RRC_DL_CCCH_Message *msg)
return
;
}
auto
*
w
=
new
N
wGnbRrcToRls
(
Nw
GnbRrcToRls
::
RRC_PDU_DELIVERY
);
auto
*
w
=
new
N
mGnbRrcToRls
(
Nm
GnbRrcToRls
::
RRC_PDU_DELIVERY
);
w
->
ueId
=
ueId
;
w
->
channel
=
rrc
::
RrcChannel
::
DL_CCCH
;
w
->
pdu
=
std
::
move
(
pdu
);
...
...
@@ -122,7 +122,7 @@ void GnbRrcTask::sendRrcMessage(int ueId, ASN_RRC_DL_DCCH_Message *msg)
return
;
}
auto
*
w
=
new
N
wGnbRrcToRls
(
Nw
GnbRrcToRls
::
RRC_PDU_DELIVERY
);
auto
*
w
=
new
N
mGnbRrcToRls
(
Nm
GnbRrcToRls
::
RRC_PDU_DELIVERY
);
w
->
ueId
=
ueId
;
w
->
channel
=
rrc
::
RrcChannel
::
DL_DCCH
;
w
->
pdu
=
std
::
move
(
pdu
);
...
...
@@ -138,7 +138,7 @@ void GnbRrcTask::sendRrcMessage(ASN_RRC_PCCH_Message *msg)
return
;
}
auto
*
w
=
new
N
wGnbRrcToRls
(
Nw
GnbRrcToRls
::
RRC_PDU_DELIVERY
);
auto
*
w
=
new
N
mGnbRrcToRls
(
Nm
GnbRrcToRls
::
RRC_PDU_DELIVERY
);
w
->
ueId
=
0
;
w
->
channel
=
rrc
::
RrcChannel
::
PCCH
;
w
->
pdu
=
std
::
move
(
pdu
);
...
...
src/gnb/rrc/connection.cpp
View file @
e04f5926
...
...
@@ -100,7 +100,7 @@ void GnbRrcTask::receiveRrcSetupComplete(int ueId, const ASN_RRC_RRCSetupComplet
auto
setupComplete
=
msg
.
criticalExtensions
.
choice
.
rrcSetupComplete
;
auto
*
w
=
new
N
wGnbRrcToNgap
(
Nw
GnbRrcToNgap
::
INITIAL_NAS_DELIVERY
);
auto
*
w
=
new
N
mGnbRrcToNgap
(
Nm
GnbRrcToNgap
::
INITIAL_NAS_DELIVERY
);
w
->
ueId
=
ueId
;
w
->
pdu
=
asn
::
GetOctetString
(
setupComplete
->
dedicatedNAS_Message
);
w
->
rrcEstablishmentCause
=
ue
->
establishmentCause
;
...
...
src/gnb/rrc/handler.cpp
View file @
e04f5926
...
...
@@ -59,7 +59,7 @@ void GnbRrcTask::handleDownlinkNasDelivery(int ueId, const OctetString &nasPdu)
void
GnbRrcTask
::
deliverUplinkNas
(
int
ueId
,
OctetString
&&
nasPdu
)
{
auto
*
w
=
new
N
wGnbRrcToNgap
(
Nw
GnbRrcToNgap
::
UPLINK_NAS_DELIVERY
);
auto
*
w
=
new
N
mGnbRrcToNgap
(
Nm
GnbRrcToNgap
::
UPLINK_NAS_DELIVERY
);
w
->
ueId
=
ueId
;
w
->
pdu
=
std
::
move
(
nasPdu
);
m_base
->
ngapTask
->
push
(
w
);
...
...
@@ -95,7 +95,7 @@ void GnbRrcTask::releaseConnection(int ueId)
void
GnbRrcTask
::
handleRadioLinkFailure
(
int
ueId
)
{
// Notify NGAP task
auto
*
w
=
new
N
wGnbRrcToNgap
(
Nw
GnbRrcToNgap
::
RADIO_LINK_FAILURE
);
auto
*
w
=
new
N
mGnbRrcToNgap
(
Nm
GnbRrcToNgap
::
RADIO_LINK_FAILURE
);
w
->
ueId
=
ueId
;
m_base
->
ngapTask
->
push
(
w
);
...
...
src/gnb/rrc/sap.cpp
View file @
e04f5926
...
...
@@ -14,16 +14,16 @@
namespace
nr
::
gnb
{
void
GnbRrcTask
::
handleRlsSapMessage
(
N
w
GnbRlsToRrc
&
msg
)
void
GnbRrcTask
::
handleRlsSapMessage
(
N
m
GnbRlsToRrc
&
msg
)
{
switch
(
msg
.
present
)
{
case
N
w
GnbRlsToRrc
:
:
SIGNAL_DETECTED
:
{
case
N
m
GnbRlsToRrc
:
:
SIGNAL_DETECTED
:
{
m_logger
->
debug
(
"UE[%d] new signal detected"
,
msg
.
ueId
);
triggerSysInfoBroadcast
();
break
;
}
case
N
w
GnbRlsToRrc
:
:
UPLINK_RRC
:
{
case
N
m
GnbRlsToRrc
:
:
UPLINK_RRC
:
{
handleUplinkRrc
(
msg
.
ueId
,
msg
.
rrcChannel
,
msg
.
data
);
break
;
}
...
...
src/gnb/rrc/task.cpp
View file @
e04f5926
...
...
@@ -46,27 +46,27 @@ void GnbRrcTask::onLoop()
switch
(
msg
->
msgType
)
{
case
NtsMessageType
:
:
GNB_RLS_TO_RRC
:
{
handleRlsSapMessage
(
*
dynamic_cast
<
N
w
GnbRlsToRrc
*>
(
msg
));
handleRlsSapMessage
(
*
dynamic_cast
<
N
m
GnbRlsToRrc
*>
(
msg
));
break
;
}
case
NtsMessageType
:
:
GNB_NGAP_TO_RRC
:
{
auto
*
w
=
dynamic_cast
<
N
w
GnbNgapToRrc
*>
(
msg
);
auto
*
w
=
dynamic_cast
<
N
m
GnbNgapToRrc
*>
(
msg
);
switch
(
w
->
present
)
{
case
N
w
GnbNgapToRrc
:
:
RADIO_POWER_ON
:
{
case
N
m
GnbNgapToRrc
:
:
RADIO_POWER_ON
:
{
m_isBarred
=
false
;
triggerSysInfoBroadcast
();
break
;
}
case
N
w
GnbNgapToRrc
:
:
NAS_DELIVERY
:
{
case
N
m
GnbNgapToRrc
:
:
NAS_DELIVERY
:
{
handleDownlinkNasDelivery
(
w
->
ueId
,
w
->
pdu
);
break
;
}
case
N
w
GnbNgapToRrc
:
:
AN_RELEASE
:
{
case
N
m
GnbNgapToRrc
:
:
AN_RELEASE
:
{
releaseConnection
(
w
->
ueId
);
break
;
}
case
N
w
GnbNgapToRrc
:
:
PAGING
:
case
N
m
GnbNgapToRrc
:
:
PAGING
:
handlePaging
(
w
->
uePagingTmsi
,
w
->
taiListForPaging
);
break
;
}
...
...
src/gnb/rrc/task.hpp
View file @
e04f5926
...
...
@@ -98,7 +98,7 @@ class GnbRrcTask : public NtsTask
void
triggerSysInfoBroadcast
();
/* Service Access Point */
void
handleRlsSapMessage
(
N
w
GnbRlsToRrc
&
msg
);
void
handleRlsSapMessage
(
N
m
GnbRlsToRrc
&
msg
);
/* UE Management */
RrcUeContext
*
createUe
(
int
id
);
...
...
src/gnb/sctp/task.cpp
View file @
e04f5926
...
...
@@ -55,7 +55,7 @@ class SctpHandler : public sctp::ISctpHandler
private:
void
onAssociationSetup
(
int
associationId
,
int
inStreams
,
int
outStreams
)
override
{
auto
*
w
=
new
N
wGnbSctp
(
Nw
GnbSctp
::
ASSOCIATION_SETUP
);
auto
*
w
=
new
N
mGnbSctp
(
Nm
GnbSctp
::
ASSOCIATION_SETUP
);
w
->
clientId
=
clientId
;
w
->
associationId
=
associationId
;
w
->
inStreams
=
inStreams
;
...
...
@@ -65,7 +65,7 @@ class SctpHandler : public sctp::ISctpHandler
void
onAssociationShutdown
()
override
{
auto
*
w
=
new
N
wGnbSctp
(
Nw
GnbSctp
::
ASSOCIATION_SHUTDOWN
);
auto
*
w
=
new
N
mGnbSctp
(
Nm
GnbSctp
::
ASSOCIATION_SHUTDOWN
);
w
->
clientId
=
clientId
;
sctpTask
->
push
(
w
);
}
...
...
@@ -75,7 +75,7 @@ class SctpHandler : public sctp::ISctpHandler
auto
*
data
=
new
uint8_t
[
length
];
std
::
memcpy
(
data
,
buffer
,
length
);
auto
*
w
=
new
N
wGnbSctp
(
Nw
GnbSctp
::
RECEIVE_MESSAGE
);
auto
*
w
=
new
N
mGnbSctp
(
Nm
GnbSctp
::
RECEIVE_MESSAGE
);
w
->
clientId
=
clientId
;
w
->
buffer
=
UniqueBuffer
{
data
,
length
};
w
->
stream
=
stream
;
...
...
@@ -84,7 +84,7 @@ class SctpHandler : public sctp::ISctpHandler
void
onUnhandledNotification
()
override
{
auto
*
w
=
new
N
wGnbSctp
(
Nw
GnbSctp
::
UNHANDLED_NOTIFICATION
);
auto
*
w
=
new
N
mGnbSctp
(
Nm
GnbSctp
::
UNHANDLED_NOTIFICATION
);
w
->
clientId
=
clientId
;
sctpTask
->
push
(
w
);
}
...
...
@@ -119,35 +119,35 @@ void SctpTask::onLoop()
switch
(
msg
->
msgType
)
{
case
NtsMessageType
:
:
GNB_SCTP
:
{
auto
*
w
=
dynamic_cast
<
N
w
GnbSctp
*>
(
msg
);
auto
*
w
=
dynamic_cast
<
N
m
GnbSctp
*>
(
msg
);
switch
(
w
->
present
)
{
case
N
w
GnbSctp
:
:
CONNECTION_REQUEST
:
{
case
N
m
GnbSctp
:
:
CONNECTION_REQUEST
:
{
receiveSctpConnectionSetupRequest
(
w
->
clientId
,
w
->
localAddress
,
w
->
localPort
,
w
->
remoteAddress
,
w
->
remotePort
,
w
->
ppid
,
w
->
associatedTask
);
break
;
}
case
N
w
GnbSctp
:
:
CONNECTION_CLOSE
:
{
case
N
m
GnbSctp
:
:
CONNECTION_CLOSE
:
{
receiveConnectionClose
(
w
->
clientId
);
break
;
}
case
N
w
GnbSctp
:
:
ASSOCIATION_SETUP
:
{
case
N
m
GnbSctp
:
:
ASSOCIATION_SETUP
:
{
receiveAssociationSetup
(
w
->
clientId
,
w
->
associationId
,
w
->
inStreams
,
w
->
outStreams
);
break
;
}
case
N
w
GnbSctp
:
:
ASSOCIATION_SHUTDOWN
:
{
case
N
m
GnbSctp
:
:
ASSOCIATION_SHUTDOWN
:
{
receiveAssociationShutdown
(
w
->
clientId
);
break
;
}
case
N
w
GnbSctp
:
:
RECEIVE_MESSAGE
:
{
case
N
m
GnbSctp
:
:
RECEIVE_MESSAGE
:
{
receiveClientReceive
(
w
->
clientId
,
w
->
stream
,
std
::
move
(
w
->
buffer
));
break
;
}
case
N
w
GnbSctp
:
:
SEND_MESSAGE
:
{
case
N
m
GnbSctp
:
:
SEND_MESSAGE
:
{
receiveSendMessage
(
w
->
clientId
,
w
->
stream
,
std
::
move
(
w
->
buffer
));
break
;
}
case
N
w
GnbSctp
:
:
UNHANDLED_NOTIFICATION
:
{
case
N
m
GnbSctp
:
:
UNHANDLED_NOTIFICATION
:
{
receiveUnhandledNotification
(
w
->
clientId
);
break
;
}
...
...
@@ -242,7 +242,7 @@ void SctpTask::receiveAssociationSetup(int clientId, int associationId, int inSt
}
// Notify the relevant task
auto
*
msg
=
new
N
wGnbSctp
(
Nw
GnbSctp
::
ASSOCIATION_SETUP
);
auto
*
msg
=
new
N
mGnbSctp
(
Nm
GnbSctp
::
ASSOCIATION_SETUP
);
msg
->
clientId
=
clientId
;
msg
->
associationId
=
associationId
;
msg
->
inStreams
=
inStreams
;
...
...
@@ -262,7 +262,7 @@ void SctpTask::receiveAssociationShutdown(int clientId)
}
// Notify the relevant task
auto
*
msg
=
new
N
wGnbSctp
(
Nw
GnbSctp
::
ASSOCIATION_SHUTDOWN
);
auto
*
msg
=
new
N
mGnbSctp
(
Nm
GnbSctp
::
ASSOCIATION_SHUTDOWN
);
msg
->
clientId
=
clientId
;
entry
->
associatedTask
->
push
(
msg
);
}
...
...
@@ -277,7 +277,7 @@ void SctpTask::receiveClientReceive(int clientId, uint16_t stream, UniqueBuffer
}
// Notify the relevant task
auto
*
msg
=
new
N
wGnbSctp
(
Nw
GnbSctp
::
RECEIVE_MESSAGE
);
auto
*
msg
=
new
N
mGnbSctp
(
Nm
GnbSctp
::
RECEIVE_MESSAGE
);
msg
->
clientId
=
clientId
;
msg
->
stream
=
stream
;
msg
->
buffer
=
std
::
move
(
buffer
);
...
...
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