[PATCH] libosmocore[master]: IPAC manufacture-defined measurement pre-processing definitions

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Fri Jul 14 14:08:23 UTC 2017


Hello Neels Hofmeyr, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/812

to look at the new patch set (#2).

IPAC manufacture-defined measurement pre-processing definitions

Change-Id: Ie1853697f4cff5ff98654fa1cae6c68e28a0076b
---
M include/osmocom/gsm/protocol/gsm_08_58.h
M src/gsm/rsl.c
2 files changed, 127 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/12/812/2

diff --git a/include/osmocom/gsm/protocol/gsm_08_58.h b/include/osmocom/gsm/protocol/gsm_08_58.h
index bc70b93..f6451bb 100644
--- a/include/osmocom/gsm/protocol/gsm_08_58.h
+++ b/include/osmocom/gsm/protocol/gsm_08_58.h
@@ -169,6 +169,9 @@
 	RSL_MT_IPAC_DISC_MUX		= 0x56,
 	RSL_MT_IPAC_DISC_MUX_ACK,
 	RSL_MT_IPAC_DISC_MUX_NACK,
+	RSL_MT_IPAC_MEAS_PREPROC_DFT 	= 0x60,		/*Extented Common Channel Management */
+	RSL_MT_IPAC_HO_CAN_ENQ 		= 0x61,
+	RSL_MT_IPAC_HO_CAN_RES 		= 0x62,
 	RSL_MT_IPAC_CRCX		= 0x70,		/* Bind to local BTS RTP port */
 	RSL_MT_IPAC_CRCX_ACK,
 	RSL_MT_IPAC_CRCX_NACK,
@@ -315,6 +318,42 @@
 #define RSL_IE_ERIC_T3115		0xfd
 #define RSL_IE_ERIC_ACTIVATE_FLAG	0xfe
 #define RSL_IE_ERIC_FULL_NCH_INFO	0xff
+
+/* IPAC MEAS_PREPROC AVERAGING METHOD */
+enum {
+	IPAC_UNWEIGHTED_AVE = 0,
+	IPAC_WEIGHTED_AVE,
+	IPAC_MEDIAN_AVE
+};
+
+/* IPAC MEAS_PREPROC AVERAGING PARAMID */
+enum {
+	IPAC_RXLEV_AVE = 0,
+	IPAC_RXQUAL_AVE,
+	IPAC_MS_BTS_DIS_AVE
+};
+
+/* IPAC MEAS_PREPROC HO CAUSES */
+enum {
+	IPAC_HO_RQD_CAUSE_L_RXLEV_UL_H = 0x01,
+	IPAC_HO_RQD_CAUSE_L_RXLEV_DL_H,
+	IPAC_HO_RQD_CAUSE_L_RXQUAL_UL_H,
+	IPAC_HO_RQD_CAUSE_L_RXQUAL_DL_H,
+	IPAC_HO_RQD_CAUSE_RXLEV_UL_IH,
+	IPAC_HO_RQD_CAUSE_RXLEV_DL_IH,
+	IPAC_HO_RQD_CAUSE_MAX_MS_RANGE,
+	IPAC_HO_RQD_CAUSE_POWER_BUDGET,
+	IPAC_HO_RQD_CAUSE_ENQUIRY,
+	IPAC_HO_RQD_CAUSE_ENQUIRY_FAILED,
+	IPAC_HO_RQD_CAUSE_NORMAL3G,
+	IPAC_HO_RQD_CAUSE_EMERGENCY3G,
+	IPAC_HO_RQD_CAUSE_SERVICE_PREFERRED3G,
+	IPAC_HO_RQD_CAUSE_O_M_SHUTDOWN,
+	IPAC_HO_RQD_CAUSE_QUALITY_PROMOTION,
+	IPAC_HO_RQD_CAUSE_LOAD_PROMOTION,
+	IPAC_HO_RQD_CAUSE_LOAD_DEMOTION,
+	IPAC_HO_RQD_CAUSE_MAX,
+};
 
 /* Chapter 9.3.1 */
 #define RSL_CHAN_NR_MASK	0xf8
@@ -625,6 +664,89 @@
 	RSL_IPAC_EIE_NCELL_LIST_EXT	= 0x13,
 	RSL_IPAC_EIE_MASTER_KEY		= 0x14,
 	RSL_IPAC_EIE_MASTER_SALT	= 0x15,
+	/* additional IPAC measurement pre-processing related IEI */
+	RSL_IPAC_EIE_MEAS_TRANS_RES	= 0x16,
+	RSL_IPAC_EIE_3G_HO_PARAM	= 0x17,
+	RSL_IPAC_EIE_3G_NCELL_LIST	= 0x18,
+	RSL_IPAC_EIE_SDCCH_CTL_PARAM	= 0x1a,
+	RSL_IPAC_EIE_AMR_CONV_THRESH 	= 0x1b,
+
+};
+
+struct ipac_preproc_ave_cfg {
+	uint8_t h_reqave:5,
+		param_id:2,
+		reserved:1;
+	uint8_t h_reqt:5,
+		ave_method:3;
+}__attribute__ ((packed));
+
+struct ipac_preproc_ho_thresh {
+	uint8_t l_rxlev_ul_h:6,
+		reserved_l_rxlev_ul:2;
+	uint8_t l_rxlev_dl_h:6,
+		reserved_l_rxlev_dl:2;
+	uint8_t rxlev_ul_ih:6,
+		reserved_rxlev_ul:2;
+	uint8_t rxlev_dl_ih:6,
+		reserved_rxlev_dl:2;
+	uint8_t l_rxqual_ul_h:3,
+		reserved_rxlqual_ul:1,
+		l_rxqual_dl_h:3,
+		reserved_rxqual_dl:1;
+	uint8_t ms_range_max:6,
+		reserved_ms_range:2;
+}__attribute__ ((packed));
+
+struct ipac_preproc_ho_comp {
+	uint8_t p5:5,
+		reserved_p5:3;
+	uint8_t n5:5,
+		reserved_n5:3;
+	uint8_t p6:5,
+		reserved_p6:3;
+	uint8_t n6:5,
+		reserved_n6:3;
+	uint8_t p7:5,
+		reserved_p7:3;
+	uint8_t n7:5,
+		reserved_n7:3;
+	uint8_t p8:5,
+		reserved_p8:3;
+	uint8_t n8:5,
+		reserved_n8:3;
+	uint8_t ho_interval:5,
+		reserved_ho:3;
+	uint8_t reserved;
+
+}__attribute__ ((packed));
+
+struct ipac_preproc_ho_candidates {
+	uint8_t bsic:6,
+		reserved0:2;
+	uint8_t bcch_freq:5,
+		ba_used:1,
+		s:1,
+		reserved1:1;
+}__attribute__ ((packed));
+
+struct ipac_preproc_ncell_dflts {
+	uint8_t rxlev_min_def:6,
+		reserved_rxlev_min_def:2;
+	uint8_t ho_margin_def:5,
+		reserved_ho_margin_def:3;
+	uint8_t ms_txpwr_max_def:5,
+		reserved_ms_txpwr_max_def:3;
+}__attribute__ ((packed));
+
+struct ipac_preproc_cfg {
+	uint8_t meas_rep_mode;
+	uint32_t meas_mode_flags;
+	struct ipac_preproc_ave_cfg ms_ave_cfg[3];
+	struct ipac_preproc_ave_cfg ave_cfg;
+	struct ipac_preproc_ho_thresh ho_thresh;
+	struct ipac_preproc_ho_comp ho_comp;
+	struct ipac_preproc_ncell_dflts ncell_dflts;
 };
 
 /*! @} */
