libosmogsm 1.13.1.1-afb4 Osmocom GSM library

Files | Data Structures | Macros | Enumerations | Functions | Variables
GSM 08.08 / 3GPP TS 48.008 A Interface

## Files
file | gsm0808.h
file | gsm0808_lcs.h
| Declarations that depend on both gsm0808.h and bssmap_le.h: LCS related message coding.
file | gsm0808_utils.h
file | gsm0808.c
| Helper functions regarding the TS 08.08 / 48.008 A interface, primarily message generation/encoding.

## Data Structures
struct | gsm0808_cipher_mode_command
struct | gsm0808_old_bss_to_new_bss_info
| 3GPP TS 48.008 §3.2.2.5.8 Old BSS to New BSS information More...
struct | gsm0808_handover_required
| 3GPP TS 48.008 §3.2.1.9 HANDOVER REQUIRED More...
struct | gsm0808_handover_required_reject
| 3GPP TS 48.008 §3.2.1.37 HANDOVER REQUIRED REJECT More...
struct | gsm0808_handover_request
| 3GPP TS 48.008 §3.2.1.8 HANDOVER REQUEST More...
struct | gsm0808_handover_request_ack
struct | gsm0808_handover_command
struct | gsm0808_handover_complete
struct | gsm0808_handover_failure
struct | gsm0808_handover_performed
struct | gsm0808_vgcs_vbs_setup
| 3GPP TS 48.008 §3.2.1.50 VGCS/VBS SETUP More...
struct | gsm0808_vgcs_vbs_setup_ack
| 3GPP TS 48.008 §3.2.1.51 VGCS/VBS SETUP ACK More...
struct | gsm0808_vgcs_vbs_assign_req
| 3GPP TS 48.008 §3.2.1.53 VGCS/VBS ASSIGNMENT REQUEST More...
struct | gsm0808_vgcs_vbs_assign_res
| 3GPP TS 48.008 §3.2.1.54 VGCS/VBS ASSIGNMENT RESULT More...
struct | gsm0808_vgcs_vbs_assign_fail
| 3GPP TS 48.008 §3.2.1.55 VGCS/VBS ASSIGNMENT FAILURE More...
struct | gsm0808_uplink_request
| 3GPP TS 48.008 §3.2.1.57 (VGCS) UPLINK REQUEST More...
struct | gsm0808_uplink_request_ack
| 3GPP TS 48.008 §3.2.1.58 (VGCS) UPLINK REQUEST ACKNOWLEDGE More...
struct | gsm0808_uplink_request_cnf
| 3GPP TS 48.008 §3.2.1.59 (VGCS) UPLINK REQUEST CONFIRM More...
struct | gsm0808_uplink_app_data
| 3GPP TS 48.008 §3.2.1.59a (VGCS) UPLINK APPLICATION DATA More...
struct | gsm0808_uplink_release_ind
| 3GPP TS 48.008 §3.2.1.60 (VGCS) UPLINK RELEASE INDICATION More...
struct | gsm0808_uplink_reject_cmd
| 3GPP TS 48.008 §3.2.1.61 (VGCS) UPLINK REJECT COMMAND More...
struct | gsm0808_uplink_seized_cmd
| 3GPP TS 48.008 §3.2.1.63 (VGCS) UPLINK SEIZED COMMAND More...
struct | gsm0808_vgcs_vbs_area_cell_info
| 3GPP TS 48.008 §3.2.1.79 VGCS/VBS AREA CELL INFO More...
struct | gsm0808_vgcs_vbs_assign_stat
| 3GPP TS 48.008 §3.2.1.80 VGCS/VBS ASSIGNMENT STATUS More...
struct | gsm0808_notification_data
| 3GPP TS 48.008 §3.2.1.82 (VGCS/VBS) NOTIFICATION DATA More...
struct | gsm0808_perform_location_request
struct | gsm0808_perform_location_response
union | gsm0808_cell_id_u
| Instead of this, use either struct gsm0808_cell_id or gsm0808_cell_id_list2. More...
struct | gsm0808_cell_id
| Parsed representation of Cell Identifier IE (3GPP TS 48.008 3.2.2.17) More...
struct | gsm0808_cell_id_list2
| Parsed representation of a Cell Identifier List IE (3GPP TS 48.008 3.2.2.27). More...
struct | gsm0808_priority
| Packed representation of a Priority IE (GGPP TS 48.008 3.2.2.18) More...
struct | gsm0808_vgcs_feature_flags
| Packed representation of a VGCS Feature Flags IE (3GPP TS 48.008 3.2.2.88) More...
struct | gsm0808_group_callref
| Packed representation of a Group Call Reference IE (3GPP TS 48.008 3.2.2.55) More...
struct | gsm0808_cell_id_list_segment
| Parsed representation of a Cell Identifier List Segment IE (3GPP TS 48.008 3.2.2.27a) More...
struct | gsm0808_circuit_pool_list
struct | gsm0808_layer_3_information
struct | gsm0808_talker_identity
struct | gsm0808_sms_to_vgcs
struct | gsm0808_application_data
struct | gsm0808_data_identity
struct | osmo_lcls
| LCLS-related parameters from 3GPP TS 48.008. More...

## Macros
#define | BSSMAP_MSG_SIZE 1024
#define | BSSMAP_MSG_HEADROOM 512
#define | osmo_bssap_tlv_parse(dec, buf, len) tlv_parse(dec, gsm0808_att_tlvdef(), buf, len, 0, 0)
| Parse BSSAP TLV structure using tlv_parse. More...
#define | osmo_bssap_tlv_parse2(dec, dec_multiples, buf, len) tlv_parse2(dec, dec_multiples, gsm0808_att_tlvdef(), buf, len, 0, 0)
| Parse BSSAP TLV structure using tlv_parse2. More...
#define | GSM0808_CELL_ID_LIST2_MAXLEN 127
| (225-1)/2 is the maximum number of elements in a cell identifier list. More...
#define | CIRCUIT_POOL_LIST_MAXLEN 252
| Parsed representation of a Circuit Pool List IE (3GPP TS 48.008 3.2.2.26) More...
#define | LAYER_3_INFORMATION_MAXLEN 252
| Parsed representation of a Layer 3 Information IE (3GPP TS 48.008 3.2.2.24) More...
#define | TALKER_IDENTITY_MAXLEN 17
| Parsed representation of a Talker Identity IE (3GPP TS 48.008 3.2.2.91) More...
#define | SMS_TO_VGCS_MAXLEN 252
| Parsed representation of a SMS to VGCS IE (3GPP TS 48.008 3.2.2.92) More...
#define | APP_DATA_MAXLEN 9
| Parsed representation of a Application Data IE (3GPP TS 48.008 3.2.2.98) More...
#define | GSM0808_DP_MASK_TALKERS_LISTENERS 0x04
#define | GSM0808_DP_MASK_DISPATCHERS 0x02
#define | GSM0808_DP_MASK_NETWORK_APP 0x01
#define | MSISDN_MAXLEN 20
| Parsed representation of a MSISDN IE (3GPP TS 48.008 3.2.2.101) More...

## Enumerations
enum | gsm0808_assignment_requirement { GSM0808_ASRQ_DELAY_ALLOWED = 0x00 , GSM0808_ASRQ_IMMEDIATE = 0x01 , GSM0808_ASRQ_IMMEDIATE_ON_DEMAND = 0x02 }
enum | gsm0808_service_flag { GSM0808_SF_VBS = 0 , GSM0808_SF_VGCS = 1 }
enum | gsm0808_call_priority { GSM0808_CALL_PRIORITY_NONE = 0x00 , GSM0808_CALL_PRIORITY_LEVEL_4 = 0x01 , GSM0808_CALL_PRIORITY_LEVEL_3 = 0x02 , GSM0808_CALL_PRIORITY_LEVEL_2 = 0x03 , GSM0808_CALL_PRIORITY_LEVEL_1 = 0x04 , GSM0808_CALL_PRIORITY_LEVEL_0 = 0x05 , GSM0808_CALL_PRIORITY_LEVEL_B = 0x06 , GSM0808_CALL_PRIORITY_LEVEL_A = 0x07 }
enum | gsm0808_downlink_dtx_flag { GSM0808_DTX_FLAG_ALLOW = 0 , GSM0808_DTX_FLAG_FORBID = 1 }
enum | gsm0808_talker_priority { GSM0808_TALKER_PRIORITY_NORMAL = 0x00 , GSM0808_TALKER_PRIORITY_PRIVILEGED = 0x01 , GSM0808_TALKER_PRIORITY_EMERGENCY = 0x02 }
enum | gsm0808_vgcs_vbs_cell_status { GSM0808_CSTAT_ESTABLISHED = 0x00 , GSM0808_CSTAT_NOT_ESTABLISHED1 = 0x01 , GSM0808_CSTAT_RELEASED_NO_USER = 0x02 , GSM0808_CSTAT_NOT_ESTABLISHED2 = 0x03 }
enum | gsm0808_application_idndicator { GSM0808_AI_APP_DATA = 0x00 , GSM0808_AI_CONFIRM_APP_DATA = 0x01 }
| Packed representation of a Data Identity IE (GGPP TS 48.008 3.2.2.99) More...

