libosmogsm  0.9.6.20171026
Osmocom GSM library
gsm48_ie.h
Go to the documentation of this file.
1 
3 #pragma once
4 
5 #include <stdint.h>
6 #include <string.h>
7 #include <errno.h>
8 
9 #include <osmocom/core/msgb.h>
10 #include <osmocom/gsm/tlv.h>
11 #include <osmocom/gsm/mncc.h>
13 
14 /* decode a 'called/calling/connect party BCD number' as in 10.5.4.7 */
15 int gsm48_decode_bcd_number(char *output, int output_len,
16  const uint8_t *bcd_lv, int h_len);
17 
18 /* convert a ASCII phone number to 'called/calling/connect party BCD number' */
19 int gsm48_encode_bcd_number(uint8_t *bcd_lv, uint8_t max_len,
20  int h_len, const char *input);
21 /* decode 'bearer capability' */
23  const uint8_t *lv);
24 /* encode 'bearer capability' */
25 int gsm48_encode_bearer_cap(struct msgb *msg, int lv_only,
26  const struct gsm_mncc_bearer_cap *bcap);
27 /* decode 'call control cap' */
28 int gsm48_decode_cccap(struct gsm_mncc_cccap *ccap, const uint8_t *lv);
29 /* encode 'call control cap' */
30 int gsm48_encode_cccap(struct msgb *msg,
31  const struct gsm_mncc_cccap *ccap);
32 /* decode 'called party BCD number' */
33 int gsm48_decode_called(struct gsm_mncc_number *called,
34  const uint8_t *lv);
35 /* encode 'called party BCD number' */
36 int gsm48_encode_called(struct msgb *msg,
37  const struct gsm_mncc_number *called);
38 /* decode callerid of various IEs */
39 int gsm48_decode_callerid(struct gsm_mncc_number *callerid,
40  const uint8_t *lv);
41 /* encode callerid of various IEs */
42 int gsm48_encode_callerid(struct msgb *msg, int ie, int max_len,
43  const struct gsm_mncc_number *callerid);
44 /* decode 'cause' */
46  const uint8_t *lv);
47 /* encode 'cause' */
48 int gsm48_encode_cause(struct msgb *msg, int lv_only,
49  const struct gsm_mncc_cause *cause);
50 /* decode 'calling number' */
51 int gsm48_decode_calling(struct gsm_mncc_number *calling,
52  const uint8_t *lv);
53 /* encode 'calling number' */
54 int gsm48_encode_calling(struct msgb *msg,
55  const struct gsm_mncc_number *calling);
56 /* decode 'connected number' */
57 int gsm48_decode_connected(struct gsm_mncc_number *connected,
58  const uint8_t *lv);
59 /* encode 'connected number' */
60 int gsm48_encode_connected(struct msgb *msg,
61  const struct gsm_mncc_number *connected);
62 /* decode 'redirecting number' */
63 int gsm48_decode_redirecting(struct gsm_mncc_number *redirecting,
64  const uint8_t *lv);
65 /* encode 'redirecting number' */
66 int gsm48_encode_redirecting(struct msgb *msg,
67  const struct gsm_mncc_number *redirecting);
68 /* decode 'facility' */
69 int gsm48_decode_facility(struct gsm_mncc_facility *facility,
70  const uint8_t *lv);
71 /* encode 'facility' */
72 int gsm48_encode_facility(struct msgb *msg, int lv_only,
73  const struct gsm_mncc_facility *facility);
74 /* decode 'notify' */
75 int gsm48_decode_notify(int *notify, const uint8_t *v);
76 /* encode 'notify' */
77 int gsm48_encode_notify(struct msgb *msg, int notify);
78 /* decode 'signal' */
79 int gsm48_decode_signal(int *signal, const uint8_t *v);
80 /* encode 'signal' */
81 int gsm48_encode_signal(struct msgb *msg, int signal);
82 /* decode 'keypad' */
83 int gsm48_decode_keypad(int *keypad, const uint8_t *lv);
84 /* encode 'keypad' */
85 int gsm48_encode_keypad(struct msgb *msg, int keypad);
86 /* decode 'progress' */
87 int gsm48_decode_progress(struct gsm_mncc_progress *progress,
88  const uint8_t *lv);
89 /* encode 'progress' */
90 int gsm48_encode_progress(struct msgb *msg, int lv_only,
91  const struct gsm_mncc_progress *p);
92 /* decode 'user-user' */
94  const uint8_t *lv);
95 /* encode 'useruser' */
96 int gsm48_encode_useruser(struct msgb *msg, int lv_only,
97  const struct gsm_mncc_useruser *uu);
98 /* decode 'ss version' */
100  const uint8_t *lv);
101 /* encode 'ss version' */
102 int gsm48_encode_ssversion(struct msgb *msg,
103  const struct gsm_mncc_ssversion *ssv);
104 /* decode 'more data' does not require a function, because it has no value */
105 /* encode 'more data' */
106 int gsm48_encode_more(struct msgb *msg);
107 
108 /* structure of one frequency */
110  /* if the frequency included in the sysinfo */
111  uint8_t mask;
112 };
113 
114 /* decode "Cell Channel Description" (10.5.2.1b) and other frequency lists */
115 int gsm48_decode_freq_list(struct gsm_sysinfo_freq *f, uint8_t *cd,
116  uint8_t len, uint8_t mask, uint8_t frqt);
int gsm48_decode_redirecting(struct gsm_mncc_number *redirecting, const uint8_t *lv)
Decode TS 04.08 Redirecting Number IE (10.5.4.21b)
Definition: gsm48_ie.c:569
Definition: mncc.h:67
Definition: mncc.h:56
int gsm48_encode_facility(struct msgb *msg, int lv_only, const struct gsm_mncc_facility *facility)
Encode TS 04.08 Facility IE (10.5.4.15)
Definition: gsm48_ie.c:601
int gsm48_encode_keypad(struct msgb *msg, int keypad)
Encode TS 04.08 Keypad IE (10.5.4.17)
Definition: gsm48_ie.c:665
Definition: mncc.h:41
uint8_t cause
Definition: gsm_04_08.h:93
int gsm48_decode_connected(struct gsm_mncc_number *connected, const uint8_t *lv)
Decode TS 04.08 Connected Number IE (10.5.4.13)
Definition: gsm48_ie.c:555
int gsm48_encode_signal(struct msgb *msg, int signal)
Encode TS 04.08 Signal IE (10.5.4.23)
Definition: gsm48_ie.c:644
int gsm48_decode_notify(int *notify, const uint8_t *v)
Decode TS 04.08 Notify IE (10.5.4.20)
Definition: gsm48_ie.c:620
int gsm48_encode_notify(struct msgb *msg, int notify)
Encode TS 04.08 Notify IE (10.5.4.20)
Definition: gsm48_ie.c:628
int gsm48_encode_useruser(struct msgb *msg, int lv_only, const struct gsm_mncc_useruser *uu)
Encode TS 04.08 User-User IE (10.5.4.25)
Definition: gsm48_ie.c:732
int gsm48_encode_more(struct msgb *msg)
Encode TS 04.08 More Data IE (10.5.4.19)
Definition: gsm48_ie.c:785
int gsm48_decode_ssversion(struct gsm_mncc_ssversion *ssv, const uint8_t *lv)
Decode TS 04.08 SS Version IE (10.5.4.24)
Definition: gsm48_ie.c:752
int gsm48_encode_cccap(struct msgb *msg, const struct gsm_mncc_cccap *ccap)
Encodoe TS 04.08 Call Control Capabilities (10.5.4.5a)
Definition: gsm48_ie.c:320
int gsm48_encode_connected(struct msgb *msg, const struct gsm_mncc_number *connected)
Encode TS 04.08 Connected Number IE (10.5.4.13)
Definition: gsm48_ie.c:562
GSM TS 04.08 definitions.
int gsm48_encode_bcd_number(uint8_t *bcd_lv, uint8_t max_len, int h_len, const char *input)
convert a ASCII phone number to &#39;called/calling/connect party BCD number&#39;
Definition: gsm48_ie.c:95
int gsm48_encode_called(struct msgb *msg, const struct gsm_mncc_number *called)
Encode TS 04.08 Called Party IE (10.5.4.7)
Definition: gsm48_ie.c:363
int gsm48_encode_cause(struct msgb *msg, int lv_only, const struct gsm_mncc_cause *cause)
Encode TS 04.08 Cause IE (10.5.4.11)
Definition: gsm48_ie.c:501
int gsm48_decode_calling(struct gsm_mncc_number *calling, const uint8_t *lv)
Decode TS 04.08 Calling Number IE (10.5.4.9)
Definition: gsm48_ie.c:541
Definition: mncc.h:72
int gsm48_encode_bearer_cap(struct msgb *msg, int lv_only, const struct gsm_mncc_bearer_cap *bcap)
Encode TS 04.08 Bearer Capability IE (10.5.4.5)
Definition: gsm48_ie.c:244
Definition: mncc.h:33
int gsm48_decode_keypad(int *keypad, const uint8_t *lv)
Decode TS 04.08 Keypad IE (10.5.4.17)
Definition: gsm48_ie.c:652
uint8_t mask
Definition: gsm48_ie.h:111
uint8_t len
Definition: gsm_04_11.h:434
Definition: mncc.h:51
int gsm48_encode_calling(struct msgb *msg, const struct gsm_mncc_number *calling)
Encode TS 04.08 Calling Number IE (10.5.4.9)
Definition: gsm48_ie.c:548
int gsm48_encode_progress(struct msgb *msg, int lv_only, const struct gsm_mncc_progress *p)
Encode TS 04.08 Progress IE (10.5.4.21)
Definition: gsm48_ie.c:689
int gsm48_decode_bcd_number(char *output, int output_len, const uint8_t *bcd_lv, int h_len)
decode a &#39;called/calling/connect party BCD number&#39; as in 10.5.4.7
Definition: gsm48_ie.c:52
int gsm48_encode_redirecting(struct msgb *msg, const struct gsm_mncc_number *redirecting)
Encode TS 04.08 Redirecting Number IE (10.5.4.21b)
Definition: gsm48_ie.c:576
int gsm48_decode_cause(struct gsm_mncc_cause *cause, const uint8_t *lv)
Decode TS 04.08 Cause IE (10.5.4.11)
Definition: gsm48_ie.c:454
Definition: mncc.h:12
int gsm48_decode_signal(int *signal, const uint8_t *v)
Decode TS 04.08 Signal IE (10.5.4.23)
Definition: gsm48_ie.c:636
int gsm48_encode_callerid(struct msgb *msg, int ie, int max_len, const struct gsm_mncc_number *callerid)
Encode TS 04.08 Caller ID IE.
Definition: gsm48_ie.c:420
int gsm48_decode_useruser(struct gsm_mncc_useruser *uu, const uint8_t *lv)
Decode TS 04.08 User-User IE (10.5.4.25)
Definition: gsm48_ie.c:706
int gsm48_decode_progress(struct gsm_mncc_progress *progress, const uint8_t *lv)
Decode TS 04.08 Progress IE (10.5.4.21)
Definition: gsm48_ie.c:673
int gsm48_decode_bearer_cap(struct gsm_mncc_bearer_cap *bcap, const uint8_t *lv)
Decode TS 04.08 Bearer Capability IE (10.5.4.5)
Definition: gsm48_ie.c:131
int gsm48_decode_called(struct gsm_mncc_number *called, const uint8_t *lv)
Decode TS 04.08 Called Party BCD Number IE (10.5.4.7)
Definition: gsm48_ie.c:341
int gsm48_decode_cccap(struct gsm_mncc_cccap *ccap, const uint8_t *lv)
Decode TS 04.08 Call Control Capabilities IE (10.5.4.5a)
Definition: gsm48_ie.c:302
Definition: gsm48_ie.h:109
int gsm48_decode_facility(struct gsm_mncc_facility *facility, const uint8_t *lv)
Decode TS 04.08 Facility IE (10.5.4.15)
Definition: gsm48_ie.c:583
int gsm48_decode_freq_list(struct gsm_sysinfo_freq *f, uint8_t *cd, uint8_t len, uint8_t mask, uint8_t frqt)
Decode TS 04.08 Cell Channel Description IE (10.5.2.1b) and other frequency lists.
Definition: gsm48_ie.c:812
int gsm48_decode_callerid(struct gsm_mncc_number *callerid, const uint8_t *lv)
Decode TS 04.08 Caller ID.
Definition: gsm48_ie.c:388
Definition: mncc.h:62
int gsm48_encode_ssversion(struct msgb *msg, const struct gsm_mncc_ssversion *ssv)
Encode TS 04.08 SS Version IE (10.5.4.24)
Definition: gsm48_ie.c:767