diff options
| author | Harald Welte <laforge@gnumonks.org> | 2012-08-24 21:27:26 +0200 | 
|---|---|---|
| committer | Harald Welte <laforge@gnumonks.org> | 2012-08-24 21:37:59 +0200 | 
| commit | c8a0b939398b85ee74f248c73e263b71c09274d1 (patch) | |
| tree | 5c387f26f7d19de98184e998164b45bfdd5f51be /include/osmocom | |
| parent | 7ccd3181c5dc6a8fdb003fc3d9ebe103cb46184c (diff) | |
GSM 04.08: Add support for parsing CSD related bearer capabilities
Also adds a test case for both encoder and decoder of this IE
Diffstat (limited to 'include/osmocom')
| -rw-r--r-- | include/osmocom/gsm/mncc.h | 14 | ||||
| -rw-r--r-- | include/osmocom/gsm/protocol/gsm_04_08.h | 65 | 
2 files changed, 79 insertions, 0 deletions
| diff --git a/include/osmocom/gsm/mncc.h b/include/osmocom/gsm/mncc.h index a094bb9b..a51267e0 100644 --- a/include/osmocom/gsm/mncc.h +++ b/include/osmocom/gsm/mncc.h @@ -1,6 +1,8 @@  #ifndef _OSMOCORE_MNCC_H  #define _OSMOCORE_MNCC_H +#include <osmocom/gsm/protocol/gsm_04_08.h> +  #define GSM_MAX_FACILITY       128  #define GSM_MAX_SSVERSION      128  #define GSM_MAX_USERUSER       128 @@ -13,6 +15,18 @@ struct gsm_mncc_bearer_cap {  	int		radio;		/* Radio Channel Requirement */  	int		speech_ctm;	/* CTM text telephony indication */  	int		speech_ver[8];	/* Speech version indication */ +	struct { +		enum gsm48_bcap_ra		rate_adaption; +		enum gsm48_bcap_sig_access	sig_access; +		int				async; +		int				nr_stop_bits; +		int				nr_data_bits; +		enum gsm48_bcap_user_rate	user_rate; +		enum gsm48_bcap_parity		parity; +		enum gsm48_bcap_interm_rate	interm_rate; +		enum gsm48_bcap_transp		transp; +		enum gsm48_bcap_modem_type	modem_type; +	} data;  };  struct gsm_mncc_number { diff --git a/include/osmocom/gsm/protocol/gsm_04_08.h b/include/osmocom/gsm/protocol/gsm_04_08.h index 5057ada8..7c558ce8 100644 --- a/include/osmocom/gsm/protocol/gsm_04_08.h +++ b/include/osmocom/gsm/protocol/gsm_04_08.h @@ -1246,6 +1246,71 @@ enum gsm48_bcap_rrq {  	GSM48_BCAP_RRQ_DUAL_FR	= 3,  }; +/* GSM 04.08 Bearer Capability: Rate Adaption */ +enum gsm48_bcap_ra { +	GSM48_BCAP_RA_NONE	= 0, +	GSM48_BCAP_RA_V110_X30	= 1, +	GSM48_BCAP_RA_X31	= 2, +	GSM48_BCAP_RA_OTHER	= 3, +}; + +/* GSM 04.08 Bearer Capability: Signalling access protocol */ +enum gsm48_bcap_sig_access { +	GSM48_BCAP_SA_I440_I450	= 1, +	GSM48_BCAP_SA_X21	= 2, +	GSM48_BCAP_SA_X28_DP_IN	= 3, +	GSM48_BCAP_SA_X28_DP_UN	= 4, +	GSM48_BCAP_SA_X28_NDP	= 5, +	GSM48_BCAP_SA_X32	= 6, +}; + +/* GSM 04.08 Bearer Capability: User Rate */ +enum gsm48_bcap_user_rate { +	GSM48_BCAP_UR_300	= 1, +	GSM48_BCAP_UR_1200	= 2, +	GSM48_BCAP_UR_2400	= 3, +	GSM48_BCAP_UR_4800	= 4, +	GSM48_BCAP_UR_9600	= 5, +	GSM48_BCAP_UR_12000	= 6, +	GSM48_BCAP_UR_1200_75	= 7, +}; + +/* GSM 04.08 Bearer Capability: Parity */ +enum gsm48_bcap_parity { +	GSM48_BCAP_PAR_ODD	= 0, +	GSM48_BCAP_PAR_EVEN	= 2, +	GSM48_BCAP_PAR_NONE	= 3, +	GSM48_BCAP_PAR_ZERO	= 4, +	GSM48_BCAP_PAR_ONE	= 5, +}; + +/* GSM 04.08 Bearer Capability: Intermediate Rate */ +enum gsm48_bcap_interm_rate { +	GSM48_BCAP_IR_8k	= 2, +	GSM48_BCAP_IR_16k	= 3, +}; + +/* GSM 04.08 Bearer Capability: Transparency */ +enum gsm48_bcap_transp { +	GSM48_BCAP_TR_TRANSP	= 0, +	GSM48_BCAP_TR_RLP	= 1, +	GSM48_BCAP_TR_TR_PREF	= 2, +	GSM48_BCAP_TR_RLP_PREF	= 3, +}; + +/* GSM 04.08 Bearer Capability: Modem Type */ +enum gsm48_bcap_modem_type { +	GSM48_BCAP_MT_NONE	= 0, +	GSM48_BCAP_MT_V21	= 1, +	GSM48_BCAP_MT_V22	= 2, +	GSM48_BCAP_MT_V22bis	= 3, +	GSM48_BCAP_MT_V23	= 4, +	GSM48_BCAP_MT_V26ter	= 5, +	GSM48_BCAP_MT_V32	= 6, +	GSM48_BCAP_MT_UNDEF	= 7, +	GSM48_BCAP_MT_AUTO_1	= 8, +}; +  #define GSM48_TMSI_LEN	5  #define GSM48_MID_TMSI_LEN	(GSM48_TMSI_LEN + 2)  #define GSM48_MI_SIZE 32 | 