## Functions
struct msgb * | gsm0808_create_layer3 (struct msgb *msg_l3, uint16_t nc, uint16_t cc, int lac, uint16_t _ci)
| Create "Complete L3 Info" for A, legacy implementation. More...
struct msgb * | gsm0808_create_layer3_aoip (const struct msgb *msg_l3, uint16_t nc, uint16_t cc, int lac, uint16_t _ci, const struct gsm0808_speech_codec_list *scl)
| Create "Complete L3 Info" for AoIP, legacy implementation. More...
struct msgb * | gsm0808_create_layer3_2 (const struct msgb *msg_l3, const struct osmo_cell_global_id *cell, const struct gsm0808_speech_codec_list *scl)
| Create "Complete L3 Info" for AoIP. More...
struct msgb * | gsm0808_create_reset (void)
| Create BSSMAP RESET message. More...
struct msgb * | gsm0808_create_reset_ack (void)
| Create BSSMAP RESET ACK message. More...
struct msgb * | gsm0808_create_clear_command (uint8_t cause)
| Create BSSMAP Clear Command message with BSSAP header before l3h and BSSMAP in l3h. More...
struct msgb * | gsm0808_create_clear_command2 (uint8_t cause, bool csfb_ind)
| Create BSSMAP Clear Command message. More...
struct msgb * | gsm0808_create_clear_complete (void)
| Create BSSMAP Clear Complete message. More...
struct msgb * | gsm0808_create_cipher (const struct gsm0808_encrypt_info *ei, const uint8_t *cipher_response_mode)
| Superseded by gsm0808_create_cipher2() to include Kc128. More...
struct msgb * | gsm0808_create_cipher2 (const struct gsm0808_cipher_mode_command *cmc)
| Create BSSMAP Cipher Mode Command message. More...
struct msgb * | gsm0808_create_cipher_complete (struct msgb *layer3, uint8_t alg_id)
| Create BSSMAP Cipher Mode Complete message. More...
struct msgb * | gsm0808_create_cipher_reject (enum gsm0808_cause cause)
| Create BSSMAP Cipher Mode Reject message. More...
struct msgb * | gsm0808_create_cipher_reject_ext (enum gsm0808_cause_class class, uint8_t ext)
| Create BSSMAP Cipher Mode Reject message. More...
struct msgb * | gsm0808_create_classmark_request (void)
| Create BSSMAP Classmark Request message. More...
struct msgb * | gsm0808_create_classmark_update (const uint8_t *cm2, uint8_t cm2_len, const uint8_t *cm3, uint8_t cm3_len)
| Create BSSMAP Classmark Update message. More...
struct msgb * | gsm0808_create_sapi_reject_cause (uint8_t link_id, uint16_t cause)
| Create BSSMAP SAPI N Reject message. More...
struct msgb * | gsm0808_create_sapi_reject (uint8_t link_id)
| Create BSSMAP SAPI N Reject message (with hard-coded cause "BSS not equipped"). More...
struct msgb * | gsm0808_create_ass (const struct gsm0808_channel_type *ct, const uint16_t *cic, const struct sockaddr_storage *ss, const struct gsm0808_speech_codec_list *scl, const uint32_t *ci)
| Create BSSMAP Assignment Request message, 3GPP TS 48.008 §3.2.1.1. More...
struct msgb * | gsm0808_create_ass2 (const struct gsm0808_channel_type *ct, const uint16_t *cic, const struct sockaddr_storage *ss, const struct gsm0808_speech_codec_list *scl, const uint32_t *ci, const uint8_t *kc, const struct osmo_lcls *lcls)
| Create BSSMAP Assignment Request message, 3GPP TS 48.008 §3.2.1.1. More...
struct msgb * | gsm0808_create_ass_compl (uint8_t rr_cause, uint8_t chosen_channel, uint8_t encr_alg_id, uint8_t speech_mode, const struct sockaddr_storage *ss, const struct gsm0808_speech_codec *sc, const struct gsm0808_speech_codec_list *scl)
| Create BSSMAP Assignment Completed message. More...
struct msgb * | gsm0808_create_ass_compl2 (uint8_t rr_cause, uint8_t chosen_channel, uint8_t encr_alg_id, uint8_t speech_mode, const struct sockaddr_storage *ss, const struct gsm0808_speech_codec *sc, const struct gsm0808_speech_codec_list *scl, enum gsm0808_lcls_status lcls_bss_status)
| Create BSSMAP Assignment Completed message as per 3GPP TS 48.008 §3.2.1.2. More...
struct msgb * | gsm0808_create_assignment_completed (uint8_t rr_cause, uint8_t chosen_channel, uint8_t encr_alg_id, uint8_t speech_mode)
| Create BSSMAP Assignment Completed message. More...
struct msgb * | gsm0808_create_ass_fail (uint8_t cause, const uint8_t *rr_cause, const struct gsm0808_speech_codec_list *scl)
| Create BSSMAP Assignment Failure message. More...
struct msgb * | gsm0808_create_assignment_failure (uint8_t cause, uint8_t *rr_cause)
| Create BSSMAP Assignment Failure message. More...
struct msgb * | gsm0808_create_clear_rqst (uint8_t cause)
| Create BSSMAP Clear Request message. More...
struct msgb * | gsm0808_create_paging2 (const char *imsi, const uint32_t *tmsi, const struct gsm0808_cell_id_list2 *cil, const uint8_t *chan_needed)
| Create BSSMAP PAGING message. More...
struct msgb * | gsm0808_create_paging (const char *imsi, const uint32_t *tmsi, const struct gsm0808_cell_id_list *cil, const uint8_t *chan_needed)
| DEPRECATED: Use gsm0808_create_paging2 instead. More...
struct msgb * | gsm0808_create_lcls_conn_ctrl (enum gsm0808_lcls_config config, enum gsm0808_lcls_control control)
| Create BSSMAP LCLS CONNECT CONTROL message (TS 48.008 3.2.1.91). More...
struct msgb * | gsm0808_create_lcls_conn_ctrl_ack (enum gsm0808_lcls_status status)
| Create BSSMAP LCLS CONNECT CONTROL ACK message (TS 48.008 3.2.1.92). More...
struct msgb * | gsm0808_create_lcls_notification (enum gsm0808_lcls_status status, bool break_req)
| Create BSSMAP LCLS NOTIFICATION message (TS 48.008 3.2.1.93). More...
struct msgb * | gsm0808_create_common_id (const char *imsi, const struct osmo_plmn_id *selected_plmn_id, const struct osmo_plmn_id *last_used_eutran_plnm_id)
| Create BSSMAP COMMON ID message, 3GPP TS 48.008 3.2.1.68. More...
struct msgb * | gsm0808_create_handover_required (const struct gsm0808_handover_required *params)
| Create BSSMAP HANDOVER REQUIRED message. More...
struct msgb * | gsm0808_create_handover_required_reject (const struct gsm0808_handover_required_reject *params)
| Create BSSMAP HANDOVER REQUIRED REJECT message. More...
struct msgb * | gsm0808_create_handover_request (const struct gsm0808_handover_request *params)
| Create BSSMAP HANDOVER REQUEST message, 3GPP TS 48.008 3.2.1.8. More...
struct msgb * | gsm0808_create_handover_request_ack (const uint8_t *l3_info, uint8_t l3_info_len, uint8_t chosen_channel, uint8_t chosen_encr_alg, uint8_t chosen_speech_version)
| Same as gsm0808_create_handover_request_ack2() but with less parameters. More...
struct msgb * | gsm0808_create_handover_request_ack2 (const struct gsm0808_handover_request_ack *params)
| Create BSSMAP HANDOVER REQUEST ACKNOWLEDGE message, 3GPP TS 48.008 3.2.1.10. More...
struct msgb * | gsm0808_create_handover_command (const struct gsm0808_handover_command *params)
| Create BSSMAP HANDOVER COMMAND message, 3GPP TS 48.008 3.2.1.11. More...
struct msgb * | gsm0808_create_handover_detect (void)
| Create BSSMAP HANDOVER DETECT message, 3GPP TS 48.008 3.2.1.40. More...
struct msgb * | gsm0808_create_handover_succeeded (void)
| Create BSSMAP HANDOVER SUCCEEDED message, 3GPP TS 48.008 3.2.1.13. More...
struct msgb * | gsm0808_create_handover_complete (const struct gsm0808_handover_complete *params)
| Create BSSMAP HANDOVER COMPLETE message, 3GPP TS 48.008 3.2.1.12. More...
struct msgb * | gsm0808_create_handover_failure (const struct gsm0808_handover_failure *params)
| Create BSSMAP HANDOVER FAILURE message, 3GPP TS 48.008 3.2.1.16. More...
struct msgb * | gsm0808_create_handover_performed (const struct gsm0808_handover_performed *params)
| Create BSSMAP HANDOVER PERFORMED message, 3GPP TS 48.008 3.2.1.25. More...
struct msgb * | gsm0808_create_vgcs_vbs_setup (const struct gsm0808_vgcs_vbs_setup *params)
| Create BSSMAP VGCS/VBS SETUP message, 3GPP TS 48.008 3.2.1.50. More...
struct msgb * | gsm0808_create_vgcs_vbs_setup_ack (const struct gsm0808_vgcs_vbs_setup_ack *params)
| Create BSSMAP VGCS/VBS SETUP ACK message, 3GPP TS 48.008 3.2.1.51. More...
struct msgb * | gsm0808_create_vgcs_vbs_setup_refuse (enum gsm0808_cause cause)
| 3GPP TS 48.008 §3.2.1.52 VGCS/VBS SETUP REFUSE More...
struct msgb * | gsm0808_create_vgcs_vbs_assign_req (const struct gsm0808_vgcs_vbs_assign_req *params)
| Create BSSMAP VGCS/VBS ASSIGNMENT REQUEST message, 3GPP TS 48.008 3.2.1.53. More...
struct msgb * | gsm0808_create_vgcs_vbs_assign_res (const struct gsm0808_vgcs_vbs_assign_res *params)
| Create BSSMAP VGCS/VBS ASSIGNMENT RESULT message, 3GPP TS 48.008 3.2.1.54. More...
struct msgb * | gsm0808_create_vgcs_vbs_assign_fail (const struct gsm0808_vgcs_vbs_assign_fail *params)
| Create BSSMAP VGCS/VBS ASSIGNMENT FAILURE message, 3GPP TS 48.008 3.2.1.55. More...
struct msgb * | gsm0808_create_uplink_request (const struct gsm0808_uplink_request *params)
| Create BSSMAP (VGCS) UPLINK REQUEST message, 3GPP TS 48.008 3.2.1.57. More...
struct msgb * | gsm0808_create_uplink_request_ack (const struct gsm0808_uplink_request_ack *params)
| Create BSSMAP (VGCS) UPLINK REQUEST ACKNOWLEDGE message, 3GPP TS 48.008 3.2.1.58. More...
struct msgb * | gsm0808_create_uplink_request_cnf (const struct gsm0808_uplink_request_cnf *params)
| Create BSSMAP (VGCS) UPLINK CONFIRM message, 3GPP TS 48.008 3.2.1.59. More...
struct msgb * | gsm0808_create_uplink_app_data (const struct gsm0808_uplink_app_data *params)
| Create BSSMAP (VGCS) UPLINK APPLICATION DATA message, 3GPP TS 48.008 3.2.1.59a. More...
struct msgb * | gsm0808_create_uplink_release_ind (const struct gsm0808_uplink_release_ind *params)
| Create BSSMAP (VGCS) UPLINK RELEASE INDICATION message, 3GPP TS 48.008 3.2.1.60. More...
struct msgb * | gsm0808_create_uplink_reject_cmd (const struct gsm0808_uplink_reject_cmd *params)
| Create BSSMAP (VGCS) UPLINK REJECT COMMAND message, 3GPP TS 48.008 3.2.1.61. More...
struct msgb * | gsm0808_create_uplink_release_cmd (const enum gsm0808_cause cause)
| 3GPP TS 48.008 §3.2.1.62 (VGCS) UPLINK RELEASE COMMAND More...
struct msgb * | gsm0808_create_uplink_seized_cmd (const struct gsm0808_uplink_seized_cmd *params)
| Create BSSMAP (VGCS) UPLINK SEIZED COMMAND message, 3GPP TS 48.008 3.2.1.62. More...
struct msgb * | gsm0808_create_vgcs_additional_info (const struct gsm0808_talker_identity *ti)
| 3GPP TS 48.008 §3.2.1.78 VGCS ADDITIONAL INFORMATION More...
struct msgb * | gsm0808_create_vgcs_vbs_area_cell_info (const struct gsm0808_vgcs_vbs_area_cell_info *params)
| Create BSSMAP VGCS/VBS AREA CELL INFO message, 3GPP TS 48.008 3.2.1.79. More...
struct msgb * | gsm0808_create_vgcs_vbs_assign_stat (const struct gsm0808_vgcs_vbs_assign_stat *params)
| Create BSSMAP VGCS/VBS ASSIGNMENT STATUS message, 3GPP TS 48.008 3.2.1.80. More...
struct msgb * | gsm0808_create_vgcs_sms (const struct gsm0808_sms_to_vgcs *sms)
| 3GPP TS 48.008 §3.2.1.81 VGCS SMS More...
struct msgb * | gsm0808_create_notification_data (const struct gsm0808_notification_data *params)
| Create BSSMAP (VGCS/VBS) NOTIFICATION DATA message, 3GPP TS 48.008 3.2.1.82. More...
struct msgb * | gsm0808_create_dtap (struct msgb *msg_l3, uint8_t link_id)
| Create BSSMAP DTAP message. More...
void | gsm0808_prepend_dtap_header (struct msgb *msg, uint8_t link_id)
| Prepend a DTAP header to given Message Buffer. More...
const struct tlv_definition * | gsm0808_att_tlvdef (void)
const char * | gsm0808_bssmap_name (uint8_t msg_type)
| Return string name of BSSMAP Message Type. More...
const char * | gsm0808_bssap_name (uint8_t msg_type)
| Return string name of BSSAP Message Type. More...
const char * | gsm0808_cause_name (enum gsm0808_cause cause)
| Return string name of BSSMAP Cause name. More...
const char * | gsm0808_cause_class_name (enum gsm0808_cause_class class)
| Return string name of BSSMAP Cause Class name. More...
enum gsm0808_cause | gsm0808_get_cause (const struct tlv_parsed *tp)
| Parse Cause TLV 3GPP TS 08.08 §3.2.2.5. More...
const char * | gsm0808_diagnostics_octet_location_str (uint8_t pointer)
const char * | gsm0808_diagnostics_bit_location_str (uint8_t bit_pointer)
static const char * | gsm0808_lcls_config_name (enum gsm0808_lcls_config val)
static const char * | gsm0808_lcls_control_name (enum gsm0808_lcls_control val)
static const char * | gsm0808_lcls_status_name (enum gsm0808_lcls_status val)
struct msgb * | gsm0808_create_perform_location_request (const struct gsm0808_perform_location_request *params)
struct msgb * | gsm0808_create_perform_location_response (const struct gsm0808_perform_location_response *params)
int | gsm0808_enc_lcs_cause (struct msgb *msg, const struct lcs_cause_ie *lcs_cause)
struct msgb * | gsm0808_create_perform_location_abort (const struct lcs_cause_ie *lcs_cause)
struct gsm0808_priority | __attribute__ ((packed))
char * | osmo_lcls_dump (const struct osmo_lcls *lcls)
| Dump LCLS parameters (GCR excluded) into static string buffer for printing. More...
char * | osmo_lcls_dump_buf (char *buf, size_t buf_len, const struct osmo_lcls *lcls)
| Dump LCLS parameters (GCR excluded) into string for printing. More...
char * | osmo_lcls_dump_c (void *ctx, const struct osmo_lcls *lcls)
char * | osmo_gcr_dump (const struct osmo_lcls *lcls)
| Dump GCR struct into static string buffer for printing. More...
char * | osmo_gcr_dump_buf (char *buf, size_t buf_len, const struct osmo_lcls *lcls)
| Dump GCR struct into string for printing. More...
static const char * | gsm0808_cell_id_discr_name (enum CELL_IDENT id_discr)
const char * | gsm0808_cell_id_name (const struct gsm0808_cell_id *cid)
| Return a human readable representation of a Cell Identifier, like "LAC:123" or "CGI:001-01-42-23". More...
const char * | gsm0808_cell_id_name2 (const struct gsm0808_cell_id *cid)
| Like gsm0808_cell_id_name() but uses a different static buffer. More...
char * | gsm0808_cell_id_name_buf (char *buf, size_t buflen, const struct gsm0808_cell_id *cid)
char * | gsm0808_cell_id_name_c (const void *ctx, const struct gsm0808_cell_id *cid)
const char * | gsm0808_cell_id_list_name (const struct gsm0808_cell_id_list2 *cil)
| Return a human-readable representation of cil in a static buffer. More...
int | gsm0808_cell_id_list_name_buf (char *buf, size_t buflen, const struct gsm0808_cell_id_list2 *cil)
| Return a human readable representation of the Cell Identifier List, like "LAC[2]:{123, 456}". More...
char * | gsm0808_cell_id_list_name_c (const void *ctx, const struct gsm0808_cell_id_list2 *cil)
int | gsm0808_cell_id_u_name (char *buf, size_t buflen, enum CELL_IDENT id_discr, const union gsm0808_cell_id_u *u)
| Print a human readable name of the cell identifier to the char buffer. More...
bool | gsm0808_cell_ids_match (const struct gsm0808_cell_id *id1, const struct gsm0808_cell_id *id2, bool exact_match)
| Return true if the common information between the two Cell Identifiers match. More...
int | gsm0808_cell_id_matches_list (const struct gsm0808_cell_id *id, const struct gsm0808_cell_id_list2 *list, unsigned int match_nr, bool exact_match)
| Find an index in a Cell Identifier list that matches a given single Cell Identifer. More...
void | gsm0808_cell_id_from_cgi (struct gsm0808_cell_id *cid, enum CELL_IDENT id_discr, const struct osmo_cell_global_id *cgi)
| Copy information from a CGI to form a Cell Identifier of the specified kind. More...
int | gsm0808_cell_id_to_cgi (struct osmo_cell_global_id *cgi, const struct gsm0808_cell_id *cid)
| Overwrite parts of cgi with values from a Cell Identifier. More...
void | gsm0808_msgb_put_cell_id_u (struct msgb *msg, enum CELL_IDENT id_discr, const union gsm0808_cell_id_u *u)
int | gsm0808_decode_cell_id_u (union gsm0808_cell_id_u *out, enum CELL_IDENT discr, const uint8_t *buf, unsigned int len)
| Decode a single GSM 08.08 Cell ID list element payload. More...
int | gsm0808_cell_id_size (enum CELL_IDENT discr)
uint8_t | gsm0808_enc_cause (struct msgb *msg, uint16_t cause)
uint8_t | gsm0808_enc_aoip_trasp_addr (struct msgb *msg, const struct sockaddr_storage *ss)
int | gsm0808_dec_aoip_trasp_addr (struct sockaddr_storage *ss, const uint8_t *elem, uint8_t len)
int | gsm0808_dec_osmux_cid (uint8_t *cid, const uint8_t *elem, uint8_t len)
uint8_t | gsm0808_enc_lcls (struct msgb *msg, const struct osmo_lcls *lcls)
| Add LCLS parameters to a given msgb, 3GPP TS 48.008 §3.2.2.115 - 3.2.2.120. More...
int | gsm0808_dec_lcls (struct osmo_lcls *lcls, const struct tlv_parsed *tp)
| Decode LCLS parameters to a given msgb, 3GPP TS 48.008 §3.2.2.115 - 3.2.2.120. More...
uint8_t | gsm0808_enc_speech_codec (struct msgb *msg, const struct gsm0808_speech_codec *sc) OSMO_DEPRECATED("use gsm0808_enc_speech_codec2() instead")
| Deprecated: gsm0808_enc_speech_codec2() wrapper for backwards compatibility. More...
int | gsm0808_enc_speech_codec2 (struct msgb *msg, const struct gsm0808_speech_codec *sc)
| Encode TS 08.08 Speech Codec IE. More...
int | gsm0808_dec_speech_codec (struct gsm0808_speech_codec *sc, const uint8_t *elem, uint8_t len)
| Decode TS 08.08 Speech Codec IE. More...
uint8_t | gsm0808_enc_speech_codec_list (struct msgb *msg, const struct gsm0808_speech_codec_list *scl) OSMO_DEPRECATED("use gsm0808_enc_speech_codec_list2() instead")
| Deprecated: gsm0808_enc_speech_codec_list2() wrapper for backwards compatibility. More...
int | gsm0808_enc_speech_codec_list2 (struct msgb *msg, const struct gsm0808_speech_codec_list *scl)
| Encode TS 08.08 Speech Codec list. More...
int | gsm0808_dec_speech_codec_list (struct gsm0808_speech_codec_list *scl, const uint8_t *elem, uint8_t len)
| Decode TS 08.08 Speech Codec list IE. More...
uint8_t | gsm0808_enc_channel_type (struct msgb *msg, const struct gsm0808_channel_type *ct)
| Encode TS 08.08 Channel Type IE. More...
int | gsm0808_dec_channel_type (struct gsm0808_channel_type *ct, const uint8_t *elem, uint8_t len)
| Decode TS 08.08 Channel Type IE. More...
uint8_t | gsm0808_enc_encrypt_info (struct msgb *msg, const struct gsm0808_encrypt_info *ei)
| Encode TS 08.08 Encryption Information IE. More...
int | gsm0808_dec_encrypt_info (struct gsm0808_encrypt_info *ei, const uint8_t *elem, uint8_t len)
| Decode TS 08.08 Encryption Information IE. More...
int | gsm0808_enc_kc128 (struct msgb *msg, const uint8_t *kc128)
| Encode TS 48.008 Kc128 IE. More...
int | gsm0808_dec_kc128 (uint8_t *kc128, const uint8_t *elem, uint8_t len)
| Decode TS 48.008 Kc128 IE. More...
uint8_t | gsm0808_enc_cell_id_list2 (struct msgb *msg, const struct gsm0808_cell_id_list2 *cil)
| Encode TS 08.08 Cell Identifier List IE. More...
uint8_t | gsm0808_enc_cell_id_list (struct msgb *msg, const struct gsm0808_cell_id_list *cil) OSMO_DEPRECATED("use gsm0808_enc_cell_id_list2 instead")
| DEPRECATED: Use gsm0808_enc_cell_id_list2 instead. More...
int | gsm0808_dec_cell_id_list2 (struct gsm0808_cell_id_list2 *cil, const uint8_t *elem, uint8_t len)
| Decode Cell Identifier List IE. More...
int | gsm0808_dec_cell_id_list (struct gsm0808_cell_id_list *cil, const uint8_t *elem, uint8_t len) OSMO_DEPRECATED("use gsm0808_dec_cell_id_list2 instead")
| DEPRECATED: Use gsm0808_dec_cell_id_list2 instead. More...
int | gsm0808_cell_id_list_add (struct gsm0808_cell_id_list2 *dst, const struct gsm0808_cell_id_list2 *src)
| Append entries from one Cell Identifier List to another. More...
void | gsm0808_cell_id_to_list (struct gsm0808_cell_id_list2 *dst, const struct gsm0808_cell_id *src)
| Convert a single Cell Identifier to a Cell Identifier List with one entry. More...
uint8_t | gsm0808_enc_cell_id (struct msgb *msg, const struct gsm0808_cell_id *ci)
| Encode Cell Identifier IE (3GPP TS 48.008 3.2.2.17). More...
int | gsm0808_dec_cell_id (struct gsm0808_cell_id *ci, const uint8_t *elem, uint8_t len)
| Decode Cell Identifier IE (3GPP TS 48.008 3.2.2.17). More...
int | gsm0808_chan_type_to_speech_codec (uint8_t perm_spch)
| Convert the representation of the permitted speech codec identifier that is used in struct gsm0808_channel_type to the speech codec representation we use in struct gsm0808_speech_codec. More...
int | gsm0808_speech_codec_from_chan_type (struct gsm0808_speech_codec *sc, uint8_t perm_spch)
| Extrapolate a speech codec field from a given permitted speech parameter (channel type). More...
uint16_t | gsm0808_sc_cfg_from_gsm48_mr_cfg (const struct gsm48_multi_rate_conf *cfg, bool fr)
| Determine a set of AMR speech codec configuration bits (S0-S15) from a given GSM 04.08 AMR configuration struct. More...
int | gsm48_mr_cfg_from_gsm0808_sc_cfg (struct gsm48_multi_rate_conf *cfg, uint16_t s15_s0)
| Determine a GSM 04.08 AMR configuration struct from a set of speech codec configuration bits (S0-S15) More...
static enum gsm0808_cause_class | gsm0808_cause_class (enum gsm0808_cause cause)
static bool | gsm0808_cause_ext (enum gsm0808_cause cause)
int | gsm0808_get_cipher_reject_cause (const struct tlv_parsed *tp) OSMO_DEPRECATED("Use gsm0808_get_cause() instead")
static uint8_t | gsm0808_current_channel_type_1 (enum gsm_chan_t type)
static enum gsm0808_permitted_speech | gsm0808_permitted_speech (enum gsm_chan_t type, enum gsm48_chan_mode mode)
| Return 3GPP TS 48.008 3.2.2.51 Speech Version aka permitted speech version indication in 3.2.2.11 Channel Type. More...
static uint8_t | gsm0808_chosen_channel (enum gsm_chan_t type, enum gsm48_chan_mode mode)
| Return 3GPP TS 48.008 3.2.2.33 Chosen Channel. More...
const char * | gsm0808_channel_type_name (const struct gsm0808_channel_type *ct)
char * | gsm0808_channel_type_name_buf (char *buf, size_t buf_len, const struct gsm0808_channel_type *ct)
char * | gsm0808_channel_type_name_c (const void *ctx, const struct gsm0808_channel_type *ct)
uint8_t | gsm0808_enc_group_callref (struct msgb *msg, const struct gsm0808_group_callref *gc)
| Encode Group Call Reference IE (3GPP TS 48.008 3.2.2.55). More...
int | gsm0808_dec_group_callref (struct gsm0808_group_callref *gc, const uint8_t *elem, uint8_t len)
| Decode Group Call Reference IE (3GPP TS 48.008 3.2.2.55). More...
uint8_t | gsm0808_enc_priority (struct msgb *msg, const struct gsm0808_priority *pri)
| Encode Priority IE (3GPP TS 48.008 3.2.2.18). More...
int | gsm0808_dec_priority (struct gsm0808_priority *pri, const uint8_t *elem, uint8_t len)
| Decode Priority IE (3GPP TS 48.008 3.2.2.18). More...
uint8_t | gsm0808_enc_vgcs_feature_flags (struct msgb *msg, const struct gsm0808_vgcs_feature_flags *ff)
| Encode VGCS Feature Flags IE (3GPP TS 48.008 3.2.2.88). More...
int | gsm0808_dec_vgcs_feature_flags (struct gsm0808_vgcs_feature_flags *ff, const uint8_t *elem, uint8_t len)
| Decode VGCS Feature Flags IE (3GPP TS 48.008 3.2.2.88). More...
uint8_t | gsm0808_enc_talker_identity (struct msgb *msg, const struct gsm0808_talker_identity *ti)
| Encode Talker Identity IE (3GPP TS 48.008 3.2.2.91). More...
int | gsm0808_dec_talker_identity (struct gsm0808_talker_identity *ti, const uint8_t *elem, uint8_t len)
| Decode Talker Identity IE (3GPP TS 48.008 3.2.2.91). More...
uint8_t | gsm0808_enc_data_identity (struct msgb *msg, const struct gsm0808_data_identity *ai)
| Encode Data Identity IE (3GPP TS 48.008 3.2.2.99). More...
int | gsm0808_dec_data_identity (struct gsm0808_data_identity *ai, const uint8_t *elem, uint8_t len)
| Decode Data Identity IE (3GPP TS 48.008 3.2.2.99). More...
uint8_t | gsm0808_enc_msisdn (struct msgb *msg, const char *msisdn)
| Encode MSISDN IE (3GPP TS 48.008 3.2.2.101). More...
int | gsm0808_dec_msisdn (char *msisdn, const char *elem, uint8_t len)
| Decode MSISDN IE (3GPP TS 48.008 3.2.2.101). More...
uint8_t | gsm0808_enc_assign_req (struct msgb *msg, const enum gsm0808_assignment_requirement ar)
| Encode Assignment Requirements IE (3GPP TS 48.008 3.2.2.52). More...
int | gsm0808_dec_assign_req (enum gsm0808_assignment_requirement *ar, const uint8_t *elem, uint8_t len)
| Decode Assignment Requirements IE (3GPP TS 48.008 3.2.2.52). More...
uint8_t | gsm0808_enc_cell_id_list_segment (struct msgb *msg, uint8_t ie_type, const struct gsm0808_cell_id_list_segment *ci)
| Encode Cell Identifier List Segment IE (3GPP TS 48.008 3.2.2.27a). More...
int | gsm0808_dec_cell_id_list_segment (struct gsm0808_cell_id_list_segment *ci, const uint8_t *elem, uint8_t len)
| Decode Cell Identifier List Segment IE (3GPP TS 48.008 3.2.2.27a). More...
int | gsm0808_dec_call_id (uint32_t *ci, const uint8_t *elem, uint8_t len)
| Decode Call Identifier IE (3GPP TS 48.008 3.2.2.105). More...
static uint8_t | put_old_bss_to_new_bss_information (struct msgb *msg, const struct gsm0808_old_bss_to_new_bss_info *i)
struct msgb * | gsm0808_create_vgcs_queuing_ind (void)
| Create BSSMAP VGCS/VBS QUEUING INDICATION message, 3GPP TS 48.008 3.2.1.56. More...

## Variables
struct msgb to not lose leading zeros in the | MNC
const struct tlv_definition | gsm0808_old_bss_to_new_bss_info_att_tlvdef
const struct value_string | gsm0808_lcls_config_names []
const struct value_string | gsm0808_lcls_control_names []
const struct value_string | gsm0808_lcls_status_names []
enum gsm0808_assignment_requirement | __attribute__
const struct value_string | gsm0808_cell_id_discr_names []
| value_string[] for enum CELL_IDENT. More...
static __thread char | str_buff [512]
| Char buffer to return strings from functions. More...
static const struct tlv_definition | bss_att_tlvdef
const struct tlv_definition | gsm0808_old_bss_to_new_bss_info_att_tlvdef
const struct value_string | gsm0406_dlci_sapi_names []
static const struct value_string | gsm0808_msgt_names []
static const struct value_string | gsm0808_bssap_names []
const struct value_string | gsm0808_speech_codec_type_names []
const struct value_string | gsm0808_permitted_speech_names []
const struct value_string | gsm0808_chosen_enc_alg_names []
static const struct value_string | gsm0808_cause_names []
static const struct value_string | gsm0808_cause_class_names []
const struct value_string | gsm0808_lcls_config_names []
const struct value_string | gsm0808_lcls_control_names []
const struct value_string | gsm0808_lcls_status_names []
const uint8_t | gsm0808_amr_modes_from_cfg [2][16]
const struct value_string | gsm0808_amr_mode_names []

## Detailed Description

## Macro Definition Documentation

## ◆ APP_DATA_MAXLEN

#define APP_DATA_MAXLEN 9

Parsed representation of a Application Data IE (3GPP TS 48.008 3.2.2.98)

## ◆ BSSMAP_MSG_HEADROOM

#define BSSMAP_MSG_HEADROOM 512

## ◆ BSSMAP_MSG_SIZE

#define BSSMAP_MSG_SIZE 1024

## ◆ CIRCUIT_POOL_LIST_MAXLEN

#define CIRCUIT_POOL_LIST_MAXLEN 252

Parsed representation of a Circuit Pool List IE (3GPP TS 48.008 3.2.2.26)

## ◆ GSM0808_CELL_ID_LIST2_MAXLEN

#define GSM0808_CELL_ID_LIST2_MAXLEN 127

(225-1)/2 is the maximum number of elements in a cell identifier list.

## ◆ GSM0808_DP_MASK_DISPATCHERS

#define GSM0808_DP_MASK_DISPATCHERS 0x02

## ◆ GSM0808_DP_MASK_NETWORK_APP

#define GSM0808_DP_MASK_NETWORK_APP 0x01

## ◆ GSM0808_DP_MASK_TALKERS_LISTENERS

#define GSM0808_DP_MASK_TALKERS_LISTENERS 0x04

## ◆ LAYER_3_INFORMATION_MAXLEN

#define LAYER_3_INFORMATION_MAXLEN 252

Parsed representation of a Layer 3 Information IE (3GPP TS 48.008 3.2.2.24)

## ◆ MSISDN_MAXLEN

#define MSISDN_MAXLEN 20

Parsed representation of a MSISDN IE (3GPP TS 48.008 3.2.2.101)

## ◆ osmo_bssap_tlv_parse

#define osmo_bssap_tlv_parse | ( |  | dec,
|  |  | buf,
|  |  | len
| ) |  | tlv_parse(dec, gsm0808_att_tlvdef(), buf, len, 0, 0)

Parse BSSAP TLV structure using tlv_parse.

## ◆ osmo_bssap_tlv_parse2

#define osmo_bssap_tlv_parse2 | ( |  | dec,
|  |  | dec_multiples,
|  |  | buf,
|  |  | len
| ) |  | tlv_parse2(dec, dec_multiples, gsm0808_att_tlvdef(), buf, len, 0, 0)

Parse BSSAP TLV structure using tlv_parse2.

## ◆ SMS_TO_VGCS_MAXLEN

#define SMS_TO_VGCS_MAXLEN 252

Parsed representation of a SMS to VGCS IE (3GPP TS 48.008 3.2.2.92)

## ◆ TALKER_IDENTITY_MAXLEN

#define TALKER_IDENTITY_MAXLEN 17

Parsed representation of a Talker Identity IE (3GPP TS 48.008 3.2.2.91)

## Enumeration Type Documentation

## ◆ gsm0808_application_idndicator

enum gsm0808_application_idndicator

Packed representation of a Data Identity IE (GGPP TS 48.008 3.2.2.99)

Enumerator
GSM0808_AI_APP_DATA |
GSM0808_AI_CONFIRM_APP_DATA |

## ◆ gsm0808_assignment_requirement

enum gsm0808_assignment_requirement

Enumerator
GSM0808_ASRQ_DELAY_ALLOWED |
GSM0808_ASRQ_IMMEDIATE |
GSM0808_ASRQ_IMMEDIATE_ON_DEMAND |

## ◆ gsm0808_call_priority

enum gsm0808_call_priority

Enumerator
GSM0808_CALL_PRIORITY_NONE |
GSM0808_CALL_PRIORITY_LEVEL_4 |
GSM0808_CALL_PRIORITY_LEVEL_3 |
GSM0808_CALL_PRIORITY_LEVEL_2 |
GSM0808_CALL_PRIORITY_LEVEL_1 |
GSM0808_CALL_PRIORITY_LEVEL_0 |
GSM0808_CALL_PRIORITY_LEVEL_B |
GSM0808_CALL_PRIORITY_LEVEL_A |

## ◆ gsm0808_downlink_dtx_flag

enum gsm0808_downlink_dtx_flag

Enumerator
GSM0808_DTX_FLAG_ALLOW |
GSM0808_DTX_FLAG_FORBID |

## ◆ gsm0808_service_flag

enum gsm0808_service_flag

Enumerator
GSM0808_SF_VBS |
GSM0808_SF_VGCS |

## ◆ gsm0808_talker_priority

enum gsm0808_talker_priority

Enumerator
GSM0808_TALKER_PRIORITY_NORMAL |
GSM0808_TALKER_PRIORITY_PRIVILEGED |
GSM0808_TALKER_PRIORITY_EMERGENCY |

## ◆ gsm0808_vgcs_vbs_cell_status

enum gsm0808_vgcs_vbs_cell_status

Enumerator
GSM0808_CSTAT_ESTABLISHED |
GSM0808_CSTAT_NOT_ESTABLISHED1 |
GSM0808_CSTAT_RELEASED_NO_USER |
GSM0808_CSTAT_NOT_ESTABLISHED2 |

## Function Documentation

## ◆ __attribute__()

struct gsm0808_priority __attribute__ | ( | (packed) |  | ) |

## ◆ gsm0808_att_tlvdef()

const struct tlv_definition * gsm0808_att_tlvdef | ( | void |  | ) |

References bss_att_tlvdef.

## ◆ gsm0808_bssap_name()

const char * gsm0808_bssap_name | ( | uint8_t | msg_type | ) |

