mirror of https://gerrit.osmocom.org/libosmocore
gsm_08_58.h: Extend IPA Power Control Params IEs to pass C/I params
This commit adds new Osmocom specific IEs required to pass C/I related Power Control Parameters osmo-bsc => osmo-bts to be used by the MS Power Control Loop being implemented. Related: SYS#4917 Change-Id: Iffef0611430ad6c90606149c398d80158633bbca
This commit is contained in:
parent
e67edfdec2
commit
51933840ff
|
@ -799,8 +799,14 @@ enum rsl_ipac_embedded_ie {
|
|||
RSL_IPAC_EIE_SDCCH_CTL_PARAM = 0x1a,
|
||||
RSL_IPAC_EIE_AMR_CONV_THRESH = 0x1b,
|
||||
|
||||
/* Osmocom specific extensions: */
|
||||
RSL_IPAC_EIE_OSMO_MEAS_AVG_CFG = 0xf0,
|
||||
RSL_IPAC_EIE_OSMO_MS_PWR_CTL = 0xf1,
|
||||
RSL_IPAC_EIE_OSMO_PC_THRESH_COMP = 0xf2,
|
||||
|
||||
};
|
||||
|
||||
/* Value of TLV IE RSL_IPAC_EIE_MEAS_AVG_CFG */
|
||||
struct ipac_preproc_ave_cfg {
|
||||
#if OSMO_IS_LITTLE_ENDIAN
|
||||
uint8_t h_reqave:5,
|
||||
|
@ -817,7 +823,32 @@ struct ipac_preproc_ave_cfg {
|
|||
#endif
|
||||
}__attribute__ ((packed));
|
||||
|
||||
/*! MS/BS Power Control Thresholds */
|
||||
|
||||
struct osmo_preproc_ave_cfg_field {
|
||||
#if OSMO_IS_LITTLE_ENDIAN
|
||||
uint8_t h_reqave:5,
|
||||
ave_enabled:1,
|
||||
reserved:2;
|
||||
uint8_t h_reqt:5,
|
||||
ave_method:3;
|
||||
#elif OSMO_IS_BIG_ENDIAN
|
||||
/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianess.py) */
|
||||
uint8_t reserved:2, ave_enabled:1, h_reqave:5;
|
||||
uint8_t ave_method:3, h_reqt:5;
|
||||
#endif
|
||||
}__attribute__ ((packed));
|
||||
/* Value of TLV IE RSL_IPAC_EIE_OSMO_MEAS_AVG_CFG: */
|
||||
struct osmo_preproc_ave_cfg {
|
||||
struct osmo_preproc_ave_cfg_field ci_fr;
|
||||
struct osmo_preproc_ave_cfg_field ci_hr;
|
||||
struct osmo_preproc_ave_cfg_field ci_amr_fr;
|
||||
struct osmo_preproc_ave_cfg_field ci_amr_hr;
|
||||
struct osmo_preproc_ave_cfg_field ci_sdcch;
|
||||
struct osmo_preproc_ave_cfg_field ci_gprs;
|
||||
uint8_t params[0]; /* Contains params for each above, appended one after the other */
|
||||
}__attribute__ ((packed));
|
||||
|
||||
/*! MS/BS Power Control Thresholds (RSL_IPAC_EIE_MS_PWR_CTL) */
|
||||
struct ipac_preproc_pc_thresh {
|
||||
#if OSMO_IS_LITTLE_ENDIAN
|
||||
uint8_t l_rxlev:6, reserved_l_rxlev:2;
|
||||
|
@ -832,6 +863,17 @@ struct ipac_preproc_pc_thresh {
|
|||
#endif
|
||||
}__attribute__ ((packed));
|
||||
|
||||
/*! Osmocom extension for: MS/BS Power Control Thresholds (RSL_IPAC_EIE_OSMO_MS_PWR_CTL) */
|
||||
struct osmo_preproc_pc_thresh {
|
||||
/* Carrier-to-Interference (C/I), in dB: */
|
||||
int8_t l_ci_fr; int8_t u_ci_fr; /* FR/EFR */
|
||||
int8_t l_ci_hr; int8_t u_ci_hr; /* HR */
|
||||
int8_t l_ci_amr_fr; int8_t u_ci_amr_fr; /* AMR FR */
|
||||
int8_t l_ci_amr_hr; int8_t u_ci_amr_hr; /* AMR HR */
|
||||
int8_t l_ci_sdcch; int8_t u_ci_sdcch; /* SDCCH */
|
||||
int8_t l_ci_gprs; int8_t u_ci_gprs; /* GPRS */
|
||||
}__attribute__ ((packed));
|
||||
|
||||
/*! Handover Thresholds */
|
||||
struct ipac_preproc_ho_thresh {
|
||||
#if OSMO_IS_LITTLE_ENDIAN
|
||||
|
@ -860,7 +902,7 @@ struct ipac_preproc_ho_thresh {
|
|||
#endif
|
||||
}__attribute__ ((packed));
|
||||
|
||||
/*! PC Threshold Comparators */
|
||||
/*! PC Threshold Comparators (RSL_IPAC_EIE_PC_THRESH_COMP) */
|
||||
struct ipac_preproc_pc_comp {
|
||||
#if OSMO_IS_LITTLE_ENDIAN
|
||||
uint8_t p1:5, reserved_p1:3;
|
||||
|
@ -887,6 +929,30 @@ struct ipac_preproc_pc_comp {
|
|||
#endif
|
||||
}__attribute__ ((packed));
|
||||
|
||||
/*! Osmocom extension for: PC Threshold Comparators (RSL_IPAC_EIE_OSMO_PC_THRESH_COMP) */
|
||||
struct ipac_preproc_pc_comp_field {
|
||||
#if OSMO_IS_LITTLE_ENDIAN
|
||||
uint8_t lower_p:5, reserved_lower_p:3;
|
||||
uint8_t lower_n:5, reserved_lower_n:3;
|
||||
uint8_t upper_p:5, reserved_upper_p:3;
|
||||
uint8_t upper_n:5, reserved_upper_n:3;
|
||||
#elif OSMO_IS_BIG_ENDIAN
|
||||
uint8_t reserved_lower_p:3, lower_p:5;
|
||||
uint8_t reserved_lower_n:3, lower_n:5;
|
||||
uint8_t reserved_upper_p:3, upper_p:5;
|
||||
uint8_t reserved_upper_n:3, upper_n:5;
|
||||
#endif
|
||||
}__attribute__ ((packed));
|
||||
struct osmo_preproc_pc_comp {
|
||||
/* Used for Carrier-to-Interference (C/I), in dB: */
|
||||
struct ipac_preproc_pc_comp_field ci_fr;
|
||||
struct ipac_preproc_pc_comp_field ci_hr;
|
||||
struct ipac_preproc_pc_comp_field ci_amr_fr;
|
||||
struct ipac_preproc_pc_comp_field ci_amr_hr;
|
||||
struct ipac_preproc_pc_comp_field ci_sdcch;
|
||||
struct ipac_preproc_pc_comp_field ci_gprs;
|
||||
}__attribute__ ((packed));
|
||||
|
||||
/*! HO Threshold Comparators */
|
||||
struct ipac_preproc_ho_comp {
|
||||
#if OSMO_IS_LITTLE_ENDIAN
|
||||
|
|
|
@ -621,6 +621,10 @@ const struct tlv_definition rsl_ipac_eie_tlvdef = {
|
|||
[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 },
|
||||
/* Osmocom extensions: */
|
||||
[RSL_IPAC_EIE_OSMO_MEAS_AVG_CFG]= { TLV_TYPE_TLV },
|
||||
[RSL_IPAC_EIE_OSMO_MS_PWR_CTL] = { TLV_TYPE_TLV },
|
||||
[RSL_IPAC_EIE_OSMO_PC_THRESH_COMP]= { TLV_TYPE_TLV },
|
||||
},
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue