blob: eee869266d91ca2ad360d71a83897eabeb39812a [file] [log] [blame]
Oliver Smith10632132023-05-12 12:14:22 +02001/* 3GPP TS 122.002 Bearer Services */
2#pragma once
3
4#include <osmocom/gsm/mncc.h>
5#include <osmocom/gsm/protocol/gsm_08_08.h>
6
7enum csd_bs {
8 CSD_BS_NONE,
9
10 /* 3.1.1.1.2 */
11 CSD_BS_21_T_V110_0k3,
12 CSD_BS_22_T_V110_1k2,
13 CSD_BS_24_T_V110_2k4,
14 CSD_BS_25_T_V110_4k8,
15 CSD_BS_26_T_V110_9k6,
16
17 /* 3.1.1.2.2 */
18 CSD_BS_21_NT_V110_0k3,
19 CSD_BS_22_NT_V110_1k2,
20 CSD_BS_24_NT_V110_2k4,
21 CSD_BS_25_NT_V110_4k8,
22 CSD_BS_26_NT_V110_9k6,
23
24 /* 3.1.2.1.2 */
25 CSD_BS_31_T_V110_1k2,
26 CSD_BS_32_T_V110_2k4,
27 CSD_BS_33_T_V110_4k8,
28 CSD_BS_34_T_V110_9k6,
29
30 CSD_BS_MAX,
31};
32
33struct csd_bs_list {
34 unsigned int count;
35 enum csd_bs bs[CSD_BS_MAX];
36};
37
38void csd_bs_list_add_bs(struct csd_bs_list *list, enum csd_bs bs);
39int csd_bs_list_to_bearer_cap(struct gsm_mncc_bearer_cap *cap, const struct csd_bs_list *list);
40void csd_bs_list_from_bearer_cap(struct csd_bs_list *list, const struct gsm_mncc_bearer_cap *cap);
41
42int csd_bs_to_str_buf(char *buf, size_t buflen, enum csd_bs bs);
43char *csd_bs_to_str_c(void *ctx, enum csd_bs bs);
44const char *csd_bs_to_str(enum csd_bs bs);
45
46int csd_bs_list_to_str_buf(char *buf, size_t buflen, const struct csd_bs_list *list);
47char *csd_bs_list_to_str_c(void *ctx, const struct csd_bs_list *list);
48const char *csd_bs_list_to_str(const struct csd_bs_list *list);
49
50void csd_bs_list_add_bs(struct csd_bs_list *list, enum csd_bs bs);
51void csd_bs_list_remove(struct csd_bs_list *list, enum csd_bs bs);
52void csd_bs_list_intersection(struct csd_bs_list *dest, const struct csd_bs_list *other);
53
54int csd_bs_list_to_gsm0808_channel_type(struct gsm0808_channel_type *ct, const struct csd_bs_list *list);