Return string name of BSSAP Message Type.

References get_value_string(), gsm0808_bssap_names, and msg_type.

## ◆ gsm0808_bssmap_name()

const char * gsm0808_bssmap_name | ( | uint8_t | msg_type | ) |

Return string name of BSSMAP Message Type.

References get_value_string(), gsm0808_msgt_names, and msg_type.

## ◆ gsm0808_cause_class()

static enum gsm0808_cause_class gsm0808_cause_class | ( | enum gsm0808_cause | cause | ) |
| inline static

Returns
  3GPP TS 08.08 §3.2.2.5 Class of a given Cause

References cause.

## ◆ gsm0808_cause_class_name()

const char * gsm0808_cause_class_name | ( | enum gsm0808_cause_class | class | ) |

Return string name of BSSMAP Cause Class name.

References get_value_string(), and gsm0808_cause_class_names.

## ◆ gsm0808_cause_ext()

static bool gsm0808_cause_ext | ( | enum gsm0808_cause | cause | ) |
| inline static

Returns
  true if 3GPP TS 08.08 §3.2.2.5 Class has extended bit set

References cause.

Referenced by gsm0808_get_cause().

## ◆ gsm0808_cause_name()

const char * gsm0808_cause_name | ( | enum gsm0808_cause | cause | ) |

Return string name of BSSMAP Cause name.

References cause, get_value_string(), and gsm0808_cause_names.

## ◆ gsm0808_cell_id_discr_name()

static const char * gsm0808_cell_id_discr_name | ( | enum CELL_IDENT | id_discr | ) |
| inline static

References get_value_string(), and gsm0808_cell_id_discr_names.

Referenced by gsm0808_cell_id_list_name_buf(), gsm0808_cell_id_name_buf(), and gsm0808_cell_id_u_name().

## ◆ gsm0808_cell_id_from_cgi()

void gsm0808_cell_id_from_cgi | ( | struct gsm0808_cell_id * | cid,
|  | enum CELL_IDENT | id_discr,
|  | const struct osmo_cell_global_id * | cgi
| ) |  |

Copy information from a CGI to form a Cell Identifier of the specified kind.

Parameters

  [out] | cid | Compose new Cell Identifier here.
  [in] | id_discr | Which kind of Cell Identifier to compose.
  [in] | cgi | Cell Global Identifier to form the Cell Identifier from.

References CELL_IDENT_BSS, CELL_IDENT_CI, CELL_IDENT_LAC, CELL_IDENT_LAC_AND_CI, CELL_IDENT_LAI, CELL_IDENT_NO_CELL, CELL_IDENT_SAI, CELL_IDENT_UTRAN_LAC_RNC, CELL_IDENT_UTRAN_PLMN_LAC_RNC, CELL_IDENT_UTRAN_RNC, CELL_IDENT_WHOLE_GLOBAL, CELL_IDENT_WHOLE_GLOBAL_PS, osmo_cell_global_id::cell_identity, gsm0808_cell_id_u::ci, gsm0808_cell_id_u::global, gsm0808_cell_id_u::global_ps, gsm0808_cell_id::id, gsm0808_cell_id::id_discr, gsm0808_cell_id_u::lac, osmo_location_area_id::lac, osmo_routing_area_id::lac, osmo_lac_and_ci_id::lac, gsm0808_cell_id_u::lac_and_ci, osmo_cell_global_id::lai, osmo_service_area_id::lai, gsm0808_cell_id_u::lai_and_lac, osmo_cell_global_id_ps::rai, and gsm0808_cell_id_u::sai.

## ◆ gsm0808_cell_id_list_add()

int gsm0808_cell_id_list_add | ( | struct gsm0808_cell_id_list2 * | dst,
|  | const struct gsm0808_cell_id_list2 * | src
| ) |  |

Append entries from one Cell Identifier List to another.

The cell identifier types must be identical between the two lists.

Parameters

  dst[out] | Append entries to this list.
  src[in] | Append these entries to dst.

Returns
  the nr of items added, or negative on error: -EINVAL if the id_discr mismatch between the lists, -ENOSPC if the destination list does not have enough space. If an error is returned, dst may have already been changed (particularly on -ENOSPC). Note that a return value of zero may occur when the src->id_list_len is zero, or when all entries from src already exist in dst, and does not indicate error per se.

References ARRAY_SIZE, CELL_IDENT_BSS, msgb::dst, gsm0808_cell_id_list2::id_discr, gsm0808_cell_id_list2::id_list, gsm0808_cell_id_list2::id_list_len, and same_cell_id_list_entries().

## ◆ gsm0808_cell_id_list_name()

const char * gsm0808_cell_id_list_name | ( | const struct gsm0808_cell_id_list2 * | cil | ) |

Return a human-readable representation of cil in a static buffer.

If the list is too long, the output may be truncated. See also gsm0808_cell_id_list_name_buf().

References osmo_strbuf::buf, and gsm0808_cell_id_list_name_buf().

## ◆ gsm0808_cell_id_list_name_buf()

int gsm0808_cell_id_list_name_buf | ( | char * | buf,
|  | size_t | buflen,
|  | const struct gsm0808_cell_id_list2 * | cil
| ) |  |

Return a human readable representation of the Cell Identifier List, like "LAC[2]:{123, 456}".

The return value semantics are like snprintf() and thus allow ensuring a complete untruncated string by determining the required string length from the return value. If buflen > 0, always nul-terminate the string in buf, also when it is truncated. If buflen == 0, do not modify buf, just return the would-be length.

Parameters

  [out] | buf | Destination buffer to write string representation to.
  [in] | buflen | Amount of memory available in buf.
  [in] | cil | Cell Identifer List.

Returns
  Like snprintf(): the amount of characters (excluding terminating nul) written, or that would have been written if the buffer were large enough.

References osmo_strbuf::buf, CELL_IDENT_BSS, CELL_IDENT_NO_CELL, osmo_strbuf::chars_needed, gsm0808_cell_id_discr_name(), gsm0808_cell_id_u_name(), gsm0808_cell_id_list2::id_discr, gsm0808_cell_id_list2::id_list, gsm0808_cell_id_list2::id_list_len, OSMO_STRBUF_APPEND, and OSMO_STRBUF_PRINTF.

Referenced by gsm0808_cell_id_list_name(), and gsm0808_cell_id_list_name_c().

## ◆ gsm0808_cell_id_list_name_c()

char * gsm0808_cell_id_list_name_c | ( | const void * | ctx,
|  | const struct gsm0808_cell_id_list2 * | cil
| ) |  |

References osmo_strbuf::buf, and gsm0808_cell_id_list_name_buf().

## ◆ gsm0808_cell_id_matches_list()

int gsm0808_cell_id_matches_list | ( | const struct gsm0808_cell_id * | id,
|  | const struct gsm0808_cell_id_list2 * | list,
|  | unsigned int | match_nr,
|  | bool | exact_match
| ) |  |

Find an index in a Cell Identifier list that matches a given single Cell Identifer.

Compare id against each entry in list using gsm0808_cell_ids_match(), and return the list index if a match is found. match_nr allows iterating all matches in the list. A match_nr <= 0 returns the first match in the list, match_nr == 1 the second match, etc., and if match_nr exceeds the available matches in the list, -1 is returned.

Parameters

  [in] | id | Cell Identifier to match.
  [in] | list | Cell Identifier list to search in.
  [in] | match_nr | Ignore this many matches.
  [in] | exact_match | If true, consider as match only if the CELL_IDENT types and all values are identical.

Returns
  -1 if no match is found, list index if a match is found (i.e. rc == 0 means a match was found on the first entry).

References gsm0808_cell_id_u_match(), gsm0808_cell_id::id, gsm0808_cell_id::id_discr, gsm0808_cell_id_list2::id_discr, gsm0808_cell_id_list2::id_list, and gsm0808_cell_id_list2::id_list_len.

## ◆ gsm0808_cell_id_name()

const char * gsm0808_cell_id_name | ( | const struct gsm0808_cell_id * | cid | ) |

Return a human readable representation of a Cell Identifier, like "LAC:123" or "CGI:001-01-42-23".

Parameters

  [in] | cid | Cell Identifer.

Returns
  String in a static buffer.

References osmo_strbuf::buf, and gsm0808_cell_id_name_buf().

## ◆ gsm0808_cell_id_name2()

const char * gsm0808_cell_id_name2 | ( | const struct gsm0808_cell_id * | cid | ) |

Like gsm0808_cell_id_name() but uses a different static buffer.

Parameters

  [in] | cid | Cell Identifer.

Returns
  String in a static buffer.

References osmo_strbuf::buf, and gsm0808_cell_id_name_buf().

## ◆ gsm0808_cell_id_name_buf()

char * gsm0808_cell_id_name_buf | ( | char * | buf,
|  | size_t | buflen,
|  | const struct gsm0808_cell_id * | cid
| ) |  |

References osmo_strbuf::buf, gsm0808_cell_id_discr_name(), gsm0808_cell_id_u_name(), gsm0808_cell_id::id, gsm0808_cell_id::id_discr, OSMO_STRBUF_APPEND, and OSMO_STRBUF_PRINTF.

Referenced by gsm0808_cell_id_name(), gsm0808_cell_id_name2(), and gsm0808_cell_id_name_c().

## ◆ gsm0808_cell_id_name_c()

char * gsm0808_cell_id_name_c | ( | const void * | ctx,
|  | const struct gsm0808_cell_id * | cid
| ) |  |

References osmo_strbuf::buf, and gsm0808_cell_id_name_buf().

## ◆ gsm0808_cell_id_size()

int gsm0808_cell_id_size | ( | enum CELL_IDENT | discr | ) |

References CELL_IDENT_BSS, CELL_IDENT_CI, CELL_IDENT_LAC, CELL_IDENT_LAC_AND_CI, CELL_IDENT_LAI_AND_LAC, CELL_IDENT_NO_CELL, CELL_IDENT_SAI, CELL_IDENT_WHOLE_GLOBAL, and CELL_IDENT_WHOLE_GLOBAL_PS.

Referenced by cbsp_decode_cell_list(), cbsp_decode_fail_list(), cbsp_decode_loading_list(), and cbsp_decode_num_compl_list().

## ◆ gsm0808_cell_id_to_cgi()

int gsm0808_cell_id_to_cgi | ( | struct osmo_cell_global_id * | cgi,
|  | const struct gsm0808_cell_id * | cid
| ) |  |

Overwrite parts of cgi with values from a Cell Identifier.

Place only those items given in cid into cgi, leaving other values unchanged.

Parameters

  [out] | cgi | Cell Global Identity to write to.
  [in] | cid | Cell Identity to read from.

Returns
  a bitmask of items that were set: OSMO_CGI_PART_PLMN | OSMO_CGI_PART_LAC | OSMO_CGI_PART_CI; 0 if nothing was written to cgi.

References CELL_IDENT_BSS, CELL_IDENT_CI, CELL_IDENT_LAC, CELL_IDENT_LAC_AND_CI, CELL_IDENT_LAI, CELL_IDENT_NO_CELL, CELL_IDENT_SAI, CELL_IDENT_UTRAN_LAC_RNC, CELL_IDENT_UTRAN_PLMN_LAC_RNC, CELL_IDENT_UTRAN_RNC, CELL_IDENT_WHOLE_GLOBAL, CELL_IDENT_WHOLE_GLOBAL_PS, osmo_cell_global_id::cell_identity, osmo_cell_global_id_ps::cell_identity, gsm0808_cell_id_u::ci, osmo_lac_and_ci_id::ci, gsm0808_cell_id_u::global, gsm0808_cell_id_u::global_ps, gsm0808_cell_id::id, gsm0808_cell_id::id_discr, gsm0808_cell_id_u::lac, osmo_location_area_id::lac, osmo_routing_area_id::lac, osmo_lac_and_ci_id::lac, gsm0808_cell_id_u::lac_and_ci, osmo_cell_global_id::lai, osmo_service_area_id::lai, gsm0808_cell_id_u::lai_and_lac, OSMO_CGI_PART_CI, OSMO_CGI_PART_LAC, OSMO_CGI_PART_PLMN, osmo_cell_global_id_ps::rai, and gsm0808_cell_id_u::sai.

## ◆ gsm0808_cell_id_to_list()

void gsm0808_cell_id_to_list | ( | struct gsm0808_cell_id_list2 * | dst,
|  | const struct gsm0808_cell_id * | src
| ) |  |

Convert a single Cell Identifier to a Cell Identifier List with one entry.

Parameters

  dst[out] | Overwrite this list.
  src[in] | Set dst to contain exactly this item.

References CELL_IDENT_BSS, CELL_IDENT_NO_CELL, msgb::dst, gsm0808_cell_id::id, gsm0808_cell_id::id_discr, gsm0808_cell_id_list2::id_discr, and gsm0808_cell_id_list2::id_list_len.

## ◆ gsm0808_cell_id_u_name()

int gsm0808_cell_id_u_name | ( | char * | buf,
|  | size_t | buflen,
|  | enum CELL_IDENT | id_discr,
|  | const union gsm0808_cell_id_u * | u
| ) |  |

Print a human readable name of the cell identifier to the char buffer.

This is useful both for struct gsm0808_cell_id and struct gsm0808_cell_id_list2. See also gsm0808_cell_id_name() and gsm0808_cell_id_list_name().

Parameters

  [out] | buf | Destination buffer to write string representation to.
  [in] | buflen | Amount of memory available in buf.
  [in] | id_discr | Cell Identifier type.
  [in] | u | Cell Identifer value.

Returns
  Like snprintf(): the amount of characters (excluding terminating nul) written, or that would have been written if the buffer were large enough.

References CELL_IDENT_CI, CELL_IDENT_LAC, CELL_IDENT_LAC_AND_CI, CELL_IDENT_LAI_AND_LAC, CELL_IDENT_SAI, CELL_IDENT_WHOLE_GLOBAL, CELL_IDENT_WHOLE_GLOBAL_PS, gsm0808_cell_id_u::ci, osmo_lac_and_ci_id::ci, gsm0808_cell_id_u::global, gsm0808_cell_id_u::global_ps, gsm0808_cell_id_discr_name(), gsm0808_cell_id_list2::id_discr, gsm0808_cell_id_u::lac, osmo_lac_and_ci_id::lac, gsm0808_cell_id_u::lac_and_ci, gsm0808_cell_id_u::lai_and_lac, osmo_cgi_name(), osmo_cgi_ps_name(), osmo_lai_name(), osmo_sai_name(), and gsm0808_cell_id_u::sai.

Referenced by gsm0808_cell_id_list_name_buf(), and gsm0808_cell_id_name_buf().

## ◆ gsm0808_cell_ids_match()

bool gsm0808_cell_ids_match | ( | const struct gsm0808_cell_id * | id1,
|  | const struct gsm0808_cell_id * | id2,
|  | bool | exact_match
| ) |  |

Return true if the common information between the two Cell Identifiers match.

For example, if a LAC+CI is compared to LAC, return true if the LAC are the same. Note that CELL_IDENT_NO_CELL will always return false. Also CELL_IDENT_BSS will always return false, since this function cannot possibly know the bounds of the BSS, so the caller must handle CELL_IDENT_BSS specially.

Parameters

  [in] | id1 | Cell Identifier.
  [in] | id2 | Other Cell Identifier.
  [in] | exact_match | If true, return true only if the CELL_IDENT types and all values are identical.

Returns
  True if the common fields of the above match.

References gsm0808_cell_id_u_match(), gsm0808_cell_id::id, and gsm0808_cell_id::id_discr.

## ◆ gsm0808_chan_type_to_speech_codec()

int gsm0808_chan_type_to_speech_codec | ( | uint8_t | perm_spch | ) |

Convert the representation of the permitted speech codec identifier that is used in struct gsm0808_channel_type to the speech codec representation we use in struct gsm0808_speech_codec.

Parameters

  [in] | perm_spch | to be converted (see also gsm0808_permitted_speech)

Returns
  GSM speech codec type; negative on error

The speech codec type, which is used in the channel type field to signal the permitted speech versions (codecs) has a different encoding than the type field in the speech codec type element (See also 3GPP TS 48.008, 3.2.2.11 and 3.2.2.103)

References GSM0808_PERM_FR1, GSM0808_PERM_FR2, GSM0808_PERM_FR3, GSM0808_PERM_FR4, GSM0808_PERM_FR5, GSM0808_PERM_HR1, GSM0808_PERM_HR3, GSM0808_PERM_HR4, GSM0808_PERM_HR6, GSM0808_SCT_FR1, GSM0808_SCT_FR2, GSM0808_SCT_FR3, GSM0808_SCT_FR4, GSM0808_SCT_FR5, GSM0808_SCT_HR1, GSM0808_SCT_HR3, GSM0808_SCT_HR4, and GSM0808_SCT_HR6.

Referenced by gsm0808_speech_codec_from_chan_type().

## ◆ gsm0808_channel_type_name()

const char * gsm0808_channel_type_name | ( | const struct gsm0808_channel_type * | ct | ) |

References osmo_strbuf::buf, and gsm0808_channel_type_name_buf().

## ◆ gsm0808_channel_type_name_buf()

char * gsm0808_channel_type_name_buf | ( | char * | buf,
|  | size_t | buf_len,
|  | const struct gsm0808_channel_type * | ct
| ) |  |

References osmo_strbuf::buf, gsm0808_channel_type::ch_indctr, gsm0808_channel_type::ch_rate_type, osmo_hexdump(), gsm0808_channel_type::perm_spch, and gsm0808_channel_type::perm_spch_len.

Referenced by gsm0808_channel_type_name(), and gsm0808_channel_type_name_c().

## ◆ gsm0808_channel_type_name_c()

char * gsm0808_channel_type_name_c | ( | const void * | ctx,
|  | const struct gsm0808_channel_type * | ct
| ) |  |

References osmo_strbuf::buf, and gsm0808_channel_type_name_buf().

## ◆ gsm0808_chosen_channel()

static uint8_t gsm0808_chosen_channel | ( | enum gsm_chan_t | type,
|  | enum gsm48_chan_mode | mode
| ) |  |
| inline static

Return 3GPP TS 48.008 3.2.2.33 Chosen Channel.

References GSM48_CMODE_DATA_12k0, GSM48_CMODE_DATA_14k5, GSM48_CMODE_DATA_14k5_29k0, GSM48_CMODE_DATA_14k5_43k5, GSM48_CMODE_DATA_29k0, GSM48_CMODE_DATA_29k0_14k5, GSM48_CMODE_DATA_29k0_43k5, GSM48_CMODE_DATA_32k0, GSM48_CMODE_DATA_3k6, GSM48_CMODE_DATA_43k5, GSM48_CMODE_DATA_43k5_14k5, GSM48_CMODE_DATA_43k5_29k0, GSM48_CMODE_DATA_6k0, GSM48_CMODE_SIGN, GSM48_CMODE_SPEECH_AMR, GSM48_CMODE_SPEECH_EFR, GSM48_CMODE_SPEECH_V1, GSM48_CMODE_SPEECH_V4, GSM48_CMODE_SPEECH_V5, GSM48_CMODE_SPEECH_V6, GSM_LCHAN_NONE, GSM_LCHAN_SDCCH, GSM_LCHAN_TCH_F, GSM_LCHAN_TCH_H, mode, and type.

## ◆ gsm0808_create_ass()

struct msgb * gsm0808_create_ass | ( | const struct gsm0808_channel_type * | ct,
|  | const uint16_t * | cic,
|  | const struct sockaddr_storage * | ss,
|  | const struct gsm0808_speech_codec_list * | scl,
|  | const uint32_t * | ci
| ) |  |

Create BSSMAP Assignment Request message, 3GPP TS 48.008 §3.2.1.1.

Parameters

  [in] | ct | Channel Type
  [in] | cic | Circuit Identity Code (Classic A only)
  [in] | ss | Socket Address of MSC-side RTP socket (AoIP only)
  [in] | scl | Speech Codec List (AoIP only)
  [in] | ci | Call Identifier (Optional), §3.2.2.105

Returns
  callee-allocated msgb with BSSMAP Assignment Request message

References gsm0808_create_ass2().

## ◆ gsm0808_create_ass2()

struct msgb * gsm0808_create_ass2 | ( | const struct gsm0808_channel_type * | ct,
|  | const uint16_t * | cic,
|  | const struct sockaddr_storage * | ss,
|  | const struct gsm0808_speech_codec_list * | scl,
|  | const uint32_t * | ci,
|  | const uint8_t * | kc,
|  | const struct osmo_lcls * | lcls
| ) |  |

Create BSSMAP Assignment Request message, 3GPP TS 48.008 §3.2.1.1.

This is identical to gsm0808_create_ass(), but adds KC and LCLS IEs.

Parameters

  [in] | ct | Channel Type
  [in] | cic | Circuit Identity Code (Classic A only)
  [in] | ss | Socket Address of MSC-side RTP socket (AoIP only)
  [in] | scl | Speech Codec List (AoIP only)
  [in] | ci | Call Identifier (Optional), §3.2.2.105
  [in] | kc | Kc128 ciphering key (Optional, A5/4), §3.2.2.109
  [in] | lcls | Optional LCLS parameters

Returns
  callee-allocated msgb with BSSMAP Assignment Request message

References BSS_MAP_MSG_ASSIGMENT_RQST, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_aoip_trasp_addr(), gsm0808_enc_channel_type(), gsm0808_enc_lcls(), gsm0808_enc_speech_codec_list2(), GSM0808_IE_CALL_ID, GSM0808_IE_CIRCUIT_IDENTITY_CODE, GSM0808_IE_KC_128, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_put(), msgb_tv16_put(), msgb_tv_fixed_put(), msgb_tv_push(), msgb_v_put(), and OSMO_ASSERT.

Referenced by gsm0808_create_ass().

## ◆ gsm0808_create_ass_compl()

struct msgb * gsm0808_create_ass_compl | ( | uint8_t | rr_cause,
|  | uint8_t | chosen_channel,
|  | uint8_t | encr_alg_id,
|  | uint8_t | speech_mode,
|  | const struct sockaddr_storage * | ss,
|  | const struct gsm0808_speech_codec * | sc,
|  | const struct gsm0808_speech_codec_list * | scl
| ) |  |

Create BSSMAP Assignment Completed message.

Parameters

  [in] | rr_cause | GSM 04.08 RR Cause value
  [in] | chosen_channel | Chosen Channel
  [in] | encr_alg_id | Encryption Algorithm ID
  [in] | speech_mode | Speech Mode
  [in] | ss | Socket Address of BSS-side RTP socket
  [in] | sc | Speech Codec (current)
  [in] | scl | Speech Codec List (permitted)

Returns
  callee-allocated msgb with BSSMAP Assignment Complete message

References gsm0808_create_ass_compl2(), GSM0808_LCLS_STS_NA, and rr_cause.

## ◆ gsm0808_create_ass_compl2()

