\doxysection{gsm\+\_\+08\+\_\+08.\+h}
\label{gsm__08__08_8h_source}\index{include/osmocom/gsm/protocol/gsm\_08\_08.h@{include/osmocom/gsm/protocol/gsm\_08\_08.h}}
\textbf{ Go to the documentation of this file.}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* From GSM08.08 / 3GPP TS 48.008 version 11.7.0 Release 11 */}}
\DoxyCodeLine{2 }
\DoxyCodeLine{3 \textcolor{preprocessor}{\#pragma once}}
\DoxyCodeLine{4 }
\DoxyCodeLine{5 \textcolor{preprocessor}{\#include <stdlib.h>}}
\DoxyCodeLine{6 \textcolor{preprocessor}{\#include <stdbool.h>}}
\DoxyCodeLine{7 \textcolor{preprocessor}{\#include <stdint.h>}}
\DoxyCodeLine{8 \textcolor{preprocessor}{\#include <osmocom/core/linuxlist.h>}}
\DoxyCodeLine{9 \textcolor{preprocessor}{\#include <osmocom/core/utils.h>}}
\DoxyCodeLine{10 \textcolor{preprocessor}{\#include <osmocom/core/endian.h>}}
\DoxyCodeLine{11 }
\DoxyCodeLine{12 \textcolor{comment}{/*}}
\DoxyCodeLine{13 \textcolor{comment}{ * this is from GSM 03.03 CGI but is copied in GSM 08.08}}
\DoxyCodeLine{14 \textcolor{comment}{ * in § 3.2.2.27 for Cell Identifier List.}}
\DoxyCodeLine{15 \textcolor{comment}{ * See gsm0808\_cell\_id\_discr\_name() for a human readable representation.}}
\DoxyCodeLine{16 \textcolor{comment}{ */}}
\DoxyCodeLine{17 \textcolor{keyword}{enum} CELL\_IDENT \{}
\DoxyCodeLine{18         CELL\_IDENT\_WHOLE\_GLOBAL          = 0,}
\DoxyCodeLine{19         CELL\_IDENT\_LAC\_AND\_CI              = 1,}
\DoxyCodeLine{20         CELL\_IDENT\_CI                      = 2,}
\DoxyCodeLine{21         CELL\_IDENT\_NO\_CELL            = 3,}
\DoxyCodeLine{22         CELL\_IDENT\_LAI                    = 4,}
\DoxyCodeLine{23         CELL\_IDENT\_LAC                    = 5,}
\DoxyCodeLine{24         CELL\_IDENT\_BSS                    = 6,}
\DoxyCodeLine{25         CELL\_IDENT\_UTRAN\_PLMN\_LAC\_RNC      = 8,}
\DoxyCodeLine{26         CELL\_IDENT\_UTRAN\_RNC                = 9,}
\DoxyCodeLine{27         CELL\_IDENT\_UTRAN\_LAC\_RNC        = 10,}
\DoxyCodeLine{28         CELL\_IDENT\_SAI    = 11,}
\DoxyCodeLine{29 }
\DoxyCodeLine{30         \textcolor{comment}{/* Not in 03.03 nor 08.08. Place them > 0x0f (discr\_id is 4 bits) */}}
\DoxyCodeLine{31         CELL\_IDENT\_WHOLE\_GLOBAL\_PS    = 128, \textcolor{comment}{/* CGI + RAC, TS 48.018 8c.1.4.1.1 */}}
\DoxyCodeLine{32 \};}
\DoxyCodeLine{33 \textcolor{comment}{/* Keep this misnamed CELL\_IDENT for API backwards compatibility (see OS\#3124). */}}
\DoxyCodeLine{34 \textcolor{preprocessor}{\#define CELL\_IDENT\_LAI\_AND\_LAC CELL\_IDENT\_LAI}}
\DoxyCodeLine{35 }
\DoxyCodeLine{36 \textcolor{comment}{/* GSM 08.06 § 6.3 */}}
\DoxyCodeLine{37 \textcolor{keyword}{enum} BSSAP\_MSG\_TYPE \{}
\DoxyCodeLine{38         BSSAP\_MSG\_BSS\_MANAGEMENT    = 0x0,}
\DoxyCodeLine{39         BSSAP\_MSG\_DTAP                = 0x1,}
\DoxyCodeLine{40 \};}
\DoxyCodeLine{41 }
\DoxyCodeLine{42 \textcolor{keyword}{struct }bssmap\_header \{}
\DoxyCodeLine{43         uint8\_t type;}
\DoxyCodeLine{44         uint8\_t length;}
\DoxyCodeLine{45 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{46 }
\DoxyCodeLine{47 \textcolor{keyword}{struct }dtap\_header \{}
\DoxyCodeLine{48         uint8\_t type;}
\DoxyCodeLine{49         \textcolor{keyword}{union }\{}
\DoxyCodeLine{50                 uint8\_t link\_id;  \textcolor{comment}{/* Backward compatibility */}}
\DoxyCodeLine{51                 \textcolor{keyword}{struct }\{}
\DoxyCodeLine{52 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{53                         uint8\_t dlci\_sapi:3, \textcolor{comment}{/* enum gsm0406\_dlci\_sapi */}}
\DoxyCodeLine{54                         dlci\_spare:3,}
\DoxyCodeLine{55                         dlci\_cc:2;}
\DoxyCodeLine{56 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{57 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{58                         uint8\_t dlci\_cc:2, dlci\_spare:3, dlci\_sapi:3;}
\DoxyCodeLine{59 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{60                 \};}
\DoxyCodeLine{61         \};}
\DoxyCodeLine{62         uint8\_t length;}
\DoxyCodeLine{63 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{64 }
\DoxyCodeLine{65 \textcolor{comment}{/* Data Link Control SAPI, GSM 08.06 § 6.3.2, GSM 04.06 § 3.3.3 */}}
\DoxyCodeLine{66 \textcolor{keyword}{enum} gsm0406\_dlci\_sapi \{}
\DoxyCodeLine{67         DLCI\_SAPI\_RR\_MM\_CC    = 0x0,}
\DoxyCodeLine{68         DLCI\_SAPI\_SMS              = 0x3,}
\DoxyCodeLine{69 \};}
\DoxyCodeLine{70 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm0406\_dlci\_sapi\_names[];}
\DoxyCodeLine{71 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm0406\_dlci\_sapi\_name(\textcolor{keyword}{enum} gsm0406\_dlci\_sapi val)}
\DoxyCodeLine{72 \{ \textcolor{keywordflow}{return} get\_value\_string(gsm0406\_dlci\_sapi\_names, val); \}}
\DoxyCodeLine{73 }
\DoxyCodeLine{74 \textcolor{keyword}{enum} BSS\_MAP\_MSG\_TYPE \{}
\DoxyCodeLine{75         BSS\_MAP\_MSG\_RESERVED\_0            = 0,}
\DoxyCodeLine{76 }
\DoxyCodeLine{77         \textcolor{comment}{/* ASSIGNMENT MESSAGES */}}
\DoxyCodeLine{78         BSS\_MAP\_MSG\_ASSIGNMENT\_RQST  = 1,}
\DoxyCodeLine{79         BSS\_MAP\_MSG\_ASSIGNMENT\_COMPLETE  = 2,}
\DoxyCodeLine{80         BSS\_MAP\_MSG\_ASSIGNMENT\_FAILURE    = 3,}
\DoxyCodeLine{81         BSS\_MAP\_MSG\_CHAN\_MOD\_RQST      = 8,}
\DoxyCodeLine{82 }
\DoxyCodeLine{83         \textcolor{comment}{/*  HANDOVER MESSAGES */}}
\DoxyCodeLine{84         BSS\_MAP\_MSG\_HANDOVER\_RQST              = 16,}
\DoxyCodeLine{85         BSS\_MAP\_MSG\_HANDOVER\_REQUIRED              = 17,}
\DoxyCodeLine{86         BSS\_MAP\_MSG\_HANDOVER\_RQST\_ACKNOWLEDGE= 18,}
\DoxyCodeLine{87         BSS\_MAP\_MSG\_HANDOVER\_CMD                = 19,}
\DoxyCodeLine{88         BSS\_MAP\_MSG\_HANDOVER\_COMPLETE              = 20,}
\DoxyCodeLine{89         BSS\_MAP\_MSG\_HANDOVER\_SUCCEEDED            = 21,}
\DoxyCodeLine{90         BSS\_MAP\_MSG\_HANDOVER\_FAILURE                = 22,}
\DoxyCodeLine{91         BSS\_MAP\_MSG\_HANDOVER\_PERFORMED            = 23,}
\DoxyCodeLine{92         BSS\_MAP\_MSG\_HANDOVER\_CANDIDATE\_ENQUIRE    = 24,}
\DoxyCodeLine{93         BSS\_MAP\_MSG\_HANDOVER\_CANDIDATE\_RESPONSE  = 25,}
\DoxyCodeLine{94         BSS\_MAP\_MSG\_HANDOVER\_REQUIRED\_REJECT        = 26,}
\DoxyCodeLine{95         BSS\_MAP\_MSG\_HANDOVER\_DETECT          = 27,}
\DoxyCodeLine{96         BSS\_MAP\_MSG\_INT\_HANDOVER\_REQUIRED      = 0x70,}
\DoxyCodeLine{97         BSS\_MAP\_MSG\_INT\_HANDOVER\_REQUIRED\_REJ      = 0x71,}
\DoxyCodeLine{98         BSS\_MAP\_MSG\_INT\_HANDOVER\_CMD                = 0x72,}
\DoxyCodeLine{99         BSS\_MAP\_MSG\_INT\_HANDOVER\_ENQUIRY        = 0x73,}
\DoxyCodeLine{100 }
\DoxyCodeLine{101         \textcolor{comment}{/* RELEASE MESSAGES */}}
\DoxyCodeLine{102         BSS\_MAP\_MSG\_CLEAR\_CMD              = 32,}
\DoxyCodeLine{103         BSS\_MAP\_MSG\_CLEAR\_COMPLETE            = 33,}
\DoxyCodeLine{104         BSS\_MAP\_MSG\_CLEAR\_RQST            = 34,}
\DoxyCodeLine{105         BSS\_MAP\_MSG\_RESERVED\_1                    = 35,}
\DoxyCodeLine{106         BSS\_MAP\_MSG\_RESERVED\_2                    = 36,}
\DoxyCodeLine{107         BSS\_MAP\_MSG\_SAPI\_N\_REJECT              = 37,}
\DoxyCodeLine{108         BSS\_MAP\_MSG\_CONFUSION                      = 38,}
\DoxyCodeLine{109 }
\DoxyCodeLine{110         \textcolor{comment}{/* OTHER CONNECTION RELATED MESSAGES */}}
\DoxyCodeLine{111         BSS\_MAP\_MSG\_SUSPEND                  = 40,}
\DoxyCodeLine{112         BSS\_MAP\_MSG\_RESUME                    = 41,}
\DoxyCodeLine{113         BSS\_MAP\_MSG\_CONNECTION\_ORIENTED\_INFORMATION = 42,}
\DoxyCodeLine{114         BSS\_MAP\_MSG\_PERFORM\_LOCATION\_RQST      = 43,}
\DoxyCodeLine{115         BSS\_MAP\_MSG\_LSA\_INFORMATION          = 44,}
\DoxyCodeLine{116         BSS\_MAP\_MSG\_PERFORM\_LOCATION\_RESPONSE      = 45,}
\DoxyCodeLine{117         BSS\_MAP\_MSG\_PERFORM\_LOCATION\_ABORT    = 46,}
\DoxyCodeLine{118         BSS\_MAP\_MSG\_COMMON\_ID                      = 47,}
\DoxyCodeLine{119         BSS\_MAP\_MSG\_REROUTE\_CMD                  = 0x78,}
\DoxyCodeLine{120         BSS\_MAP\_MSG\_REROUTE\_COMPLETE                = 0x79,}
\DoxyCodeLine{121 }
\DoxyCodeLine{122         \textcolor{comment}{/* GENERAL MESSAGES */}}
\DoxyCodeLine{123         BSS\_MAP\_MSG\_RESET                      = 48,}
\DoxyCodeLine{124         BSS\_MAP\_MSG\_RESET\_ACKNOWLEDGE              = 49,}
\DoxyCodeLine{125         BSS\_MAP\_MSG\_OVERLOAD                        = 50,}
\DoxyCodeLine{126         BSS\_MAP\_MSG\_RESERVED\_3                    = 51,}
\DoxyCodeLine{127         BSS\_MAP\_MSG\_RESET\_CIRCUIT              = 52,}
\DoxyCodeLine{128         BSS\_MAP\_MSG\_RESET\_CIRCUIT\_ACKNOWLEDGE      = 53,}
\DoxyCodeLine{129         BSS\_MAP\_MSG\_MSC\_INVOKE\_TRACE                = 54,}
\DoxyCodeLine{130         BSS\_MAP\_MSG\_BSS\_INVOKE\_TRACE                = 55,}
\DoxyCodeLine{131         BSS\_MAP\_MSG\_CONNECTIONLESS\_INFORMATION    = 58,}
\DoxyCodeLine{132         BSS\_MAP\_MSG\_RESET\_IP\_RSRC              = 0x3d,}
\DoxyCodeLine{133         BSS\_MAP\_MSG\_RESET\_IP\_RSRC\_ACK              = 0x3e,}
\DoxyCodeLine{134 }
\DoxyCodeLine{135         \textcolor{comment}{/* TERRESTRIAL RESOURCE MESSAGES */}}
\DoxyCodeLine{136         BSS\_MAP\_MSG\_BLOCK                      = 64,}
\DoxyCodeLine{137         BSS\_MAP\_MSG\_BLOCKING\_ACKNOWLEDGE        = 65,}
\DoxyCodeLine{138         BSS\_MAP\_MSG\_UNBLOCK                  = 66,}
\DoxyCodeLine{139         BSS\_MAP\_MSG\_UNBLOCKING\_ACKNOWLEDGE    = 67,}
\DoxyCodeLine{140         BSS\_MAP\_MSG\_CIRCUIT\_GROUP\_BLOCK          = 68,}
\DoxyCodeLine{141         BSS\_MAP\_MSG\_CIRCUIT\_GROUP\_BLOCKING\_ACKNOWLEDGE    = 69,}
\DoxyCodeLine{142         BSS\_MAP\_MSG\_CIRCUIT\_GROUP\_UNBLOCK      = 70,}
\DoxyCodeLine{143         BSS\_MAP\_MSG\_CIRCUIT\_GROUP\_UNBLOCKING\_ACKNOWLEDGE = 71,}
\DoxyCodeLine{144         BSS\_MAP\_MSG\_UNEQUIPPED\_CIRCUIT            = 72,}
\DoxyCodeLine{145         BSS\_MAP\_MSG\_CHANGE\_CIRCUIT            = 78,}
\DoxyCodeLine{146         BSS\_MAP\_MSG\_CHANGE\_CIRCUIT\_ACKNOWLEDGE    = 79,}
\DoxyCodeLine{147 }
\DoxyCodeLine{148         \textcolor{comment}{/* RADIO RESOURCE MESSAGES */}}
\DoxyCodeLine{149         BSS\_MAP\_MSG\_RESOURCE\_RQST              = 80,}
\DoxyCodeLine{150         BSS\_MAP\_MSG\_RESOURCE\_INDICATION          = 81,}
\DoxyCodeLine{151         BSS\_MAP\_MSG\_PAGING                    = 82,}
\DoxyCodeLine{152         BSS\_MAP\_MSG\_CIPHER\_MODE\_CMD          = 83,}
\DoxyCodeLine{153         BSS\_MAP\_MSG\_CLASSMARK\_UPDATE                = 84,}
\DoxyCodeLine{154         BSS\_MAP\_MSG\_CIPHER\_MODE\_COMPLETE        = 85,}
\DoxyCodeLine{155         BSS\_MAP\_MSG\_QUEUING\_INDICATION            = 86,}
\DoxyCodeLine{156         BSS\_MAP\_MSG\_COMPLETE\_LAYER\_3                = 87,}
\DoxyCodeLine{157         BSS\_MAP\_MSG\_CLASSMARK\_RQST            = 88,}
\DoxyCodeLine{158         BSS\_MAP\_MSG\_CIPHER\_MODE\_REJECT            = 89,}
\DoxyCodeLine{159         BSS\_MAP\_MSG\_LOAD\_INDICATION          = 90,}
\DoxyCodeLine{160 }
\DoxyCodeLine{161         \textcolor{comment}{/* VGCS/VBS */}}
\DoxyCodeLine{162         BSS\_MAP\_MSG\_VGCS\_VBS\_SETUP            = 4,}
\DoxyCodeLine{163         BSS\_MAP\_MSG\_VGCS\_VBS\_SETUP\_ACK            = 5,}
\DoxyCodeLine{164         BSS\_MAP\_MSG\_VGCS\_VBS\_SETUP\_REFUSE      = 6,}
\DoxyCodeLine{165         BSS\_MAP\_MSG\_VGCS\_VBS\_ASSIGNMENT\_RQST        = 7,}
\DoxyCodeLine{166         BSS\_MAP\_MSG\_VGCS\_VBS\_ASSIGNMENT\_RESULT    = 28,}
\DoxyCodeLine{167         BSS\_MAP\_MSG\_VGCS\_VBS\_ASSIGNMENT\_FAILURE  = 29,}
\DoxyCodeLine{168         BSS\_MAP\_MSG\_VGCS\_VBS\_QUEUING\_INDICATION  = 30,}
\DoxyCodeLine{169         BSS\_MAP\_MSG\_UPLINK\_RQST          = 31,}
\DoxyCodeLine{170         BSS\_MAP\_MSG\_UPLINK\_RQST\_ACKNOWLEDGE  = 39,}
\DoxyCodeLine{171         BSS\_MAP\_MSG\_VGCS\_VBS\_ASSIGNMENT\_STATUS    = 59,}
\DoxyCodeLine{172         BSS\_MAP\_MSG\_VGCS\_VBS\_AREA\_CELL\_INFO  = 60,}
\DoxyCodeLine{173         BSS\_MAP\_MSG\_UPLINK\_RQST\_CONFIRMATION        = 73,}
\DoxyCodeLine{174         BSS\_MAP\_MSG\_UPLINK\_RELEASE\_INDICATION      = 74,}
\DoxyCodeLine{175         BSS\_MAP\_MSG\_UPLINK\_REJECT\_CMD      = 75,}
\DoxyCodeLine{176         BSS\_MAP\_MSG\_UPLINK\_RELEASE\_CMD    = 76,}
\DoxyCodeLine{177         BSS\_MAP\_MSG\_UPLINK\_SEIZED\_CMD      = 77,}
\DoxyCodeLine{178         BSS\_MAP\_MSG\_VGCS\_ADDL\_INFO            = 0x60,}
\DoxyCodeLine{179         BSS\_MAP\_MSG\_VGCS\_SMS                        = 0x61,}
\DoxyCodeLine{180         BSS\_MAP\_MSG\_NOTIFICATION\_DATA              = 0x62,}
\DoxyCodeLine{181         BSS\_MAP\_MSG\_UPLINK\_APP\_DATA          = 0x63,}
\DoxyCodeLine{182 }
\DoxyCodeLine{183         \textcolor{comment}{/* LOCAL SWITCHING */}}
\DoxyCodeLine{184         BSS\_MAP\_MSG\_LCLS\_CONNECT\_CTRL              = 0x74,}
\DoxyCodeLine{185         BSS\_MAP\_MSG\_LCLS\_CONNECT\_CTRL\_ACK      = 0x75,}
\DoxyCodeLine{186         BSS\_MAP\_MSG\_LCLS\_NOTIFICATION              = 0x76,}
\DoxyCodeLine{187 \};}
\DoxyCodeLine{188 }
\DoxyCodeLine{189 \textcolor{preprocessor}{\#define BSS\_MAP\_MSG\_ASSIGMENT\_RQST BSS\_MAP\_MSG\_ASSIGNMENT\_RQST}}
\DoxyCodeLine{190 \textcolor{preprocessor}{\#define BSS\_MAP\_MSG\_ASSIGMENT\_COMPLETE BSS\_MAP\_MSG\_ASSIGNMENT\_COMPLETE}}
\DoxyCodeLine{191 \textcolor{preprocessor}{\#define BSS\_MAP\_MSG\_ASSIGMENT\_FAILURE BSS\_MAP\_MSG\_ASSIGNMENT\_FAILURE}}
\DoxyCodeLine{192 }
\DoxyCodeLine{193 \textcolor{keyword}{enum} GSM0808\_IE\_CODING \{}
\DoxyCodeLine{194         GSM0808\_IE\_CIRCUIT\_IDENTITY\_CODE        = 1,}
\DoxyCodeLine{195         GSM0808\_IE\_RESERVED\_0                      = 2,}
\DoxyCodeLine{196         GSM0808\_IE\_RESOURCE\_AVAILABLE              = 3,}
\DoxyCodeLine{197         GSM0808\_IE\_CAUSE                        = 4,}
\DoxyCodeLine{198         GSM0808\_IE\_CELL\_IDENTIFIER            = 5,}
\DoxyCodeLine{199         GSM0808\_IE\_PRIORITY                  = 6,}
\DoxyCodeLine{200         GSM0808\_IE\_LAYER\_3\_HEADER\_INFORMATION      = 7,}
\DoxyCodeLine{201         GSM0808\_IE\_IMSI                          = 8,}
\DoxyCodeLine{202         GSM0808\_IE\_TMSI                          = 9,}
\DoxyCodeLine{203         GSM0808\_IE\_ENCRYPTION\_INFORMATION      = 10,}
\DoxyCodeLine{204         GSM0808\_IE\_CHANNEL\_TYPE                  = 11,}
\DoxyCodeLine{205         GSM0808\_IE\_PERIODICITY                    = 12,}
\DoxyCodeLine{206         GSM0808\_IE\_EXTENDED\_RESOURCE\_INDICATOR    = 13,}
\DoxyCodeLine{207         GSM0808\_IE\_NUMBER\_OF\_MSS                = 14,}
\DoxyCodeLine{208         GSM0808\_IE\_RESERVED\_1                      = 15,}
\DoxyCodeLine{209         GSM0808\_IE\_RESERVED\_2                      = 16,}
\DoxyCodeLine{210         GSM0808\_IE\_RESERVED\_3                      = 17,}
\DoxyCodeLine{211         GSM0808\_IE\_CLASSMARK\_INFORMATION\_T2  = 18,}
\DoxyCodeLine{212         GSM0808\_IE\_CLASSMARK\_INFORMATION\_T3  = 19,}
\DoxyCodeLine{213         GSM0808\_IE\_INTERFERENCE\_BAND\_TO\_USE  = 20,}
\DoxyCodeLine{214         GSM0808\_IE\_RR\_CAUSE                  = 21,}
\DoxyCodeLine{215         GSM0808\_IE\_RESERVED\_4                      = 22,}
\DoxyCodeLine{216         GSM0808\_IE\_LAYER\_3\_INFORMATION            = 23,}
\DoxyCodeLine{217         GSM0808\_IE\_DLCI                          = 24,}
\DoxyCodeLine{218         GSM0808\_IE\_DOWNLINK\_DTX\_FLAG                = 25,}
\DoxyCodeLine{219         GSM0808\_IE\_CELL\_IDENTIFIER\_LIST          = 26,}
\DoxyCodeLine{220         GSM0808\_IE\_RESPONSE\_RQST                = 27,}
\DoxyCodeLine{221         GSM0808\_IE\_RESOURCE\_INDICATION\_METHOD      = 28,}
\DoxyCodeLine{222         GSM0808\_IE\_CLASSMARK\_INFORMATION\_TYPE\_1  = 29,}
\DoxyCodeLine{223         GSM0808\_IE\_CIRCUIT\_IDENTITY\_CODE\_LIST      = 30,}
\DoxyCodeLine{224         GSM0808\_IE\_DIAGNOSTIC                      = 31,}
\DoxyCodeLine{225         GSM0808\_IE\_LAYER\_3\_MESSAGE\_CONTENTS  = 32,}
\DoxyCodeLine{226         GSM0808\_IE\_CHOSEN\_CHANNEL              = 33,}
\DoxyCodeLine{227         GSM0808\_IE\_TOTAL\_RESOURCE\_ACCESSIBLE        = 34,}
\DoxyCodeLine{228         GSM0808\_IE\_CIPHER\_RESPONSE\_MODE          = 35,}
\DoxyCodeLine{229         GSM0808\_IE\_CHANNEL\_NEEDED              = 36,}
\DoxyCodeLine{230         GSM0808\_IE\_TRACE\_TYPE                      = 37,}
\DoxyCodeLine{231         GSM0808\_IE\_TRIGGERID                        = 38,}
\DoxyCodeLine{232         GSM0808\_IE\_TRACE\_REFERENCE            = 39,}
\DoxyCodeLine{233         GSM0808\_IE\_TRANSACTIONID                = 40,}
\DoxyCodeLine{234         GSM0808\_IE\_MOBILE\_IDENTITY            = 41,}
\DoxyCodeLine{235         GSM0808\_IE\_OMCID                        = 42,}
\DoxyCodeLine{236         GSM0808\_IE\_FORWARD\_INDICATOR                = 43,}
\DoxyCodeLine{237         GSM0808\_IE\_CHOSEN\_ENCR\_ALG            = 44,}
\DoxyCodeLine{238         GSM0808\_IE\_CIRCUIT\_POOL                  = 45,}
\DoxyCodeLine{239         GSM0808\_IE\_CIRCUIT\_POOL\_LIST                = 46,}
\DoxyCodeLine{240         GSM0808\_IE\_TIME\_INDICATION            = 47,}
\DoxyCodeLine{241         GSM0808\_IE\_RESOURCE\_SITUATION              = 48,}
\DoxyCodeLine{242         GSM0808\_IE\_CURRENT\_CHANNEL\_TYPE\_1      = 49,}
\DoxyCodeLine{243         GSM0808\_IE\_QUEUEING\_INDICATOR              = 50,}
\DoxyCodeLine{244         GSM0808\_IE\_SPEECH\_VERSION              = 64,}
\DoxyCodeLine{245         GSM0808\_IE\_ASSIGNMENT\_REQUIREMENT      = 51,}
\DoxyCodeLine{246         GSM0808\_IE\_TALKER\_FLAG                    = 53,}
\DoxyCodeLine{247         GSM0808\_IE\_CONNECTION\_RELEASE\_RQSTED        = 54,}
\DoxyCodeLine{248         GSM0808\_IE\_GROUP\_CALL\_REFERENCE          = 55,}
\DoxyCodeLine{249         GSM0808\_IE\_EMLPP\_PRIORITY              = 56,}
\DoxyCodeLine{250         GSM0808\_IE\_CONFIG\_EVO\_INDI            = 57,}
\DoxyCodeLine{251         GSM0808\_IE\_OLD\_BSS\_TO\_NEW\_BSS\_INFORMATION      = 58,}
\DoxyCodeLine{252         GSM0808\_IE\_LSA\_IDENTIFIER              = 59,}
\DoxyCodeLine{253         GSM0808\_IE\_LSA\_IDENTIFIER\_LIST            = 60,}
\DoxyCodeLine{254         GSM0808\_IE\_LSA\_INFORMATION            = 61,}
\DoxyCodeLine{255         GSM0808\_IE\_LCS\_QOS                    = 62,}
\DoxyCodeLine{256         GSM0808\_IE\_LSA\_ACCESS\_CTRL\_SUPPR        = 63,}
\DoxyCodeLine{257         GSM0808\_IE\_LCS\_PRIORITY                  = 67,}
\DoxyCodeLine{258         GSM0808\_IE\_LOCATION\_TYPE                = 68,}
\DoxyCodeLine{259         GSM0808\_IE\_LOCATION\_ESTIMATE                = 69,}
\DoxyCodeLine{260         GSM0808\_IE\_POSITIONING\_DATA          = 70,}
\DoxyCodeLine{261         GSM0808\_IE\_LCS\_CAUSE                        = 71,}
\DoxyCodeLine{262         GSM0808\_IE\_LCS\_CLIENT\_TYPE            = 72,}
\DoxyCodeLine{263         GSM0808\_IE\_APDU                          = 73,}
\DoxyCodeLine{264         GSM0808\_IE\_NETWORK\_ELEMENT\_IDENTITY  = 74,}
\DoxyCodeLine{265         GSM0808\_IE\_GPS\_ASSISTANCE\_DATA            = 75,}
\DoxyCodeLine{266         GSM0808\_IE\_DECIPHERING\_KEYS          = 76,}
\DoxyCodeLine{267         GSM0808\_IE\_RETURN\_ERROR\_RQST                = 77,}
\DoxyCodeLine{268         GSM0808\_IE\_RETURN\_ERROR\_CAUSE              = 78,}
\DoxyCodeLine{269         GSM0808\_IE\_SEGMENTATION                  = 79,}
\DoxyCodeLine{270         GSM0808\_IE\_SERVICE\_HANDOVER          = 80,}
\DoxyCodeLine{271         GSM0808\_IE\_SOURCE\_RNC\_TO\_TARGET\_RNC\_TRANSPARENT\_UMTS        = 81,}
\DoxyCodeLine{272         GSM0808\_IE\_SOURCE\_RNC\_TO\_TARGET\_RNC\_TRANSPARENT\_CDMA2000 = 82,}
\DoxyCodeLine{273         GSM0808\_IE\_RESERVED\_5                      = 65,}
\DoxyCodeLine{274         GSM0808\_IE\_RESERVED\_6                      = 66,}
\DoxyCodeLine{275         GSM0808\_IE\_GERAN\_CLASSMARK            = 0x53,}
\DoxyCodeLine{276         GSM0808\_IE\_GERAN\_BSC\_CONTAINER            = 0x54,}
\DoxyCodeLine{277         GSM0808\_IE\_NEW\_BSS\_TO\_OLD\_BSS\_INFO    = 0x61,}
\DoxyCodeLine{278         GSM0800\_IE\_INTER\_SYSTEM\_INFO                = 0x63,}
\DoxyCodeLine{279         GSM0808\_IE\_SNA\_ACCESS\_INFO            = 0x64,}
\DoxyCodeLine{280         GSM0808\_IE\_VSTK\_RAND\_INFO              = 0x65,}
\DoxyCodeLine{281         GSM0808\_IE\_VSTK\_INFO                        = 0x66,}
\DoxyCodeLine{282         GSM0808\_IE\_PAGING\_INFO                    = 0x67,}
\DoxyCodeLine{283         GSM0808\_IE\_IMEI                          = 0x68,}
\DoxyCodeLine{284         GSM0808\_IE\_VELOCITY\_ESTIMATE                = 0x55,}
\DoxyCodeLine{285         GSM0808\_IE\_VGCS\_FEATURE\_FLAGS              = 0x69,}
\DoxyCodeLine{286         GSM0808\_IE\_TALKER\_PRIORITY            = 0x6a,}
\DoxyCodeLine{287         GSM0808\_IE\_EMERGENCY\_SET\_INDICATION  = 0x6b,}
\DoxyCodeLine{288         GSM0808\_IE\_TALKER\_IDENTITY            = 0x6c,}
\DoxyCodeLine{289         GSM0808\_IE\_CELL\_ID\_LIST\_SEGMENT          = 0x6d,}
\DoxyCodeLine{290         GSM0808\_IE\_SMS\_TO\_VGCS                    = 0x6e,}
\DoxyCodeLine{291         GSM0808\_IE\_VGCS\_TALKER\_MODE          = 0x6f,}
\DoxyCodeLine{292         GSM0808\_IE\_VGCS\_VBS\_CELL\_STATUS          = 0x70,}
\DoxyCodeLine{293         GSM0808\_IE\_CELL\_ID\_LIST\_SEG\_EST\_CELLS      = 0x71,}
\DoxyCodeLine{294         GSM0808\_IE\_CELL\_ID\_LIST\_SEG\_CELLS\_TBE      = 0x72,}
\DoxyCodeLine{295         GSM0808\_IE\_CELL\_ID\_LIST\_SEG\_REL\_CELLS      = 0x73,}
\DoxyCodeLine{296         GSM0808\_IE\_CELL\_ID\_LIST\_SEG\_NE\_CELLS        = 0x74,}
\DoxyCodeLine{297         GSM0808\_IE\_GANSS\_ASSISTANCE\_DATA        = 0x75,}
\DoxyCodeLine{298         GSM0808\_IE\_GANSS\_POSITIONING\_DATA      = 0x76,}
\DoxyCodeLine{299         GSM0808\_IE\_GANSS\_LOCATION\_TYPE            = 0x77,}
\DoxyCodeLine{300         GSM0808\_IE\_APP\_DATA                  = 0x78,}
\DoxyCodeLine{301         GSM0808\_IE\_DATA\_IDENTITY                = 0x79,}
\DoxyCodeLine{302         GSM0808\_IE\_APP\_DATA\_INFO                = 0x7a,}
\DoxyCodeLine{303         GSM0808\_IE\_MSISDN                      = 0x7b,}
\DoxyCodeLine{304         GSM0808\_IE\_AOIP\_TRASP\_ADDR            = 0x7c,}
\DoxyCodeLine{305         GSM0808\_IE\_SPEECH\_CODEC\_LIST                = 0x7d,}
\DoxyCodeLine{306         GSM0808\_IE\_SPEECH\_CODEC                  = 0x7e,}
\DoxyCodeLine{307         GSM0808\_IE\_CALL\_ID                    = 0x7f,}
\DoxyCodeLine{308         GSM0808\_IE\_CALL\_ID\_LIST                  = 0x80,}
\DoxyCodeLine{309         GSM0808\_IE\_A\_IF\_SEL\_FOR\_RESET              = 0x81,}
\DoxyCodeLine{310         GSM0808\_IE\_KC\_128                      = 0x83,}
\DoxyCodeLine{311         GSM0808\_IE\_CSG\_IDENTIFIER              = 0x84,}
\DoxyCodeLine{312         GSM0808\_IE\_REDIR\_ATTEMPT\_FLAG              = 0x85,}
\DoxyCodeLine{313         GSM0808\_IE\_REROUTE\_REJ\_CAUSE                = 0x86,}
\DoxyCodeLine{314         GSM0808\_IE\_SEND\_SEQ\_NUM                  = 0x87,}
\DoxyCodeLine{315         GSM0808\_IE\_REROUTE\_COMPL\_OUTCOME        = 0x88,}
\DoxyCodeLine{316         GSM0808\_IE\_GLOBAL\_CALL\_REF            = 0x89,}
\DoxyCodeLine{317         GSM0808\_IE\_LCLS\_CONFIG                    = 0x8a,}
\DoxyCodeLine{318         GSM0808\_IE\_LCLS\_CONN\_STATUS\_CTRL        = 0x8b,}
\DoxyCodeLine{319         GSM0808\_IE\_LCLS\_CORR\_NOT\_NEEDED          = 0x8c,}
\DoxyCodeLine{320         GSM0808\_IE\_LCLS\_BSS\_STATUS            = 0x8d,}
\DoxyCodeLine{321         GSM0808\_IE\_LCLS\_BREAK\_REQ              = 0x8e,}
\DoxyCodeLine{322         GSM0808\_IE\_CSFB\_INDICATION            = 0x8f,}
\DoxyCodeLine{323         GSM0808\_IE\_CS\_TO\_PS\_SRVCC              = 0x90,}
\DoxyCodeLine{324         GSM0808\_IE\_SRC\_ENB\_TO\_TGT\_ENB\_TRANSP        = 0x91,}
\DoxyCodeLine{325         GSM0808\_IE\_CS\_TO\_PS\_SRVCC\_IND              = 0x92,}
\DoxyCodeLine{326         GSM0808\_IE\_CN\_TO\_MS\_TRANSP\_INFO          = 0x93,}
\DoxyCodeLine{327         GSM0808\_IE\_SELECTED\_PLMN\_ID          = 0x94,}
\DoxyCodeLine{328         GSM0808\_IE\_LAST\_USED\_EUTRAN\_PLMN\_ID  = 0x95,}
\DoxyCodeLine{329         GSM0808\_IE\_OLD\_LAI                    = 0x96,}
\DoxyCodeLine{330         GSM0808\_IE\_ATTACH\_INDICATOR          = 0x97,}
\DoxyCodeLine{331         GSM0808\_IE\_SELECTED\_OPERATOR                = 0x98,}
\DoxyCodeLine{332         GSM0808\_IE\_PS\_REGISTERED\_OPERATOR      = 0x99,}
\DoxyCodeLine{333         GSM0808\_IE\_CS\_REGISTERED\_OPERATOR      = 0x9a,}
\DoxyCodeLine{334 }
\DoxyCodeLine{335         \textcolor{comment}{/* Osmocom extensions: */}}
\DoxyCodeLine{336         GSM0808\_IE\_OSMO\_OSMUX\_SUPPORT              = 0xf0,}
\DoxyCodeLine{337         GSM0808\_IE\_OSMO\_OSMUX\_CID              = 0xf1,}
\DoxyCodeLine{338 \};}
\DoxyCodeLine{339 }
\DoxyCodeLine{340 \textcolor{comment}{/* 3GPP TS 48.008 3.2.3 Signalling Field Element Coding.}}
\DoxyCodeLine{341 \textcolor{comment}{   See also extra fields in 3.2.2.58 and 3.2.2.80 */}}
\DoxyCodeLine{342 \textcolor{keyword}{enum} GSM0808\_SIGNALLING\_FIELD\_ELEMENT\_CODING \{}
\DoxyCodeLine{343         GSM0808\_FE\_IE\_EXTRA\_INFORMATION = 0x01, \textcolor{comment}{/*< 3.2.3.1  */}}
\DoxyCodeLine{344         GSM0808\_FE\_IE\_CURRENT\_CHANNEL\_TYPE\_2 = 0x02, \textcolor{comment}{/*< 3.2.3.2  */}}
\DoxyCodeLine{345         GSM0808\_FE\_IE\_TARGET\_CELL\_RADIO\_INFORMATION = 0x03, \textcolor{comment}{/*< 3.2.3.3  */}}
\DoxyCodeLine{346         GSM0808\_FE\_IE\_GPRS\_SUSPEND\_INFORMATION = 0x04, \textcolor{comment}{/*< 3.2.3.4  */}}
\DoxyCodeLine{347         GSM0808\_FE\_IE\_MULTIRATE\_CONFIGURATION\_INFORMATION = 0x05, \textcolor{comment}{/*< 3.2.3.5  */}}
\DoxyCodeLine{348         GSM0808\_FE\_IE\_DUAL\_TRANSFER\_MODE\_INFORMATION = 0x06, \textcolor{comment}{/*< 3.2.3.6  */}}
\DoxyCodeLine{349         GSM0808\_FE\_IE\_INTER\_RAT\_HANDOVER\_INFO = 0x07, \textcolor{comment}{/*< 3.2.3.7  */}}
\DoxyCodeLine{350         GSM0808\_FE\_IE\_CDMA2000\_CAPABILITY\_INFORMATION = 0x08, \textcolor{comment}{/*< 3.2.3.8  */}}
\DoxyCodeLine{351         GSM0808\_FE\_IE\_DOWNLINK\_CELL\_LOAD\_INFORMATION = 0x09, \textcolor{comment}{/*< 3.2.3.9  */}}
\DoxyCodeLine{352         GSM0808\_FE\_IE\_UPLINK\_CELL\_LOAD\_INFORMATION = 0x0a, \textcolor{comment}{/*< 3.2.3.10 */}}
\DoxyCodeLine{353         GSM0808\_FE\_IE\_CELL\_LOAD\_INFORMATION\_GROUP = 0x0b, \textcolor{comment}{/*< 3.2.3.11 */}}
\DoxyCodeLine{354         GSM0808\_FE\_IE\_CELL\_LOAD\_INFORMATION = 0x0c, \textcolor{comment}{/*< 3.2.3.12 */}}
\DoxyCodeLine{355         GSM0808\_FE\_IE\_PS\_INDICATION = 0x0d, \textcolor{comment}{/*< 3.2.3.13 */}}
\DoxyCodeLine{356         GSM0808\_FE\_IE\_DTM\_HANDOVER\_COMMAND\_INDICATION = 0x0e, \textcolor{comment}{/*< 3.2.3.14 */}}
\DoxyCodeLine{357         GSM0808\_FE\_IE\_D\_RNTI = 0xfe, \textcolor{comment}{/*< 3.2.3.15 */}}
\DoxyCodeLine{358         GSM0808\_FE\_IE\_IRAT\_MEASUREMENT\_CONFIGURATION = 0x0f, \textcolor{comment}{/*< 3.2.3.16 */}}
\DoxyCodeLine{359         GSM0808\_FE\_IE\_SOURCE\_CELL\_ID = 0x10, \textcolor{comment}{/*< 3.2.3.17 */}}
\DoxyCodeLine{360         GSM0808\_FE\_IE\_IRAT\_MEASUREMENT\_CONFIGURATION\_EXTENDED\_E\_ARFCNS = 0x11, \textcolor{comment}{/*< 3.2.3.18 */}}
\DoxyCodeLine{361         GSM0808\_FE\_IE\_VGCS\_TALKER\_MODE = 0x6f, \textcolor{comment}{/*< 3.2.2.93 */}}
\DoxyCodeLine{362         GSM0808\_FE\_IE\_LAST\_USED\_EUTRAN\_PLMN\_ID = 0x95, \textcolor{comment}{/*< 3.2.2.127 */}}
\DoxyCodeLine{363 \};}
\DoxyCodeLine{364 }
\DoxyCodeLine{365 \textcolor{comment}{/* 3GPP TS 48.008 3.2.2.5 Cause */}}
\DoxyCodeLine{366 \textcolor{keyword}{enum} gsm0808\_cause \{}
\DoxyCodeLine{367         GSM0808\_CAUSE\_RADIO\_INTERFACE\_MESSAGE\_FAILURE                      = 0,}
\DoxyCodeLine{368         GSM0808\_CAUSE\_RADIO\_INTERFACE\_FAILURE                              = 1,}
\DoxyCodeLine{369         GSM0808\_CAUSE\_UPLINK\_QUALITY                                        = 2,}
\DoxyCodeLine{370         GSM0808\_CAUSE\_UPLINK\_STRENGTH                                      = 3,}
\DoxyCodeLine{371         GSM0808\_CAUSE\_DOWNLINK\_QUALITY                                    = 4,}
\DoxyCodeLine{372         GSM0808\_CAUSE\_DOWNLINK\_STRENGTH                                  = 5,}
\DoxyCodeLine{373         GSM0808\_CAUSE\_DISTANCE                                            = 6,}
\DoxyCodeLine{374         GSM0808\_CAUSE\_O\_AND\_M\_INTERVENTION                            = 7,}
\DoxyCodeLine{375         GSM0808\_CAUSE\_RESPONSE\_TO\_MSC\_INVOCATION                        = 8,}
\DoxyCodeLine{376         GSM0808\_CAUSE\_CALL\_CONTROL                                    = 9,}
\DoxyCodeLine{377         GSM0808\_CAUSE\_RADIO\_INTERFACE\_FAILURE\_REVERSION                  = 10,}
\DoxyCodeLine{378         GSM0808\_CAUSE\_HANDOVER\_SUCCESSFUL                              = 11,}
\DoxyCodeLine{379         GSM0808\_CAUSE\_BETTER\_CELL                                      = 12,}
\DoxyCodeLine{380         GSM0808\_CAUSE\_DIRECTED\_RETRY                                        = 13,}
\DoxyCodeLine{381         GSM0808\_CAUSE\_JOINED\_GROUP\_CALL\_CHANNEL                          = 14,}
\DoxyCodeLine{382         GSM0808\_CAUSE\_TRAFFIC                                              = 15,}
\DoxyCodeLine{383         GSM0808\_CAUSE\_REDUCE\_LOAD\_IN\_SERVING\_CELL                      = 0x10,}
\DoxyCodeLine{384         GSM0808\_CAUSE\_TRAFFIC\_LOAD\_IN\_TGT\_HIGHER\_THAN\_IN\_SRC\_CELL      = 0x11,}
\DoxyCodeLine{385         GSM0808\_CAUSE\_RELOCATION\_TRIGGERED                            = 0x12,}
\DoxyCodeLine{386         GSM0808\_CAUSE\_REQUESTED\_OPT\_NOT\_AUTHORISED                    = 0x14,}
\DoxyCodeLine{387         GSM0808\_CAUSE\_ALT\_CHAN\_CONFIG\_REQUESTED                          = 0x15,}
\DoxyCodeLine{388         GSM0808\_CAUSE\_RESP\_TO\_INT\_HO\_ENQ\_MSG                                = 0x16,}
\DoxyCodeLine{389         GSM0808\_CAUSE\_INT\_HO\_ENQUIRY\_REJECT                          = 0x17,}
\DoxyCodeLine{390         GSM0808\_CAUSE\_REDUNDANCY\_LEVEL\_NOT\_ADEQUATE                  = 0x18,}
\DoxyCodeLine{391         GSM0808\_CAUSE\_EQUIPMENT\_FAILURE                                  = 32,}
\DoxyCodeLine{392         GSM0808\_CAUSE\_NO\_RADIO\_RESOURCE\_AVAILABLE                      = 33,}
\DoxyCodeLine{393         GSM0808\_CAUSE\_RQSTED\_TERRESTRIAL\_RESOURCE\_UNAVAILABLE      = 34,}
\DoxyCodeLine{394         GSM0808\_CAUSE\_CCCH\_OVERLOAD                                  = 35,}
\DoxyCodeLine{395         GSM0808\_CAUSE\_PROCESSOR\_OVERLOAD                                = 36,}
\DoxyCodeLine{396         GSM0808\_CAUSE\_BSS\_NOT\_EQUIPPED                                    = 37,}
\DoxyCodeLine{397         GSM0808\_CAUSE\_MS\_NOT\_EQUIPPED                                      = 38,}
\DoxyCodeLine{398         GSM0808\_CAUSE\_INVALID\_CELL                                    = 39,}
\DoxyCodeLine{399         GSM0808\_CAUSE\_TRAFFIC\_LOAD                                    = 40,}
\DoxyCodeLine{400         GSM0808\_CAUSE\_PREEMPTION                                        = 41,}
\DoxyCodeLine{401         GSM0808\_CAUSE\_DTM\_HO\_SGSN\_FAILURE                              = 0x2a,}
\DoxyCodeLine{402         GSM0808\_CAUSE\_DTM\_HO\_PS\_ALLOC\_FAILURE                              = 0x2b,}
\DoxyCodeLine{403         GSM0808\_CAUSE\_RQSTED\_TRANSCODING\_RATE\_ADAPTION\_UNAVAILABLE    = 48,}
\DoxyCodeLine{404         GSM0808\_CAUSE\_CIRCUIT\_POOL\_MISMATCH                          = 49,}
\DoxyCodeLine{405         GSM0808\_CAUSE\_SWITCH\_CIRCUIT\_POOL                              = 50,}
\DoxyCodeLine{406         GSM0808\_CAUSE\_RQSTED\_SPEECH\_VERSION\_UNAVAILABLE          = 51,}
\DoxyCodeLine{407         GSM0808\_CAUSE\_LSA\_NOT\_ALLOWED                                      = 52,}
\DoxyCodeLine{408         GSM0808\_CAUSE\_REQ\_CODEC\_TYPE\_OR\_CONFIG\_UNAVAIL                    = 0x35,}
\DoxyCodeLine{409         GSM0808\_CAUSE\_REQ\_A\_IF\_TYPE\_UNAVAIL                          = 0x36,}
\DoxyCodeLine{410         GSM0808\_CAUSE\_INVALID\_CSG\_CELL                                    = 0x37,}
\DoxyCodeLine{411         GSM0808\_CAUSE\_REQ\_REDUND\_LEVEL\_NOT\_AVAIL                        = 0x3f,}
\DoxyCodeLine{412         GSM0808\_CAUSE\_CIPHERING\_ALGORITHM\_NOT\_SUPPORTED                  = 64,}
\DoxyCodeLine{413         GSM0808\_CAUSE\_GERAN\_IU\_MODE\_FAILURE                          = 0x41,}
\DoxyCodeLine{414         GSM0808\_CAUSE\_INC\_RELOC\_NOT\_SUPP\_DT\_PUESBINE\_FEATURE                = 0x42,}
\DoxyCodeLine{415         GSM0808\_CAUSE\_ACCESS\_RESTRICTED\_DUE\_TO\_SHARED\_NETWORKS            = 0x43,}
\DoxyCodeLine{416         GSM0808\_CAUSE\_REQ\_CODEC\_TYPE\_OR\_CONFIG\_NOT\_SUPP                  = 0x44,}
\DoxyCodeLine{417         GSM0808\_CAUSE\_REQ\_A\_IF\_TYPE\_NOT\_SUPP                                = 0x45,}
\DoxyCodeLine{418         GSM0808\_CAUSE\_REQ\_REDUND\_LVL\_NOT\_SUPP                              = 0x46,}
\DoxyCodeLine{419         GSM0808\_CAUSE\_TERRESTRIAL\_CIRCUIT\_ALREADY\_ALLOCATED          = 80,}
\DoxyCodeLine{420         GSM0808\_CAUSE\_INVALID\_MESSAGE\_CONTENTS                            = 81,}
\DoxyCodeLine{421         GSM0808\_CAUSE\_INFORMATION\_ELEMENT\_OR\_FIELD\_MISSING            = 82,}
\DoxyCodeLine{422         GSM0808\_CAUSE\_INCORRECT\_VALUE                                      = 83,}
\DoxyCodeLine{423         GSM0808\_CAUSE\_UNKNOWN\_MESSAGE\_TYPE                            = 84,}
\DoxyCodeLine{424         GSM0808\_CAUSE\_UNKNOWN\_INFORMATION\_ELEMENT                      = 85,}
\DoxyCodeLine{425         GSM0808\_CAUSE\_DTM\_HO\_INVALID\_PS\_IND                          = 0x56,}
\DoxyCodeLine{426         GSM0808\_CAUSE\_CALL\_ID\_ALREADY\_ALLOC                          = 0x57,}
\DoxyCodeLine{427         GSM0808\_CAUSE\_PROTOCOL\_ERROR\_BETWEEN\_BSS\_AND\_MSC                = 96,}
\DoxyCodeLine{428         GSM0808\_CAUSE\_VGCS\_VBS\_CALL\_NON\_EXISTENT                        = 0x61,}
\DoxyCodeLine{429         GSM0808\_CAUSE\_DTM\_HO\_TIMER\_EXPIRY                              = 0x62,}
\DoxyCodeLine{430 \};}
\DoxyCodeLine{431 }
\DoxyCodeLine{432 \textcolor{comment}{/* 3GPP TS 08.08 §3.2.2.5 Cause Class */}}
\DoxyCodeLine{433 \textcolor{keyword}{enum} gsm0808\_cause\_class \{}
\DoxyCodeLine{434         GSM0808\_CAUSE\_CLASS\_NORM0              = 0,}
\DoxyCodeLine{435         GSM0808\_CAUSE\_CLASS\_NORM1              = 1,}
\DoxyCodeLine{436         GSM0808\_CAUSE\_CLASS\_RES\_UNAVAIL          = 2,}
\DoxyCodeLine{437         GSM0808\_CAUSE\_CLASS\_SRV\_OPT\_NA            = 3,}
\DoxyCodeLine{438         GSM0808\_CAUSE\_CLASS\_SRV\_OPT\_NIMPL      = 4,}
\DoxyCodeLine{439         GSM0808\_CAUSE\_CLASS\_INVAL              = 5,}
\DoxyCodeLine{440         GSM0808\_CAUSE\_CLASS\_PERR                = 6,}
\DoxyCodeLine{441         GSM0808\_CAUSE\_CLASS\_INTW                = 7,}
\DoxyCodeLine{442 \};}
\DoxyCodeLine{443 }
\DoxyCodeLine{444 \textcolor{comment}{/* GSM 08.08 3.2.2.11 Channel Type */}}
\DoxyCodeLine{445 \textcolor{keyword}{enum} gsm0808\_chan\_indicator \{}
\DoxyCodeLine{446         GSM0808\_CHAN\_SPEECH = 1,}
\DoxyCodeLine{447         GSM0808\_CHAN\_DATA   = 2,}
\DoxyCodeLine{448         GSM0808\_CHAN\_SIGN   = 3,}
\DoxyCodeLine{449         GSM0808\_CHAN\_SPEECH\_CTM\_TEXT\_TELEPHONY = 4,}
\DoxyCodeLine{450 \};}
\DoxyCodeLine{451 }
\DoxyCodeLine{452 \textcolor{comment}{/* GSM 08.08 3.2.2.11 Channel Type */}}
\DoxyCodeLine{453 \textcolor{preprocessor}{\#define GSM0808\_DATA\_FULL\_RPREF GSM0808\_DATA\_FULL\_PREF}}
\DoxyCodeLine{454 \textcolor{keyword}{enum} gsm0808\_chan\_rate\_type\_data \{}
\DoxyCodeLine{455         GSM0808\_DATA\_FULL\_BM        = 0x8,}
\DoxyCodeLine{456         GSM0808\_DATA\_HALF\_LM        = 0x9,}
\DoxyCodeLine{457         GSM0808\_DATA\_FULL\_PREF    = 0xa,}
\DoxyCodeLine{458         GSM0808\_DATA\_HALF\_PREF    = 0xb,}
\DoxyCodeLine{459         GSM0808\_DATA\_FULL\_PREF\_NO\_CHANGE        = 0x1a,}
\DoxyCodeLine{460         GSM0808\_DATA\_HALF\_PREF\_NO\_CHANGE        = 0x1b,}
\DoxyCodeLine{461         GSM0808\_DATA\_MULTI\_MASK  = 0x20,}
\DoxyCodeLine{462         GSM0808\_DATA\_MULTI\_MASK\_NO\_CHANGE      = 0x30,}
\DoxyCodeLine{463 \};}
\DoxyCodeLine{464 }
\DoxyCodeLine{465 \textcolor{comment}{/* GSM 08.08 3.2.2.11 Channel Type */}}
\DoxyCodeLine{466 \textcolor{keyword}{enum} gsm0808\_chan\_rate\_type\_speech \{}
\DoxyCodeLine{467         GSM0808\_SPEECH\_FULL\_BM    = 0x8,}
\DoxyCodeLine{468         GSM0808\_SPEECH\_HALF\_LM    = 0x9,}
\DoxyCodeLine{469         GSM0808\_SPEECH\_FULL\_PREF= 0xa,}
\DoxyCodeLine{470         GSM0808\_SPEECH\_HALF\_PREF= 0xb,}
\DoxyCodeLine{471         GSM0808\_SPEECH\_FULL\_PREF\_NO\_CHANGE    = 0x1a,}
\DoxyCodeLine{472         GSM0808\_SPEECH\_HALF\_PREF\_NO\_CHANGE    = 0x1b,}
\DoxyCodeLine{473         GSM0808\_SPEECH\_PERM  = 0xf,}
\DoxyCodeLine{474         GSM0808\_SPEECH\_PERM\_NO\_CHANGE = 0x1f,}
\DoxyCodeLine{475 \};}
\DoxyCodeLine{476 }
\DoxyCodeLine{477 \textcolor{comment}{/* GSM 08.08 3.2.2.11 Channel Type */}}
\DoxyCodeLine{478 \textcolor{keyword}{enum} gsm0808\_chan\_rate\_type\_sign \{}
\DoxyCodeLine{479         GSM0808\_SIGN\_ANY                 = 0x00,}
\DoxyCodeLine{480         GSM0808\_SIGN\_SDCCH               = 0x01,}
\DoxyCodeLine{481         GSM0808\_SIGN\_SDCCH\_FULL\_BM       = 0x02,}
\DoxyCodeLine{482         GSM0808\_SIGN\_SDCCH\_HALF\_LM       = 0x03,}
\DoxyCodeLine{483         GSM0808\_SIGN\_FULL\_BM             = 0x08,}
\DoxyCodeLine{484         GSM0808\_SIGN\_HALF\_LM             = 0x09,}
\DoxyCodeLine{485         GSM0808\_SIGN\_FULL\_PREF           = 0x0a,}
\DoxyCodeLine{486         GSM0808\_SIGN\_HALF\_PREF           = 0x0b,}
\DoxyCodeLine{487         GSM0808\_SIGN\_FULL\_PREF\_NO\_CHANGE = 0x1a,}
\DoxyCodeLine{488         GSM0808\_SIGN\_HALF\_PREF\_NO\_CHANGE = 0x1b,}
\DoxyCodeLine{489 \};}
\DoxyCodeLine{490 }
\DoxyCodeLine{493 \textcolor{keyword}{enum} gsm0808\_permitted\_speech \{}
\DoxyCodeLine{494         GSM0808\_PERM\_FR1        = 0x01, }
\DoxyCodeLine{495         GSM0808\_PERM\_FR2        = 0x11, }
\DoxyCodeLine{496         GSM0808\_PERM\_FR3        = 0x21, }
\DoxyCodeLine{497         GSM0808\_PERM\_FR4        = 0x41, }
\DoxyCodeLine{498         GSM0808\_PERM\_FR5        = 0x42, }
\DoxyCodeLine{499         GSM0808\_PERM\_HR1        = GSM0808\_PERM\_FR1 | 0x4, }
\DoxyCodeLine{500         GSM0808\_PERM\_HR2        = GSM0808\_PERM\_FR2 | 0x4, }
\DoxyCodeLine{501         GSM0808\_PERM\_HR3        = GSM0808\_PERM\_FR3 | 0x4, }
\DoxyCodeLine{502         GSM0808\_PERM\_HR4        = 0x46, }
\DoxyCodeLine{503         GSM0808\_PERM\_HR6        = 0x45, }
\DoxyCodeLine{504 \};}
\DoxyCodeLine{505 }
\DoxyCodeLine{506 \textcolor{comment}{/* 3GPP TS 48.008 3.2.2.11 Channel Type}}
\DoxyCodeLine{507 \textcolor{comment}{ * Transparent: Data Rate */}}
\DoxyCodeLine{508 \textcolor{keyword}{enum} gsm0808\_data\_rate\_transp \{}
\DoxyCodeLine{509         GSM0808\_DATA\_RATE\_TRANSP\_32k0       = 0x3a,}
\DoxyCodeLine{510         GSM0808\_DATA\_RATE\_TRANSP\_28k8       = 0x39,}
\DoxyCodeLine{511         GSM0808\_DATA\_RATE\_TRANSP\_14k4       = 0x18,}
\DoxyCodeLine{512         GSM0808\_DATA\_RATE\_TRANSP\_9k6         = 0x10,}
\DoxyCodeLine{513         GSM0808\_DATA\_RATE\_TRANSP\_4k8         = 0x11,}
\DoxyCodeLine{514         GSM0808\_DATA\_RATE\_TRANSP\_2k4         = 0x12,}
\DoxyCodeLine{515         GSM0808\_DATA\_RATE\_TRANSP\_1k2         = 0x13,}
\DoxyCodeLine{516         GSM0808\_DATA\_RATE\_TRANSP\_600         = 0x14,}
\DoxyCodeLine{517         GSM0808\_DATA\_RATE\_TRANSP\_1200\_75 = 0x15,}
\DoxyCodeLine{518 \};}
\DoxyCodeLine{519 }
\DoxyCodeLine{520 \textcolor{comment}{/* 3GPP TS 48.008 3.2.2.11 Channel Type}}
\DoxyCodeLine{521 \textcolor{comment}{ * Non-\/Transparent: Radio Interface Data Rate (preferred) */}}
\DoxyCodeLine{522 \textcolor{keyword}{enum} gsm0808\_data\_rate\_non\_transp \{}
\DoxyCodeLine{523         GSM0808\_DATA\_RATE\_NON\_TRANSP\_12000\_6000  = 0x00,}
\DoxyCodeLine{524         GSM0808\_DATA\_RATE\_NON\_TRANSP\_43k5      = 0x34,}
\DoxyCodeLine{525         GSM0808\_DATA\_RATE\_NON\_TRANSP\_29k0      = 0x31,}
\DoxyCodeLine{526         GSM0808\_DATA\_RATE\_NON\_TRANSP\_14k5      = 0x14,}
\DoxyCodeLine{527         GSM0808\_DATA\_RATE\_NON\_TRANSP\_12k0      = 0x10,}
\DoxyCodeLine{528         GSM0808\_DATA\_RATE\_NON\_TRANSP\_6k0        = 0x11,}
\DoxyCodeLine{529 \};}
\DoxyCodeLine{530 }
\DoxyCodeLine{531 \textcolor{comment}{/* 3GPP TS 48.008 3.2.2.11 Channel Type}}
\DoxyCodeLine{532 \textcolor{comment}{ * Non-\/Transparent: Allowed Radio Interface Data Rate (all possible allowed) */}}
\DoxyCodeLine{533 \textcolor{keyword}{enum} gsm0808\_data\_rate\_allowed\_r\_if \{}
\DoxyCodeLine{534         GSM0808\_DATA\_RATE\_NON\_TRANSP\_ALLOWED\_43k5 = 0x40,}
\DoxyCodeLine{535         GSM0808\_DATA\_RATE\_NON\_TRANSP\_ALLOWED\_32k0 = 0x20,}
\DoxyCodeLine{536         GSM0808\_DATA\_RATE\_NON\_TRANSP\_ALLOWED\_29k0 = 0x10,}
\DoxyCodeLine{537         GSM0808\_DATA\_RATE\_NON\_TRANSP\_ALLOWED\_14k5 = 0x08,}
\DoxyCodeLine{538         GSM0808\_DATA\_RATE\_NON\_TRANSP\_ALLOWED\_12k0 = 0x02,}
\DoxyCodeLine{539         GSM0808\_DATA\_RATE\_NON\_TRANSP\_ALLOWED\_6k0  = 0x01,}
\DoxyCodeLine{540 \};}
\DoxyCodeLine{541 }
\DoxyCodeLine{542 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm0808\_permitted\_speech\_names[];}
\DoxyCodeLine{543 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm0808\_permitted\_speech\_name(\textcolor{keyword}{enum} gsm0808\_permitted\_speech val)}
\DoxyCodeLine{544 \{ \textcolor{keywordflow}{return} get\_value\_string(gsm0808\_permitted\_speech\_names, val); \}}
\DoxyCodeLine{545 }
\DoxyCodeLine{547 \textcolor{keyword}{enum} gsm0808\_speech\_codec\_type \{}
\DoxyCodeLine{548         GSM0808\_SCT\_FR1  = 0x0, }
\DoxyCodeLine{549         GSM0808\_SCT\_FR2  = 0x2, }
\DoxyCodeLine{550         GSM0808\_SCT\_FR3  = 0x3, }
\DoxyCodeLine{551         GSM0808\_SCT\_FR4  = 0xc, }
\DoxyCodeLine{552         GSM0808\_SCT\_FR5  = 0x9, }
\DoxyCodeLine{553         GSM0808\_SCT\_HR1  = 0x1, }
\DoxyCodeLine{554         GSM0808\_SCT\_HR3  = 0x4, }
\DoxyCodeLine{555         GSM0808\_SCT\_HR4  = 0xd, }
\DoxyCodeLine{556         GSM0808\_SCT\_HR6  = 0xb, }
\DoxyCodeLine{557         GSM0808\_SCT\_CSD  = 0xfd, }
\DoxyCodeLine{558 \};}
\DoxyCodeLine{559 }
\DoxyCodeLine{560 \textcolor{comment}{/* Codec Extension (the real Codec Type follows in the next octet).}}
\DoxyCodeLine{561 \textcolor{comment}{ * This value is intentionally not included in gsm0808\_speech\_codec\_type,}}
\DoxyCodeLine{562 \textcolor{comment}{ * because \{enc,dec\}\_speech\_codec() functions take care of the extended}}
\DoxyCodeLine{563 \textcolor{comment}{ * encoding internally.  It shall not be used in struct gsm0808\_speech\_codec. */}}
\DoxyCodeLine{564 \textcolor{preprocessor}{\#define GSM0808\_SCT\_EXT 0x0f}}
\DoxyCodeLine{565 }
\DoxyCodeLine{566 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm0808\_speech\_codec\_type\_names[];}
\DoxyCodeLine{567 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm0808\_speech\_codec\_type\_name(\textcolor{keyword}{enum} gsm0808\_speech\_codec\_type val)}
\DoxyCodeLine{568 \{ \textcolor{keywordflow}{return} get\_value\_string(gsm0808\_speech\_codec\_type\_names, val); \}}
\DoxyCodeLine{569 }
\DoxyCodeLine{570 \textcolor{comment}{/* GSM 08.08 3.2.2.44 Chosen Encryption Algorithm */}}
\DoxyCodeLine{571 \textcolor{keyword}{enum} gsm0808\_chosen\_enc\_alg \{}
\DoxyCodeLine{572         GSM0808\_ALG\_ID\_A5\_0  = 0x01,}
\DoxyCodeLine{573         GSM0808\_ALG\_ID\_A5\_1  = 0x02,}
\DoxyCodeLine{574         GSM0808\_ALG\_ID\_A5\_2  = 0x03,}
\DoxyCodeLine{575         GSM0808\_ALG\_ID\_A5\_3  = 0x04,}
\DoxyCodeLine{576         GSM0808\_ALG\_ID\_A5\_4  = 0x05,}
\DoxyCodeLine{577         GSM0808\_ALG\_ID\_A5\_5  = 0x06,}
\DoxyCodeLine{578         GSM0808\_ALG\_ID\_A5\_6  = 0x07,}
\DoxyCodeLine{579         GSM0808\_ALG\_ID\_A5\_7  = 0x08,}
\DoxyCodeLine{580 \};}
\DoxyCodeLine{581 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm0808\_chosen\_enc\_alg\_names[];}
\DoxyCodeLine{582 }
\DoxyCodeLine{583 \textcolor{comment}{/* GSM 08.08 3.2.2.85 Paging Information */}}
\DoxyCodeLine{584 \textcolor{keyword}{enum} gsm0808\_paging\_info \{}
\DoxyCodeLine{585         GSM0808\_PAGINF\_FOR\_MT\_CALL    = 0x00,}
\DoxyCodeLine{586         GSM0808\_PAGINF\_FOR\_SMS            = 0x01,}
\DoxyCodeLine{587         GSM0808\_PAGINF\_FOR\_USSD          = 0x02,}
\DoxyCodeLine{588 \};}
\DoxyCodeLine{589 }
\DoxyCodeLine{592 \textcolor{keyword}{struct }gsm0808\_speech\_codec \{}
\DoxyCodeLine{594         \textcolor{keywordtype}{bool} fi;}
\DoxyCodeLine{596         \textcolor{keywordtype}{bool} pi;}
\DoxyCodeLine{598         \textcolor{keywordtype}{bool} pt;}
\DoxyCodeLine{600         \textcolor{keywordtype}{bool} tf;}
\DoxyCodeLine{602         uint8\_t type;}
\DoxyCodeLine{604         uint16\_t cfg;}
\DoxyCodeLine{605 \};}
\DoxyCodeLine{606 }
\DoxyCodeLine{656 \textcolor{keyword}{enum} gsm0808\_speech\_codec\_defaults \{}
\DoxyCodeLine{657         GSM0808\_SC\_CFG\_DEFAULT\_FR\_AMR              = 0x57ff,}
\DoxyCodeLine{658         GSM0808\_SC\_CFG\_DEFAULT\_HR\_AMR              = 0x073f,}
\DoxyCodeLine{659         GSM0808\_SC\_CFG\_DEFAULT\_OHR\_AMR            = 0x57ff,}
\DoxyCodeLine{660         GSM0808\_SC\_CFG\_DEFAULT\_FR\_AMR\_WB        = 0x01,}
\DoxyCodeLine{661         GSM0808\_SC\_CFG\_DEFAULT\_OFR\_AMR\_WB      = 0x15,}
\DoxyCodeLine{662         GSM0808\_SC\_CFG\_DEFAULT\_OHR\_AMR\_WB      = 0x01,}
\DoxyCodeLine{663 \};}
\DoxyCodeLine{664 }
\DoxyCodeLine{671 \textcolor{keyword}{enum} gsm0808\_speech\_codec\_rate\_defaults \{}
\DoxyCodeLine{672         GSM0808\_SC\_CFG\_DEFAULT\_AMR\_4\_75 = 0xff03,}
\DoxyCodeLine{673         GSM0808\_SC\_CFG\_DEFAULT\_AMR\_5\_15 = 0x0000,}
\DoxyCodeLine{674         GSM0808\_SC\_CFG\_DEFAULT\_AMR\_5\_90 = 0xff06,}
\DoxyCodeLine{675         GSM0808\_SC\_CFG\_DEFAULT\_AMR\_6\_70 = 0x3e08,}
\DoxyCodeLine{676         GSM0808\_SC\_CFG\_DEFAULT\_AMR\_7\_40 = 0x0c12,}
\DoxyCodeLine{677         GSM0808\_SC\_CFG\_DEFAULT\_AMR\_7\_95 = 0xc020,}
\DoxyCodeLine{678         GSM0808\_SC\_CFG\_DEFAULT\_AMR\_10\_2 = 0x3040,}
\DoxyCodeLine{679         GSM0808\_SC\_CFG\_DEFAULT\_AMR\_12\_2 = 0xc082}
\DoxyCodeLine{680 \};}
\DoxyCodeLine{681 }
\DoxyCodeLine{688 \textcolor{keyword}{enum} gsm0808\_speech\_codec\_rate \{}
\DoxyCodeLine{689         GSM0808\_SC\_CFG\_AMR\_4\_75 = 0x0001,}
\DoxyCodeLine{690         GSM0808\_SC\_CFG\_AMR\_4\_75\_5\_90\_7\_40\_12\_20 = 0x0002,}
\DoxyCodeLine{691         GSM0808\_SC\_CFG\_AMR\_5\_90 = 0x0004,}
\DoxyCodeLine{692         GSM0808\_SC\_CFG\_AMR\_6\_70 = 0x0008,}
\DoxyCodeLine{693         GSM0808\_SC\_CFG\_AMR\_7\_40 = 0x0010,}
\DoxyCodeLine{694         GSM0808\_SC\_CFG\_AMR\_7\_95 = 0x0020,}
\DoxyCodeLine{695         GSM0808\_SC\_CFG\_AMR\_10\_2 = 0x0040,}
\DoxyCodeLine{696         GSM0808\_SC\_CFG\_AMR\_12\_2 = 0x0080,}
\DoxyCodeLine{697 \};}
\DoxyCodeLine{698 }
\DoxyCodeLine{699 \textcolor{comment}{/* Bit index of a mode as returned by gsm0808\_amr\_modes\_from\_cfg[].}}
\DoxyCodeLine{700 \textcolor{comment}{ * Example:}}
\DoxyCodeLine{701 \textcolor{comment}{ *   if (gsm0808\_amr\_modes\_from\_cfg[full\_rate ? 1 : 0][9] \& GSM0808\_AMR\_MODE\_4\_75)}}
\DoxyCodeLine{702 \textcolor{comment}{ *       printf("{}S9 supports 4k75"{});}}
\DoxyCodeLine{703 \textcolor{comment}{ */}}
\DoxyCodeLine{704 \textcolor{keyword}{enum} gsm0808\_amr\_mode \{}
\DoxyCodeLine{705         GSM0808\_AMR\_MODE\_4\_75 = 0,}
\DoxyCodeLine{706         GSM0808\_AMR\_MODE\_5\_15,}
\DoxyCodeLine{707         GSM0808\_AMR\_MODE\_5\_90,}
\DoxyCodeLine{708         GSM0808\_AMR\_MODE\_6\_70,}
\DoxyCodeLine{709         GSM0808\_AMR\_MODE\_7\_40,}
\DoxyCodeLine{710         GSM0808\_AMR\_MODE\_7\_95,}
\DoxyCodeLine{711         GSM0808\_AMR\_MODE\_10\_2,}
\DoxyCodeLine{712         GSM0808\_AMR\_MODE\_12\_2,}
\DoxyCodeLine{713 \};}
\DoxyCodeLine{714 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm0808\_amr\_mode\_names[];}
\DoxyCodeLine{715 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm0808\_amr\_mode\_name(\textcolor{keyword}{enum} gsm0808\_amr\_mode val)}
\DoxyCodeLine{716 \{}
\DoxyCodeLine{717         \textcolor{keywordflow}{return} get\_value\_string(gsm0808\_amr\_mode\_names, val);}
\DoxyCodeLine{718 \}}
\DoxyCodeLine{719 }
\DoxyCodeLine{720 \textcolor{keyword}{extern} \textcolor{keyword}{const} uint8\_t gsm0808\_amr\_modes\_from\_cfg[2][16];}
\DoxyCodeLine{721 }
\DoxyCodeLine{722 \textcolor{comment}{/* 3GPP TS 48.008 3.2.2.103 Speech Codec List */}}
\DoxyCodeLine{723 \textcolor{preprocessor}{\#define SPEECH\_CODEC\_MAXLEN 255}}
\DoxyCodeLine{724 \textcolor{keyword}{struct }gsm0808\_speech\_codec\_list \{}
\DoxyCodeLine{725         \textcolor{keyword}{struct }gsm0808\_speech\_codec codec[SPEECH\_CODEC\_MAXLEN];}
\DoxyCodeLine{726         uint8\_t len;}
\DoxyCodeLine{727 \};}
\DoxyCodeLine{728 }
\DoxyCodeLine{729 \textcolor{comment}{/* 3GPP TS 48.008 3.2.2.11 Channel Type}}
\DoxyCodeLine{730 \textcolor{comment}{ * Asymmetry Preference (used for data, non-\/transparent service) */}}
\DoxyCodeLine{731 \textcolor{keyword}{enum} gsm0808\_channel\_type\_asym\_pref \{}
\DoxyCodeLine{732         GSM0808\_CT\_ASYM\_PREF\_NOT\_APPLICABLE = 0,}
\DoxyCodeLine{733         GSM0808\_CT\_ASYM\_PREF\_UL              = 1,}
\DoxyCodeLine{734         GSM0808\_CT\_ASYM\_PREF\_DL              = 2,}
\DoxyCodeLine{735         GSM0808\_CT\_ASYM\_PREF\_SPARE        = 3,}
\DoxyCodeLine{736 \};}
\DoxyCodeLine{737 }
\DoxyCodeLine{738 \textcolor{comment}{/* 3GPP TS 48.008 3.2.2.11 Channel Type */}}
\DoxyCodeLine{739 \textcolor{preprocessor}{\#define CH\_TYPE\_PERM\_SPCH\_MAXLEN 9}}
\DoxyCodeLine{740 \textcolor{keyword}{struct }gsm0808\_channel\_type \{}
\DoxyCodeLine{741         uint8\_t ch\_indctr;}
\DoxyCodeLine{742         uint8\_t ch\_rate\_type;}
\DoxyCodeLine{743 }
\DoxyCodeLine{744         \textcolor{comment}{/* Speech only */}}
\DoxyCodeLine{745         uint8\_t perm\_spch[CH\_TYPE\_PERM\_SPCH\_MAXLEN];}
\DoxyCodeLine{746         \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} perm\_spch\_len;}
\DoxyCodeLine{747 }
\DoxyCodeLine{748         \textcolor{comment}{/* Data only */}}
\DoxyCodeLine{749         \textcolor{keywordtype}{bool} data\_transparent;}
\DoxyCodeLine{750         uint8\_t data\_rate;}
\DoxyCodeLine{751         \textcolor{keywordtype}{bool} data\_rate\_allowed\_is\_set;}
\DoxyCodeLine{752         uint8\_t data\_rate\_allowed;}
\DoxyCodeLine{753         \textcolor{keywordtype}{bool} data\_asym\_pref\_is\_set;}
\DoxyCodeLine{754         \textcolor{keyword}{enum} gsm0808\_channel\_type\_asym\_pref data\_asym\_pref;}
\DoxyCodeLine{755 \};}
\DoxyCodeLine{756 }
\DoxyCodeLine{757 \textcolor{comment}{/* 3GPP TS 48.008 3.2.2.10 Encryption Information */}}
\DoxyCodeLine{758 \textcolor{preprocessor}{\#define ENCRY\_INFO\_KEY\_MAXLEN 252}}
\DoxyCodeLine{759 \textcolor{preprocessor}{\#define ENCRY\_INFO\_PERM\_ALGO\_MAXLEN 8}}
\DoxyCodeLine{760 \textcolor{keyword}{struct }gsm0808\_encrypt\_info \{}
\DoxyCodeLine{761         uint8\_t perm\_algo[ENCRY\_INFO\_PERM\_ALGO\_MAXLEN];}
\DoxyCodeLine{762         \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} perm\_algo\_len;}
\DoxyCodeLine{763         uint8\_t key[ENCRY\_INFO\_KEY\_MAXLEN];}
\DoxyCodeLine{764         \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} key\_len;}
\DoxyCodeLine{765 \};}
\DoxyCodeLine{766 }
\DoxyCodeLine{767 \textcolor{preprocessor}{\#define CELL\_ID\_LIST\_LAC\_MAXLEN 127}}
\DoxyCodeLine{774 \textcolor{keyword}{struct }gsm0808\_cell\_id\_list \{}
\DoxyCodeLine{775         uint8\_t id\_discr;}
\DoxyCodeLine{776         uint16\_t id\_list\_lac[CELL\_ID\_LIST\_LAC\_MAXLEN];}
\DoxyCodeLine{777         \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} id\_list\_len;}
\DoxyCodeLine{778 \};}
\DoxyCodeLine{779 }
\DoxyCodeLine{780 \textcolor{comment}{/* TS 48.008 3.2.2.116 */}}
\DoxyCodeLine{781 \textcolor{keyword}{enum} gsm0808\_lcls\_config \{}
\DoxyCodeLine{782         GSM0808\_LCLS\_CFG\_BOTH\_WAY                                      = 0x00,}
\DoxyCodeLine{783         GSM0808\_LCLS\_CFG\_BOTH\_WAY\_AND\_BICAST\_UL                          = 0x01,}
\DoxyCodeLine{784         GSM0808\_LCLS\_CFG\_BOTH\_WAY\_AND\_SEND\_DL                              = 0x02,}
\DoxyCodeLine{785         GSM0808\_LCLS\_CFG\_BOTH\_WAY\_AND\_SEND\_DL\_BLOCK\_LOCAL\_DL                = 0x03,}
\DoxyCodeLine{786         GSM0808\_LCLS\_CFG\_BOTH\_WAY\_AND\_BICAST\_UL\_SEND\_DL                  = 0x04,}
\DoxyCodeLine{787         GSM0808\_LCLS\_CFG\_BOTH\_WAY\_AND\_BICAST\_UL\_SEND\_DL\_BLOCK\_LOCAL\_DL    = 0x05,}
\DoxyCodeLine{788         GSM0808\_LCLS\_CFG\_NA                                          = 0xFF}
\DoxyCodeLine{789 \};}
\DoxyCodeLine{790 }
\DoxyCodeLine{791 \textcolor{comment}{/* TS 48.008 3.2.2.117 */}}
\DoxyCodeLine{792 \textcolor{keyword}{enum} gsm0808\_lcls\_control \{}
\DoxyCodeLine{793         GSM0808\_LCLS\_CSC\_CONNECT                                        = 0x00,}
\DoxyCodeLine{794         GSM0808\_LCLS\_CSC\_DO\_NOT\_CONNECT                                  = 0x01,}
\DoxyCodeLine{795         GSM0808\_LCLS\_CSC\_RELEASE\_LCLS                                      = 0x02,}
\DoxyCodeLine{796         GSM0808\_LCLS\_CSC\_BICAST\_UL\_AT\_HANDOVER                            = 0x03,}
\DoxyCodeLine{797         GSM0808\_LCLS\_CSC\_BICAST\_UL\_AND\_RECV\_DL\_AT\_HANDOVER            = 0x04,}
\DoxyCodeLine{798         GSM0808\_LCLS\_CSC\_NA                                          = 0xFF}
\DoxyCodeLine{799 \};}
\DoxyCodeLine{800 }
\DoxyCodeLine{801 \textcolor{comment}{/* TS 48.008 3.2.2.119 */}}
\DoxyCodeLine{802 \textcolor{keyword}{enum} gsm0808\_lcls\_status \{}
\DoxyCodeLine{803         GSM0808\_LCLS\_STS\_NOT\_YET\_LS          = 0x00,}
\DoxyCodeLine{804         GSM0808\_LCLS\_STS\_NOT\_POSSIBLE\_LS        = 0x01,}
\DoxyCodeLine{805         GSM0808\_LCLS\_STS\_NO\_LONGER\_LS              = 0x02,}
\DoxyCodeLine{806         GSM0808\_LCLS\_STS\_REQ\_LCLS\_NOT\_SUPP    = 0x03,}
\DoxyCodeLine{807         GSM0808\_LCLS\_STS\_LOCALLY\_SWITCHED      = 0x04,}
\DoxyCodeLine{808         GSM0808\_LCLS\_STS\_NA                  = 0xFF}
\DoxyCodeLine{809 \};}
\DoxyCodeLine{810 }
\DoxyCodeLine{811 \textcolor{comment}{/* 3GPP TS 48.008 3.2.2.32 Diagnostics */}}
\DoxyCodeLine{812 \textcolor{keyword}{struct }gsm0808\_diagnostics \{}
\DoxyCodeLine{813         uint8\_t error\_pointer\_octet;}
\DoxyCodeLine{814 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{815         uint8\_t error\_pointer\_bit\_spare:4,}
\DoxyCodeLine{816                         error\_pointer\_bit:4;}
\DoxyCodeLine{817 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{818 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{819         uint8\_t error\_pointer\_bit:4, error\_pointer\_bit\_spare:4;}
\DoxyCodeLine{820 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{821         uint8\_t msg[0]; }
\DoxyCodeLine{822 \} \_\_attribute\_\_((packed));}

\end{DoxyCode}
