diff options
author | Harald Welte <laforge@gnumonks.org> | 2009-08-10 09:51:40 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2009-08-10 09:51:40 +0200 |
commit | 67fa91bf427a3ef7a835561abc7f40b291ce843f (patch) | |
tree | 363687d1cc94e49ffe38ae3ae18257f806d3354a /openbsc/include/openbsc/abis_rsl.h | |
parent | d5d1cef7c26a830c056b5f6b1611497252ec521f (diff) |
Add function to generate siemens-specific MRPCI RSL message
MRPCI (MS RF Power Indicator) informs the BTS about the power
capabilities of the MS.
Diffstat (limited to 'openbsc/include/openbsc/abis_rsl.h')
-rw-r--r-- | openbsc/include/openbsc/abis_rsl.h | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/openbsc/include/openbsc/abis_rsl.h b/openbsc/include/openbsc/abis_rsl.h index 49dd7731c..e9c60b52a 100644 --- a/openbsc/include/openbsc/abis_rsl.h +++ b/openbsc/include/openbsc/abis_rsl.h @@ -154,6 +154,11 @@ enum abis_rsl_msgtype { RSL_MT_IPAC_DISCONNECT_NACK, }; +/* Siemens vendor-specific */ +enum abis_rsl_msgtype_siemens { + RSL_MT_SIEMENS_MRPCI = 0x41, +}; + /* Chapter 9.3 */ enum abis_rsl_ie { RSL_IE_CHAN_NR = 0x01, @@ -203,7 +208,7 @@ enum abis_rsl_ie { RSL_IE_CBCH_LOAD_INFO, RSL_IE_SMSCB_CHAN_INDICATOR, RSL_IE_GROUP_CALL_REF, - RSL_IE_CHAN_DESC, + RSL_IE_CHAN_DESC = 0x30, RSL_IE_NCH_DRX_INFO, RSL_IE_CMD_INDICATOR, RSL_IE_EMLPP_PRIO, @@ -216,7 +221,10 @@ enum abis_rsl_ie { RSL_IE_RTD, RSL_IE_TFO_STATUS, RSL_IE_LLP_APDU, + /* Siemens vendor-specific */ + RSL_IE_SIEMENS_MRPCI = 0x40, + /* ip.access */ RSL_IE_IPAC_SRTP_CONFIG = 0xe0, RSL_IE_IPAC_PROXY_UDP = 0xe1, RSL_IE_IPAC_BSCMPL_TOUT = 0xe2, @@ -479,6 +487,30 @@ int rsl_data_request(struct msgb *msg, u_int8_t link_id); int rsl_establish_request(struct gsm_lchan *lchan, u_int8_t link_id); int rsl_relase_request(struct gsm_lchan *lchan, u_int8_t link_id); +/* Siemens vendor-specific RSL extensions */ +struct rsl_mrpci { + u_int8_t power_class:3, + vgcs_capable:1, + vbs_capable:1, + gsm_phase:2; +} __attribute__ ((packed)); + +enum rsl_mrpci_pwrclass { + RSL_MRPCI_PWRC_1 = 0, + RSL_MRPCI_PWRC_2 = 1, + RSL_MRPCI_PWRC_3 = 2, + RSL_MRPCI_PWRC_4 = 3, + RSL_MRPCI_PWRC_5 = 4, +}; +enum rsl_mrpci_phase { + RSL_MRPCI_PHASE_1 = 0, + /* reserved */ + RSL_MRPCI_PHASE_2 = 2, + RSL_MRPCI_PHASE_2PLUS = 3, +}; + +int rsl_siemens_mrpci(struct gsm_lchan *lchan, u_int8_t mrpci); + /* ip.access specfic RSL extensions */ int rsl_ipacc_bind(struct gsm_lchan *lchan); int rsl_ipacc_connect(struct gsm_lchan *lchan, u_int32_t ip, |