struct msgb * gsm0808_create_ass_compl2 | ( | uint8_t | rr_cause,
|  | uint8_t | chosen_channel,
|  | uint8_t | encr_alg_id,
|  | uint8_t | speech_mode,
|  | const struct sockaddr_storage * | ss,
|  | const struct gsm0808_speech_codec * | sc,
|  | const struct gsm0808_speech_codec_list * | scl,
|  | enum gsm0808_lcls_status | lcls_bss_status
| ) |  |

Create BSSMAP Assignment Completed message as per 3GPP TS 48.008 §3.2.1.2.

Parameters

  [in] | rr_cause | GSM 04.08 RR Cause value
  [in] | chosen_channel | Chosen Channel
  [in] | encr_alg_id | Encryption Algorithm ID
  [in] | speech_mode | Speech Mode
  [in] | ss | Socket Address of BSS-side RTP socket
  [in] | sc | Speech Codec (current)
  [in] | scl | Speech Codec List (permitted)
  [in] | lcls_bss_status | §3.2.2.119 LCLS-BSS-Status, optional

Returns
  callee-allocated msgb with BSSMAP Assignment Complete message

References BSS_MAP_MSG_ASSIGMENT_COMPLETE, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_aoip_trasp_addr(), gsm0808_enc_speech_codec2(), gsm0808_enc_speech_codec_list2(), GSM0808_IE_CHOSEN_CHANNEL, GSM0808_IE_CHOSEN_ENCR_ALG, GSM0808_IE_LCLS_BSS_STATUS, GSM0808_IE_RR_CAUSE, GSM0808_IE_SPEECH_VERSION, GSM0808_LCLS_STS_NA, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), and rr_cause.

Referenced by gsm0808_create_ass_compl(), and gsm0808_create_assignment_completed().

## ◆ gsm0808_create_ass_fail()

struct msgb * gsm0808_create_ass_fail | ( | uint8_t | cause,
|  | const uint8_t * | rr_cause,
|  | const struct gsm0808_speech_codec_list * | scl
| ) |  |

Create BSSMAP Assignment Failure message.

Parameters

  [in] | cause | BSSMAP Cause value
  [in] | rr_cause | GSM 04.08 RR Cause value
  [in] | scl | Optional Speech Cdec List (AoIP)

Returns
  callee-allocated msgb with BSSMAP Assignment Failure message

References BSS_MAP_MSG_ASSIGMENT_FAILURE, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, cause, gsm0808_enc_cause(), gsm0808_enc_speech_codec_list2(), GSM0808_IE_RR_CAUSE, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), and rr_cause.

Referenced by gsm0808_create_assignment_failure().

## ◆ gsm0808_create_assignment_completed()

struct msgb * gsm0808_create_assignment_completed | ( | uint8_t | rr_cause,
|  | uint8_t | chosen_channel,
|  | uint8_t | encr_alg_id,
|  | uint8_t | speech_mode
| ) |  |

Create BSSMAP Assignment Completed message.

Parameters

  [in] | rr_cause | GSM 04.08 RR Cause value
  [in] | chosen_channel | Chosen Channel
  [in] | encr_alg_id | Encryption Algorithm ID
  [in] | speech_mode | Speech Mode

Returns
  callee-allocated msgb with BSSMAP Assignment Complete message

References gsm0808_create_ass_compl2(), GSM0808_LCLS_STS_NA, and rr_cause.

## ◆ gsm0808_create_assignment_failure()

struct msgb * gsm0808_create_assignment_failure | ( | uint8_t | cause,
|  | uint8_t * | rr_cause
| ) |  |

Create BSSMAP Assignment Failure message.

Parameters

  [in] | cause | BSSMAP Cause value
  [in] | rr_cause | GSM 04.08 RR Cause value

Returns
  callee-allocated msgb with BSSMAP Assignment Failure message

References cause, gsm0808_create_ass_fail(), and rr_cause.

## ◆ gsm0808_create_cipher()

struct msgb * gsm0808_create_cipher | ( | const struct gsm0808_encrypt_info * | ei,
|  | const uint8_t * | cipher_response_mode
| ) |  |

Superseded by gsm0808_create_cipher2() to include Kc128.

Create BSSMAP Cipher Mode Command message (without Kc128).

Parameters

  [in] | ei | Mandatory Encryption Information
  [in] | kc128 | optional kc128 key for A5/4
  [in] | cipher_response_mode | optional 1-byte Cipher Response Mode

Returns
  callee-allocated msgb with BSSMAP Cipher Mode Command message

References gsm0808_cipher_mode_command::cipher_response_mode, gsm0808_cipher_mode_command::ei, and gsm0808_create_cipher2().

## ◆ gsm0808_create_cipher2()

struct msgb * gsm0808_create_cipher2 | ( | const struct gsm0808_cipher_mode_command * | cmc | ) |

Create BSSMAP Cipher Mode Command message.

Parameters

  [in] | cmc | Information to encode.

Returns
  callee-allocated msgb with BSSMAP Cipher Mode Command message

References BSS_MAP_MSG_CIPHER_MODE_CMD, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_cipher_mode_command::cipher_response_mode, gsm0808_cipher_mode_command::cipher_response_mode_present, gsm0808_cipher_mode_command::ei, gsm0808_enc_encrypt_info(), gsm0808_enc_kc128(), GSM0808_IE_CIPHER_RESPONSE_MODE, gsm0808_cipher_mode_command::kc128, gsm0808_cipher_mode_command::kc128_present, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), msgb_tv_put(), and msgb_v_put().

Referenced by gsm0808_create_cipher().

## ◆ gsm0808_create_cipher_complete()

struct msgb * gsm0808_create_cipher_complete | ( | struct msgb * | layer3,
|  | uint8_t | alg_id
| ) |  |

Create BSSMAP Cipher Mode Complete message.

Parameters

  [in] | layer3 | L3 Message to be included
  [in] | alg_id | Chosen Encrpytion Algorithm

Returns
  callee-allocated msgb with BSSMAP Cipher Mode Complete message

References BSS_MAP_MSG_CIPHER_MODE_COMPLETE, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, GSM0808_IE_CHOSEN_ENCR_ALG, GSM0808_IE_LAYER_3_MESSAGE_CONTENTS, msgb::l3h, msg, msgb_alloc_headroom(), msgb_l3len(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), msgb_tv_put(), and msgb_v_put().

## ◆ gsm0808_create_cipher_reject()

struct msgb * gsm0808_create_cipher_reject | ( | enum gsm0808_cause | cause | ) |

Create BSSMAP Cipher Mode Reject message.

Parameters

  [in] | cause | 3GPP TS 08.08 §3.2.2.5 cause value

Returns
  callee-allocated msgb with BSSMAP Cipher Mode Reject message

References BSS_MAP_MSG_CIPHER_MODE_REJECT, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, cause, gsm0808_enc_cause(), msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_create_cipher_reject_ext()

struct msgb * gsm0808_create_cipher_reject_ext | ( | enum gsm0808_cause_class | class,
|  | uint8_t | ext
| ) |  |

Create BSSMAP Cipher Mode Reject message.

Parameters

  [in] | class | 3GPP TS 08.08 §3.2.2.5 cause's class
  [in] | ext | 3GPP TS 08.08 §3.2.2.5 cause value (national application extension)

Returns
  callee-allocated msgb with BSSMAP Cipher Mode Reject message

References BSS_MAP_MSG_CIPHER_MODE_REJECT, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, cause, gsm0808_enc_cause(), msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_create_classmark_request()

struct msgb * gsm0808_create_classmark_request | ( | void |  | ) |

Create BSSMAP Classmark Request message.

Returns
  callee-allocated msgb with BSSMAP Classmark Request message

References BSS_MAP_MSG_CLASSMARK_RQST, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_create_classmark_update()

struct msgb * gsm0808_create_classmark_update | ( | const uint8_t * | cm2,
|  | uint8_t | cm2_len,
|  | const uint8_t * | cm3,
|  | uint8_t | cm3_len
| ) |  |

Create BSSMAP Classmark Update message.

Parameters

  [in] | cm2 | Classmark 2
  [in] | cm2_len | length (in octets) of cm2
  [in] | cm3 | Classmark 3
  [in] | cm3_len | length (in octets) of cm3

Returns
  callee-allocated msgb with BSSMAP Classmark Update message

References BSS_MAP_MSG_CLASSMARK_UPDATE, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, cm2, cm2_len, GSM0808_IE_CLASSMARK_INFORMATION_T2, GSM0808_IE_CLASSMARK_INFORMATION_T3, msg, msgb_alloc_headroom(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_create_clear_command()

struct msgb * gsm0808_create_clear_command | ( | uint8_t | cause | ) |

Create BSSMAP Clear Command message with BSSAP header before l3h and BSSMAP in l3h.

This is quite different from most (all?) other gsm0808_create_* which have l3h point to the BSSAP header. However, we have to keep this for backwards compatibility. Use gsm0808_create_clear_command2() for a 'modern' implementation.

Parameters

  [in] | cause | TS 08.08 cause value

Returns
  callee-allocated msgb with BSSMAP Clear Command message

References BSS_MAP_MSG_CLEAR_CMD, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, cause, gsm0808_enc_cause(), msg, msgb_alloc_headroom(), msgb_tv_put(), and msgb_v_put().

## ◆ gsm0808_create_clear_command2()

struct msgb * gsm0808_create_clear_command2 | ( | uint8_t | cause,
|  | bool | csfb_ind
| ) |  |

Create BSSMAP Clear Command message.

Parameters

  [in] | cause | TS 08.08 cause value.
  [in] | csfb_ind | indicate that the call was established in an CSFB context.

Returns
  callee-allocated msgb with BSSMAP Clear Command message.

References BSS_MAP_MSG_CLEAR_CMD, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, cause, gsm0808_enc_cause(), GSM0808_IE_CSFB_INDICATION, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_create_clear_complete()

struct msgb * gsm0808_create_clear_complete | ( | void |  | ) |

Create BSSMAP Clear Complete message.

Returns
  callee-allocated msgb with BSSMAP Clear Complete message

References BSS_MAP_MSG_CLEAR_COMPLETE, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, msg, msgb_alloc_headroom(), and msgb_tlv_put().

## ◆ gsm0808_create_clear_rqst()

struct msgb * gsm0808_create_clear_rqst | ( | uint8_t | cause | ) |

Create BSSMAP Clear Request message.

Parameters

  [in] | cause | BSSMAP Cause value

Returns
  callee-allocated msgb with BSSMAP Clear Request message

References BSS_MAP_MSG_CLEAR_RQST, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, cause, gsm0808_enc_cause(), msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_create_common_id()

struct msgb * gsm0808_create_common_id | ( | const char * | imsi,
|  | const struct osmo_plmn_id * | selected_plmn_id,
|  | const struct osmo_plmn_id * | last_used_eutran_plnm_id
| ) |  |

Create BSSMAP COMMON ID message, 3GPP TS 48.008 3.2.1.68.

Parameters

  [in] | imsi | IMSI digits (decimal string).
  [in] | selected_plmn_id | Selected PLMN ID to encode, or NULL to not encode this IE.
  [in] | last_used_eutran_plnm_id | Last used E-UTRAN PLMN ID to encode, or NULL to not encode this IE.

Returns
  callee-allocated msgb with BSSMAP COMMON ID message, or NULL if encoding failed.

References BSS_MAP_MSG_COMMON_ID, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, GSM0808_IE_IMSI, GSM0808_IE_LAST_USED_EUTRAN_PLMN_ID, GSM0808_IE_SELECTED_PLMN_ID, GSM_MI_TYPE_IMSI, mi, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_put(), msgb_tl_put(), msgb_tv_push(), msgb_v_put(), osmo_mobile_identity_encode_msgb(), osmo_plmn_to_bcd(), and OSMO_STRLCPY_ARRAY.

## ◆ gsm0808_create_dtap()

struct msgb * gsm0808_create_dtap | ( | struct msgb * | msg_l3,
|  | uint8_t | link_id
| ) |  |

Create BSSMAP DTAP message.

Parameters

  [in] | msg_l3 | Messge Buffer containing Layer3 message
  [in] | link_id | Link Identifier

Returns
  callee-allocated msgb with BSSMAP DTAP message

References BSSAP_MSG_DTAP, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, data, header, msgb::l3h, link_id, msg, msgb_alloc_headroom(), msgb_l3len(), and msgb_put().

## ◆ gsm0808_create_handover_command()

struct msgb * gsm0808_create_handover_command | ( | const struct gsm0808_handover_command * | params | ) |

Create BSSMAP HANDOVER COMMAND message, 3GPP TS 48.008 3.2.1.11.

Sent from the MSC to the old BSS to transmit the RR Handover Command received from the new BSS.

References BSS_MAP_MSG_HANDOVER_CMD, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, CELL_IDENT_NO_CELL, gsm0808_enc_cell_id(), GSM0808_IE_LAYER_3_INFORMATION, GSM0808_IE_NEW_BSS_TO_OLD_BSS_INFO, msg, msgb_alloc_headroom(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), msgb_v_put(), and params.

## ◆ gsm0808_create_handover_complete()

struct msgb * gsm0808_create_handover_complete | ( | const struct gsm0808_handover_complete * | params | ) |

Create BSSMAP HANDOVER COMPLETE message, 3GPP TS 48.008 3.2.1.12.

Sent from the MT BSC back to the MSC when the MS has fully settled into the new lchan.

References BSS_MAP_MSG_HANDOVER_COMPLETE, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_speech_codec2(), gsm0808_enc_speech_codec_list2(), GSM0808_IE_CHOSEN_ENCR_ALG, GSM0808_IE_LCLS_BSS_STATUS, GSM0808_IE_RR_CAUSE, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), and params.

## ◆ gsm0808_create_handover_detect()

struct msgb * gsm0808_create_handover_detect | ( | void |  | ) |

Create BSSMAP HANDOVER DETECT message, 3GPP TS 48.008 3.2.1.40.

Sent from the MT BSC back to the MSC when the MS has sent a handover RACH request and the MT BSC has received the Handover Detect message.

References BSS_MAP_MSG_HANDOVER_DETECT, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_create_handover_failure()

struct msgb * gsm0808_create_handover_failure | ( | const struct gsm0808_handover_failure * | params | ) |

Create BSSMAP HANDOVER FAILURE message, 3GPP TS 48.008 3.2.1.16.

Sent from the MT BSC back to the MSC when the handover has failed.

References BSS_MAP_MSG_HANDOVER_FAILURE, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_cause(), gsm0808_enc_speech_codec_list2(), GSM0808_IE_RR_CAUSE, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), msgb_v_put(), and params.

## ◆ gsm0808_create_handover_performed()

struct msgb * gsm0808_create_handover_performed | ( | const struct gsm0808_handover_performed * | params | ) |

Create BSSMAP HANDOVER PERFORMED message, 3GPP TS 48.008 3.2.1.25.

Parameters

  [in] | params | All information to be encoded.

Returns
  callee-allocated msgb with BSSMAP HANDOVER PERFORMED message

References BSS_MAP_MSG_HANDOVER_PERFORMED, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_cause(), gsm0808_enc_cell_id(), gsm0808_enc_speech_codec2(), GSM0808_IE_CHOSEN_CHANNEL, GSM0808_IE_CHOSEN_ENCR_ALG, GSM0808_IE_LCLS_BSS_STATUS, GSM0808_IE_SPEECH_VERSION, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), and params.

## ◆ gsm0808_create_handover_request()

struct msgb * gsm0808_create_handover_request | ( | const struct gsm0808_handover_request * | params | ) |

Create BSSMAP HANDOVER REQUEST message, 3GPP TS 48.008 3.2.1.8.

Sent from the MSC to the potential new target cell during inter-BSC handover, or to the target MSC during inter-MSC handover.

References BSS_MAP_MSG_HANDOVER_RQST, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_aoip_trasp_addr(), gsm0808_enc_cause(), gsm0808_enc_cell_id(), gsm0808_enc_channel_type(), gsm0808_enc_encrypt_info(), gsm0808_enc_kc128(), gsm0808_enc_speech_codec_list2(), GSM0808_IE_CALL_ID, GSM0808_IE_CHOSEN_ENCR_ALG, GSM0808_IE_CLASSMARK_INFORMATION_T2, GSM0808_IE_CLASSMARK_INFORMATION_T3, GSM0808_IE_CLASSMARK_INFORMATION_TYPE_1, GSM0808_IE_CURRENT_CHANNEL_TYPE_1, GSM0808_IE_GLOBAL_CALL_REF, GSM0808_IE_IMSI, GSM0808_IE_OLD_BSS_TO_NEW_BSS_INFORMATION, GSM0808_IE_SPEECH_VERSION, gsm48_generate_mid_from_imsi(), GSM48_MI_SIZE, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_tlv_put(), msgb_tv_fixed_put(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), params, and put_old_bss_to_new_bss_information().

## ◆ gsm0808_create_handover_request_ack()

struct msgb * gsm0808_create_handover_request_ack | ( | const uint8_t * | l3_info,
|  | uint8_t | l3_info_len,
|  | uint8_t | chosen_channel,
|  | uint8_t | chosen_encr_alg,
|  | uint8_t | chosen_speech_version
| ) |  |

Same as gsm0808_create_handover_request_ack2() but with less parameters.

In particular, this lacks the AoIP Transport Layer address.

References gsm0808_handover_request_ack::chosen_channel, gsm0808_handover_request_ack::chosen_encr_alg, gsm0808_handover_request_ack::chosen_speech_version, gsm0808_create_handover_request_ack2(), gsm0808_handover_request_ack::l3_info, gsm0808_handover_request_ack::l3_info_len, and params.

## ◆ gsm0808_create_handover_request_ack2()

struct msgb * gsm0808_create_handover_request_ack2 | ( | const struct gsm0808_handover_request_ack * | params | ) |

Create BSSMAP HANDOVER REQUEST ACKNOWLEDGE message, 3GPP TS 48.008 3.2.1.10.

Sent from the MT BSC back to the MSC when it has allocated an lchan to handover to. l3_info is the RR Handover Command that the MO BSC sends to the MS to move over.

References BSS_MAP_MSG_HANDOVER_RQST_ACKNOWLEDGE, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_aoip_trasp_addr(), gsm0808_enc_speech_codec2(), gsm0808_enc_speech_codec_list2(), GSM0808_IE_CHOSEN_CHANNEL, GSM0808_IE_CHOSEN_ENCR_ALG, GSM0808_IE_LAYER_3_INFORMATION, GSM0808_IE_SPEECH_VERSION, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), and params.

Referenced by gsm0808_create_handover_request_ack().

## ◆ gsm0808_create_handover_required()

struct msgb * gsm0808_create_handover_required | ( | const struct gsm0808_handover_required * | params | ) |

Create BSSMAP HANDOVER REQUIRED message.

Parameters

  [in] | params | All information to be encoded.

Returns
  newly allocated msgb with BSSMAP HANDOVER REQUIRED message.

References BSS_MAP_MSG_HANDOVER_REQUIRED, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_cause(), gsm0808_enc_cell_id_list2(), GSM0808_IE_CURRENT_CHANNEL_TYPE_1, GSM0808_IE_SPEECH_VERSION, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_fixed_put(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), params, and put_old_bss_to_new_bss_information().

## ◆ gsm0808_create_handover_required_reject()

struct msgb * gsm0808_create_handover_required_reject | ( | const struct gsm0808_handover_required_reject * | params | ) |

Create BSSMAP HANDOVER REQUIRED REJECT message.

Returns
  newly allocated msgb with BSSMAP HANDOVER REQUIRED REJECT message.

References BSS_MAP_MSG_HANDOVER_REQUIRED_REJECT, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_cause(), msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), msgb_v_put(), and params.

## ◆ gsm0808_create_handover_succeeded()

struct msgb * gsm0808_create_handover_succeeded | ( | void |  | ) |

Create BSSMAP HANDOVER SUCCEEDED message, 3GPP TS 48.008 3.2.1.13.

Sent from the MSC back to the old BSS to notify that the MS has successfully accessed the new BSS.

References BSS_MAP_MSG_HANDOVER_SUCCEEDED, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_create_layer3()

struct msgb * gsm0808_create_layer3 | ( | struct msgb * | msg_l3,
|  | uint16_t | nc,
|  | uint16_t | cc,
|  | int | lac,
|  | uint16_t | _ci
| ) |  |

Create "Complete L3 Info" for A, legacy implementation.

Instead use gsm0808_create_layer3_2() with the scl parameter passed as NULL, which is capable of three-digit MNC with leading zeros.

Parameters

  [in] | msg_l3 | msgb containing Layer 3 Message
  [in] | nc | Mobile Network Code
  [in] | cc | Mobile Country Code
  [in] | lac | Location Area Code
  [in] | _ci | Cell Identity

Returns
  callee-allocated msgb with Complete L3 Info message

References gsm0808_create_layer3_2(), lac, osmo_cell_global_id::lai, osmo_plmn_id::mcc, and osmo_location_area_id::plmn.

## ◆ gsm0808_create_layer3_2()

struct msgb * gsm0808_create_layer3_2 | ( | const struct msgb * | msg_l3,
|  | const struct osmo_cell_global_id * | cell,
|  | const struct gsm0808_speech_codec_list * | scl
| ) |  |

Create "Complete L3 Info" for AoIP.

Parameters

  [in] | msg_l3 | msgb containing Layer 3 Message – not modified by this call.
  [in] | cell | MCC, MNC, LAC, CI to identify the cell.
  [in] | scl | Speech Codec List, optional.

Returns
  newly allocated msgb with Complete L3 Info message

References __attribute__, BSS_MAP_MSG_COMPLETE_LAYER_3, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, CELL_IDENT_WHOLE_GLOBAL, osmo_cell_global_id::cell_identity, gsm0808_enc_speech_codec_list2(), GSM0808_IE_CELL_IDENTIFIER, GSM0808_IE_LAYER_3_INFORMATION, gsm48_generate_lai2(), msgb::l3h, osmo_cell_global_id::lai, lai, msg, msgb_alloc_headroom(), msgb_free(), msgb_l3len(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), msgb_v_put(), and osmo_htons.

Referenced by gsm0808_create_layer3(), and gsm0808_create_layer3_aoip().

## ◆ gsm0808_create_layer3_aoip()

struct msgb * gsm0808_create_layer3_aoip | ( | const struct msgb * | msg_l3,
|  | uint16_t | nc,
|  | uint16_t | cc,
|  | int | lac,
|  | uint16_t | _ci,
|  | const struct gsm0808_speech_codec_list * | scl
| ) |  |

Create "Complete L3 Info" for AoIP, legacy implementation.

Instead use gsm0808_create_layer3_aoip2(), which is capable of three-digit MNC with leading zeros.

Parameters

  [in] | msg_l3 | msgb containing Layer 3 Message
  [in] | nc | Mobile Network Code
  [in] | cc | Mobile Country Code
  [in] | lac | Location Area Code
  [in] | _ci | Cell Identity
  [in] | scl | Speech Codec List