diff --git a/src/gsm/rsl.c b/src/gsm/rsl.c
index e33ea10..aeab1aa 100644
--- a/src/gsm/rsl.c
+++ b/src/gsm/rsl.c
@@ -561,6 +561,11 @@
 		[RSL_IPAC_EIE_NCELL_LIST_EXT]	= { TLV_TYPE_TLV },
 		[RSL_IPAC_EIE_MASTER_KEY]	= { TLV_TYPE_TLV },
 		[RSL_IPAC_EIE_MASTER_SALT]	= { TLV_TYPE_TLV },
+		[RSL_IPAC_EIE_MEAS_TRANS_RES]	= {TLV_TYPE_TV},
+		[RSL_IPAC_EIE_3G_HO_PARAM]	= { TLV_TYPE_TLV },
+		[RSL_IPAC_EIE_3G_NCELL_LIST]	= { TLV_TYPE_TLV },
+		[RSL_IPAC_EIE_SDCCH_CTL_PARAM]	= { TLV_TYPE_TV },
+		[RSL_IPAC_EIE_AMR_CONV_THRESH] 	= { TLV_TYPE_FIXED, 9 },
 	},
 };
 

-- 
To view, visit https://gerrit.osmocom.org/812
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ie1853697f4cff5ff98654fa1cae6c68e28a0076b
Gerrit-PatchSet: 2
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Minh-Quang Nguyen <minh-quang.nguyen at nutaq.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Minh-Quang Nguyen <minh-quang.nguyen at nutaq.com>
Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>



More information about the gerrit-log mailing list