Add TRP Information Response NRPPA message encoding procedures

Supported TRP Information Response Types:
 - PCI NR
 - NG RAN CGI
 - NR ARFCN
 - GEOGRAPHICAL COORDINATES
This commit is contained in:
Rakesh Mundlamuri
2026-03-02 21:36:03 +05:30
parent 446a905013
commit 0282e64a3b
12 changed files with 801 additions and 0 deletions
+1
View File
@@ -23,3 +23,4 @@
// LMF -> CU
MESSAGE_DEF(NRPPA_TRP_INFORMATION_REQ, MESSAGE_PRIORITY_MED, nrppa_trp_information_req_t, nrppa_trp_information_req)
MESSAGE_DEF(NRPPA_TRP_INFORMATION_RESP, MESSAGE_PRIORITY_MED, nrppa_trp_information_resp_t, nrppa_trp_information_resp)
+181
View File
@@ -25,6 +25,7 @@
// Defines to access message fields.
#define NRPPA_TRP_INFORMATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nrppa_trp_information_req
#define NRPPA_TRP_INFORMATION_RESP(mSGpTR) (mSGpTR)->ittiMsg.nrppa_trp_information_resp
/* Structure of Positioning related NRPPA messages */
/* IE structures for Positioning related messages as per TS 38.455 V16.7.1*/
@@ -54,6 +55,179 @@ typedef struct nrppa_trp_list_s {
uint32_t trp_list_length;
} nrppa_trp_list_t;
typedef struct nrppa_access_point_position_s {
long latitude_sign;
long latitude;
long longitude;
long direction_of_altitude;
long altitude;
long uncertainty_semi_major;
long uncertainty_semi_minor;
long orientation_of_major_axis;
long uncertainty_altitude;
long confidence;
} nrppa_access_point_position_t;
typedef struct nrppa_ngran_high_accuracy_access_point_position_s {
long latitude;
long longitude;
long altitude;
long uncertainty_semi_major;
long uncertainty_semi_minor;
long orientation_of_major_axis;
long horizontal_confidence;
long uncertainty_altitude;
long vertical_confidence;
} nrppa_ngran_high_accuracy_access_point_position_t;
typedef union nrppa_trp_position_direct_accuracy_c {
nrppa_access_point_position_t trp_position;
nrppa_ngran_high_accuracy_access_point_position_t trp_HAposition;
} nrppa_trp_position_direct_accuracy_u;
typedef enum nrppa_trp_position_direct_accuracy_e {
NRPPA_TRP_POSITION_DIRECT_ACCURACY_PR_NOTHING,
NRPPA_TRP_POSITION_DIRECT_ACCURACY_PR_TRPPOSITION,
NRPPA_TRP_POSITION_DIRECT_ACCURACY_PR_TRPHAPOSITION
} nrppa_trp_position_direct_accuracy_pr;
typedef struct nrppa_trp_position_direct_accuracy_s {
nrppa_trp_position_direct_accuracy_pr present;
nrppa_trp_position_direct_accuracy_u choice;
} nrppa_trp_position_direct_accuracy_t;
typedef struct nrppa_trp_position_direct_s {
nrppa_trp_position_direct_accuracy_t accuracy;
} nrppa_trp_position_direct_t;
typedef enum nrppa_reference_point_e {
NRPPA_REFERENCE_POINT_PR_NOTHING,
NRPPA_REFERENCE_POINT_PR_COORDINATEID,
NRPPA_REFERENCE_POINT_PR_REFERENCEPOINTCOORDINATE,
NRPPA_REFERENCE_POINT_PR_REFERENCEPOINTCOORDINATEHA
} nrppa_reference_point_pr;
typedef union nrppa_reference_point_c {
long coordinate_id;
nrppa_access_point_position_t reference_point_coordinate;
nrppa_ngran_high_accuracy_access_point_position_t reference_point_coordinateHA;
} nrppa_reference_point_u;
typedef struct nrppa_reference_point_s {
nrppa_reference_point_pr present;
nrppa_reference_point_u choice;
} nrppa_reference_point_t;
typedef struct nrppa_location_uncertainty_s {
long horizontal_uncertainty;
long horizontal_confidence;
long vertical_uncertainty;
long vertical_confidence;
} nrppa_location_uncertainty_t;
typedef struct nrppa_relative_geodetic_location_s {
long milli_arc_second_units;
long height_units;
long delta_latitude;
long delta_longitude;
long delta_height;
nrppa_location_uncertainty_t location_uncertainty;
} nrppa_relative_geodetic_location_t;
typedef struct nrppa_relative_cartesian_location_s {
long xyz_unit;
long xvalue;
long yvalue;
long zvalue;
nrppa_location_uncertainty_t location_uncertainty;
} nrppa_relative_cartesian_location_t;
typedef union nrppa_trp_reference_point_type_c {
nrppa_relative_geodetic_location_t trp_position_relative_geodetic;
nrppa_relative_cartesian_location_t trp_position_relative_cartesian;
} nrppa_trp_reference_point_type_u;
typedef enum nrppa_trp_reference_point_type_e {
NRPPA_TRP_REFERENCE_POINT_TYPE_PR_NOTHING,
NRPPA_TRP_REFERENCE_POINT_TYPE_PR_TRPPOSITION_RELATIVE_GEODETIC,
NRPPA_TRP_REFERENCE_POINT_TYPE_PR_TRPPOSITION_RELATIVE_CARTESIAN
} nrppa_trp_reference_point_type_pr;
typedef struct nrppa_trp_reference_point_type_t {
nrppa_trp_reference_point_type_pr present;
nrppa_trp_reference_point_type_u choice;
} nrppa_trp_reference_point_type_t;
typedef struct nrppa_trp_position_referenced_t {
nrppa_reference_point_t reference_point;
nrppa_trp_reference_point_type_t reference_point_type;
} nrppa_trp_position_referenced_t;
typedef union nrppa_trp_position_definition_type_c {
nrppa_trp_position_direct_t direct;
nrppa_trp_position_referenced_t referenced;
} nrppa_trp_position_definition_type_u;
typedef enum nrppa_trp_position_definition_type_e {
NRPPA_TRP_POSITION_DEFINITION_TYPE_PR_NOTHING,
NRPPA_TRP_POSITION_DEFINITION_TYPE_PR_DIRECT,
NRPPA_TRP_POSITION_DEFINITION_TYPE_PR_REFERENCED
} nrppa_trp_position_definition_type_pr;
typedef struct nrppa_trp_position_definition_type_s {
nrppa_trp_position_definition_type_u choice;
nrppa_trp_position_definition_type_pr present;
} nrppa_trp_position_definition_type_t;
typedef struct nrppa_geographical_coordinates_s {
nrppa_trp_position_definition_type_t trp_position_definition_type;
} nrppa_geographical_coordinates_t;
typedef struct nrppa_ng_ran_cgi_s {
plmn_id_t plmn;
uint64_t nr_cellid;
} nrppa_ng_ran_cgi_t;
typedef union nrppa_trp_information_type_response_item_c {
uint16_t pci_nr;
nrppa_ng_ran_cgi_t ng_ran_cgi;
uint32_t nr_arfcn;
nrppa_geographical_coordinates_t geographical_coordinates;
} nrppa_trp_information_type_response_item_u;
typedef enum nrppa_trp_information_type_response_item_e {
NRPPA_TRP_INFORMATION_TYPE_RESPONSE_ITEM_PR_NOTHING,
NRPPA_TRP_INFORMATION_TYPE_RESPONSE_ITEM_PR_PCI_NR,
NRPPA_TRP_INFORMATION_TYPE_RESPONSE_ITEM_PR_NG_RAN_CGI,
NRPPA_TRP_INFORMATION_TYPE_RESPONSE_ITEM_PR_NRARFCN,
NRPPA_TRP_INFORMATION_TYPE_RESPONSE_ITEM_PR_PRSCONFIGURATION,
NRPPA_TRP_INFORMATION_TYPE_RESPONSE_ITEM_PR_SSBINFORMATION,
NRPPA_TRP_INFORMATION_TYPE_RESPONSE_ITEM_PR_SFNINITIALISATIONTIME,
NRPPA_TRP_INFORMATION_TYPE_RESPONSE_ITEM_PR_SPATIALDIRECTIONINFORMATION,
NRPPA_TRP_INFORMATION_TYPE_RESPONSE_ITEM_PR_GEOGRAPHICALCOORDINATES
} nrppa_trp_information_type_response_item_pr;
typedef struct nrppa_trp_information_type_response_item_s {
nrppa_trp_information_type_response_item_pr present;
nrppa_trp_information_type_response_item_u choice;
} nrppa_trp_information_type_response_item_t;
typedef struct nrppa_trp_information_type_response_list_s {
nrppa_trp_information_type_response_item_t *trp_information_type_response_item;
uint8_t trp_information_type_response_item_length;
} nrppa_trp_information_type_response_list_t;
typedef struct nrppa_trp_information_s {
uint32_t trp_id;
nrppa_trp_information_type_response_list_t trp_information_type_response_list;
} nrppa_trp_information_t;
// IE 9.3.1.176 (TS 38.473 V16.21.0)
typedef struct nrppa_trp_information_list_s {
nrppa_trp_information_t *trp_information_item;
uint32_t trp_information_item_length;
} nrppa_trp_information_list_t;
typedef struct nrppa_trp_information_req_s {
// IE 9.2.4 (mandatory)
uint16_t transaction_id;
@@ -64,4 +238,11 @@ typedef struct nrppa_trp_information_req_s {
nrppa_trp_information_type_list_t trp_information_type_list;
} nrppa_trp_information_req_t;
typedef struct nrppa_trp_information_resp_s {
// IE 9.2.4 (mandatory)
uint16_t transaction_id;
// mandatory
nrppa_trp_information_list_t trp_information_list;
} nrppa_trp_information_resp_t;
#endif // NRPPA_MESSAGES_TYPES_H_