Returns
  callee-allocated msgb with Complete L3 Info message

References gsm0808_create_layer3_2(), lac, osmo_cell_global_id::lai, osmo_plmn_id::mcc, and osmo_location_area_id::plmn.

## ◆ gsm0808_create_lcls_conn_ctrl()

struct msgb * gsm0808_create_lcls_conn_ctrl | ( | enum gsm0808_lcls_config | config,
|  | enum gsm0808_lcls_control | control
| ) |  |

Create BSSMAP LCLS CONNECT CONTROL message (TS 48.008 3.2.1.91).

Parameters

  [in] | config | LCLS Configuration
  [in] | control | LCLS Connection Status Control

Returns
  callee-allocated msgb with BSSMAP LCLS NOTIFICATION

References BSS_MAP_MSG_LCLS_CONNECT_CTRL, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, config, GSM0808_IE_LCLS_CONFIG, GSM0808_IE_LCLS_CONN_STATUS_CTRL, GSM0808_LCLS_CFG_NA, GSM0808_LCLS_CSC_NA, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), msgb_tv_put(), and msgb_v_put().

## ◆ gsm0808_create_lcls_conn_ctrl_ack()

struct msgb * gsm0808_create_lcls_conn_ctrl_ack | ( | enum gsm0808_lcls_status | status | ) |

Create BSSMAP LCLS CONNECT CONTROL ACK message (TS 48.008 3.2.1.92).

Parameters

  [in] | status | LCLS BSS Status

Returns
  callee-allocated msgb with BSSMAP LCLS NOTIFICATION

References BSS_MAP_MSG_LCLS_CONNECT_CTRL_ACK, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, GSM0808_IE_LCLS_BSS_STATUS, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), msgb_tv_put(), and msgb_v_put().

## ◆ gsm0808_create_lcls_notification()

struct msgb * gsm0808_create_lcls_notification | ( | enum gsm0808_lcls_status | status,
|  | bool | break_req
| ) |  |

Create BSSMAP LCLS NOTIFICATION message (TS 48.008 3.2.1.93).

Parameters

  [in] | status | LCLS BSS Status
  [in] | break_req | Include the LCLS BREAK REQ IE (true) or not (false)

Returns
  callee-allocated msgb with BSSMAP LCLS NOTIFICATION

References BSS_MAP_MSG_LCLS_NOTIFICATION, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, GSM0808_IE_LCLS_BREAK_REQ, GSM0808_IE_LCLS_BSS_STATUS, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), msgb_tv_put(), and msgb_v_put().

## ◆ gsm0808_create_notification_data()

struct msgb * gsm0808_create_notification_data | ( | const struct gsm0808_notification_data * | params | ) |

Create BSSMAP (VGCS/VBS) NOTIFICATION DATA message, 3GPP TS 48.008 3.2.1.82.

Sent from the MSC to the BSC to send application specific data.

References BSS_MAP_MSG_NOTIFICATION_DATA, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_data_identity(), gsm0808_enc_msisdn(), GSM0808_IE_APP_DATA, msg, msgb_alloc_headroom(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), msgb_v_put(), and params.

## ◆ gsm0808_create_paging()

struct msgb * gsm0808_create_paging | ( | const char * | imsi,
|  | const uint32_t * | tmsi,
|  | const struct gsm0808_cell_id_list * | cil,
|  | const uint8_t * | chan_needed
| ) |  |

DEPRECATED: Use gsm0808_create_paging2 instead.

Create BSSMAP PAGING message.

Parameters

  [in] | imsi | Mandatory paged IMSI in string representation
  [in] | tmsi | Optional paged TMSI
  [in] | cil | Cell Identity List (where to page)
  [in] | chan_needed | Channel Type needed

Returns
  callee-allocated msgb with BSSMAP PAGING message

References GSM0808_CELL_ID_LIST2_MAXLEN, gsm0808_create_paging2(), gsm0808_cell_id_list2::id_discr, gsm0808_cell_id_list::id_discr, gsm0808_cell_id_list2::id_list, gsm0808_cell_id_list::id_list_lac, gsm0808_cell_id_list2::id_list_len, gsm0808_cell_id_list::id_list_len, gsm0808_cell_id_u::lac, and OSMO_ASSERT.

## ◆ gsm0808_create_paging2()

struct msgb * gsm0808_create_paging2 | ( | const char * | imsi,
|  | const uint32_t * | tmsi,
|  | const struct gsm0808_cell_id_list2 * | cil,
|  | const uint8_t * | chan_needed
| ) |  |

Create BSSMAP PAGING message.

Parameters

  [in] | imsi | Mandatory paged IMSI in string representation
  [in] | tmsi | Optional paged TMSI
  [in] | cil | Mandatory Cell Identity List (where to page)
  [in] | chan_needed | Channel Type needed

Returns
  callee-allocated msgb with BSSMAP PAGING message

References BSS_MAP_MSG_PAGING, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_cell_id_list2(), GSM0808_IE_CHANNEL_NEEDED, GSM0808_IE_IMSI, GSM0808_IE_TMSI, gsm48_generate_mid_from_imsi(), GSM48_MI_SIZE, msg, msgb_alloc_headroom(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), OSMO_ASSERT, and osmo_htonl.

Referenced by gsm0808_create_paging().

## ◆ gsm0808_create_perform_location_abort()

struct msgb * gsm0808_create_perform_location_abort | ( | const struct lcs_cause_ie * | lcs_cause | ) |

References BSS_MAP_MSG_PERFORM_LOCATION_ABORT, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_lcs_cause(), msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_create_perform_location_request()

struct msgb * gsm0808_create_perform_location_request | ( | const struct gsm0808_perform_location_request * | params | ) |

References BSS_MAP_MSG_PERFORM_LOCATION_RQST, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, GSM0808_IE_IMSI, GSM_MI_TYPE_IMSI, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_tl_put(), msgb_tv_push(), msgb_v_put(), osmo_bssmap_le_ie_enc_location_type(), osmo_mobile_identity_encode_msgb(), and params.

## ◆ gsm0808_create_perform_location_response()

struct msgb * gsm0808_create_perform_location_response | ( | const struct gsm0808_perform_location_response * | params | ) |

References BSS_MAP_MSG_PERFORM_LOCATION_RESPONSE, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, GSM0808_IE_LCS_CAUSE, GSM0808_IE_LOCATION_ESTIMATE, l, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_tl_put(), msgb_tv_push(), msgb_v_put(), osmo_gad_raw_write(), osmo_lcs_cause_enc(), and params.

## ◆ gsm0808_create_reset()

struct msgb * gsm0808_create_reset | ( | void |  | ) |

Create BSSMAP RESET message.

Returns
  callee-allocated msgb with BSSMAP Reset message

References BSS_MAP_MSG_RESET, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, cause, GSM0808_CAUSE_EQUIPMENT_FAILURE, gsm0808_enc_cause(), msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_create_reset_ack()

struct msgb * gsm0808_create_reset_ack | ( | void |  | ) |

Create BSSMAP RESET ACK message.

Returns
  callee-allocated msgb with BSSMAP Reset ACK message

References BSS_MAP_MSG_RESET_ACKNOWLEDGE, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_create_sapi_reject()

struct msgb * gsm0808_create_sapi_reject | ( | uint8_t | link_id | ) |

Create BSSMAP SAPI N Reject message (with hard-coded cause "BSS not equipped").

DEPRECATED: use gsm0808_create_sapi_reject_cause() instead.

Parameters

  [in] | link_id | Link Identifier
  [in] | cause | BSSAP Cause value (see 3GPP TS 48.008, section 3.2.2.5)

Returns
  callee-allocated msgb with BSSMAP SAPI N Reject message

References GSM0808_CAUSE_BSS_NOT_EQUIPPED, gsm0808_create_sapi_reject_cause(), and link_id.

## ◆ gsm0808_create_sapi_reject_cause()

struct msgb * gsm0808_create_sapi_reject_cause | ( | uint8_t | link_id,
|  | uint16_t | cause
| ) |  |

Create BSSMAP SAPI N Reject message.

Parameters

  [in] | link_id | Link Identifier
  [in] | cause | BSSAP Cause value (see 3GPP TS 48.008, section 3.2.2.5)

Returns
  callee-allocated msgb with BSSMAP SAPI N Reject message

References BSS_MAP_MSG_SAPI_N_REJECT, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, cause, gsm0808_enc_cause(), GSM0808_IE_DLCI, link_id, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), msgb_tv_put(), and msgb_v_put().

Referenced by gsm0808_create_sapi_reject().

## ◆ gsm0808_create_uplink_app_data()

struct msgb * gsm0808_create_uplink_app_data | ( | const struct gsm0808_uplink_app_data * | params | ) |

Create BSSMAP (VGCS) UPLINK APPLICATION DATA message, 3GPP TS 48.008 3.2.1.59a.

Sent from the BSC to the MSC to pass L3 info from the talker.

References BSS_MAP_MSG_UPLINK_APP_DATA, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_cell_id(), GSM0808_IE_APP_DATA_INFO, GSM0808_IE_LAYER_3_INFORMATION, msg, msgb_alloc_headroom(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), msgb_v_put(), and params.

## ◆ gsm0808_create_uplink_reject_cmd()

struct msgb * gsm0808_create_uplink_reject_cmd | ( | const struct gsm0808_uplink_reject_cmd * | params | ) |

Create BSSMAP (VGCS) UPLINK REJECT COMMAND message, 3GPP TS 48.008 3.2.1.61.

Sent from the MSC to the BSC to indicate that the uplink is not available for allocation.

References BSS_MAP_MSG_UPLINK_REJECT_CMD, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_cause(), gsm0808_enc_talker_identity(), GSM0808_IE_TALKER_PRIORITY, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), and params.

## ◆ gsm0808_create_uplink_release_cmd()

struct msgb * gsm0808_create_uplink_release_cmd | ( | const enum gsm0808_cause | cause | ) |

3GPP TS 48.008 §3.2.1.62 (VGCS) UPLINK RELEASE COMMAND

Create BSSMAP (VGCS) UPLINK RELEASE COMMAND message, 3GPP TS 48.008 3.2.1.62.

Sent from the MSC to the BSC to indicate that the uplink is available for allocation.

References BSS_MAP_MSG_UPLINK_RELEASE_CMD, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, cause, gsm0808_enc_cause(), msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_create_uplink_release_ind()

struct msgb * gsm0808_create_uplink_release_ind | ( | const struct gsm0808_uplink_release_ind * | params | ) |

Create BSSMAP (VGCS) UPLINK RELEASE INDICATION message, 3GPP TS 48.008 3.2.1.60.

Sent from the BSC to the MSC to indicate that the uplink has been released.

References BSS_MAP_MSG_UPLINK_RELEASE_INDICATION, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_cause(), GSM0808_IE_TALKER_PRIORITY, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), and params.

## ◆ gsm0808_create_uplink_request()

struct msgb * gsm0808_create_uplink_request | ( | const struct gsm0808_uplink_request * | params | ) |

Create BSSMAP (VGCS) UPLINK REQUEST message, 3GPP TS 48.008 3.2.1.57.

Sent from the BSC to the MSC to indicate that a mobile requested access to uplink.

References BSS_MAP_MSG_UPLINK_RQST, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_cell_id(), GSM0808_IE_LAYER_3_INFORMATION, GSM0808_IE_TALKER_PRIORITY, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), osmo_mobile_identity_encode_msgb(), and params.

## ◆ gsm0808_create_uplink_request_ack()

struct msgb * gsm0808_create_uplink_request_ack | ( | const struct gsm0808_uplink_request_ack * | params | ) |

Create BSSMAP (VGCS) UPLINK REQUEST ACKNOWLEDGE message, 3GPP TS 48.008 3.2.1.58.

Sent from the MSC to the BSC to indicate that access to uplink was granted.

References BSS_MAP_MSG_UPLINK_RQST_ACKNOWLEDGE, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_talker_identity(), GSM0808_IE_EMERGENCY_SET_INDICATION, GSM0808_IE_TALKER_PRIORITY, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), and params.

## ◆ gsm0808_create_uplink_request_cnf()

struct msgb * gsm0808_create_uplink_request_cnf | ( | const struct gsm0808_uplink_request_cnf * | params | ) |

Create BSSMAP (VGCS) UPLINK CONFIRM message, 3GPP TS 48.008 3.2.1.59.

Sent from the BSC to the MSC to indicate that access to uplink was has been successfully established.

References BSS_MAP_MSG_UPLINK_RQST_CONFIRMATION, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_cell_id(), gsm0808_enc_talker_identity(), GSM0808_IE_LAYER_3_INFORMATION, msg, msgb_alloc_headroom(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), msgb_v_put(), and params.

## ◆ gsm0808_create_uplink_seized_cmd()

struct msgb * gsm0808_create_uplink_seized_cmd | ( | const struct gsm0808_uplink_seized_cmd * | params | ) |

Create BSSMAP (VGCS) UPLINK SEIZED COMMAND message, 3GPP TS 48.008 3.2.1.62.

Sent from the MSC to the BSC to indicate that the uplink is no longer available for allocation.

References BSS_MAP_MSG_UPLINK_SEIZED_CMD, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_cause(), gsm0808_enc_talker_identity(), GSM0808_IE_EMERGENCY_SET_INDICATION, GSM0808_IE_TALKER_PRIORITY, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), and params.

## ◆ gsm0808_create_vgcs_additional_info()

struct msgb * gsm0808_create_vgcs_additional_info | ( | const struct gsm0808_talker_identity * | ti | ) |

3GPP TS 48.008 §3.2.1.78 VGCS ADDITIONAL INFORMATION

Create BSSMAP VGCS ADDITIONAL INFORMATION message, 3GPP TS 48.008 3.2.1.78.

Sent from the MSC to the BSC to transfer talker identity.

References BSS_MAP_MSG_VGCS_ADDL_INFO, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_talker_identity(), msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_create_vgcs_queuing_ind()

struct msgb * gsm0808_create_vgcs_queuing_ind | ( | void |  | ) |

Create BSSMAP VGCS/VBS QUEUING INDICATION message, 3GPP TS 48.008 3.2.1.56.

Sent from the BSC to the MSC to indicate delay in assignment for a VGCS/VBS.

References BSS_MAP_MSG_VGCS_VBS_QUEUING_INDICATION, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, msg, msgb_alloc_headroom(), and msgb_tlv_put().

## ◆ gsm0808_create_vgcs_sms()

struct msgb * gsm0808_create_vgcs_sms | ( | const struct gsm0808_sms_to_vgcs * | sms | ) |

3GPP TS 48.008 §3.2.1.81 VGCS SMS

Create BSSMAP VGCS SMS message, 3GPP TS 48.008 3.2.1.81.

Sent from the MSC to the BSC to send an SMS to VGCS.

References BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, GSM0808_IE_VGCS_VBS_CELL_STATUS, msg, msgb_alloc_headroom(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), gsm0808_sms_to_vgcs::sms, and gsm0808_sms_to_vgcs::sms_len.

## ◆ gsm0808_create_vgcs_vbs_area_cell_info()

struct msgb * gsm0808_create_vgcs_vbs_area_cell_info | ( | const struct gsm0808_vgcs_vbs_area_cell_info * | params | ) |

Create BSSMAP VGCS/VBS AREA CELL INFO message, 3GPP TS 48.008 3.2.1.79.

Sent from the BSC to the MSC to transfer additional infos about cells.

References BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_RQST, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_assign_req(), gsm0808_enc_cell_id_list_segment(), GSM0808_IE_CELL_ID_LIST_SEGMENT, msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), msgb_v_put(), and params.

## ◆ gsm0808_create_vgcs_vbs_assign_fail()

struct msgb * gsm0808_create_vgcs_vbs_assign_fail | ( | const struct gsm0808_vgcs_vbs_assign_fail * | params | ) |

Create BSSMAP VGCS/VBS ASSIGNMENT FAILURE message, 3GPP TS 48.008 3.2.1.55.

Sent from the BSC to the MSC to indicate assignment failure for a VGCS/VBS.

References BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_FAILURE, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_cause(), gsm0808_enc_speech_codec_list2(), GSM0808_IE_CIRCUIT_POOL, GSM0808_IE_CIRCUIT_POOL_LIST, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), and params.

## ◆ gsm0808_create_vgcs_vbs_assign_req()

struct msgb * gsm0808_create_vgcs_vbs_assign_req | ( | const struct gsm0808_vgcs_vbs_assign_req * | params | ) |

Create BSSMAP VGCS/VBS ASSIGNMENT REQUEST message, 3GPP TS 48.008 3.2.1.53.

Sent from the MSC to the BSC to assign radio resources for a VGCS/VBS.

References BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_RQST, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_aoip_trasp_addr(), gsm0808_enc_assign_req(), gsm0808_enc_cell_id(), gsm0808_enc_cell_id_list_segment(), gsm0808_enc_channel_type(), gsm0808_enc_encrypt_info(), gsm0808_enc_group_callref(), gsm0808_enc_priority(), gsm0808_enc_speech_codec_list2(), GSM0808_IE_CALL_ID, GSM0808_IE_CELL_ID_LIST_SEGMENT, GSM0808_IE_CIRCUIT_IDENTITY_CODE, GSM0808_IE_DOWNLINK_DTX_FLAG, GSM0808_IE_VSTK_INFO, GSM0808_IE_VSTK_RAND_INFO, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_put(), msgb_tlv_put(), msgb_tv16_put(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), and params.

## ◆ gsm0808_create_vgcs_vbs_assign_res()

struct msgb * gsm0808_create_vgcs_vbs_assign_res | ( | const struct gsm0808_vgcs_vbs_assign_res * | params | ) |

Create BSSMAP VGCS/VBS ASSIGNMENT RESULT message, 3GPP TS 48.008 3.2.1.54.

Sent from the BSC to the MSC to indicate assignment/deassingment of radio resources for a VGCS/VBS.

References BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_RESULT, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_aoip_trasp_addr(), gsm0808_enc_cell_id(), gsm0808_enc_channel_type(), gsm0808_enc_speech_codec2(), GSM0808_IE_CALL_ID, GSM0808_IE_CHOSEN_CHANNEL, GSM0808_IE_CIRCUIT_IDENTITY_CODE, GSM0808_IE_CIRCUIT_POOL, msg, msgb_alloc_headroom(), msgb_free(), msgb_length(), msgb_put(), msgb_tv16_put(), msgb_tv_push(), msgb_tv_put(), msgb_v_put(), and params.

## ◆ gsm0808_create_vgcs_vbs_assign_stat()

struct msgb * gsm0808_create_vgcs_vbs_assign_stat | ( | const struct gsm0808_vgcs_vbs_assign_stat * | params | ) |

Create BSSMAP VGCS/VBS ASSIGNMENT STATUS message, 3GPP TS 48.008 3.2.1.80.

Sent from the BSC to the MSC to indicate assignment status for each cell.

References BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_STATUS, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_cell_id_list_segment(), GSM0808_IE_CELL_ID_LIST_SEG_CELLS_TBE, GSM0808_IE_CELL_ID_LIST_SEG_EST_CELLS, GSM0808_IE_CELL_ID_LIST_SEG_NE_CELLS, GSM0808_IE_CELL_ID_LIST_SEG_REL_CELLS, GSM0808_IE_VGCS_VBS_CELL_STATUS, msg, msgb_alloc_headroom(), msgb_length(), msgb_tlv_put(), msgb_tv_push(), msgb_v_put(), and params.

## ◆ gsm0808_create_vgcs_vbs_setup()

struct msgb * gsm0808_create_vgcs_vbs_setup | ( | const struct gsm0808_vgcs_vbs_setup * | params | ) |

Create BSSMAP VGCS/VBS SETUP message, 3GPP TS 48.008 3.2.1.50.

Sent from the MSC to the BSC to request VGCS/VBS call.

References BSS_MAP_MSG_VGCS_VBS_SETUP, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_group_callref(), gsm0808_enc_priority(), gsm0808_enc_vgcs_feature_flags(), msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), msgb_v_put(), and params.

## ◆ gsm0808_create_vgcs_vbs_setup_ack()

struct msgb * gsm0808_create_vgcs_vbs_setup_ack | ( | const struct gsm0808_vgcs_vbs_setup_ack * | params | ) |

Create BSSMAP VGCS/VBS SETUP ACK message, 3GPP TS 48.008 3.2.1.51.

Sent from the BSC to the MSC to confirm VGCS/VBS call.

References BSS_MAP_MSG_VGCS_VBS_SETUP_ACK, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, gsm0808_enc_vgcs_feature_flags(), msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), msgb_v_put(), and params.

## ◆ gsm0808_create_vgcs_vbs_setup_refuse()

struct msgb * gsm0808_create_vgcs_vbs_setup_refuse | ( | enum gsm0808_cause | cause | ) |

3GPP TS 48.008 §3.2.1.52 VGCS/VBS SETUP REFUSE

Create BSSMAP VGCS/VBS SETUP REFUSE message, 3GPP TS 48.008 3.2.1.52.

Sent from the BSC to the MSC to reject VGCS/VBS call.

References BSS_MAP_MSG_VGCS_VBS_SETUP_REFUSE, BSSAP_MSG_BSS_MANAGEMENT, BSSMAP_MSG_HEADROOM, BSSMAP_MSG_SIZE, cause, gsm0808_enc_cause(), msg, msgb_alloc_headroom(), msgb_length(), msgb_tv_push(), and msgb_v_put().

## ◆ gsm0808_current_channel_type_1()

static uint8_t gsm0808_current_channel_type_1 | ( | enum gsm_chan_t | type | ) |
| inline static

Returns
  3GPP TS 48.008 3.2.2.49 Current Channel Type 1 from enum gsm_chan_t.

References GSM_LCHAN_SDCCH, GSM_LCHAN_TCH_F, GSM_LCHAN_TCH_H, and type.

## ◆ gsm0808_dec_aoip_trasp_addr()

