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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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-RAN
Commits
defafa8d
Commit
defafa8d
authored
Jan 23, 2026
by
Rakesh Mundlamuri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add Positioning Activation Request NRPPA message decoding procedures
parent
559e3c31
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
109 additions
and
2 deletions
+109
-2
openair2/COMMON/nrppa_messages_def.h
openair2/COMMON/nrppa_messages_def.h
+4
-0
openair2/COMMON/nrppa_messages_types.h
openair2/COMMON/nrppa_messages_types.h
+24
-0
openair3/NRPPA/nrppa_gNB_decoder.c
openair3/NRPPA/nrppa_gNB_decoder.c
+5
-1
openair3/NRPPA/nrppa_gNB_handlers.c
openair3/NRPPA/nrppa_gNB_handlers.c
+3
-1
openair3/NRPPA/nrppa_gNB_location_information_transfer.c
openair3/NRPPA/nrppa_gNB_location_information_transfer.c
+68
-0
openair3/NRPPA/nrppa_gNB_location_information_transfer.h
openair3/NRPPA/nrppa_gNB_location_information_transfer.h
+3
-0
openair3/NRPPA/nrppa_includes.h
openair3/NRPPA/nrppa_includes.h
+2
-0
No files found.
openair2/COMMON/nrppa_messages_def.h
View file @
defafa8d
...
@@ -32,3 +32,7 @@ MESSAGE_DEF(NRPPA_POSITIONING_INFORMATION_RESP,
...
@@ -32,3 +32,7 @@ MESSAGE_DEF(NRPPA_POSITIONING_INFORMATION_RESP,
MESSAGE_PRIORITY_MED
,
MESSAGE_PRIORITY_MED
,
nrppa_positioning_information_resp_t
,
nrppa_positioning_information_resp_t
,
nrppa_positioning_information_resp
)
nrppa_positioning_information_resp
)
MESSAGE_DEF
(
NRPPA_POSITIONING_ACTIVATION_REQ
,
MESSAGE_PRIORITY_MED
,
nrppa_positioning_activation_req_t
,
nrppa_positioning_activation_req
)
openair2/COMMON/nrppa_messages_types.h
View file @
defafa8d
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#define NRPPA_TRP_INFORMATION_RESP(mSGpTR) (mSGpTR)->ittiMsg.nrppa_trp_information_resp
#define NRPPA_TRP_INFORMATION_RESP(mSGpTR) (mSGpTR)->ittiMsg.nrppa_trp_information_resp
#define NRPPA_POSITIONING_INFORMATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nrppa_positioning_information_req
#define NRPPA_POSITIONING_INFORMATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nrppa_positioning_information_req
#define NRPPA_POSITIONING_INFORMATION_RESP(mSGpTR) (mSGpTR)->ittiMsg.nrppa_positioning_information_resp
#define NRPPA_POSITIONING_INFORMATION_RESP(mSGpTR) (mSGpTR)->ittiMsg.nrppa_positioning_information_resp
#define NRPPA_POSITIONING_ACTIVATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nrppa_positioning_activation_req
/* Structure of Positioning related NRPPA messages */
/* Structure of Positioning related NRPPA messages */
/* IE structures for Positioning related messages as per TS 38.455 V16.7.1*/
/* IE structures for Positioning related messages as per TS 38.455 V16.7.1*/
...
@@ -570,6 +571,22 @@ typedef struct nrppa_trp_information_list_s {
...
@@ -570,6 +571,22 @@ typedef struct nrppa_trp_information_list_s {
uint32_t
trp_information_item_length
;
uint32_t
trp_information_item_length
;
}
nrppa_trp_information_list_t
;
}
nrppa_trp_information_list_t
;
typedef
union
nrppa_srs_type_c
{
uint8_t
*
srs_resource_set_id
;
bool
*
aperiodic
;
}
nrppa_srs_type_u
;
typedef
enum
nrppa_srs_type_e
{
NRPPA_SRS_TYPE_PR_NOTHING
,
NRPPA_SRS_TYPE_PR_SEMIPERSISTENTSRS
,
NRPPA_SRS_TYPE_PR_APERIODICSRS
}
nrppa_srs_type_pr
;
typedef
struct
nrppa_srs_type_s
{
nrppa_srs_type_pr
present
;
nrppa_srs_type_u
choice
;
}
nrppa_srs_type_t
;
typedef
struct
nrppa_trp_information_req_s
{
typedef
struct
nrppa_trp_information_req_s
{
// IE 9.2.4 (mandatory)
// IE 9.2.4 (mandatory)
uint16_t
transaction_id
;
uint16_t
transaction_id
;
...
@@ -599,4 +616,11 @@ typedef struct nrppa_positioning_information_resp_s {
...
@@ -599,4 +616,11 @@ typedef struct nrppa_positioning_information_resp_s {
nrppa_srs_configuration_t
*
srs_configuration
;
nrppa_srs_configuration_t
*
srs_configuration
;
}
nrppa_positioning_information_resp_t
;
}
nrppa_positioning_information_resp_t
;
typedef
struct
nrppa_positioning_activation_req_s
{
// IE 9.2.4 (mandatory)
uint16_t
transaction_id
;
// (mandatory)
nrppa_srs_type_t
srs_type
;
}
nrppa_positioning_activation_req_t
;
#endif // NRPPA_MESSAGES_TYPES_H_
#endif // NRPPA_MESSAGES_TYPES_H_
openair3/NRPPA/nrppa_gNB_decoder.c
View file @
defafa8d
...
@@ -40,7 +40,11 @@ static int nrppa_gNB_decode_initiating_message(NRPPA_NRPPA_PDU_t *pdu)
...
@@ -40,7 +40,11 @@ static int nrppa_gNB_decode_initiating_message(NRPPA_NRPPA_PDU_t *pdu)
LOG_I
(
NRPPA
,
"Positioning Information Request initiating message
\n
"
);
LOG_I
(
NRPPA
,
"Positioning Information Request initiating message
\n
"
);
free
(
res
.
buffer
);
free
(
res
.
buffer
);
break
;
break
;
case
NRPPA_ProcedureCode_id_positioningActivation
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NRPPA_NRPPA_PDU
,
pdu
);
LOG_I
(
NRPPA
,
"Positioning Activation initiating message
\n
"
);
free
(
res
.
buffer
);
break
;
default:
default:
AssertFatal
(
false
,
"Unknown procedure ID (%d) for initiating message
\n
"
,
(
int
)
pdu
->
choice
.
initiatingMessage
->
procedureCode
);
AssertFatal
(
false
,
"Unknown procedure ID (%d) for initiating message
\n
"
,
(
int
)
pdu
->
choice
.
initiatingMessage
->
procedureCode
);
return
-
1
;
return
-
1
;
...
...
openair3/NRPPA/nrppa_gNB_handlers.c
View file @
defafa8d
...
@@ -57,7 +57,9 @@ nrppa_message_decoded_callback nrppa_messages_callback[][3] = {
...
@@ -57,7 +57,9 @@ nrppa_message_decoded_callback nrppa_messages_callback[][3] = {
{
0
,
0
,
0
},
// NRPPA_ProcedureCode_id_MeasurementAbort ((NRPPA_ProcedureCode_t)14)
{
0
,
0
,
0
},
// NRPPA_ProcedureCode_id_MeasurementAbort ((NRPPA_ProcedureCode_t)14)
{
0
,
0
,
0
},
// NRPPA_ProcedureCode_id_MeasurementFailureIndication ((NRPPA_ProcedureCode_t)15)
{
0
,
0
,
0
},
// NRPPA_ProcedureCode_id_MeasurementFailureIndication ((NRPPA_ProcedureCode_t)15)
{
nrppa_gNB_handle_trp_information_request
,
0
,
0
},
// NRPPA_ProcedureCode_id_tRPInformationExchange ((NRPPA_ProcedureCode_t)16)
{
nrppa_gNB_handle_trp_information_request
,
0
,
0
},
// NRPPA_ProcedureCode_id_tRPInformationExchange ((NRPPA_ProcedureCode_t)16)
{
0
,
0
,
0
},
// NRPPA_ProcedureCode_id_positioningActivation ((NRPPA_ProcedureCode_t)17)
{
nrppa_gNB_handle_positioning_activation_request
,
0
,
0
},
// NRPPA_ProcedureCode_id_positioningActivation ((NRPPA_ProcedureCode_t)17)
{
0
,
0
,
0
},
// NRPPA_ProcedureCode_id_positioningDeactivation ((NRPPA_ProcedureCode_t)18)
{
0
,
0
,
0
},
// NRPPA_ProcedureCode_id_positioningDeactivation ((NRPPA_ProcedureCode_t)18)
};
};
...
...
openair3/NRPPA/nrppa_gNB_location_information_transfer.c
View file @
defafa8d
...
@@ -985,6 +985,37 @@ void free_positioning_information_response(nrppa_positioning_information_resp_t
...
@@ -985,6 +985,37 @@ void free_positioning_information_response(nrppa_positioning_information_resp_t
}
}
}
}
void
decode_nrppa_srstype
(
NRPPA_SRSType_t
*
srs_type
,
nrppa_srs_type_t
*
out
)
{
switch
(
srs_type
->
present
)
{
case
NRPPA_SRSType_PR_NOTHING
:
out
->
present
=
NRPPA_SRS_TYPE_PR_NOTHING
;
break
;
case
NRPPA_SRSType_PR_semipersistentSRS
:
out
->
present
=
NRPPA_SRS_TYPE_PR_SEMIPERSISTENTSRS
;
out
->
choice
.
srs_resource_set_id
=
calloc_or_fail
(
1
,
sizeof
(
*
out
->
choice
.
srs_resource_set_id
));
*
out
->
choice
.
srs_resource_set_id
=
srs_type
->
choice
.
semipersistentSRS
->
sRSResourceSetID
;
break
;
case
NRPPA_SRSType_PR_aperiodicSRS
:
out
->
present
=
NRPPA_SRS_TYPE_PR_APERIODICSRS
;
out
->
choice
.
aperiodic
=
calloc_or_fail
(
1
,
sizeof
(
*
out
->
choice
.
aperiodic
));
*
out
->
choice
.
aperiodic
=
srs_type
->
choice
.
aperiodicSRS
->
aperiodic
;
break
;
default:
AssertFatal
(
false
,
"received illegal SRS type
\n
"
);
break
;
}
}
void
free_positioning_activation_request
(
nrppa_positioning_activation_req_t
*
msg
)
{
if
(
msg
->
srs_type
.
present
==
NRPPA_SRS_TYPE_PR_SEMIPERSISTENTSRS
)
{
free
(
msg
->
srs_type
.
choice
.
srs_resource_set_id
);
}
else
if
(
msg
->
srs_type
.
present
==
NRPPA_SRS_TYPE_PR_APERIODICSRS
)
{
free
(
msg
->
srs_type
.
choice
.
aperiodic
);
}
}
int
nrppa_gNB_handle_trp_information_request
(
nrppa_gnb_ue_info_t
*
nrppa_msg_info
,
const
NRPPA_NRPPA_PDU_t
*
pdu
)
int
nrppa_gNB_handle_trp_information_request
(
nrppa_gnb_ue_info_t
*
nrppa_msg_info
,
const
NRPPA_NRPPA_PDU_t
*
pdu
)
{
{
LOG_I
(
NRPPA
,
"Processing Received TRP Information Request
\n
"
);
LOG_I
(
NRPPA
,
"Processing Received TRP Information Request
\n
"
);
...
@@ -1244,3 +1275,40 @@ int nrppa_gNB_positioning_information_response(instance_t instance, MessageDef *
...
@@ -1244,3 +1275,40 @@ int nrppa_gNB_positioning_information_response(instance_t instance, MessageDef *
free
(
buffer
);
free
(
buffer
);
return
length
;
return
length
;
}
}
int
nrppa_gNB_handle_positioning_activation_request
(
nrppa_gnb_ue_info_t
*
nrppa_msg_info
,
const
NRPPA_NRPPA_PDU_t
*
pdu
)
{
LOG_I
(
NRPPA
,
"Processing Received Positioning Activation Request
\n
"
);
DevAssert
(
pdu
!=
NULL
);
DevAssert
(
nrppa_msg_info
!=
NULL
);
if
(
LOG_DEBUGFLAG
(
DEBUG_ASN1
))
{
xer_fprint
(
stdout
,
&
asn_DEF_NRPPA_NRPPA_PDU
,
pdu
);
}
// Preparing positioning information request for RRC
MessageDef
*
msg
=
itti_alloc_new_message
(
TASK_RRC_GNB
,
0
,
NRPPA_POSITIONING_ACTIVATION_REQ
);
nrppa_positioning_activation_req_t
*
req
=
&
NRPPA_POSITIONING_ACTIVATION_REQ
(
msg
);
// Processing Received PositioningActivationRequest
NRPPA_PositioningActivationRequest_t
*
container
=
NULL
;
NRPPA_PositioningActivationRequestIEs_t
*
ie
=
NULL
;
// IE 9.2.3 Message type : mandatory
container
=
&
pdu
->
choice
.
initiatingMessage
->
value
.
choice
.
PositioningActivationRequest
;
// IE 9.2.4 nrppatransactionID : mandatory
req
->
transaction_id
=
pdu
->
choice
.
initiatingMessage
->
nrppatransactionID
;
// IE SRSType : mandatory
NRPPA_FIND_PROTOCOLIE_BY_ID
(
NRPPA_PositioningActivationRequestIEs_t
,
ie
,
container
,
NRPPA_ProtocolIE_ID_id_SRSType
,
true
);
decode_nrppa_srstype
(
&
ie
->
value
.
choice
.
SRSType
,
&
req
->
srs_type
);
nrppa_store_ue_context
(
nrppa_msg_info
,
req
->
transaction_id
);
LOG_I
(
NRPPA
,
"Forwarding to RRC Positioning Activation Request transaction id = %d
\n
"
,
req
->
transaction_id
);
itti_send_msg_to_task
(
TASK_RRC_GNB
,
0
,
msg
);
ASN_STRUCT_FREE_CONTENTS_ONLY
(
asn_DEF_NRPPA_NRPPA_PDU
,
&
pdu
);
return
0
;
}
openair3/NRPPA/nrppa_gNB_location_information_transfer.h
View file @
defafa8d
...
@@ -32,5 +32,8 @@ int nrppa_gNB_handle_positioning_information_request(nrppa_gnb_ue_info_t *nrppa_
...
@@ -32,5 +32,8 @@ int nrppa_gNB_handle_positioning_information_request(nrppa_gnb_ue_info_t *nrppa_
int
nrppa_gNB_positioning_information_response
(
instance_t
instance
,
MessageDef
*
msg_p
);
int
nrppa_gNB_positioning_information_response
(
instance_t
instance
,
MessageDef
*
msg_p
);
NRPPA_SRSCarrier_List_t
encode_srs_carrier_list_nrppa
(
const
nrppa_srs_carrier_list_t
*
in_list
);
NRPPA_SRSCarrier_List_t
encode_srs_carrier_list_nrppa
(
const
nrppa_srs_carrier_list_t
*
in_list
);
void
free_positioning_information_response
(
nrppa_positioning_information_resp_t
*
msg
);
void
free_positioning_information_response
(
nrppa_positioning_information_resp_t
*
msg
);
int
nrppa_gNB_handle_positioning_activation_request
(
nrppa_gnb_ue_info_t
*
nrppa_msg_info
,
const
NRPPA_NRPPA_PDU_t
*
pdu
);
void
decode_nrppa_srstype
(
NRPPA_SRSType_t
*
srs_type
,
nrppa_srs_type_t
*
out
);
void
free_positioning_activation_request
(
nrppa_positioning_activation_req_t
*
msg
);
#endif
/* NRPPA_GNB_POSITIONING_PROCEDURES_H_ */
#endif
/* NRPPA_GNB_POSITIONING_PROCEDURES_H_ */
openair3/NRPPA/nrppa_includes.h
View file @
defafa8d
...
@@ -69,5 +69,7 @@
...
@@ -69,5 +69,7 @@
#include "NRPPA_PosResourceSetTypePeriodic.h"
#include "NRPPA_PosResourceSetTypePeriodic.h"
#include "NRPPA_PosResourceSetTypeSemi-persistent.h"
#include "NRPPA_PosResourceSetTypeSemi-persistent.h"
#include "NRPPA_PosResourceSetTypeAperiodic.h"
#include "NRPPA_PosResourceSetTypeAperiodic.h"
#include "NRPPA_SemipersistentSRS.h"
#include "NRPPA_AperiodicSRS.h"
#endif
/* NRPPA_INCLUDE_H_ */
#endif
/* NRPPA_INCLUDE_H_ */
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