libosmogsm 1.10.0.57-8972
Osmocom GSM library
|
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/utils.h>
#include <osmocom/core/endian.h>
Go to the source code of this file.
Data Structures | |
struct | bssmap_header |
struct | dtap_header |
struct | gsm0808_speech_codec |
3GPP TS 48.008 3.2.2.104 Speech Codec. More... | |
struct | gsm0808_speech_codec_list |
struct | gsm0808_channel_type |
struct | gsm0808_encrypt_info |
struct | gsm0808_cell_id_list |
DEPRECATED: This definition of the cell identifier list is insufficient. More... | |
struct | gsm0808_diagnostics |
Macros | |
#define | CELL_IDENT_LAI_AND_LAC CELL_IDENT_LAI |
#define | BSS_MAP_MSG_ASSIGMENT_RQST BSS_MAP_MSG_ASSIGNMENT_RQST |
#define | BSS_MAP_MSG_ASSIGMENT_COMPLETE BSS_MAP_MSG_ASSIGNMENT_COMPLETE |
#define | BSS_MAP_MSG_ASSIGMENT_FAILURE BSS_MAP_MSG_ASSIGNMENT_FAILURE |
#define | GSM0808_DATA_FULL_RPREF GSM0808_DATA_FULL_PREF |
#define | GSM0808_SCT_EXT 0x0f |
#define | SPEECH_CODEC_MAXLEN 255 |
#define | CH_TYPE_PERM_SPCH_MAXLEN 9 |
#define | ENCRY_INFO_KEY_MAXLEN 252 |
#define | ENCRY_INFO_PERM_ALGO_MAXLEN 8 |
#define | CELL_ID_LIST_LAC_MAXLEN 127 |
Functions | |
struct bssmap_header | __attribute__ ((packed)) |
static const char * | gsm0406_dlci_sapi_name (enum gsm0406_dlci_sapi val) |
static const char * | gsm0808_permitted_speech_name (enum gsm0808_permitted_speech val) |
static const char * | gsm0808_speech_codec_type_name (enum gsm0808_speech_codec_type val) |
static const char * | gsm0808_amr_mode_name (enum gsm0808_amr_mode val) |
Variables | |
uint8_t | type |
uint8_t | length |
union { | |
uint8_t link_id | |
struct { | |
} | |
}; | |
enum gsm0406_dlci_sapi | __attribute__ |
const struct value_string | gsm0406_dlci_sapi_names [] |
const struct value_string | gsm0808_permitted_speech_names [] |
const struct value_string | gsm0808_speech_codec_type_names [] |
const struct value_string | gsm0808_chosen_enc_alg_names [] |
const struct value_string | gsm0808_amr_mode_names [] |
const uint8_t | gsm0808_amr_modes_from_cfg [2][16] |
uint8_t | error_pointer_octet |
uint8_t | msg [0] |
#define BSS_MAP_MSG_ASSIGMENT_COMPLETE BSS_MAP_MSG_ASSIGNMENT_COMPLETE |
#define BSS_MAP_MSG_ASSIGMENT_FAILURE BSS_MAP_MSG_ASSIGNMENT_FAILURE |
#define BSS_MAP_MSG_ASSIGMENT_RQST BSS_MAP_MSG_ASSIGNMENT_RQST |
#define CELL_ID_LIST_LAC_MAXLEN 127 |
#define CELL_IDENT_LAI_AND_LAC CELL_IDENT_LAI |
#define CH_TYPE_PERM_SPCH_MAXLEN 9 |
#define ENCRY_INFO_KEY_MAXLEN 252 |
#define ENCRY_INFO_PERM_ALGO_MAXLEN 8 |
#define GSM0808_DATA_FULL_RPREF GSM0808_DATA_FULL_PREF |
#define GSM0808_SCT_EXT 0x0f |
#define SPEECH_CODEC_MAXLEN 255 |
enum BSS_MAP_MSG_TYPE |
enum BSSAP_MSG_TYPE |
enum CELL_IDENT |
enum gsm0406_dlci_sapi |
enum gsm0808_amr_mode |
enum gsm0808_cause |
enum gsm0808_cause_class |
enum GSM0808_IE_CODING |
enum gsm0808_lcls_config |
enum gsm0808_lcls_control |
enum gsm0808_lcls_status |
enum gsm0808_paging_info |
GSM 08.08 3.2.2.11 Channel Type (see also 3GPP TS 48.008, section 3.2.2.11)
Default speech codec configurations: Some codecs specified with struct gsm0808_speech_codec, require a configuration (cfg).
The following default configuration will configure the codec (RTP) to match the configuration that is used on the air interface (Um).
Default values for FR_AMR, HR_AMR and OHR_AMR: See also: 3GPP TS 28.062, Table 7.11.3.1.3-2: Preferred Configurations for the Adaptive Multi-Rate Codec Types and 3GPP TS 48.008, Section 3.2.2.103.
Default values for FR_AMR_WB, OFR_AMR_WB and OHR_AMR_WB: See also: 3GPP TS 26.103, Table 5.7-1: Allowed Configurations for the Adaptive Multi-Rate - Wideband Codec Types
This is a copy of 3GPP TS 28.062, Table 7.11.3.1.3-2:
S0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
12,20 (x) x x x 10,20 x x x 7,95 x x x 7,40 x x x x 6,70 x x x x x x 5,90 x x x x x x x x x x 5,15 4,75 x x x x x x x x x x
OM F F F F F F F F F F F A F A F A
HR Y Y Y Y Y Y Y Y Y FR Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Each bit allows one Codec Configuration. E.g. when bit S3 is set, look at column labeled "3", and see that only 6,7k is active in this configuration; it is "F" forbidden to change in Optimisation Mode, "Y" HR AMR supports this mode, and "Y" FR AMR can also do it.
This means that whichever configuration is chosen from S0 thru S15, there are never more than four rates active.
The spec praises S1 as the most desired configuration: "because it leads in all call cases to TFO/TrFO compatible connections with optimal voice quality." (Since HR AMR supports up to 7.95k, it seems that S14 would be more optimal voice quality, but it is not marked as supported by HR AMR.)
For FR_AMR below, the default of 0x57ff means: 0x57ff = 0101 0111 1111 1111 ^14 ^10 ^0 allow config 0 thru 10, and configs 12 and 14.
For HR_AMR, drop all those where there is no "Y" in the HR row: 0x073f = 0000 0111 0011 1111 ^15 ^11 ^6 ^0
Single speech codec configurations broken down by rate.
See also: 3GPP TS 28.062, Table 7.11.3.1.3-2: Preferred Configurations for the Adaptive Multi-Rate Codec Types.
Set bit Sn (S0 = 0x01), where Sn is identified by a descriptive name.
Default speech codec configurations broken down by rate.
See also: 3GPP TS 28.062, Table 7.11.3.1.3-2: Preferred Configurations for the Adaptive Multi-Rate Codec Types.
Set all Sn bits that have this rate listed as active.
3GPP TS 48.008, 3.2.2.103 Speech Codec Type
|
inlinestatic |
References get_value_string(), and gsm0406_dlci_sapi_names.
|
inlinestatic |
References get_value_string(), and gsm0808_amr_mode_names.
|
inlinestatic |
References get_value_string(), and gsm0808_permitted_speech_names.
|
inlinestatic |
References get_value_string(), and gsm0808_speech_codec_type_names.
union { ... } |
enum gsm0406_dlci_sapi __attribute__ |
uint8_t error_pointer_octet |
uint8_t length |
Referenced by abis_nm_get_sw_desc(), append_utran_fdd(), append_utran_fdd_length(), f0_helper(), gsm0480_parse_facility_ie(), gsm48_generate_mid(), gsm_7bit_decode_n_ussd(), gsm_7bit_decode_ussd(), parse_process_uss_data(), parse_process_uss_req(), parse_ss_for_bs_req(), parse_ss_invoke(), parse_ss_return_result(), rslms_rx_rll_data_req(), rslms_rx_rll_est_req(), rslms_rx_rll_res_req(), and rslms_rx_rll_udata_req().
uint8_t link_id |
Referenced by gsm0480_wrap_invoke(), gsm0808_create_dtap(), gsm0808_create_sapi_reject(), gsm0808_create_sapi_reject_cause(), gsm0808_prepend_dtap_header(), l2_ph_data_ind(), rsl_rll_push_hdr(), rsl_rll_push_l3(), rsl_rll_simple(), rslms_rx_rll_est_req(), rslms_rx_rll_res_req(), rslms_rx_rll_udata_req(), set_lapdm_context(), tx_ph_data_enqueue(), and tx_ph_data_enqueue_ui().
uint8_t msg[0] |
Referenced by __attribute__(), abis_nm_put_sw_desc(), abis_nm_put_sw_file(), cbsp_enc_error_ind(), cbsp_enc_failure(), cbsp_enc_keep_alive(), cbsp_enc_kill(), cbsp_enc_kill_compl(), cbsp_enc_kill_fail(), cbsp_enc_load_query(), cbsp_enc_load_query_compl(), cbsp_enc_load_query_fail(), cbsp_enc_msg_status_query(), cbsp_enc_msg_status_query_compl(), cbsp_enc_msg_status_query_fail(), cbsp_enc_reset(), cbsp_enc_reset_compl(), cbsp_enc_reset_fail(), cbsp_enc_restart(), cbsp_enc_write_repl(), cbsp_enc_write_repl_compl(), cbsp_enc_write_repl_fail(), create_simple_msg(), enc_speech_codec(), encode_auth_info(), encode_pdp_info(), gsm0480_create_notifySS(), gsm0480_create_release_complete(), gsm0480_create_unstructuredSS_Notify(), gsm0480_create_ussd_notify(), gsm0480_create_ussd_release_complete(), gsm0480_create_ussd_resp(), gsm0480_gen_reject(), gsm0480_gen_return_error(), gsm0480_gen_ussd_resp_7bit(), gsm0480_wrap_facility(), gsm0480_wrap_invoke(), gsm0808_create_ass2(), gsm0808_create_ass_compl2(), gsm0808_create_ass_fail(), gsm0808_create_cipher2(), gsm0808_create_cipher_complete(), gsm0808_create_cipher_reject(), gsm0808_create_cipher_reject_ext(), gsm0808_create_classmark_request(), gsm0808_create_classmark_update(), gsm0808_create_clear_command(), gsm0808_create_clear_command2(), gsm0808_create_clear_complete(), gsm0808_create_clear_rqst(), gsm0808_create_common_id(), gsm0808_create_dtap(), gsm0808_create_handover_command(), gsm0808_create_handover_complete(), gsm0808_create_handover_detect(), gsm0808_create_handover_failure(), gsm0808_create_handover_performed(), gsm0808_create_handover_request(), gsm0808_create_handover_request_ack2(), gsm0808_create_handover_required(), gsm0808_create_handover_required_reject(), gsm0808_create_handover_succeeded(), gsm0808_create_layer3_2(), gsm0808_create_lcls_conn_ctrl(), gsm0808_create_lcls_conn_ctrl_ack(), gsm0808_create_lcls_notification(), gsm0808_create_notification_data(), gsm0808_create_paging2(), gsm0808_create_perform_location_abort(), gsm0808_create_perform_location_request(), gsm0808_create_perform_location_response(), gsm0808_create_reset(), gsm0808_create_reset_ack(), gsm0808_create_sapi_reject_cause(), gsm0808_create_uplink_app_data(), gsm0808_create_uplink_reject_cmd(), gsm0808_create_uplink_release_cmd(), gsm0808_create_uplink_release_ind(), gsm0808_create_uplink_request(), gsm0808_create_uplink_request_ack(), gsm0808_create_uplink_request_cnf(), gsm0808_create_uplink_seized_cmd(), gsm0808_create_vgcs_additional_info(), gsm0808_create_vgcs_queuing_ind(), gsm0808_create_vgcs_sms(), gsm0808_create_vgcs_vbs_area_cell_info(), gsm0808_create_vgcs_vbs_assign_fail(), gsm0808_create_vgcs_vbs_assign_req(), gsm0808_create_vgcs_vbs_assign_res(), gsm0808_create_vgcs_vbs_assign_stat(), gsm0808_create_vgcs_vbs_setup(), gsm0808_create_vgcs_vbs_setup_ack(), gsm0808_create_vgcs_vbs_setup_refuse(), gsm0808_enc_assign_req(), gsm0808_enc_cell_id(), gsm0808_enc_cell_id_list(), gsm0808_enc_cell_id_list2(), gsm0808_enc_cell_id_list_segment(), gsm0808_enc_channel_type(), gsm0808_enc_data_identity(), gsm0808_enc_encrypt_info(), gsm0808_enc_gcr(), gsm0808_enc_group_callref(), gsm0808_enc_kc128(), gsm0808_enc_lcls(), gsm0808_enc_lcs_cause(), gsm0808_enc_msisdn(), gsm0808_enc_priority(), gsm0808_enc_speech_codec(), gsm0808_enc_speech_codec2(), gsm0808_enc_speech_codec_list(), gsm0808_enc_speech_codec_list2(), gsm0808_enc_talker_identity(), gsm0808_enc_vgcs_feature_flags(), gsm0808_msgb_put_cell_id_u(), gsm0808_prepend_dtap_header(), gsm29118_create_dl_ud(), gsm29118_create_lu_ack(), gsm29118_create_lu_rej(), gsm29118_create_mm_info_req(), gsm29118_create_paging_req(), gsm29118_create_release_req(), gsm29118_create_reset_ack(), gsm29118_create_reset_ind(), gsm29118_create_status(), gsm411_mmsms_cp_data(), gsm411_mmsms_cp_error(), gsm411_mnsms_abort_req(), gsm411_mnsms_data_ind_tx(), gsm411_mnsms_data_req(), gsm411_mnsms_error_ind_rx(), gsm411_mnsms_error_ind_tx(), gsm411_mnsms_est_ind(), gsm411_mnsms_est_req(), gsm411_mnsms_rel_req(), gsm411_push_cp_header(), gsm411_push_rp_header(), gsm411_rl_data_req(), gsm411_rl_report_req(), gsm411_rp_sendmsg(), gsm411_send_abort(), gsm411_send_release(), gsm411_send_report(), gsm411_send_rp_error(), gsm411_smc_recv(), gsm411_smc_send(), gsm411_smr_recv(), gsm411_smr_send(), gsm48_encode_bearer_cap(), gsm48_encode_called(), gsm48_encode_callerid(), gsm48_encode_calling(), gsm48_encode_cause(), gsm48_encode_cccap(), gsm48_encode_connected(), gsm48_encode_facility(), gsm48_encode_keypad(), gsm48_encode_more(), gsm48_encode_notify(), gsm48_encode_progress(), gsm48_encode_redirecting(), gsm48_encode_signal(), gsm48_encode_ssversion(), gsm48_encode_useruser(), gsm48_push_l3hdr(), ipa_ccm_make_id_resp(), ipa_ccm_rcvmsg_base(), ipa_ccm_rcvmsg_bts_base(), ipa_prepend_header(), ipa_prepend_header_ext(), ipa_send(), irp_error_event_alloc_c(), itp_copy_c(), l2_ph_chan_conf(), l2_ph_data_conf(), l2_ph_data_ind(), l2_ph_rach_ind(), lapdm_pad_msgb(), lapdm_phsap_dequeue_prim_fn(), lapdm_rslms_recvmsg(), lapdm_send_ph_data_req(), msgb_l16tv_put(), msgb_lv_put(), msgb_put_cbsp_cell_list(), msgb_put_cbsp_fail_list(), msgb_put_cbsp_loading_list(), msgb_put_cbsp_num_compl_list(), msgb_sgsap_imsi_put(), msgb_sgsap_lai_put(), msgb_sgsap_name_put(), msgb_t16lv_put(), msgb_tl16v_put(), msgb_tl_put(), msgb_tlv16_put(), msgb_tlv1_push(), msgb_tlv_push(), msgb_tlv_put(), msgb_tv16_push(), msgb_tv16_put(), msgb_tv32_push(), msgb_tv32_put(), msgb_tv_fixed_put(), msgb_tv_push(), msgb_tv_put(), msgb_tvl_put(), msgb_tvlv_push(), msgb_tvlv_put(), msgb_tvlv_put_16be(), msgb_tvlv_put_32be(), msgb_v_put(), msgb_vtvl_gan_push(), msgb_vtvlv_gan_push(), msgb_vtvlv_gan_put(), osmo_bssap_le_dec(), osmo_bssap_le_enc(), osmo_bsslap_enc(), osmo_bsslap_ie_enc_cause(), osmo_bsslap_ie_enc_cell_id(), osmo_bsslap_ie_enc_chan_desc(), osmo_bsslap_ie_enc_ta(), osmo_bssmap_le_enc(), osmo_bssmap_le_enc_conn_oriented_info(), osmo_bssmap_le_enc_perform_loc_abort(), osmo_bssmap_le_enc_perform_loc_req(), osmo_bssmap_le_enc_perform_loc_resp(), osmo_bssmap_le_enc_reset(), osmo_bssmap_le_ie_enc_apdu(), osmo_bssmap_le_ie_enc_lcs_client_type(), osmo_bssmap_le_ie_enc_lcs_priority(), osmo_bssmap_le_ie_enc_lcs_qos(), osmo_bssmap_le_ie_enc_location_type(), osmo_cbsp_encode(), osmo_enc_gcr(), osmo_gad_raw_write(), osmo_gsup_encode(), osmo_gsup_encode_an_apdu(), osmo_gsup_sms_encode_sm_rp_da(), osmo_gsup_sms_encode_sm_rp_oa(), osmo_iuup_rnl_prim_alloc(), osmo_iuup_tnl_prim_alloc(), osmo_lcs_cause_enc(), osmo_mobile_identity_decode_from_l3(), osmo_mobile_identity_encode_msgb(), osmo_oap_client_encoded(), osmo_oap_encode(), osmo_routing_area_id_encode_msgb(), put_old_bss_to_new_bss_information(), rnl_to_tnl_data(), rsl_rll_error(), rsl_rll_push_hdr(), rsl_rll_push_l3(), rsl_rll_simple(), rslms_rx_chan_rqd(), rslms_rx_com_chan(), rslms_rx_rll(), rslms_rx_rll_data_req(), rslms_rx_rll_est_req(), rslms_rx_rll_rel_req(), rslms_rx_rll_res_req(), rslms_rx_rll_susp_req(), rslms_rx_rll_udata_req(), rslms_sendmsg(), send_rll_simple(), send_rslms_rll_l3(), send_rslms_rll_l3_ui(), tlv_encode(), tlv_encode_one(), tlv_encode_ordered(), tnl_to_rnl_data(), tnp_ctrl_init_alloc(), tx_dequeue_acch_msgb(), tx_dequeue_dcch_msgb(), tx_dequeue_msgb(), tx_ph_data_enqueue(), tx_ph_data_enqueue_ui(), and update_pending_frames().
uint8_t type |