int gsm0808_dec_aoip_trasp_addr | ( | struct sockaddr_storage * | ss,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

## ◆ gsm0808_dec_assign_req()

int gsm0808_dec_assign_req | ( | enum gsm0808_assignment_requirement * | ar,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode Assignment Requirements IE (3GPP TS 48.008 3.2.2.52).

Parameters

  [out] | ar | Assignment Requirements enum to store data
  [in] | elem | IE value to be decoded.
  [in] | len | Length of elem in bytes.

Returns
  number of bytes parsed; negative on error

References len, and OSMO_ASSERT.

## ◆ gsm0808_dec_call_id()

int gsm0808_dec_call_id | ( | uint32_t * | ci,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode Call Identifier IE (3GPP TS 48.008 3.2.2.105).

Parameters

  [out] | ci | Call Identifier structure to store data
  [in] | elem | IE value to be decoded.
  [in] | len | Length of elem in bytes.

Returns
  number of bytes parsed; negative on error

References len, and OSMO_ASSERT.

## ◆ gsm0808_dec_cell_id()

int gsm0808_dec_cell_id | ( | struct gsm0808_cell_id * | ci,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode Cell Identifier IE (3GPP TS 48.008 3.2.2.17).

Parameters

  [out] | ci | Caller-provided memory to store Cell ID.
  [in] | elem | IE value to be decoded.
  [in] | len | Length of elem in bytes.

Returns
  number of bytes parsed; negative on error

References CELL_IDENT_BSS, CELL_IDENT_NO_CELL, gsm0808_dec_cell_id_list2(), gsm0808_cell_id::id, gsm0808_cell_id::id_discr, gsm0808_cell_id_list2::id_discr, gsm0808_cell_id_list2::id_list, gsm0808_cell_id_list2::id_list_len, and len.

Referenced by osmo_bssmap_le_ie_dec_cell_id().

## ◆ gsm0808_dec_cell_id_list()

int gsm0808_dec_cell_id_list | ( | struct gsm0808_cell_id_list * | cil,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

DEPRECATED: Use gsm0808_dec_cell_id_list2 instead.

Decode Cell Identifier List IE

Parameters

  [out] | cil | Caller-provided memory to store Cell ID list
  [in] | elem | IE value to be decoded
  [in] | len | Length of elem in bytes

Returns
  number of bytes parsed; negative on error

References CELL_IDENT_BSS, CELL_IDENT_LAC, gsm0808_cell_id_list::id_discr, gsm0808_cell_id_list::id_list_lac, gsm0808_cell_id_list::id_list_len, and len.

## ◆ gsm0808_dec_cell_id_list2()

int gsm0808_dec_cell_id_list2 | ( | struct gsm0808_cell_id_list2 * | cil,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode Cell Identifier List IE.

Parameters

  [out] | cil | Caller-provided memory to store Cell ID list
  [in] | elem | IE value to be decoded
  [in] | len | Length of elem in bytes

Returns
  number of bytes parsed; negative on error

References CELL_IDENT_BSS, CELL_IDENT_CI, CELL_IDENT_LAC, CELL_IDENT_LAC_AND_CI, CELL_IDENT_LAI_AND_LAC, CELL_IDENT_NO_CELL, CELL_IDENT_SAI, CELL_IDENT_UTRAN_LAC_RNC, CELL_IDENT_UTRAN_PLMN_LAC_RNC, CELL_IDENT_UTRAN_RNC, CELL_IDENT_WHOLE_GLOBAL, gsm0808_cell_id_list2::id_discr, gsm0808_cell_id_list2::id_list_len, len, parse_cell_id_ci_list(), parse_cell_id_global_list(), parse_cell_id_lac_and_ci_list(), parse_cell_id_lac_list(), parse_cell_id_lai_and_lac(), and parse_cell_id_sai_list().

Referenced by gsm0808_dec_cell_id(), and gsm0808_dec_cell_id_list_segment().

## ◆ gsm0808_dec_cell_id_list_segment()

int gsm0808_dec_cell_id_list_segment | ( | struct gsm0808_cell_id_list_segment * | ci,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode Cell Identifier List Segment IE (3GPP TS 48.008 3.2.2.27a).

Parameters

  [out] | ci | Cell Identifier List Segment structure to store data
  [in] | elem | IE value to be decoded.
  [in] | len | Length of elem in bytes.

Returns
  number of bytes parsed; negative on error

References gsm0808_cell_id_list_segment::cil, gsm0808_dec_cell_id_list2(), len, OSMO_ASSERT, gsm0808_cell_id_list_segment::seq_last, and gsm0808_cell_id_list_segment::seq_number.

## ◆ gsm0808_dec_channel_type()

int gsm0808_dec_channel_type | ( | struct gsm0808_channel_type * | ct,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode TS 08.08 Channel Type IE.

Parameters

  [out] | ct | Caller-provided memory to store channel type
  [in] | elem | IE Value to be decoded
  [in] | len | Length of elem in bytes

Returns
  number of bytes parsed; negative on error

See also 3GPP TS 48.008 3.2.2.11 Channel Type

References ARRAY_SIZE, gsm0808_channel_type::ch_indctr, gsm0808_channel_type::ch_rate_type, gsm0808_channel_type::data_asym_pref, gsm0808_channel_type::data_asym_pref_is_set, gsm0808_channel_type::data_rate, gsm0808_channel_type::data_rate_allowed, gsm0808_channel_type::data_rate_allowed_is_set, gsm0808_channel_type::data_transparent, ENOTSUP, GSM0808_CHAN_DATA, GSM0808_CHAN_SIGN, GSM0808_CHAN_SPEECH, GSM0808_CHAN_SPEECH_CTM_TEXT_TELEPHONY, len, gsm0808_channel_type::perm_spch, and gsm0808_channel_type::perm_spch_len.

## ◆ gsm0808_dec_data_identity()

int gsm0808_dec_data_identity | ( | struct gsm0808_data_identity * | ti,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode Data Identity IE (3GPP TS 48.008 3.2.2.99).

Parameters

  [out] | di | Data Identity structure to store data
  [in] | elem | IE value to be decoded.
  [in] | len | Length of elem in bytes.

Returns
  number of bytes parsed; negative on error

References len, and OSMO_ASSERT.

## ◆ gsm0808_dec_encrypt_info()

int gsm0808_dec_encrypt_info | ( | struct gsm0808_encrypt_info * | ei,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode TS 08.08 Encryption Information IE.

Parameters

  [out] | ei | Caller-provided memory to store encryption information
  [in] | elem | IE value to be decoded
  [in] | len | Length of elem in bytes

Returns
  number of bytes parsed; negative on error

References ENCRY_INFO_PERM_ALGO_MAXLEN, gsm0808_encrypt_info::key, gsm0808_encrypt_info::key_len, len, gsm0808_encrypt_info::perm_algo, and gsm0808_encrypt_info::perm_algo_len.

## ◆ gsm0808_dec_group_callref()

int gsm0808_dec_group_callref | ( | struct gsm0808_group_callref * | gc,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode Group Call Reference IE (3GPP TS 48.008 3.2.2.55).

Parameters

  [out] | gc | Group Call Reference structure to store data
  [in] | elem | IE value to be decoded.
  [in] | len | Length of elem in bytes.

Returns
  number of bytes parsed; negative on error

References len, and OSMO_ASSERT.

## ◆ gsm0808_dec_kc128()

int gsm0808_dec_kc128 | ( | uint8_t * | kc128,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode TS 48.008 Kc128 IE.

Parameters

  [out] | kc128 | Target buffer for received Kc128 key, 16 bytes long.
  [in] | elem | IE value to be decoded (without IE discriminator).
  [in] | len | Length of elem in bytes.

Returns
  number of bytes parsed; negative on error

References len.

## ◆ gsm0808_dec_lcls()

int gsm0808_dec_lcls | ( | struct osmo_lcls * | lcls,
|  | const struct tlv_parsed * | tp
| ) |  |

Decode LCLS parameters to a given msgb, 3GPP TS 48.008 §3.2.2.115 - 3.2.2.120.

Parameters

  [out] | lcls | Caller-provided memory to store LCLS-related data
  [in] | tp | IE values to be decoded

Returns
  GCR size or negative on error

References osmo_lcls::config, osmo_lcls::control, osmo_lcls::corr_needed, osmo_lcls::gcr, osmo_lcls::gcr_available, gsm0808_dec_gcr(), GSM0808_IE_LCLS_CONFIG, GSM0808_IE_LCLS_CONN_STATUS_CTRL, GSM0808_IE_LCLS_CORR_NOT_NEEDED, GSM0808_LCLS_CFG_NA, GSM0808_LCLS_CSC_NA, TLVP_PRESENT, and tlvp_val8().

## ◆ gsm0808_dec_msisdn()

int gsm0808_dec_msisdn | ( | char * | msisdn,
|  | const char * | elem,
|  | uint8_t | len
| ) |  |

Decode MSISDN IE (3GPP TS 48.008 3.2.2.101).

Parameters

  [out] | msisdn | MSISDN structure to store data
  [in] | elem | IE value to be decoded.
  [in] | len | Length of elem in bytes.

Returns
  number of bytes parsed; negative on error

References gsm48_decode_bcd_number(), len, MSISDN_MAXLEN, and OSMO_ASSERT.

## ◆ gsm0808_dec_osmux_cid()

int gsm0808_dec_osmux_cid | ( | uint8_t * | cid,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

References OSMO_DEPRECATED.

## ◆ gsm0808_dec_priority()

int gsm0808_dec_priority | ( | struct gsm0808_priority * | pri,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode Priority IE (3GPP TS 48.008 3.2.2.18).

Parameters

  [out] | pri | Priority structure to store data
  [in] | elem | IE value to be decoded.
  [in] | len | Length of elem in bytes.

Returns
  number of bytes parsed; negative on error

References len, and OSMO_ASSERT.

## ◆ gsm0808_dec_speech_codec()

int gsm0808_dec_speech_codec | ( | struct gsm0808_speech_codec * | sc,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode TS 08.08 Speech Codec IE.

Parameters

  [out] | sc | Caller-allocated memory for Speech Codec
  [in] | elem | IE value to be decoded
  [in] | len | Length of elem in bytes

Returns
  number of bytes parsed; negative on error

References gsm0808_speech_codec::cfg, gsm0808_speech_codec::fi, GSM0808_SCT_CSD, GSM0808_SCT_EXT, GSM0808_SCT_FR1, GSM0808_SCT_FR2, GSM0808_SCT_FR3, GSM0808_SCT_FR4, GSM0808_SCT_FR5, GSM0808_SCT_HR1, GSM0808_SCT_HR3, GSM0808_SCT_HR4, GSM0808_SCT_HR6, header, len, gsm0808_speech_codec::pi, gsm0808_speech_codec::pt, gsm0808_speech_codec::tf, and gsm0808_speech_codec::type.

Referenced by gsm0808_dec_speech_codec_list().

## ◆ gsm0808_dec_speech_codec_list()

int gsm0808_dec_speech_codec_list | ( | struct gsm0808_speech_codec_list * | scl,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode TS 08.08 Speech Codec list IE.

Parameters

  [out] | scl | Caller-provided memory to store codec list
  [in] | elem | IE value to be decoded
  [in] | len | Length of elem in bytes

Returns
  number of bytes parsed; negative on error

See also 3GPP TS 48.008 3.2.2.103 Speech Codec List

References ARRAY_SIZE, gsm0808_speech_codec_list::codec, gsm0808_dec_speech_codec(), len, and gsm0808_speech_codec_list::len.

## ◆ gsm0808_dec_talker_identity()

int gsm0808_dec_talker_identity | ( | struct gsm0808_talker_identity * | ti,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode Talker Identity IE (3GPP TS 48.008 3.2.2.91).

Parameters

  [out] | ti | Talker Identity structure to store data
  [in] | elem | IE value to be decoded.
  [in] | len | Length of elem in bytes.

Returns
  number of bytes parsed; negative on error

References gsm0808_talker_identity::id_bits, len, OSMO_ASSERT, gsm0808_talker_identity::talker_id, and TALKER_IDENTITY_MAXLEN.

## ◆ gsm0808_dec_vgcs_feature_flags()

int gsm0808_dec_vgcs_feature_flags | ( | struct gsm0808_vgcs_feature_flags * | ff,
|  | const uint8_t * | elem,
|  | uint8_t | len
| ) |  |

Decode VGCS Feature Flags IE (3GPP TS 48.008 3.2.2.88).

Parameters

  [out] | ff | VGCS Feature Flags structure to store data
  [in] | elem | IE value to be decoded.
  [in] | len | Length of elem in bytes.

Returns
  number of bytes parsed; negative on error

References len, and OSMO_ASSERT.

## ◆ gsm0808_decode_cell_id_u()

int gsm0808_decode_cell_id_u | ( | union gsm0808_cell_id_u * | out,
|  | enum CELL_IDENT | discr,
|  | const uint8_t * | buf,
|  | unsigned int | len
| ) |  |

Decode a single GSM 08.08 Cell ID list element payload.

Parameters

  [out] | out | caller-provided output union
  [in] | discr | Cell ID discriminator describing type to be decoded
  [in] | buf | User-provided input buffer containing binary Cell ID list element
  [in] | len | Length of buf

Returns
  0 on success; negative on error

References osmo_strbuf::buf, CELL_IDENT_BSS, CELL_IDENT_CI, CELL_IDENT_LAC, CELL_IDENT_LAC_AND_CI, CELL_IDENT_LAI_AND_LAC, CELL_IDENT_NO_CELL, CELL_IDENT_SAI, CELL_IDENT_WHOLE_GLOBAL, CELL_IDENT_WHOLE_GLOBAL_PS, osmo_cell_global_id::cell_identity, osmo_cell_global_id_ps::cell_identity, gsm0808_cell_id_u::ci, osmo_lac_and_ci_id::ci, decode_lai(), gsm0808_cell_id_u::global, gsm0808_cell_id_u::global_ps, gsm0808_cell_id_u::lac, osmo_lac_and_ci_id::lac, gsm0808_cell_id_u::lac_and_ci, osmo_cell_global_id::lai, osmo_service_area_id::lai, gsm0808_cell_id_u::lai_and_lac, len, osmo_routing_area_id::rac, osmo_cell_global_id_ps::rai, osmo_service_area_id::sac, and gsm0808_cell_id_u::sai.

Referenced by cbsp_decode_cell_list(), cbsp_decode_fail_list(), cbsp_decode_loading_list(), and cbsp_decode_num_compl_list().

## ◆ gsm0808_diagnostics_bit_location_str()

const char * gsm0808_diagnostics_bit_location_str | ( | uint8_t | bit_pointer | ) |

References str_buff.

## ◆ gsm0808_diagnostics_octet_location_str()

const char * gsm0808_diagnostics_octet_location_str | ( | uint8_t | pointer | ) |

References str_buff.

## ◆ gsm0808_enc_aoip_trasp_addr()

uint8_t gsm0808_enc_aoip_trasp_addr | ( | struct msgb * | msg,
|  | const struct sockaddr_storage * | ss
| ) |  |

Referenced by gsm0808_create_ass2(), gsm0808_create_ass_compl2(), gsm0808_create_handover_request(), gsm0808_create_handover_request_ack2(), gsm0808_create_vgcs_vbs_assign_req(), and gsm0808_create_vgcs_vbs_assign_res().

## ◆ gsm0808_enc_assign_req()

uint8_t gsm0808_enc_assign_req | ( | struct msgb * | msg,
|  | const enum gsm0808_assignment_requirement | ar
| ) |  |

Encode Assignment Requirements IE (3GPP TS 48.008 3.2.2.52).

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | ar | Assignment Requirement to be encoded

Returns
  number of bytes appended to msg

References GSM0808_IE_ASSIGNMENT_REQUIREMENT, msg, msgb_put(), msgb_put_u8(), and OSMO_ASSERT.

Referenced by gsm0808_create_vgcs_vbs_area_cell_info(), and gsm0808_create_vgcs_vbs_assign_req().

## ◆ gsm0808_enc_cause()

uint8_t gsm0808_enc_cause | ( | struct msgb * | msg,
|  | uint16_t | cause
| ) |  |

Referenced by gsm0808_create_ass_fail(), gsm0808_create_cipher_reject(), gsm0808_create_cipher_reject_ext(), gsm0808_create_clear_command(), gsm0808_create_clear_command2(), gsm0808_create_clear_rqst(), gsm0808_create_handover_failure(), gsm0808_create_handover_performed(), gsm0808_create_handover_request(), gsm0808_create_handover_required(), gsm0808_create_handover_required_reject(), gsm0808_create_reset(), gsm0808_create_sapi_reject_cause(), gsm0808_create_uplink_reject_cmd(), gsm0808_create_uplink_release_cmd(), gsm0808_create_uplink_release_ind(), gsm0808_create_uplink_seized_cmd(), gsm0808_create_vgcs_vbs_assign_fail(), gsm0808_create_vgcs_vbs_setup_refuse(), and osmo_bssmap_le_enc_reset().

## ◆ gsm0808_enc_cell_id()

uint8_t gsm0808_enc_cell_id | ( | struct msgb * | msg,
|  | const struct gsm0808_cell_id * | ci
| ) |  |

Encode Cell Identifier IE (3GPP TS 48.008 3.2.2.17).

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | ci | Cell ID to be encoded

Returns
  number of bytes appended to msg

References gsm0808_enc_cell_id_list2(), GSM0808_IE_CELL_IDENTIFIER, gsm0808_cell_id::id, gsm0808_cell_id::id_discr, gsm0808_cell_id_list2::id_discr, and msg.

Referenced by gsm0808_create_handover_command(), gsm0808_create_handover_performed(), gsm0808_create_handover_request(), gsm0808_create_uplink_app_data(), gsm0808_create_uplink_request(), gsm0808_create_uplink_request_cnf(), gsm0808_create_vgcs_vbs_assign_req(), gsm0808_create_vgcs_vbs_assign_res(), and osmo_bssmap_le_enc_perform_loc_req().

## ◆ gsm0808_enc_cell_id_list()

uint8_t gsm0808_enc_cell_id_list | ( | struct msgb * | msg,
|  | const struct gsm0808_cell_id_list * | cil
| ) |  |

DEPRECATED: Use gsm0808_enc_cell_id_list2 instead.

Encode TS 08.08 Cell Identifier List IE

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | cil | Cell ID List to be encoded

Returns
  number of bytes appended to msg

References CELL_ID_LIST_LAC_MAXLEN, CELL_IDENT_BSS, CELL_IDENT_LAC, GSM0808_IE_CELL_IDENTIFIER_LIST, gsm0808_cell_id_list::id_discr, gsm0808_cell_id_list::id_list_lac, gsm0808_cell_id_list::id_list_len, msg, msgb_put(), msgb_put_u16(), msgb_put_u8(), and OSMO_ASSERT.

## ◆ gsm0808_enc_cell_id_list2()

uint8_t gsm0808_enc_cell_id_list2 | ( | struct msgb * | msg,
|  | const struct gsm0808_cell_id_list2 * | cil
| ) |  |

Encode TS 08.08 Cell Identifier List IE.

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | cil | Cell ID List to be encoded

Returns
  number of bytes appended to msg

References cell_id_to_cgi(), CELL_IDENT_WHOLE_GLOBAL, CELL_IDENT_WHOLE_GLOBAL_PS, gsm0808_cell_id_u::global, GSM0808_CELL_ID_LIST2_MAXLEN, GSM0808_IE_CELL_IDENTIFIER_LIST, gsm0808_msgb_put_cell_id_u(), gsm0808_cell_id_list2::id_discr, gsm0808_cell_id_list2::id_list, gsm0808_cell_id_list2::id_list_len, msg, msgb_put(), msgb_put_u8(), and OSMO_ASSERT.

Referenced by gsm0808_create_handover_required(), gsm0808_create_paging2(), gsm0808_enc_cell_id(), gsm0808_enc_cell_id_list_segment(), and same_cell_id_list_entries().

## ◆ gsm0808_enc_cell_id_list_segment()

uint8_t gsm0808_enc_cell_id_list_segment | ( | struct msgb * | msg,
|  | uint8_t | ie_type,
|  | const struct gsm0808_cell_id_list_segment * | ci
| ) |  |

Encode Cell Identifier List Segment IE (3GPP TS 48.008 3.2.2.27a).

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | ie_type | Type of IE to use (5 different lists are specified.)
  [in] | ci | Cell Identifier List Segment to be encoded

Returns
  number of bytes appended to msg

References gsm0808_cell_id_list_segment::cil, gsm0808_enc_cell_id_list2(), msg, msgb_put(), msgb_put_u8(), OSMO_ASSERT, gsm0808_cell_id_list_segment::seq_last, and gsm0808_cell_id_list_segment::seq_number.

Referenced by gsm0808_create_vgcs_vbs_area_cell_info(), gsm0808_create_vgcs_vbs_assign_req(), and gsm0808_create_vgcs_vbs_assign_stat().

## ◆ gsm0808_enc_channel_type()

uint8_t gsm0808_enc_channel_type | ( | struct msgb * | msg,
|  | const struct gsm0808_channel_type * | ct
| ) |  |

Encode TS 08.08 Channel Type IE.

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | ct | Channel Type to be encoded

Returns
  number of bytes added to msg

See also 3GPP TS 48.008 3.2.2.11 Channel Type

References gsm0808_channel_type::ch_indctr, gsm0808_channel_type::ch_rate_type, CHANNEL_TYPE_ELEMENT_MAXLEN, gsm0808_channel_type::data_asym_pref, gsm0808_channel_type::data_asym_pref_is_set, gsm0808_channel_type::data_rate, gsm0808_channel_type::data_rate_allowed, gsm0808_channel_type::data_rate_allowed_is_set, gsm0808_channel_type::data_transparent, GSM0808_CHAN_DATA, GSM0808_CHAN_SIGN, GSM0808_CHAN_SPEECH, GSM0808_CHAN_SPEECH_CTM_TEXT_TELEPHONY, GSM0808_IE_CHANNEL_TYPE, msg, msgb_put(), msgb_put_u8(), OSMO_ASSERT, gsm0808_channel_type::perm_spch, and gsm0808_channel_type::perm_spch_len.

Referenced by gsm0808_create_ass2(), gsm0808_create_handover_request(), gsm0808_create_vgcs_vbs_assign_req(), and gsm0808_create_vgcs_vbs_assign_res().

## ◆ gsm0808_enc_data_identity()

uint8_t gsm0808_enc_data_identity | ( | struct msgb * | msg,
|  | const struct gsm0808_data_identity * | ti
| ) |  |

Encode Data Identity IE (3GPP TS 48.008 3.2.2.99).

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | di | Data Identity to be encoded

Returns
  number of bytes appended to msg

References GSM0808_IE_DATA_IDENTITY, msg, msgb_put(), msgb_put_u8(), and OSMO_ASSERT.

Referenced by gsm0808_create_notification_data().

## ◆ gsm0808_enc_encrypt_info()

uint8_t gsm0808_enc_encrypt_info | ( | struct msgb * | msg,
|  | const struct gsm0808_encrypt_info * | ei
| ) |  |

Encode TS 08.08 Encryption Information IE.

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | ei | Encryption Information to be encoded

Returns
  number of bytes appended to msg

References ARRAY_SIZE, ENCRY_INFO_PERM_ALGO_MAXLEN, GSM0808_IE_ENCRYPTION_INFORMATION, gsm0808_encrypt_info::key, gsm0808_encrypt_info::key_len, msg, msgb_put(), msgb_put_u8(), OSMO_ASSERT, gsm0808_encrypt_info::perm_algo, and gsm0808_encrypt_info::perm_algo_len.

Referenced by gsm0808_create_cipher2(), gsm0808_create_handover_request(), and gsm0808_create_vgcs_vbs_assign_req().

## ◆ gsm0808_enc_group_callref()

uint8_t gsm0808_enc_group_callref | ( | struct msgb * | msg,
|  | const struct gsm0808_group_callref * | gc
| ) |  |

Encode Group Call Reference IE (3GPP TS 48.008 3.2.2.55).

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | gc | Group Call Reference to be encoded

Returns
  number of bytes appended to msg

References GSM0808_IE_GROUP_CALL_REFERENCE, msg, msgb_put(), msgb_put_u8(), and OSMO_ASSERT.

Referenced by gsm0808_create_vgcs_vbs_assign_req(), and gsm0808_create_vgcs_vbs_setup().

## ◆ gsm0808_enc_kc128()

int gsm0808_enc_kc128 | ( | struct msgb * | msg,
|  | const uint8_t * | kc128
| ) |  |

Encode TS 48.008 Kc128 IE.

Parameters

  [out] | msg | Message Buffer to which IE is to be appended.
  [in] | kc128 | Pointer to 16 bytes of Kc128 key data.

Returns
  number of bytes appended to msg

References GSM0808_IE_KC_128, msg, msgb_tv_fixed_put(), and start.

Referenced by gsm0808_create_cipher2(), and gsm0808_create_handover_request().

## ◆ gsm0808_enc_lcls()

uint8_t gsm0808_enc_lcls | ( | struct msgb * | msg,
|  | const struct osmo_lcls * | lcls
| ) |  |

Add LCLS parameters to a given msgb, 3GPP TS 48.008 §3.2.2.115 - 3.2.2.120.

Parameters

  [out] | msg | Message Buffer for appending IE
  [in] | lcls | LCLS-related data

Returns
  number of bytes added to msg or 0 on error

References osmo_lcls::config, osmo_lcls::control, osmo_lcls::corr_needed, osmo_lcls::gcr, osmo_lcls::gcr_available, gsm0808_enc_gcr(), GSM0808_IE_LCLS_CONFIG, GSM0808_IE_LCLS_CONN_STATUS_CTRL, GSM0808_IE_LCLS_CORR_NOT_NEEDED, GSM0808_LCLS_CFG_NA, GSM0808_LCLS_CSC_NA, msg, msgb_tv_put(), and msgb_v_put().

Referenced by gsm0808_create_ass2().

## ◆ gsm0808_enc_lcs_cause()

int gsm0808_enc_lcs_cause | ( | struct msgb * | msg,
|  | const struct lcs_cause_ie * | lcs_cause
| ) |  |

References GSM0808_IE_LCS_CAUSE, l, msg, msgb_tl_put(), and osmo_lcs_cause_enc().

Referenced by gsm0808_create_perform_location_abort().

## ◆ gsm0808_enc_msisdn()

uint8_t gsm0808_enc_msisdn | ( | struct msgb * | msg,
|  | const char * | msisdn
| ) |  |

Encode MSISDN IE (3GPP TS 48.008 3.2.2.101).

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | msisdn | MSISDN to be encoded

Returns
  number of bytes appended to msg

References GSM0808_IE_MSISDN, gsm48_encode_bcd_number(), msg, msgb_put(), msgb_put_u8(), and OSMO_ASSERT.

Referenced by gsm0808_create_notification_data().

## ◆ gsm0808_enc_priority()

uint8_t gsm0808_enc_priority | ( | struct msgb * | msg,
|  | const struct gsm0808_priority * | pri
| ) |  |

Encode Priority IE (3GPP TS 48.008 3.2.2.18).

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | pri | Priority to be encoded

Returns
  number of bytes appended to msg

References GSM0808_IE_PRIORITY, msg, msgb_put(), msgb_put_u8(), and OSMO_ASSERT.

Referenced by gsm0808_create_vgcs_vbs_assign_req(), and gsm0808_create_vgcs_vbs_setup().

## ◆ gsm0808_enc_speech_codec()

uint8_t gsm0808_enc_speech_codec | ( | struct msgb * | msg,
|  | const struct gsm0808_speech_codec * | sc
| ) |  |

Deprecated: gsm0808_enc_speech_codec2() wrapper for backwards compatibility.

Mimics the old behavior: crash on missing and/or invalid input.

References gsm0808_enc_speech_codec2(), msg, and OSMO_ASSERT.

## ◆ gsm0808_enc_speech_codec2()

int gsm0808_enc_speech_codec2 | ( | struct msgb * | msg,
|  | const struct gsm0808_speech_codec * | sc
| ) |  |

Encode TS 08.08 Speech Codec IE.

Parameters

  [out] | msg | Message Buffer to which IE will be appended
  [in] | sc | Speech Codec to be encoded into IE

Returns
  number of bytes appended to msg; negative on error

See also 3GPP TS 48.008 3.2.2.103 Speech Codec List

References enc_speech_codec(), GSM0808_IE_SPEECH_CODEC, msg, msgb_put(), and msgb_put_u8().

Referenced by gsm0808_create_ass_compl2(), gsm0808_create_handover_complete(), gsm0808_create_handover_performed(), gsm0808_create_handover_request_ack2(), gsm0808_create_vgcs_vbs_assign_res(), and gsm0808_enc_speech_codec().

## ◆ gsm0808_enc_speech_codec_list()

uint8_t gsm0808_enc_speech_codec_list | ( | struct msgb * | msg,
|  | const struct gsm0808_speech_codec_list * | scl
| ) |  |

Deprecated: gsm0808_enc_speech_codec_list2() wrapper for backwards compatibility.

Mimics the old behavior: crash on missing and/or invalid input.

References gsm0808_enc_speech_codec_list2(), msg, and OSMO_ASSERT.

## ◆ gsm0808_enc_speech_codec_list2()

int gsm0808_enc_speech_codec_list2 | ( | struct msgb * | msg,
|  | const struct gsm0808_speech_codec_list * | scl
| ) |  |

Encode TS 08.08 Speech Codec list.

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | scl | Speech Codec List to be encoded into IE

Returns
  number of bytes added to msg; negative on error

See also 3GPP TS 48.008 3.2.2.103 Speech Codec List

References gsm0808_speech_codec_list::codec, enc_speech_codec(), GSM0808_IE_SPEECH_CODEC_LIST, gsm0808_speech_codec_list::len, msg, msgb_put(), and msgb_put_u8().

Referenced by gsm0808_create_ass2(), gsm0808_create_ass_compl2(), gsm0808_create_ass_fail(), gsm0808_create_handover_complete(), gsm0808_create_handover_failure(), gsm0808_create_handover_request(), gsm0808_create_handover_request_ack2(), gsm0808_create_layer3_2(), gsm0808_create_vgcs_vbs_assign_fail(), gsm0808_create_vgcs_vbs_assign_req(), and gsm0808_enc_speech_codec_list().

## ◆ gsm0808_enc_talker_identity()

uint8_t gsm0808_enc_talker_identity | ( | struct msgb * | msg,
|  | const struct gsm0808_talker_identity * | ti
| ) |  |

Encode Talker Identity IE (3GPP TS 48.008 3.2.2.91).

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | ti | Talker Identity to be encoded

Returns
  number of bytes appended to msg

References GSM0808_IE_TALKER_IDENTITY, gsm0808_talker_identity::id_bits, msg, msgb_put(), msgb_put_u8(), OSMO_ASSERT, and gsm0808_talker_identity::talker_id.

Referenced by gsm0808_create_uplink_reject_cmd(), gsm0808_create_uplink_request_ack(), gsm0808_create_uplink_request_cnf(), gsm0808_create_uplink_seized_cmd(), and gsm0808_create_vgcs_additional_info().

## ◆ gsm0808_enc_vgcs_feature_flags()

uint8_t gsm0808_enc_vgcs_feature_flags | ( | struct msgb * | msg,
|  | const struct gsm0808_vgcs_feature_flags * | ff
| ) |  |

Encode VGCS Feature Flags IE (3GPP TS 48.008 3.2.2.88).

Parameters

  [out] | msg | Message Buffer to which IE is to be appended
  [in] | ff | VGCS Feature Flags to be encoded

Returns
  number of bytes appended to msg

References GSM0808_IE_VGCS_FEATURE_FLAGS, msg, msgb_put(), msgb_put_u8(), and OSMO_ASSERT.

Referenced by gsm0808_create_vgcs_vbs_setup(), and gsm0808_create_vgcs_vbs_setup_ack().

## ◆ gsm0808_get_cause()

enum gsm0808_cause gsm0808_get_cause | ( | const struct tlv_parsed * | tp | ) |

Parse Cause TLV 3GPP TS 08.08 §3.2.2.5.

Returns
  Cause value

References gsm0808_cause_ext(), GSM0808_IE_CAUSE, TLVP_LEN, and TLVP_VAL_MINLEN.

Referenced by gsm0808_get_cipher_reject_cause(), and osmo_bssmap_le_dec_reset().

## ◆ gsm0808_get_cipher_reject_cause()

int gsm0808_get_cipher_reject_cause | ( | const struct tlv_parsed * | tp | ) |

References gsm0808_get_cause().

## ◆ gsm0808_lcls_config_name()

static const char * gsm0808_lcls_config_name | ( | enum gsm0808_lcls_config | val | ) |
| inline static

References get_value_string(), and gsm0808_lcls_config_names.

Referenced by osmo_lcls_dump_buf().

## ◆ gsm0808_lcls_control_name()

static const char * gsm0808_lcls_control_name | ( | enum gsm0808_lcls_control | val | ) |
| inline static

References get_value_string(), and gsm0808_lcls_control_names.

Referenced by osmo_lcls_dump_buf().

## ◆ gsm0808_lcls_status_name()

static const char * gsm0808_lcls_status_name | ( | enum gsm0808_lcls_status | val | ) |
| inline static

References get_value_string(), and gsm0808_lcls_status_names.

## ◆ gsm0808_msgb_put_cell_id_u()

void gsm0808_msgb_put_cell_id_u | ( | struct msgb * | msg,
|  | enum CELL_IDENT | id_discr,
|  | const union gsm0808_cell_id_u * | u
| ) |  |

References CELL_IDENT_BSS, CELL_IDENT_CI, CELL_IDENT_LAC, CELL_IDENT_LAC_AND_CI, CELL_IDENT_LAI_AND_LAC, CELL_IDENT_NO_CELL, CELL_IDENT_SAI, CELL_IDENT_WHOLE_GLOBAL, CELL_IDENT_WHOLE_GLOBAL_PS, osmo_cell_global_id::cell_identity, osmo_cell_global_id_ps::cell_identity, gsm0808_cell_id_u::ci, osmo_lac_and_ci_id::ci, gsm0808_cell_id_u::global, gsm0808_cell_id_u::global_ps, gsm48_generate_lai2(), gsm0808_cell_id_u::lac, osmo_routing_area_id::lac, osmo_lac_and_ci_id::lac, gsm0808_cell_id_u::lac_and_ci, osmo_cell_global_id::lai, osmo_service_area_id::lai, lai, gsm0808_cell_id_u::lai_and_lac, msg, msgb_put(), msgb_put_u16(), OSMO_ASSERT, osmo_routing_area_id::rac, osmo_cell_global_id_ps::rai, osmo_service_area_id::sac, and gsm0808_cell_id_u::sai.

Referenced by gsm0808_enc_cell_id_list2(), msgb_put_cbsp_cell_list(), msgb_put_cbsp_fail_list(), msgb_put_cbsp_loading_list(), and msgb_put_cbsp_num_compl_list().

## ◆ gsm0808_permitted_speech()

static enum gsm0808_permitted_speech gsm0808_permitted_speech | ( | enum gsm_chan_t | type,
|  | enum gsm48_chan_mode | mode
| ) |  |
| inline static

Return 3GPP TS 48.008 3.2.2.51 Speech Version aka permitted speech version indication in 3.2.2.11 Channel Type.

References GSM0808_PERM_FR1, GSM0808_PERM_FR2, GSM0808_PERM_FR3, GSM0808_PERM_FR4, GSM0808_PERM_FR5, GSM0808_PERM_HR1, GSM0808_PERM_HR2, GSM0808_PERM_HR3, GSM0808_PERM_HR4, GSM0808_PERM_HR6, GSM48_CMODE_SPEECH_AMR, GSM48_CMODE_SPEECH_EFR, GSM48_CMODE_SPEECH_V1, GSM48_CMODE_SPEECH_V4, GSM48_CMODE_SPEECH_V5, GSM48_CMODE_SPEECH_V6, GSM_LCHAN_TCH_F, GSM_LCHAN_TCH_H, mode, MODE_TYPE, and type.

## ◆ gsm0808_prepend_dtap_header()

void gsm0808_prepend_dtap_header | ( | struct msgb * | msg,
|  | uint8_t | link_id
| ) |  |

Prepend a DTAP header to given Message Buffer.

Parameters

  [in] | msgb | Message Buffer
  [in] | link_id | Link Identifier

References BSSAP_MSG_DTAP, link_id, msg, and msgb_push().

## ◆ gsm0808_sc_cfg_from_gsm48_mr_cfg()

uint16_t gsm0808_sc_cfg_from_gsm48_mr_cfg | ( | const struct gsm48_multi_rate_conf * | cfg,
|  | bool | fr
| ) |  |

Determine a set of AMR speech codec configuration bits (S0-S15) from a given GSM 04.08 AMR configuration struct.

Parameters

  [in] | cfg | AMR configuration in GSM 04.08 format.
  [in] | hint | if the resulting configuration shall be used with a FR or HR TCH.

Returns
  configuration bits (S0-S15)

References GSM0808_SC_CFG_DEFAULT_AMR_10_2, GSM0808_SC_CFG_DEFAULT_AMR_12_2, GSM0808_SC_CFG_DEFAULT_AMR_4_75, GSM0808_SC_CFG_DEFAULT_AMR_5_15, GSM0808_SC_CFG_DEFAULT_AMR_5_90, GSM0808_SC_CFG_DEFAULT_AMR_6_70, GSM0808_SC_CFG_DEFAULT_AMR_7_40, GSM0808_SC_CFG_DEFAULT_AMR_7_95, GSM0808_SC_CFG_DEFAULT_FR_AMR, and GSM0808_SC_CFG_DEFAULT_HR_AMR.

## ◆ gsm0808_speech_codec_from_chan_type()

int gsm0808_speech_codec_from_chan_type | ( | struct gsm0808_speech_codec * | sc,
|  | uint8_t | perm_spch
| ) |  |

Extrapolate a speech codec field from a given permitted speech parameter (channel type).

Parameters

  [out] | sc | Caller provided memory to store the resulting speech codec
  [in] | perm_spch | value that is used to derive the speech codec info (see also: enum gsm0808_speech_codec_type in gsm0808_utils.h)

Returns
  zero when successful; negative on error

References gsm0808_speech_codec::cfg, gsm0808_speech_codec::fi, gsm0808_chan_type_to_speech_codec(), GSM0808_SC_CFG_DEFAULT_FR_AMR, GSM0808_SC_CFG_DEFAULT_FR_AMR_WB, GSM0808_SC_CFG_DEFAULT_HR_AMR, GSM0808_SC_CFG_DEFAULT_OFR_AMR_WB, GSM0808_SC_CFG_DEFAULT_OHR_AMR, GSM0808_SC_CFG_DEFAULT_OHR_AMR_WB, GSM0808_SCT_FR3, GSM0808_SCT_FR4, GSM0808_SCT_FR5, GSM0808_SCT_HR3, GSM0808_SCT_HR4, GSM0808_SCT_HR6, and gsm0808_speech_codec::type.

## ◆ gsm48_mr_cfg_from_gsm0808_sc_cfg()

int gsm48_mr_cfg_from_gsm0808_sc_cfg | ( | struct gsm48_multi_rate_conf * | cfg,
|  | uint16_t | s15_s0
| ) |  |

Determine a GSM 04.08 AMR configuration struct from a set of speech codec configuration bits (S0-S15)

Parameters

  [out] | cfg | AMR configuration in GSM 04.08 format.
  [in] | s15_s0 | configuration bits (S15-S0, non-ambiguous).

Returns
  zero when successful; negative on error

References GSM0808_SC_CFG_AMR_10_2, GSM0808_SC_CFG_AMR_12_2, GSM0808_SC_CFG_AMR_4_75, GSM0808_SC_CFG_AMR_4_75_5_90_7_40_12_20, GSM0808_SC_CFG_AMR_5_90, GSM0808_SC_CFG_AMR_6_70, GSM0808_SC_CFG_AMR_7_40, and GSM0808_SC_CFG_AMR_7_95.

## ◆ osmo_gcr_dump()

char * osmo_gcr_dump | ( | const struct osmo_lcls * | lcls | ) |

Dump GCR struct into static string buffer for printing.

Parameters

  [in] | lcls | pointer to the struct to print.

Returns
  string representation of GCR in static buffer or NULL on error.

References dbuf, and osmo_gcr_dump_buf().

## ◆ osmo_gcr_dump_buf()

char * osmo_gcr_dump_buf | ( | char * | buf,
|  | size_t | buf_len,
|  | const struct osmo_lcls * | lcls
| ) |  |

Dump GCR struct into string for printing.

Parameters

  [out] | buf | caller-allocated output string buffer
  [in] | buf_len | size of buf in bytes
  [in] | lcls | pointer to the struct to print.

Returns
  string representation of GCR or NULL on error.

References osmo_strbuf::buf, osmo_gcr_parsed::cr, dbuf, osmo_lcls::gcr, osmo_lcls::gcr_available, osmo_gcr_parsed::net, osmo_gcr_parsed::net_len, osmo_gcr_parsed::node, osmo_hexdump_nospc(), and OSMO_STRBUF_PRINTF.

Referenced by osmo_gcr_dump().

## ◆ osmo_lcls_dump()

char * osmo_lcls_dump | ( | const struct osmo_lcls * | lcls | ) |

Dump LCLS parameters (GCR excluded) into static string buffer for printing.

Parameters

  [in] | lcls | pointer to the struct to print.

Returns
  string representation of LCLS in static buffer or NULL on error.

References dbuf, and osmo_lcls_dump_buf().

## ◆ osmo_lcls_dump_buf()

char * osmo_lcls_dump_buf | ( | char * | buf,
|  | size_t | buf_len,
|  | const struct osmo_lcls * | lcls
| ) |  |

Dump LCLS parameters (GCR excluded) into string for printing.

Parameters

  [out] | buf | caller-allocated output string buffer
  [in] | buf_len | size of buf in bytes
  [in] | lcls | pointer to the struct to print.

Returns
  string representation of LCLS or NULL on error.

References osmo_strbuf::buf, osmo_lcls::config, osmo_lcls::control, osmo_lcls::corr_needed, dbuf, gsm0808_lcls_config_name(), gsm0808_lcls_control_name(), and OSMO_STRBUF_PRINTF.

Referenced by osmo_lcls_dump(), and osmo_lcls_dump_c().

## ◆ osmo_lcls_dump_c()

char * osmo_lcls_dump_c | ( | void * | ctx,
|  | const struct osmo_lcls * | lcls
| ) |  |

References osmo_strbuf::buf, and osmo_lcls_dump_buf().

## ◆ put_old_bss_to_new_bss_information()

static uint8_t put_old_bss_to_new_bss_information | ( | struct msgb * | msg,
|  | const struct gsm0808_old_bss_to_new_bss_info * | i
| ) |  |
| static

References gsm0808_old_bss_to_new_bss_info::current_channel_type_2, gsm0808_old_bss_to_new_bss_info::current_channel_type_2_present, gsm0808_old_bss_to_new_bss_info::extra_information, gsm0808_old_bss_to_new_bss_info::extra_information_present, gsm0808_old_bss_to_new_bss_info::field, GSM0808_FE_IE_CURRENT_CHANNEL_TYPE_2, GSM0808_FE_IE_EXTRA_INFORMATION, GSM0808_FE_IE_LAST_USED_EUTRAN_PLMN_ID, GSM0808_IE_OLD_BSS_TO_NEW_BSS_INFORMATION, gsm0808_old_bss_to_new_bss_info::last_eutran_plmn_id, gsm0808_old_bss_to_new_bss_info::last_eutran_plmn_id_present, gsm0808_old_bss_to_new_bss_info::lcs, gsm0808_old_bss_to_new_bss_info::mode, msg, msgb_put(), msgb_put_u8(), msgb_tlv_put(), osmo_plmn_to_bcd(), gsm0808_old_bss_to_new_bss_info::prec, and gsm0808_old_bss_to_new_bss_info::ue_prob.

Referenced by gsm0808_create_handover_request(), and gsm0808_create_handover_required().

## Variable Documentation

## ◆ __attribute__

struct osmo_lcls __attribute__

## ◆ bss_att_tlvdef

const struct tlv_definition bss_att_tlvdef
| static

Referenced by gsm0808_att_tlvdef().

## ◆ gsm0406_dlci_sapi_names

const struct value_string gsm0406_dlci_sapi_names[]

Initial value:
= {
{ DLCI_SAPI_RR_MM_CC, "RR/MM/CC" },
{ DLCI_SAPI_SMS, "SMS" },
{ 0, NULL }
}
DLCI_SAPI_RR_MM_CC
@ DLCI_SAPI_RR_MM_CC
Definition: gsm_08_08.h:67
DLCI_SAPI_SMS
@ DLCI_SAPI_SMS
Definition: gsm_08_08.h:68

Referenced by gsm0406_dlci_sapi_name().

## ◆ gsm0808_amr_mode_names

const struct value_string gsm0808_amr_mode_names[]

Initial value:
= {
{ GSM0808_AMR_MODE_4_75, "4.75" },
{ GSM0808_AMR_MODE_5_15, "5.15" },
{ GSM0808_AMR_MODE_5_90, "5.90" },
{ GSM0808_AMR_MODE_6_70, "6.70" },
{ GSM0808_AMR_MODE_7_40, "7.40" },
{ GSM0808_AMR_MODE_7_95, "7.95" },
{ GSM0808_AMR_MODE_10_2, "10.2" },
{ GSM0808_AMR_MODE_12_2, "12.2" },
{}
}
GSM0808_AMR_MODE_10_2
@ GSM0808_AMR_MODE_10_2
Definition: gsm_08_08.h:712
GSM0808_AMR_MODE_6_70
@ GSM0808_AMR_MODE_6_70
Definition: gsm_08_08.h:709
GSM0808_AMR_MODE_12_2
@ GSM0808_AMR_MODE_12_2
Definition: gsm_08_08.h:713
GSM0808_AMR_MODE_7_95
@ GSM0808_AMR_MODE_7_95
Definition: gsm_08_08.h:711
GSM0808_AMR_MODE_5_90
@ GSM0808_AMR_MODE_5_90
Definition: gsm_08_08.h:708
GSM0808_AMR_MODE_4_75
@ GSM0808_AMR_MODE_4_75
Definition: gsm_08_08.h:706
GSM0808_AMR_MODE_5_15
@ GSM0808_AMR_MODE_5_15
Definition: gsm_08_08.h:707
GSM0808_AMR_MODE_7_40
@ GSM0808_AMR_MODE_7_40
Definition: gsm_08_08.h:710

Referenced by gsm0808_amr_mode_name().

## ◆ gsm0808_amr_modes_from_cfg

const uint8_t gsm0808_amr_modes_from_cfg[2][16]

## ◆ gsm0808_bssap_names

const struct value_string gsm0808_bssap_names[]
| static

Initial value:
= {
{ BSSAP_MSG_BSS_MANAGEMENT, "MANAGEMENT" },
{ BSSAP_MSG_DTAP, "DTAP" },
{ 0, NULL }
}
BSSAP_MSG_BSS_MANAGEMENT
@ BSSAP_MSG_BSS_MANAGEMENT
Definition: gsm_08_08.h:38
BSSAP_MSG_DTAP
@ BSSAP_MSG_DTAP
Definition: gsm_08_08.h:39

Referenced by gsm0808_bssap_name().

## ◆ gsm0808_cause_class_names

const struct value_string gsm0808_cause_class_names[]
| static

Initial value:
= {
{ GSM0808_CAUSE_CLASS_NORM0, "Normal event" },
{ GSM0808_CAUSE_CLASS_NORM1, "Normal event" },
{ GSM0808_CAUSE_CLASS_RES_UNAVAIL, "Resource unavailable" },
{ GSM0808_CAUSE_CLASS_SRV_OPT_NA, "Service or option not available" },
{ GSM0808_CAUSE_CLASS_SRV_OPT_NIMPL, "Service or option not implemented" },
{ GSM0808_CAUSE_CLASS_INVAL, "Invalid message" },
{ GSM0808_CAUSE_CLASS_PERR, "Protocol error" },
{ GSM0808_CAUSE_CLASS_INTW, "Interworking" },
{ 0, NULL }
}
GSM0808_CAUSE_CLASS_NORM1
@ GSM0808_CAUSE_CLASS_NORM1
Definition: gsm_08_08.h:436
GSM0808_CAUSE_CLASS_INVAL
@ GSM0808_CAUSE_CLASS_INVAL
Definition: gsm_08_08.h:440
GSM0808_CAUSE_CLASS_SRV_OPT_NIMPL
@ GSM0808_CAUSE_CLASS_SRV_OPT_NIMPL
Definition: gsm_08_08.h:439
GSM0808_CAUSE_CLASS_RES_UNAVAIL
@ GSM0808_CAUSE_CLASS_RES_UNAVAIL
Definition: gsm_08_08.h:437
GSM0808_CAUSE_CLASS_SRV_OPT_NA
@ GSM0808_CAUSE_CLASS_SRV_OPT_NA
Definition: gsm_08_08.h:438
GSM0808_CAUSE_CLASS_PERR
@ GSM0808_CAUSE_CLASS_PERR
Definition: gsm_08_08.h:441
GSM0808_CAUSE_CLASS_INTW
@ GSM0808_CAUSE_CLASS_INTW
Definition: gsm_08_08.h:442
GSM0808_CAUSE_CLASS_NORM0
@ GSM0808_CAUSE_CLASS_NORM0
Definition: gsm_08_08.h:435

Referenced by gsm0808_cause_class_name().

## ◆ gsm0808_cause_names

const struct value_string gsm0808_cause_names[]
| static

Referenced by gsm0808_cause_name().

## ◆ gsm0808_cell_id_discr_names

const struct value_string gsm0808_cell_id_discr_names[]
| extern

value_string[] for enum CELL_IDENT.

Referenced by gsm0808_cell_id_discr_name().

## ◆ gsm0808_chosen_enc_alg_names

const struct value_string gsm0808_chosen_enc_alg_names[]

Initial value:
= {
{ GSM0808_ALG_ID_A5_0, "A5/0" },
{ GSM0808_ALG_ID_A5_1, "A5/1" },
{ GSM0808_ALG_ID_A5_2, "A5/2" },
{ GSM0808_ALG_ID_A5_3, "A5/3" },
{ GSM0808_ALG_ID_A5_4, "A5/4" },
{ GSM0808_ALG_ID_A5_5, "A5/5" },
{ GSM0808_ALG_ID_A5_6, "A5/6" },
{ GSM0808_ALG_ID_A5_7, "A5/7" },
{ 0, NULL }
}
GSM0808_ALG_ID_A5_0
@ GSM0808_ALG_ID_A5_0
Definition: gsm_08_08.h:573
GSM0808_ALG_ID_A5_7
@ GSM0808_ALG_ID_A5_7
Definition: gsm_08_08.h:580
GSM0808_ALG_ID_A5_4
@ GSM0808_ALG_ID_A5_4
Definition: gsm_08_08.h:577
GSM0808_ALG_ID_A5_5
@ GSM0808_ALG_ID_A5_5
Definition: gsm_08_08.h:578
GSM0808_ALG_ID_A5_6
@ GSM0808_ALG_ID_A5_6
Definition: gsm_08_08.h:579
GSM0808_ALG_ID_A5_2
@ GSM0808_ALG_ID_A5_2
Definition: gsm_08_08.h:575
GSM0808_ALG_ID_A5_1
@ GSM0808_ALG_ID_A5_1
Definition: gsm_08_08.h:574
GSM0808_ALG_ID_A5_3
@ GSM0808_ALG_ID_A5_3
Definition: gsm_08_08.h:576

## ◆ gsm0808_lcls_config_names [1/2]

const struct value_string gsm0808_lcls_config_names[]
| extern

Referenced by gsm0808_lcls_config_name().

## ◆ gsm0808_lcls_config_names [2/2]

const struct value_string gsm0808_lcls_config_names[]

Initial value:
= {
{ GSM0808_LCLS_CFG_BOTH_WAY, "Connect both-way" },
{ GSM0808_LCLS_CFG_BOTH_WAY_AND_BICAST_UL,
"Connect both-way, bi-cast UL to CN" },
{ GSM0808_LCLS_CFG_BOTH_WAY_AND_SEND_DL,
"Connect both-way, send access DL from CN" },
{ GSM0808_LCLS_CFG_BOTH_WAY_AND_SEND_DL_BLOCK_LOCAL_DL,
"Connect both-way, send access DL from CN, block local DL" },
{ GSM0808_LCLS_CFG_BOTH_WAY_AND_BICAST_UL_SEND_DL,
"Connect both-way, bi-cast UL to CN, send access DL from CN" },
{ GSM0808_LCLS_CFG_BOTH_WAY_AND_BICAST_UL_SEND_DL_BLOCK_LOCAL_DL,
"Connect both-way, bi-cast UL to CN, send access DL from CN, block local DL" },
{ GSM0808_LCLS_CFG_NA, "Not available" },
{ 0, NULL }
}
GSM0808_LCLS_CFG_NA
@ GSM0808_LCLS_CFG_NA
Definition: gsm_08_08.h:789
GSM0808_LCLS_CFG_BOTH_WAY_AND_SEND_DL_BLOCK_LOCAL_DL
@ GSM0808_LCLS_CFG_BOTH_WAY_AND_SEND_DL_BLOCK_LOCAL_DL
Definition: gsm_08_08.h:786
GSM0808_LCLS_CFG_BOTH_WAY
@ GSM0808_LCLS_CFG_BOTH_WAY
Definition: gsm_08_08.h:783
GSM0808_LCLS_CFG_BOTH_WAY_AND_BICAST_UL
@ GSM0808_LCLS_CFG_BOTH_WAY_AND_BICAST_UL
Definition: gsm_08_08.h:784
GSM0808_LCLS_CFG_BOTH_WAY_AND_BICAST_UL_SEND_DL
@ GSM0808_LCLS_CFG_BOTH_WAY_AND_BICAST_UL_SEND_DL
Definition: gsm_08_08.h:787
GSM0808_LCLS_CFG_BOTH_WAY_AND_SEND_DL
@ GSM0808_LCLS_CFG_BOTH_WAY_AND_SEND_DL
Definition: gsm_08_08.h:785
GSM0808_LCLS_CFG_BOTH_WAY_AND_BICAST_UL_SEND_DL_BLOCK_LOCAL_DL
@ GSM0808_LCLS_CFG_BOTH_WAY_AND_BICAST_UL_SEND_DL_BLOCK_LOCAL_DL
Definition: gsm_08_08.h:788

Referenced by gsm0808_lcls_config_name().

## ◆ gsm0808_lcls_control_names [1/2]

const struct value_string gsm0808_lcls_control_names[]
| extern

Referenced by gsm0808_lcls_control_name().

## ◆ gsm0808_lcls_control_names [2/2]

const struct value_string gsm0808_lcls_control_names[]

Initial value:
= {
{ GSM0808_LCLS_CSC_CONNECT, "Connect" },
{ GSM0808_LCLS_CSC_DO_NOT_CONNECT, "Do not connect" },
{ GSM0808_LCLS_CSC_RELEASE_LCLS, "Release LCLS" },
{ GSM0808_LCLS_CSC_BICAST_UL_AT_HANDOVER, "Bi-cast UL at Handover" },
{ GSM0808_LCLS_CSC_BICAST_UL_AND_RECV_DL_AT_HANDOVER, "Bi-cast UL and receive DL at Handover" },
{ GSM0808_LCLS_CSC_NA, "Not available" },
{ 0, NULL }
}
GSM0808_LCLS_CSC_RELEASE_LCLS
@ GSM0808_LCLS_CSC_RELEASE_LCLS
Definition: gsm_08_08.h:796
GSM0808_LCLS_CSC_BICAST_UL_AT_HANDOVER
@ GSM0808_LCLS_CSC_BICAST_UL_AT_HANDOVER
Definition: gsm_08_08.h:797
GSM0808_LCLS_CSC_DO_NOT_CONNECT
@ GSM0808_LCLS_CSC_DO_NOT_CONNECT
Definition: gsm_08_08.h:795
GSM0808_LCLS_CSC_BICAST_UL_AND_RECV_DL_AT_HANDOVER
@ GSM0808_LCLS_CSC_BICAST_UL_AND_RECV_DL_AT_HANDOVER
Definition: gsm_08_08.h:798
GSM0808_LCLS_CSC_CONNECT
@ GSM0808_LCLS_CSC_CONNECT
Definition: gsm_08_08.h:794
GSM0808_LCLS_CSC_NA
@ GSM0808_LCLS_CSC_NA
Definition: gsm_08_08.h:799

Referenced by gsm0808_lcls_control_name().

## ◆ gsm0808_lcls_status_names [1/2]

const struct value_string gsm0808_lcls_status_names[]
| extern

Referenced by gsm0808_lcls_status_name().

## ◆ gsm0808_lcls_status_names [2/2]

const struct value_string gsm0808_lcls_status_names[]

Initial value:
= {
{ GSM0808_LCLS_STS_NOT_YET_LS, "Call not yet locally switched" },
{ GSM0808_LCLS_STS_NOT_POSSIBLE_LS, "Call not possible to be locally switched" },
{ GSM0808_LCLS_STS_NO_LONGER_LS, "Call is no longer locally switched" },
{ GSM0808_LCLS_STS_REQ_LCLS_NOT_SUPP, "Requested LCLS configuration is not supported" },
{ GSM0808_LCLS_STS_LOCALLY_SWITCHED, "Call is locally switched with requested LCLS config" },
{ GSM0808_LCLS_STS_NA, "Not available" },
{ 0, NULL }
}
GSM0808_LCLS_STS_NA
@ GSM0808_LCLS_STS_NA
Definition: gsm_08_08.h:809
GSM0808_LCLS_STS_LOCALLY_SWITCHED
@ GSM0808_LCLS_STS_LOCALLY_SWITCHED
Definition: gsm_08_08.h:808
GSM0808_LCLS_STS_NOT_YET_LS
@ GSM0808_LCLS_STS_NOT_YET_LS
Definition: gsm_08_08.h:804
GSM0808_LCLS_STS_NO_LONGER_LS
@ GSM0808_LCLS_STS_NO_LONGER_LS
Definition: gsm_08_08.h:806
GSM0808_LCLS_STS_NOT_POSSIBLE_LS
@ GSM0808_LCLS_STS_NOT_POSSIBLE_LS
Definition: gsm_08_08.h:805
GSM0808_LCLS_STS_REQ_LCLS_NOT_SUPP
@ GSM0808_LCLS_STS_REQ_LCLS_NOT_SUPP
Definition: gsm_08_08.h:807

Referenced by gsm0808_lcls_status_name().

## ◆ gsm0808_msgt_names

const struct value_string gsm0808_msgt_names[]
| static

Referenced by gsm0808_bssmap_name().

## ◆ gsm0808_old_bss_to_new_bss_info_att_tlvdef [1/2]

const struct tlv_definition gsm0808_old_bss_to_new_bss_info_att_tlvdef
| extern

## ◆ gsm0808_old_bss_to_new_bss_info_att_tlvdef [2/2]

const struct tlv_definition gsm0808_old_bss_to_new_bss_info_att_tlvdef

Initial value:
= {
.def = {
[GSM0808_FE_IE_EXTRA_INFORMATION] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_CURRENT_CHANNEL_TYPE_2] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_TARGET_CELL_RADIO_INFORMATION] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_GPRS_SUSPEND_INFORMATION] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_MULTIRATE_CONFIGURATION_INFORMATION] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_DUAL_TRANSFER_MODE_INFORMATION] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_INTER_RAT_HANDOVER_INFO] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_CDMA2000_CAPABILITY_INFORMATION] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_DOWNLINK_CELL_LOAD_INFORMATION] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_UPLINK_CELL_LOAD_INFORMATION] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_CELL_LOAD_INFORMATION_GROUP] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_CELL_LOAD_INFORMATION] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_PS_INDICATION] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_DTM_HANDOVER_COMMAND_INDICATION] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_D_RNTI] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_IRAT_MEASUREMENT_CONFIGURATION] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_SOURCE_CELL_ID] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_IRAT_MEASUREMENT_CONFIGURATION_EXTENDED_E_ARFCNS] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_VGCS_TALKER_MODE] = { TLV_TYPE_TLV },
[GSM0808_FE_IE_LAST_USED_EUTRAN_PLMN_ID] = { TLV_TYPE_FIXED, 3 },
},
}
TLV_TYPE_TLV
@ TLV_TYPE_TLV
tag-length-value
Definition: tlv.h:513
TLV_TYPE_FIXED
@ TLV_TYPE_FIXED
fixed-length value-only
Definition: tlv.h:510
GSM0808_FE_IE_GPRS_SUSPEND_INFORMATION
@ GSM0808_FE_IE_GPRS_SUSPEND_INFORMATION
Definition: gsm_08_08.h:347
GSM0808_FE_IE_DUAL_TRANSFER_MODE_INFORMATION
@ GSM0808_FE_IE_DUAL_TRANSFER_MODE_INFORMATION
Definition: gsm_08_08.h:349
GSM0808_FE_IE_DTM_HANDOVER_COMMAND_INDICATION
@ GSM0808_FE_IE_DTM_HANDOVER_COMMAND_INDICATION
Definition: gsm_08_08.h:357
GSM0808_FE_IE_UPLINK_CELL_LOAD_INFORMATION
@ GSM0808_FE_IE_UPLINK_CELL_LOAD_INFORMATION
Definition: gsm_08_08.h:353
GSM0808_FE_IE_SOURCE_CELL_ID
@ GSM0808_FE_IE_SOURCE_CELL_ID
Definition: gsm_08_08.h:360
GSM0808_FE_IE_INTER_RAT_HANDOVER_INFO
@ GSM0808_FE_IE_INTER_RAT_HANDOVER_INFO
Definition: gsm_08_08.h:350
GSM0808_FE_IE_LAST_USED_EUTRAN_PLMN_ID
@ GSM0808_FE_IE_LAST_USED_EUTRAN_PLMN_ID
Definition: gsm_08_08.h:363
GSM0808_FE_IE_CELL_LOAD_INFORMATION
@ GSM0808_FE_IE_CELL_LOAD_INFORMATION
Definition: gsm_08_08.h:355
GSM0808_FE_IE_CELL_LOAD_INFORMATION_GROUP
@ GSM0808_FE_IE_CELL_LOAD_INFORMATION_GROUP
Definition: gsm_08_08.h:354
GSM0808_FE_IE_D_RNTI
@ GSM0808_FE_IE_D_RNTI
Definition: gsm_08_08.h:358
GSM0808_FE_IE_EXTRA_INFORMATION
@ GSM0808_FE_IE_EXTRA_INFORMATION
Definition: gsm_08_08.h:344
GSM0808_FE_IE_PS_INDICATION
@ GSM0808_FE_IE_PS_INDICATION
Definition: gsm_08_08.h:356
GSM0808_FE_IE_CDMA2000_CAPABILITY_INFORMATION
@ GSM0808_FE_IE_CDMA2000_CAPABILITY_INFORMATION
Definition: gsm_08_08.h:351
GSM0808_FE_IE_IRAT_MEASUREMENT_CONFIGURATION
@ GSM0808_FE_IE_IRAT_MEASUREMENT_CONFIGURATION
Definition: gsm_08_08.h:359
GSM0808_FE_IE_TARGET_CELL_RADIO_INFORMATION
@ GSM0808_FE_IE_TARGET_CELL_RADIO_INFORMATION
Definition: gsm_08_08.h:346
GSM0808_FE_IE_CURRENT_CHANNEL_TYPE_2
@ GSM0808_FE_IE_CURRENT_CHANNEL_TYPE_2
Definition: gsm_08_08.h:345
GSM0808_FE_IE_DOWNLINK_CELL_LOAD_INFORMATION
@ GSM0808_FE_IE_DOWNLINK_CELL_LOAD_INFORMATION
Definition: gsm_08_08.h:352
GSM0808_FE_IE_VGCS_TALKER_MODE
@ GSM0808_FE_IE_VGCS_TALKER_MODE
Definition: gsm_08_08.h:362
GSM0808_FE_IE_IRAT_MEASUREMENT_CONFIGURATION_EXTENDED_E_ARFCNS
@ GSM0808_FE_IE_IRAT_MEASUREMENT_CONFIGURATION_EXTENDED_E_ARFCNS
Definition: gsm_08_08.h:361
GSM0808_FE_IE_MULTIRATE_CONFIGURATION_INFORMATION
@ GSM0808_FE_IE_MULTIRATE_CONFIGURATION_INFORMATION
Definition: gsm_08_08.h:348

