libosmogsm  0.9.6.277-11f2
Osmocom GSM library
 All Data Structures Files Functions Variables Enumerations Enumerator Modules Pages
gsm0808_utils.h
1 /* (C) 2016 by Sysmocom s.f.m.c. GmbH
2  * All Rights Reserved
3  *
4  * Author: Philipp Maier
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU Affero General Public License as published by
8  * the Free Software Foundation; either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU Affero General Public License for more details.
15  *
16  * You should have received a copy of the GNU Affero General Public License
17  * along with this program. If not, see <http://www.gnu.org/licenses/>.
18  *
19  */
20 #pragma once
21 
22 struct sockaddr_storage;
23 
24 #include <osmocom/gsm/protocol/gsm_08_08.h>
25 
26 /* Encode AoIP transport address element */
27 uint8_t gsm0808_enc_aoip_trasp_addr(struct msgb *msg,
28  const struct sockaddr_storage *ss);
29 
30 /* Decode AoIP transport address element */
31 int gsm0808_dec_aoip_trasp_addr(struct sockaddr_storage *ss,
32  const uint8_t *elem, uint8_t len);
33 
34 /* Encode Speech Codec element */
35 uint8_t gsm0808_enc_speech_codec(struct msgb *msg,
36  const struct gsm0808_speech_codec *sc);
37 
38 /* Decode Speech Codec element */
39 int gsm0808_dec_speech_codec(struct gsm0808_speech_codec *sc,
40  const uint8_t *elem, uint8_t len);
41 
42 /* Encode Speech Codec list */
43 uint8_t gsm0808_enc_speech_codec_list(struct msgb *msg,
44  const struct gsm0808_speech_codec_list
45  *scl);
46 
47 /* Decode Speech Codec list */
48 int gsm0808_dec_speech_codec_list(struct gsm0808_speech_codec_list *scl,
49  const uint8_t *elem, uint8_t len);
50 
51 /* Encode Channel Type element */
52 uint8_t gsm0808_enc_channel_type(struct msgb *msg,
53  const struct gsm0808_channel_type *ct);
54 
55 /* Decode Channel Type element */
56 int gsm0808_dec_channel_type(struct gsm0808_channel_type *ct,
57  const uint8_t *elem, uint8_t len);
58 
59 /* Encode Encryption Information element */
60 uint8_t gsm0808_enc_encrypt_info(struct msgb *msg,
61  const struct gsm0808_encrypt_info *ei);
62 
63 /* Decode Encryption Information element */
64 int gsm0808_dec_encrypt_info(struct gsm0808_encrypt_info *ei,
65  const uint8_t *elem, uint8_t len);
66 
67 /* Encode Cell Identifier List element */
68 uint8_t gsm0808_enc_cell_id_list(struct msgb *msg,
69  const struct gsm0808_cell_id_list *cil);
70 
71 /* Decode Cell Identifier List element */
72 int gsm0808_dec_cell_id_list(struct gsm0808_cell_id_list *cil,
73  const uint8_t *elem, uint8_t len);
74 
75 /* Convert the representation of the permitted speech codec identifier
76  * that is used in struct gsm0808_channel_type to the speech codec
77  * representation we use in struct gsm0808_speech_codec */
78 int gsm0808_convert_to_speech_codec_type(uint8_t perm_spch);
79 
80 /* Extrapolate a speech codec field from a given permitted speech parameter */
81 int gsm0808_extrapolate_speech_codec(struct gsm0808_speech_codec *sc,
82  uint8_t perm_spch);