## ◆ gsm0808_permitted_speech_names

const struct value_string gsm0808_permitted_speech_names[]

Initial value:
= {
{ GSM0808_PERM_FR1, "FR1" },
{ GSM0808_PERM_FR2, "FR2" },
{ GSM0808_PERM_FR3, "FR3" },
{ GSM0808_PERM_FR4, "FR4" },
{ GSM0808_PERM_FR5, "FR5" },
{ GSM0808_PERM_HR1, "HR1" },
{ GSM0808_PERM_HR2, "HR2" },
{ GSM0808_PERM_HR3, "HR3" },
{ GSM0808_PERM_HR4, "HR4" },
{ GSM0808_PERM_HR6, "HR6" },
{ 0, NULL }
}
GSM0808_PERM_FR2
@ GSM0808_PERM_FR2
GSM EFR.
Definition: gsm_08_08.h:496
GSM0808_PERM_HR6
@ GSM0808_PERM_HR6
OHR AMR.
Definition: gsm_08_08.h:504
GSM0808_PERM_FR1
@ GSM0808_PERM_FR1
GSM FR.
Definition: gsm_08_08.h:495
GSM0808_PERM_HR1
@ GSM0808_PERM_HR1
GSM HR.
Definition: gsm_08_08.h:500
GSM0808_PERM_HR4
@ GSM0808_PERM_HR4
OHR AMR-WB.
Definition: gsm_08_08.h:503
GSM0808_PERM_HR3
@ GSM0808_PERM_HR3
HR AMR.
Definition: gsm_08_08.h:502
GSM0808_PERM_HR2
@ GSM0808_PERM_HR2
(deprecated)
Definition: gsm_08_08.h:501
GSM0808_PERM_FR3
@ GSM0808_PERM_FR3
FR AMR.
Definition: gsm_08_08.h:497
GSM0808_PERM_FR4
@ GSM0808_PERM_FR4
OFR AMR-WB.
Definition: gsm_08_08.h:498
GSM0808_PERM_FR5
@ GSM0808_PERM_FR5
FR AMR-WB.
Definition: gsm_08_08.h:499

Referenced by gsm0808_permitted_speech_name().

## ◆ gsm0808_speech_codec_type_names

const struct value_string gsm0808_speech_codec_type_names[]

Initial value:
= {
{ GSM0808_SCT_FR1, "FR1" },
{ GSM0808_SCT_FR2, "FR2" },
{ GSM0808_SCT_FR3, "FR3" },
{ GSM0808_SCT_FR4, "FR4" },
{ GSM0808_SCT_FR5, "FR5" },
{ GSM0808_SCT_HR1, "HR1" },
{ GSM0808_SCT_HR3, "HR3" },
{ GSM0808_SCT_HR4, "HR4" },
{ GSM0808_SCT_HR6, "HR6" },
{ GSM0808_SCT_EXT, "Codec Extension" },
{ GSM0808_SCT_CSD, "CSD" },
{ 0, NULL }
}
GSM0808_SCT_HR4
@ GSM0808_SCT_HR4
OHR AMR-WB.
Definition: gsm_08_08.h:556
GSM0808_SCT_FR3
@ GSM0808_SCT_FR3
FR AMR.
Definition: gsm_08_08.h:551
GSM0808_SCT_HR6
@ GSM0808_SCT_HR6
OHR AMR.
Definition: gsm_08_08.h:557
GSM0808_SCT_FR5
@ GSM0808_SCT_FR5
FR AMR-WB.
Definition: gsm_08_08.h:553
GSM0808_SCT_HR3
@ GSM0808_SCT_HR3
HR_AMR.
Definition: gsm_08_08.h:555
GSM0808_SCT_CSD
@ GSM0808_SCT_CSD
CSData (see also TS 26.103)
Definition: gsm_08_08.h:558
GSM0808_SCT_FR4
@ GSM0808_SCT_FR4
OFR AMR-WB.
Definition: gsm_08_08.h:552
GSM0808_SCT_FR1
@ GSM0808_SCT_FR1
GSM FR.
Definition: gsm_08_08.h:549
GSM0808_SCT_HR1
@ GSM0808_SCT_HR1
GSM_HR.
Definition: gsm_08_08.h:554
GSM0808_SCT_FR2
@ GSM0808_SCT_FR2
GSM EFR.
Definition: gsm_08_08.h:550
GSM0808_SCT_EXT
#define GSM0808_SCT_EXT
Definition: gsm_08_08.h:565

Referenced by gsm0808_speech_codec_type_name().

## ◆ MNC

void to not lose leading zeros in the MNC

## ◆ str_buff

__thread char str_buff[512]
| static

Char buffer to return strings from functions.

Referenced by gsm0808_diagnostics_bit_location_str(), and gsm0808_diagnostics_octet_location_str().