\doxysection{gsm\+\_\+04\+\_\+08.\+h}
\label{gsm__04__08_8h_source}\index{include/osmocom/gsm/protocol/gsm\_04\_08.h@{include/osmocom/gsm/protocol/gsm\_04\_08.h}}
\textbf{ Go to the documentation of this file.}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 }
\DoxyCodeLine{4 \textcolor{preprocessor}{\#pragma once}}
\DoxyCodeLine{5 }
\DoxyCodeLine{6 \textcolor{preprocessor}{\#include <stdint.h>}}
\DoxyCodeLine{7 \textcolor{preprocessor}{\#include <stdbool.h>}}
\DoxyCodeLine{8 }
\DoxyCodeLine{9 \textcolor{preprocessor}{\#include <osmocom/core/utils.h>}}
\DoxyCodeLine{10 \textcolor{preprocessor}{\#include <osmocom/core/endian.h>}}
\DoxyCodeLine{11 }
\DoxyCodeLine{12 \textcolor{preprocessor}{\#include <osmocom/gsm/gsm\_utils.h>}}
\DoxyCodeLine{13 }
\DoxyCodeLine{14 \textcolor{keyword}{struct }gsm\_lchan;}
\DoxyCodeLine{15 }
\DoxyCodeLine{16 \textcolor{comment}{/* Chapter 10.5.1.5 */}}
\DoxyCodeLine{17 \textcolor{keyword}{struct }gsm48\_classmark1 \{}
\DoxyCodeLine{18 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{19         uint8\_t pwr\_lev:3,}
\DoxyCodeLine{20                  a5\_1:1,}
\DoxyCodeLine{21                  es\_ind:1,}
\DoxyCodeLine{22                  rev\_lev:2,}
\DoxyCodeLine{23                  spare:1;}
\DoxyCodeLine{24 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{25 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{26         uint8\_t spare:1, rev\_lev:2, es\_ind:1, a5\_1:1, pwr\_lev:3;}
\DoxyCodeLine{27 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{28 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{29 }
\DoxyCodeLine{30 \textcolor{comment}{/* Chapter 10.5.1.6 */}}
\DoxyCodeLine{31 \textcolor{keyword}{struct }gsm48\_classmark2 \{}
\DoxyCodeLine{32 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{33         uint8\_t pwr\_lev:3,}
\DoxyCodeLine{34                  a5\_1:1,}
\DoxyCodeLine{35                  es\_ind:1,}
\DoxyCodeLine{36                  rev\_lev:2,}
\DoxyCodeLine{37                  spare:1;}
\DoxyCodeLine{38         uint8\_t fc:1,}
\DoxyCodeLine{39                  vgcs:1,}
\DoxyCodeLine{40                  vbs:1,}
\DoxyCodeLine{41                  sm\_cap:1,}
\DoxyCodeLine{42                  ss\_scr:2,}
\DoxyCodeLine{43                  ps\_cap:1,}
\DoxyCodeLine{44                  spare2:1;}
\DoxyCodeLine{45         uint8\_t a5\_2:1,}
\DoxyCodeLine{46                  a5\_3:1,}
\DoxyCodeLine{47                  cmsp:1,}
\DoxyCodeLine{48                  solsa:1,}
\DoxyCodeLine{49                  spare3:1,}
\DoxyCodeLine{50                  lcsva\_cap:1,}
\DoxyCodeLine{51                  spare4:1,}
\DoxyCodeLine{52                  cm3:1;}
\DoxyCodeLine{53 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{54 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{55         uint8\_t spare:1, rev\_lev:2, es\_ind:1, a5\_1:1, pwr\_lev:3;}
\DoxyCodeLine{56         uint8\_t spare2:1, ps\_cap:1, ss\_scr:2, sm\_cap:1, vbs:1, vgcs:1, fc:1;}
\DoxyCodeLine{57         uint8\_t cm3:1, spare4:1, lcsva\_cap:1, spare3:1, solsa:1, cmsp:1, a5\_3:1, a5\_2:1;}
\DoxyCodeLine{58 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{59 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{60 }
\DoxyCodeLine{61 \textcolor{comment}{/* Chapter 10.5.1.7 */}}
\DoxyCodeLine{62 \textcolor{keyword}{struct }gsm48\_classmark3 \{}
\DoxyCodeLine{63         uint8\_t a5\_bits;}
\DoxyCodeLine{64         uint8\_t mult\_band\_supp;}
\DoxyCodeLine{65         uint8\_t assoc\_radio\_cap\_1;}
\DoxyCodeLine{66         uint8\_t assoc\_radio\_cap\_2;}
\DoxyCodeLine{67 }
\DoxyCodeLine{68         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{69                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{70                 uint8\_t r\_gsm\_assoc\_radio\_cap;}
\DoxyCodeLine{71         \} r\_support;}
\DoxyCodeLine{72 }
\DoxyCodeLine{73         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{74                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{75                 uint8\_t mslot\_class;}
\DoxyCodeLine{76         \} hscsd\_mult\_slot\_cap;}
\DoxyCodeLine{77 }
\DoxyCodeLine{78         \textcolor{keywordtype}{bool} ucs2\_treatment;}
\DoxyCodeLine{79         \textcolor{keywordtype}{bool} extended\_meas\_cap;}
\DoxyCodeLine{80 }
\DoxyCodeLine{81         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{82                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{83                 uint8\_t sms\_value;}
\DoxyCodeLine{84                 uint8\_t sm\_value;}
\DoxyCodeLine{85         \} ms\_meas\_cap;}
\DoxyCodeLine{86 }
\DoxyCodeLine{87         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{88                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{89                 uint8\_t method;}
\DoxyCodeLine{90         \} ms\_pos\_method\_cap;}
\DoxyCodeLine{91 }
\DoxyCodeLine{92         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{93                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{94                 uint8\_t mslot\_class;}
\DoxyCodeLine{95         \} ecsd\_multislot\_cap;}
\DoxyCodeLine{96 }
\DoxyCodeLine{97         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{98                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{99                 \textcolor{keywordtype}{bool} mod\_cap;}
\DoxyCodeLine{100 }
\DoxyCodeLine{101                 \textcolor{keyword}{struct }\{}
\DoxyCodeLine{102                         \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{103                         uint8\_t value;}
\DoxyCodeLine{104                 \} rf\_pwr\_cap\_1;}
\DoxyCodeLine{105 }
\DoxyCodeLine{106                 \textcolor{keyword}{struct }\{}
\DoxyCodeLine{107                         \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{108                         uint8\_t value;}
\DoxyCodeLine{109                 \} rf\_pwr\_cap\_2;}
\DoxyCodeLine{110 }
\DoxyCodeLine{111         \} psk8\_struct;}
\DoxyCodeLine{112 }
\DoxyCodeLine{113         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{114                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{115                 uint8\_t value;}
\DoxyCodeLine{116                 uint8\_t assoc\_radio\_cap;}
\DoxyCodeLine{117         \} gsm\_400\_bands\_supp;}
\DoxyCodeLine{118 }
\DoxyCodeLine{119         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{120                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{121                 uint8\_t value;}
\DoxyCodeLine{122         \} gsm\_850\_assoc\_radio\_cap;}
\DoxyCodeLine{123 }
\DoxyCodeLine{124         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{125                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{126                 uint8\_t value;}
\DoxyCodeLine{127         \} gsm\_1900\_assoc\_radio\_cap;}
\DoxyCodeLine{128 }
\DoxyCodeLine{129         \textcolor{keywordtype}{bool} umts\_fdd\_rat\_cap;}
\DoxyCodeLine{130         \textcolor{keywordtype}{bool} umts\_tdd\_rat\_cap;}
\DoxyCodeLine{131         \textcolor{keywordtype}{bool} cdma200\_rat\_cap;}
\DoxyCodeLine{132 }
\DoxyCodeLine{133         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{134                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{135                 uint8\_t mslot\_class;}
\DoxyCodeLine{136                 \textcolor{keywordtype}{bool} single\_slot\_dtm;}
\DoxyCodeLine{137                 \textcolor{keyword}{struct }\{}
\DoxyCodeLine{138                         \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{139                         uint8\_t mslot\_class;}
\DoxyCodeLine{140                 \} dtm\_egprs\_multislot\_cap;}
\DoxyCodeLine{141         \} dtm\_gprs\_multislot\_cap;}
\DoxyCodeLine{142 }
\DoxyCodeLine{143         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{144                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{145                 uint8\_t value;}
\DoxyCodeLine{146         \} single\_band\_supp;}
\DoxyCodeLine{147 }
\DoxyCodeLine{148         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{149                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{150                 uint8\_t value;}
\DoxyCodeLine{151         \} gsm\_750\_assoc\_radio\_cap;}
\DoxyCodeLine{152 }
\DoxyCodeLine{153         \textcolor{keywordtype}{bool} umts\_1\_28\_mcps\_tdd\_rat\_cap;}
\DoxyCodeLine{154         \textcolor{keywordtype}{bool} geran\_feature\_package;}
\DoxyCodeLine{155 }
\DoxyCodeLine{156         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{157                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{158                 uint8\_t mslot\_class;}
\DoxyCodeLine{159                 \textcolor{keyword}{struct }\{}
\DoxyCodeLine{160                         \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{161                         uint8\_t mslot\_class;}
\DoxyCodeLine{162                 \} extended\_dtm\_egprs\_multislot\_cap;}
\DoxyCodeLine{163         \} extended\_dtm\_gprs\_multislot\_cap;}
\DoxyCodeLine{164 }
\DoxyCodeLine{165         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{166                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{167                 uint8\_t value;}
\DoxyCodeLine{168         \} high\_multislot\_cap;}
\DoxyCodeLine{169 }
\DoxyCodeLine{170         \textcolor{keywordtype}{bool} geran\_feature\_package\_2;}
\DoxyCodeLine{171         uint8\_t gmsk\_multislot\_power\_prof;}
\DoxyCodeLine{172         uint8\_t psk8\_multislot\_power\_prof;}
\DoxyCodeLine{173 }
\DoxyCodeLine{174         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{175                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{176                 uint8\_t value;}
\DoxyCodeLine{177                 uint8\_t assoc\_radio\_cap;}
\DoxyCodeLine{178         \} t\_gsm\_400\_bands\_supp;}
\DoxyCodeLine{179 }
\DoxyCodeLine{180         uint8\_t dl\_advanced\_rx\_perf;}
\DoxyCodeLine{181         \textcolor{keywordtype}{bool} dtm\_enhancements\_cap;}
\DoxyCodeLine{182 }
\DoxyCodeLine{183         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{184                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{185                 uint8\_t mslot\_class;}
\DoxyCodeLine{186                 \textcolor{keywordtype}{bool} offset\_required;}
\DoxyCodeLine{187                 \textcolor{keyword}{struct }\{}
\DoxyCodeLine{188                         \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{189                         uint8\_t mslot\_class;}
\DoxyCodeLine{190                 \} dtm\_egprs\_high\_multislot\_cap;}
\DoxyCodeLine{191         \} dtm\_gprs\_high\_multislot\_cap;}
\DoxyCodeLine{192 }
\DoxyCodeLine{193         \textcolor{keywordtype}{bool} repeated\_acch\_capability;}
\DoxyCodeLine{194 }
\DoxyCodeLine{195         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{196                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{197                 uint8\_t value;}
\DoxyCodeLine{198         \} gsm\_710\_assoc\_radio\_cap;}
\DoxyCodeLine{199 }
\DoxyCodeLine{200         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{201                 \textcolor{keywordtype}{bool} present;}
\DoxyCodeLine{202                 uint8\_t value;}
\DoxyCodeLine{203         \} t\_gsm\_810\_assoc\_radio\_cap;}
\DoxyCodeLine{204 }
\DoxyCodeLine{205         \textcolor{keywordtype}{bool} ciphering\_mode\_setting\_cap;}
\DoxyCodeLine{206         \textcolor{keywordtype}{bool} add\_pos\_cap;}
\DoxyCodeLine{207         \textcolor{keywordtype}{bool} e\_utra\_fdd\_supp;}
\DoxyCodeLine{208         \textcolor{keywordtype}{bool} e\_utra\_tdd\_supp;}
\DoxyCodeLine{209         \textcolor{keywordtype}{bool} e\_utra\_meas\_rep\_supp;}
\DoxyCodeLine{210         \textcolor{keywordtype}{bool} prio\_resel\_supp;}
\DoxyCodeLine{211         \textcolor{keywordtype}{bool} utra\_csg\_cells\_rep;}
\DoxyCodeLine{212 }
\DoxyCodeLine{213         uint8\_t vamos\_level;}
\DoxyCodeLine{214         uint8\_t tighter\_capability;}
\DoxyCodeLine{215 }
\DoxyCodeLine{216         \textcolor{keywordtype}{bool} sel\_ciph\_dl\_sacch;}
\DoxyCodeLine{217 }
\DoxyCodeLine{218         uint8\_t cs\_ps\_srvcc\_geran\_utra;}
\DoxyCodeLine{219         uint8\_t cs\_ps\_srvcc\_geran\_eutra;}
\DoxyCodeLine{220 }
\DoxyCodeLine{221         \textcolor{keywordtype}{bool} geran\_net\_sharing;}
\DoxyCodeLine{222         \textcolor{keywordtype}{bool} e\_utra\_wb\_rsrq\_meas\_supp;}
\DoxyCodeLine{223         \textcolor{keywordtype}{bool} er\_band\_support;}
\DoxyCodeLine{224         \textcolor{keywordtype}{bool} utra\_mult\_band\_ind\_supp;}
\DoxyCodeLine{225         \textcolor{keywordtype}{bool} e\_utra\_mult\_band\_ind\_supp;}
\DoxyCodeLine{226         \textcolor{keywordtype}{bool} extended\_tsc\_set\_cap\_supp;}
\DoxyCodeLine{227         \textcolor{keywordtype}{bool} extended\_earfcn\_val\_range;}
\DoxyCodeLine{228 \};}
\DoxyCodeLine{229 }
\DoxyCodeLine{230 \textcolor{keyword}{struct }osmo\_gsm48\_classmark \{}
\DoxyCodeLine{231         \textcolor{keywordtype}{bool} classmark1\_set;}
\DoxyCodeLine{232         \textcolor{keyword}{struct }gsm48\_classmark1 classmark1;}
\DoxyCodeLine{233         uint8\_t classmark2\_len;}
\DoxyCodeLine{234         \textcolor{keyword}{struct }gsm48\_classmark2 classmark2;}
\DoxyCodeLine{235         uint8\_t classmark3\_len;}
\DoxyCodeLine{236         uint8\_t classmark3[14]; \textcolor{comment}{/* if cm3 gets extended by spec, it will be truncated */}}
\DoxyCodeLine{237 \};}
\DoxyCodeLine{238 }
\DoxyCodeLine{239 \textcolor{keywordtype}{bool} osmo\_gsm48\_classmark\_is\_r99(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_gsm48\_classmark *cm);}
\DoxyCodeLine{240 \textcolor{keywordtype}{bool} osmo\_gsm48\_classmark1\_is\_r99(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm48\_classmark1 *cm1);}
\DoxyCodeLine{241 \textcolor{keywordtype}{bool} osmo\_gsm48\_classmark2\_is\_r99(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm48\_classmark2 *cm2, uint8\_t cm2\_len);}
\DoxyCodeLine{242 \textcolor{keywordtype}{int} osmo\_gsm48\_classmark\_supports\_a5(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_gsm48\_classmark *cm, uint8\_t a5);}
\DoxyCodeLine{243 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_gsm48\_classmark\_a5\_name(\textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_gsm48\_classmark *cm);}
\DoxyCodeLine{244 \textcolor{keywordtype}{char} *osmo\_gsm48\_classmark\_a5\_name\_buf(\textcolor{keywordtype}{char} *buf, \textcolor{keywordtype}{size\_t} buf\_len, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_gsm48\_classmark *cm);}
\DoxyCodeLine{245 \textcolor{keywordtype}{char} *osmo\_gsm48\_classmark\_a5\_name\_c(\textcolor{keyword}{const} \textcolor{keywordtype}{void} *ctx, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_gsm48\_classmark *cm);}
\DoxyCodeLine{246 \textcolor{keywordtype}{void} osmo\_gsm48\_classmark\_update(\textcolor{keyword}{struct} osmo\_gsm48\_classmark *dst, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_gsm48\_classmark *src);}
\DoxyCodeLine{247 int8\_t osmo\_gsm48\_rfpowercap2powerclass(\textcolor{keyword}{enum} gsm\_band band, uint8\_t rf\_power\_cap);}
\DoxyCodeLine{248 \textcolor{comment}{/* Chapter 10.5.2.1b.3 */}}
\DoxyCodeLine{249 \textcolor{keyword}{struct }gsm48\_range\_1024 \{}
\DoxyCodeLine{250 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{251         uint8\_t w1\_hi:2,}
\DoxyCodeLine{252                  f0:1,}
\DoxyCodeLine{253                  form\_id:5;}
\DoxyCodeLine{254         uint8\_t w1\_lo;}
\DoxyCodeLine{255         uint8\_t w2\_hi;}
\DoxyCodeLine{256         uint8\_t w3\_hi:7,}
\DoxyCodeLine{257                  w2\_lo:1;}
\DoxyCodeLine{258         uint8\_t w4\_hi:6,}
\DoxyCodeLine{259                  w3\_lo:2;}
\DoxyCodeLine{260         uint8\_t w5\_hi:6,}
\DoxyCodeLine{261                  w4\_lo:2;}
\DoxyCodeLine{262         uint8\_t w6\_hi:6,}
\DoxyCodeLine{263                  w5\_lo:2;}
\DoxyCodeLine{264         uint8\_t w7\_hi:6,}
\DoxyCodeLine{265                  w6\_lo:2;}
\DoxyCodeLine{266         uint8\_t w8\_hi:6,}
\DoxyCodeLine{267                  w7\_lo:2;}
\DoxyCodeLine{268         uint8\_t w9:7,}
\DoxyCodeLine{269                  w8\_lo:1;}
\DoxyCodeLine{270         uint8\_t w11\_hi:1,}
\DoxyCodeLine{271                  w10:7;}
\DoxyCodeLine{272         uint8\_t w12\_hi:2,}
\DoxyCodeLine{273                  w11\_lo:6;}
\DoxyCodeLine{274         uint8\_t w13\_hi:3,}
\DoxyCodeLine{275                  w12\_lo:5;}
\DoxyCodeLine{276         uint8\_t w14\_hi:4,}
\DoxyCodeLine{277                  w13\_lo:4;}
\DoxyCodeLine{278         uint8\_t w15\_hi:5,}
\DoxyCodeLine{279                  w14\_lo:3;}
\DoxyCodeLine{280         uint8\_t w16:6,}
\DoxyCodeLine{281                  w15\_lo:2;}
\DoxyCodeLine{282 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{283 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{284         uint8\_t form\_id:5, f0:1, w1\_hi:2;}
\DoxyCodeLine{285         uint8\_t w1\_lo;}
\DoxyCodeLine{286         uint8\_t w2\_hi;}
\DoxyCodeLine{287         uint8\_t w2\_lo:1, w3\_hi:7;}
\DoxyCodeLine{288         uint8\_t w3\_lo:2, w4\_hi:6;}
\DoxyCodeLine{289         uint8\_t w4\_lo:2, w5\_hi:6;}
\DoxyCodeLine{290         uint8\_t w5\_lo:2, w6\_hi:6;}
\DoxyCodeLine{291         uint8\_t w6\_lo:2, w7\_hi:6;}
\DoxyCodeLine{292         uint8\_t w7\_lo:2, w8\_hi:6;}
\DoxyCodeLine{293         uint8\_t w8\_lo:1, w9:7;}
\DoxyCodeLine{294         uint8\_t w10:7, w11\_hi:1;}
\DoxyCodeLine{295         uint8\_t w11\_lo:6, w12\_hi:2;}
\DoxyCodeLine{296         uint8\_t w12\_lo:5, w13\_hi:3;}
\DoxyCodeLine{297         uint8\_t w13\_lo:4, w14\_hi:4;}
\DoxyCodeLine{298         uint8\_t w14\_lo:3, w15\_hi:5;}
\DoxyCodeLine{299         uint8\_t w15\_lo:2, w16:6;}
\DoxyCodeLine{300 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{301 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{302 }
\DoxyCodeLine{303 \textcolor{comment}{/* Chapter 10.5.2.1b.4 */}}
\DoxyCodeLine{304 \textcolor{keyword}{struct }gsm48\_range\_512 \{}
\DoxyCodeLine{305 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{306         uint8\_t orig\_arfcn\_hi:1,}
\DoxyCodeLine{307                  form\_id:7;}
\DoxyCodeLine{308         uint8\_t orig\_arfcn\_mid;}
\DoxyCodeLine{309         uint8\_t w1\_hi:7,}
\DoxyCodeLine{310                  orig\_arfcn\_lo:1;}
\DoxyCodeLine{311         uint8\_t w2\_hi:6,}
\DoxyCodeLine{312                  w1\_lo:2;}
\DoxyCodeLine{313         uint8\_t w3\_hi:6,}
\DoxyCodeLine{314                  w2\_lo:2;}
\DoxyCodeLine{315         uint8\_t w4\_hi:6,}
\DoxyCodeLine{316                  w3\_lo:2;}
\DoxyCodeLine{317         uint8\_t w5:7,}
\DoxyCodeLine{318                  w4\_lo:1;}
\DoxyCodeLine{319         uint8\_t w7\_hi:1,}
\DoxyCodeLine{320                  w6:7;}
\DoxyCodeLine{321         uint8\_t w8\_hi:2,}
\DoxyCodeLine{322                  w7\_lo:6;}
\DoxyCodeLine{323         uint8\_t w9\_hi:4,}
\DoxyCodeLine{324                  w8\_lo:4;}
\DoxyCodeLine{325         uint8\_t w10:6,}
\DoxyCodeLine{326                  w9\_lo:2;}
\DoxyCodeLine{327         uint8\_t w12\_hi:2,}
\DoxyCodeLine{328                  w11:6;}
\DoxyCodeLine{329         uint8\_t w13\_hi:4,}
\DoxyCodeLine{330                  w12\_lo:4;}
\DoxyCodeLine{331         uint8\_t w14:6,}
\DoxyCodeLine{332                  w13\_lo:2;}
\DoxyCodeLine{333         uint8\_t w16\_hi:2,}
\DoxyCodeLine{334                  w15:6;}
\DoxyCodeLine{335         uint8\_t w17:5,}
\DoxyCodeLine{336                  w16\_lo:3;}
\DoxyCodeLine{337 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{338 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{339         uint8\_t form\_id:7, orig\_arfcn\_hi:1;}
\DoxyCodeLine{340         uint8\_t orig\_arfcn\_mid;}
\DoxyCodeLine{341         uint8\_t orig\_arfcn\_lo:1, w1\_hi:7;}
\DoxyCodeLine{342         uint8\_t w1\_lo:2, w2\_hi:6;}
\DoxyCodeLine{343         uint8\_t w2\_lo:2, w3\_hi:6;}
\DoxyCodeLine{344         uint8\_t w3\_lo:2, w4\_hi:6;}
\DoxyCodeLine{345         uint8\_t w4\_lo:1, w5:7;}
\DoxyCodeLine{346         uint8\_t w6:7, w7\_hi:1;}
\DoxyCodeLine{347         uint8\_t w7\_lo:6, w8\_hi:2;}
\DoxyCodeLine{348         uint8\_t w8\_lo:4, w9\_hi:4;}
\DoxyCodeLine{349         uint8\_t w9\_lo:2, w10:6;}
\DoxyCodeLine{350         uint8\_t w11:6, w12\_hi:2;}
\DoxyCodeLine{351         uint8\_t w12\_lo:4, w13\_hi:4;}
\DoxyCodeLine{352         uint8\_t w13\_lo:2, w14:6;}
\DoxyCodeLine{353         uint8\_t w15:6, w16\_hi:2;}
\DoxyCodeLine{354         uint8\_t w16\_lo:3, w17:5;}
\DoxyCodeLine{355 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{356 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{357 }
\DoxyCodeLine{358 \textcolor{comment}{/* Chapter 10.5.2.1b.5 */}}
\DoxyCodeLine{359 \textcolor{keyword}{struct }gsm48\_range\_256 \{}
\DoxyCodeLine{360 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{361         uint8\_t orig\_arfcn\_hi:1,}
\DoxyCodeLine{362                  form\_id:7;}
\DoxyCodeLine{363         uint8\_t orig\_arfcn\_mid;}
\DoxyCodeLine{364         uint8\_t w1\_hi:7,}
\DoxyCodeLine{365                  orig\_arfcn\_lo:1;}
\DoxyCodeLine{366         uint8\_t w2:7,}
\DoxyCodeLine{367                  w1\_lo:1;}
\DoxyCodeLine{368         uint8\_t w4\_hi:1,}
\DoxyCodeLine{369                  w3:7;}
\DoxyCodeLine{370         uint8\_t w5\_hi:3,}
\DoxyCodeLine{371                  w4\_lo:5;}
\DoxyCodeLine{372         uint8\_t w6\_hi:5,}
\DoxyCodeLine{373                  w5\_lo:3;}
\DoxyCodeLine{374         uint8\_t w8\_hi:1,}
\DoxyCodeLine{375                  w7:6,}
\DoxyCodeLine{376                  w6\_lo:1;}
\DoxyCodeLine{377         uint8\_t w9\_hi:4,}
\DoxyCodeLine{378                  w8\_lo:4;}
\DoxyCodeLine{379         uint8\_t w11\_hi:2,}
\DoxyCodeLine{380                  w10:5,}
\DoxyCodeLine{381                  w9\_lo:1;}
\DoxyCodeLine{382         uint8\_t w12:5,}
\DoxyCodeLine{383                  w11\_lo:3;}
\DoxyCodeLine{384         uint8\_t w14\_hi:3,}
\DoxyCodeLine{385                  w13:5;}
\DoxyCodeLine{386         uint8\_t w16\_hi:1,}
\DoxyCodeLine{387                  w15:5,}
\DoxyCodeLine{388                  w14\_lo:2;}
\DoxyCodeLine{389         uint8\_t w18\_hi:1,}
\DoxyCodeLine{390                  w17:4,}
\DoxyCodeLine{391                  w16\_lo:3;}
\DoxyCodeLine{392         uint8\_t w20\_hi:1,}
\DoxyCodeLine{393                  w19:4,}
\DoxyCodeLine{394                  w18\_lo:3;}
\DoxyCodeLine{395         uint8\_t spare:1,}
\DoxyCodeLine{396                  w21:4,}
\DoxyCodeLine{397                  w20\_lo:3;}
\DoxyCodeLine{398 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{399 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{400         uint8\_t form\_id:7, orig\_arfcn\_hi:1;}
\DoxyCodeLine{401         uint8\_t orig\_arfcn\_mid;}
\DoxyCodeLine{402         uint8\_t orig\_arfcn\_lo:1, w1\_hi:7;}
\DoxyCodeLine{403         uint8\_t w1\_lo:1, w2:7;}
\DoxyCodeLine{404         uint8\_t w3:7, w4\_hi:1;}
\DoxyCodeLine{405         uint8\_t w4\_lo:5, w5\_hi:3;}
\DoxyCodeLine{406         uint8\_t w5\_lo:3, w6\_hi:5;}
\DoxyCodeLine{407         uint8\_t w6\_lo:1, w7:6, w8\_hi:1;}
\DoxyCodeLine{408         uint8\_t w8\_lo:4, w9\_hi:4;}
\DoxyCodeLine{409         uint8\_t w9\_lo:1, w10:5, w11\_hi:2;}
\DoxyCodeLine{410         uint8\_t w11\_lo:3, w12:5;}
\DoxyCodeLine{411         uint8\_t w13:5, w14\_hi:3;}
\DoxyCodeLine{412         uint8\_t w14\_lo:2, w15:5, w16\_hi:1;}
\DoxyCodeLine{413         uint8\_t w16\_lo:3, w17:4, w18\_hi:1;}
\DoxyCodeLine{414         uint8\_t w18\_lo:3, w19:4, w20\_hi:1;}
\DoxyCodeLine{415         uint8\_t w20\_lo:3, w21:4, spare:1;}
\DoxyCodeLine{416 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{417 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{418 }
\DoxyCodeLine{419 \textcolor{comment}{/* Chapter 10.5.2.1b.6 */}}
\DoxyCodeLine{420 \textcolor{keyword}{struct }gsm48\_range\_128 \{}
\DoxyCodeLine{421 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{422         uint8\_t orig\_arfcn\_hi:1,}
\DoxyCodeLine{423                  form\_id:7;}
\DoxyCodeLine{424         uint8\_t orig\_arfcn\_mid;}
\DoxyCodeLine{425         uint8\_t w1:7,}
\DoxyCodeLine{426                  orig\_arfcn\_lo:1;}
\DoxyCodeLine{427         uint8\_t w3\_hi:2,}
\DoxyCodeLine{428                  w2:6;}
\DoxyCodeLine{429         uint8\_t w4\_hi:4,}
\DoxyCodeLine{430                  w3\_lo:4;}
\DoxyCodeLine{431         uint8\_t w6\_hi:2,}
\DoxyCodeLine{432                  w5:5,}
\DoxyCodeLine{433                  w4\_lo:1;}
\DoxyCodeLine{434         uint8\_t w7:5,}
\DoxyCodeLine{435                  w6\_lo:3;}
\DoxyCodeLine{436         uint8\_t w9:4,}
\DoxyCodeLine{437                  w8:4;}
\DoxyCodeLine{438         uint8\_t w11:4,}
\DoxyCodeLine{439                  w10:4;}
\DoxyCodeLine{440         uint8\_t w13:4,}
\DoxyCodeLine{441                  w12:4;}
\DoxyCodeLine{442         uint8\_t w15:4,}
\DoxyCodeLine{443                  w14:4;}
\DoxyCodeLine{444         uint8\_t w18\_hi:2,}
\DoxyCodeLine{445                  w17:3,}
\DoxyCodeLine{446                  w16:3;}
\DoxyCodeLine{447         uint8\_t w21\_hi:1,}
\DoxyCodeLine{448                  w20:3,}
\DoxyCodeLine{449                  w19:3,}
\DoxyCodeLine{450                  w18\_lo:1;}
\DoxyCodeLine{451         uint8\_t w23:3,}
\DoxyCodeLine{452                  w22:3,}
\DoxyCodeLine{453                  w21\_lo:2;}
\DoxyCodeLine{454         uint8\_t w26\_hi:2,}
\DoxyCodeLine{455                  w25:3,}
\DoxyCodeLine{456                  w24:3;}
\DoxyCodeLine{457         uint8\_t spare:1,}
\DoxyCodeLine{458                  w28:3,}
\DoxyCodeLine{459                  w27:3,}
\DoxyCodeLine{460                  w26\_lo:1;}
\DoxyCodeLine{461 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{462 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{463         uint8\_t form\_id:7, orig\_arfcn\_hi:1;}
\DoxyCodeLine{464         uint8\_t orig\_arfcn\_mid;}
\DoxyCodeLine{465         uint8\_t orig\_arfcn\_lo:1, w1:7;}
\DoxyCodeLine{466         uint8\_t w2:6, w3\_hi:2;}
\DoxyCodeLine{467         uint8\_t w3\_lo:4, w4\_hi:4;}
\DoxyCodeLine{468         uint8\_t w4\_lo:1, w5:5, w6\_hi:2;}
\DoxyCodeLine{469         uint8\_t w6\_lo:3, w7:5;}
\DoxyCodeLine{470         uint8\_t w8:4, w9:4;}
\DoxyCodeLine{471         uint8\_t w10:4, w11:4;}
\DoxyCodeLine{472         uint8\_t w12:4, w13:4;}
\DoxyCodeLine{473         uint8\_t w14:4, w15:4;}
\DoxyCodeLine{474         uint8\_t w16:3, w17:3, w18\_hi:2;}
\DoxyCodeLine{475         uint8\_t w18\_lo:1, w19:3, w20:3, w21\_hi:1;}
\DoxyCodeLine{476         uint8\_t w21\_lo:2, w22:3, w23:3;}
\DoxyCodeLine{477         uint8\_t w24:3, w25:3, w26\_hi:2;}
\DoxyCodeLine{478         uint8\_t w26\_lo:1, w27:3, w28:3, spare:1;}
\DoxyCodeLine{479 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{480 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{481 }
\DoxyCodeLine{482 \textcolor{comment}{/* Chapter 10.5.2.1b.7 */}}
\DoxyCodeLine{483 \textcolor{keyword}{struct }gsm48\_var\_bit \{}
\DoxyCodeLine{484 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{485         uint8\_t orig\_arfcn\_hi:1,}
\DoxyCodeLine{486                  form\_id:7;}
\DoxyCodeLine{487         uint8\_t orig\_arfcn\_mid;}
\DoxyCodeLine{488         uint8\_t rrfcn1\_7:7,}
\DoxyCodeLine{489                  orig\_arfcn\_lo:1;}
\DoxyCodeLine{490         uint8\_t rrfcn8\_111[13];}
\DoxyCodeLine{491 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{492 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{493         uint8\_t form\_id:7, orig\_arfcn\_hi:1;}
\DoxyCodeLine{494         uint8\_t orig\_arfcn\_mid;}
\DoxyCodeLine{495         uint8\_t orig\_arfcn\_lo:1, rrfcn1\_7:7;}
\DoxyCodeLine{496         uint8\_t rrfcn8\_111[13];}
\DoxyCodeLine{497 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{498 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{499 }
\DoxyCodeLine{500 \textcolor{comment}{/* Chapter 10.5.2.5 */}}
\DoxyCodeLine{501 \textcolor{keyword}{struct }gsm48\_chan\_desc \{}
\DoxyCodeLine{502         uint8\_t chan\_nr;}
\DoxyCodeLine{503         \textcolor{keyword}{union }\{}
\DoxyCodeLine{504                 \textcolor{keyword}{struct }\{}
\DoxyCodeLine{505 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{506                         uint8\_t maio\_high:4,}
\DoxyCodeLine{507                                  h:1,}
\DoxyCodeLine{508                                  tsc:3;}
\DoxyCodeLine{509                         uint8\_t hsn:6,}
\DoxyCodeLine{510                                  maio\_low:2;}
\DoxyCodeLine{511 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{512 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{513                         uint8\_t tsc:3, h:1, maio\_high:4;}
\DoxyCodeLine{514                         uint8\_t maio\_low:2, hsn:6;}
\DoxyCodeLine{515 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{516                 \} \_\_attribute\_\_ ((packed)) h1;}
\DoxyCodeLine{517                 \textcolor{keyword}{struct }\{}
\DoxyCodeLine{518 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{519                         uint8\_t arfcn\_high:2,}
\DoxyCodeLine{520                                  spare:2,}
\DoxyCodeLine{521                                  h:1,}
\DoxyCodeLine{522                                  tsc:3;}
\DoxyCodeLine{523                         uint8\_t arfcn\_low;}
\DoxyCodeLine{524 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{525 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{526                         uint8\_t tsc:3, h:1, spare:2, arfcn\_high:2;}
\DoxyCodeLine{527                         uint8\_t arfcn\_low;}
\DoxyCodeLine{528 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{529                 \} \_\_attribute\_\_ ((packed)) h0;}
\DoxyCodeLine{530         \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{531 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{532 }
\DoxyCodeLine{533 \textcolor{comment}{/* Chapter 10.5.2.20 */}}
\DoxyCodeLine{534 \textcolor{keyword}{struct }gsm48\_meas\_res \{}
\DoxyCodeLine{535 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{536         uint8\_t rxlev\_full:6,}
\DoxyCodeLine{537                  dtx\_used:1,}
\DoxyCodeLine{538                  ba\_used:1;}
\DoxyCodeLine{539         uint8\_t rxlev\_sub:6,}
\DoxyCodeLine{540                  meas\_valid:1,}
\DoxyCodeLine{541                  spare:1;}
\DoxyCodeLine{542         uint8\_t no\_nc\_n\_hi:1,}
\DoxyCodeLine{543                  rxqual\_sub:3,}
\DoxyCodeLine{544                  rxqual\_full:3,}
\DoxyCodeLine{545                  spare2:1;}
\DoxyCodeLine{546         uint8\_t rxlev\_nc1:6,}
\DoxyCodeLine{547                  no\_nc\_n\_lo:2;}
\DoxyCodeLine{548         uint8\_t bsic\_nc1\_hi:3,}
\DoxyCodeLine{549                  bcch\_f\_nc1:5;}
\DoxyCodeLine{550         uint8\_t rxlev\_nc2\_hi:5,}
\DoxyCodeLine{551                  bsic\_nc1\_lo:3;}
\DoxyCodeLine{552         uint8\_t bsic\_nc2\_hi:2,}
\DoxyCodeLine{553                  bcch\_f\_nc2:5,}
\DoxyCodeLine{554                  rxlev\_nc2\_lo:1;}
\DoxyCodeLine{555         uint8\_t rxlev\_nc3\_hi:4,}
\DoxyCodeLine{556                  bsic\_nc2\_lo:4;}
\DoxyCodeLine{557         uint8\_t bsic\_nc3\_hi:1,}
\DoxyCodeLine{558                  bcch\_f\_nc3:5,}
\DoxyCodeLine{559                  rxlev\_nc3\_lo:2;}
\DoxyCodeLine{560         uint8\_t rxlev\_nc4\_hi:3,}
\DoxyCodeLine{561                  bsic\_nc3\_lo:5;}
\DoxyCodeLine{562         uint8\_t bcch\_f\_nc4:5,}
\DoxyCodeLine{563                  rxlev\_nc4\_lo:3;}
\DoxyCodeLine{564         uint8\_t rxlev\_nc5\_hi:2,}
\DoxyCodeLine{565                  bsic\_nc4:6;}
\DoxyCodeLine{566         uint8\_t bcch\_f\_nc5\_hi:4,}
\DoxyCodeLine{567                  rxlev\_nc5\_lo:4;}
\DoxyCodeLine{568         uint8\_t rxlev\_nc6\_hi:1,}
\DoxyCodeLine{569                  bsic\_nc5:6,}
\DoxyCodeLine{570                  bcch\_f\_nc5\_lo:1;}
\DoxyCodeLine{571         uint8\_t bcch\_f\_nc6\_hi:3,}
\DoxyCodeLine{572                  rxlev\_nc6\_lo:5;}
\DoxyCodeLine{573         uint8\_t bsic\_nc6:6,}
\DoxyCodeLine{574                  bcch\_f\_nc6\_lo:2;}
\DoxyCodeLine{575 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{576 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{577         uint8\_t ba\_used:1, dtx\_used:1, rxlev\_full:6;}
\DoxyCodeLine{578         uint8\_t spare:1, meas\_valid:1, rxlev\_sub:6;}
\DoxyCodeLine{579         uint8\_t spare2:1, rxqual\_full:3, rxqual\_sub:3, no\_nc\_n\_hi:1;}
\DoxyCodeLine{580         uint8\_t no\_nc\_n\_lo:2, rxlev\_nc1:6;}
\DoxyCodeLine{581         uint8\_t bcch\_f\_nc1:5, bsic\_nc1\_hi:3;}
\DoxyCodeLine{582         uint8\_t bsic\_nc1\_lo:3, rxlev\_nc2\_hi:5;}
\DoxyCodeLine{583         uint8\_t rxlev\_nc2\_lo:1, bcch\_f\_nc2:5, bsic\_nc2\_hi:2;}
\DoxyCodeLine{584         uint8\_t bsic\_nc2\_lo:4, rxlev\_nc3\_hi:4;}
\DoxyCodeLine{585         uint8\_t rxlev\_nc3\_lo:2, bcch\_f\_nc3:5, bsic\_nc3\_hi:1;}
\DoxyCodeLine{586         uint8\_t bsic\_nc3\_lo:5, rxlev\_nc4\_hi:3;}
\DoxyCodeLine{587         uint8\_t rxlev\_nc4\_lo:3, bcch\_f\_nc4:5;}
\DoxyCodeLine{588         uint8\_t bsic\_nc4:6, rxlev\_nc5\_hi:2;}
\DoxyCodeLine{589         uint8\_t rxlev\_nc5\_lo:4, bcch\_f\_nc5\_hi:4;}
\DoxyCodeLine{590         uint8\_t bcch\_f\_nc5\_lo:1, bsic\_nc5:6, rxlev\_nc6\_hi:1;}
\DoxyCodeLine{591         uint8\_t rxlev\_nc6\_lo:5, bcch\_f\_nc6\_hi:3;}
\DoxyCodeLine{592         uint8\_t bcch\_f\_nc6\_lo:2, bsic\_nc6:6;}
\DoxyCodeLine{593 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{594 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{595 }
\DoxyCodeLine{597 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keywordtype}{bool} gsm48\_meas\_res\_is\_valid(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm48\_meas\_res *mr)}
\DoxyCodeLine{598 \{}
\DoxyCodeLine{599         \textcolor{keywordflow}{return} (mr-\/>meas\_valid == 0); \textcolor{comment}{/* 0 means valid */}}
\DoxyCodeLine{600 \}}
\DoxyCodeLine{601 }
\DoxyCodeLine{602 \textcolor{comment}{/* Chapter 10.5.2.21aa */}}
\DoxyCodeLine{603 \textcolor{keyword}{struct }gsm48\_multi\_rate\_conf \{}
\DoxyCodeLine{604 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{605         uint8\_t smod : 2,}
\DoxyCodeLine{606                  spare: 1,}
\DoxyCodeLine{607                  icmi : 1,}
\DoxyCodeLine{608                  nscb : 1,}
\DoxyCodeLine{609                  ver : 3;}
\DoxyCodeLine{610         uint8\_t m4\_75 : 1,}
\DoxyCodeLine{611                  m5\_15 : 1,}
\DoxyCodeLine{612                  m5\_90 : 1,}
\DoxyCodeLine{613                  m6\_70 : 1,}
\DoxyCodeLine{614                  m7\_40 : 1,}
\DoxyCodeLine{615                  m7\_95 : 1,}
\DoxyCodeLine{616                  m10\_2 : 1,}
\DoxyCodeLine{617                  m12\_2 : 1;}
\DoxyCodeLine{618 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{619 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{620         uint8\_t ver:3, nscb:1, icmi:1, spare:1, smod:2;}
\DoxyCodeLine{621         uint8\_t m12\_2:1, m10\_2:1, m7\_95:1, m7\_40:1, m6\_70:1, m5\_90:1, m5\_15:1, m4\_75:1;}
\DoxyCodeLine{622 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{623 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{624 }
\DoxyCodeLine{625 \textcolor{comment}{/* Chapter 10.5.2.28(a) */}}
\DoxyCodeLine{626 \textcolor{keyword}{struct }gsm48\_power\_cmd \{}
\DoxyCodeLine{627 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{628         uint8\_t power\_level:5,}
\DoxyCodeLine{629                  spare:2,}
\DoxyCodeLine{630                  atc:1;}
\DoxyCodeLine{631 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{632 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{633         uint8\_t atc:1, spare:2, power\_level:5;}
\DoxyCodeLine{634 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{635 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{636 }
\DoxyCodeLine{637 \textcolor{comment}{/* 3GPP TS 44.018 Chapter 10.5.2.29 "{}RACH Control Parameters"{} */}}
\DoxyCodeLine{638 \textcolor{keyword}{struct }gsm48\_rach\_control \{}
\DoxyCodeLine{639 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{640         uint8\_t re :1, \textcolor{comment}{/* RE, Call reestablishment allowed */}}
\DoxyCodeLine{641                  cell\_bar :1, \textcolor{comment}{/* CELL\_BAR\_ACCESS */}}
\DoxyCodeLine{642                  tx\_integer :4, \textcolor{comment}{/* Tx-\/integer */}}
\DoxyCodeLine{643                  max\_trans :2; \textcolor{comment}{/* Max\_Retrans */}}
\DoxyCodeLine{644         uint8\_t t2; \textcolor{comment}{/* ACC 8-\/15 barred flags */}}
\DoxyCodeLine{645         uint8\_t t3; \textcolor{comment}{/* ACC 0-\/7 barred flags */}}
\DoxyCodeLine{646 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{647 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{648         uint8\_t max\_trans:2, tx\_integer:4, cell\_bar:1, re:1;}
\DoxyCodeLine{649         uint8\_t t2;}
\DoxyCodeLine{650         uint8\_t t3;}
\DoxyCodeLine{651 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{652 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{653 }
\DoxyCodeLine{654 \textcolor{comment}{/*}}
\DoxyCodeLine{655 \textcolor{comment}{ * Mark an Access Control Class as barred.}}
\DoxyCodeLine{656 \textcolor{comment}{ *  \(\backslash\)param[in] rach\_control A Rach Control Information Element.}}
\DoxyCodeLine{657 \textcolor{comment}{ *  \(\backslash\)param[in] acc Access Control Class number (0 -\/ 15) which shall be barred.}}
\DoxyCodeLine{658 \textcolor{comment}{ */}}
\DoxyCodeLine{659 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keywordtype}{void} gsm48\_barr\_acc(\textcolor{keyword}{struct} gsm48\_rach\_control *rach\_control, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} acc)}
\DoxyCodeLine{660 \{}
\DoxyCodeLine{661         OSMO\_ASSERT(acc <= 15);}
\DoxyCodeLine{662         \textcolor{keywordflow}{if} (acc >= 8)}
\DoxyCodeLine{663                 rach\_control-\/>t2 |= (1 << (acc -\/ 8));}
\DoxyCodeLine{664         \textcolor{keywordflow}{else}}
\DoxyCodeLine{665                 rach\_control-\/>t3 |= (1 << (acc));}
\DoxyCodeLine{666 \}}
\DoxyCodeLine{667 }
\DoxyCodeLine{668 \textcolor{comment}{/*}}
\DoxyCodeLine{669 \textcolor{comment}{ * Mark an Access Control Class as allowed.}}
\DoxyCodeLine{670 \textcolor{comment}{ *  \(\backslash\)param[in] rach\_control A Rach Control Information Element.}}
\DoxyCodeLine{671 \textcolor{comment}{ *  \(\backslash\)param[in] acc Access Control Class number (0 -\/ 15) which shall be allowed.}}
\DoxyCodeLine{672 \textcolor{comment}{ */}}
\DoxyCodeLine{673 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keywordtype}{void} gsm48\_allow\_acc(\textcolor{keyword}{struct} gsm48\_rach\_control *rach\_control, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} acc)}
\DoxyCodeLine{674 \{}
\DoxyCodeLine{675         OSMO\_ASSERT(acc <= 15);}
\DoxyCodeLine{676         \textcolor{keywordflow}{if} (acc >= 8)}
\DoxyCodeLine{677                 rach\_control-\/>t2 \&= \string~(1 << (acc -\/ 8));}
\DoxyCodeLine{678         \textcolor{keywordflow}{else}}
\DoxyCodeLine{679                 rach\_control-\/>t3 \&= \string~(1 << (acc));}
\DoxyCodeLine{680 \}}
\DoxyCodeLine{681 }
\DoxyCodeLine{682 \textcolor{comment}{/*}}
\DoxyCodeLine{683 \textcolor{comment}{ * Indicate whether an Access Control Class is barred.}}
\DoxyCodeLine{684 \textcolor{comment}{ *  \(\backslash\)param[in] rach\_control A Rach Control Information Element.}}
\DoxyCodeLine{685 \textcolor{comment}{ *  \(\backslash\)param[in] acc Access Control Class number (0 -\/ 15).}}
\DoxyCodeLine{686 \textcolor{comment}{ *  \(\backslash\)returns true if the Access Control class is barred, false otherwise}}
\DoxyCodeLine{687 \textcolor{comment}{ */}}
\DoxyCodeLine{688 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keywordtype}{bool} gsm48\_acc\_is\_barred(\textcolor{keyword}{struct} gsm48\_rach\_control *rach\_control, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} acc)}
\DoxyCodeLine{689 \{}
\DoxyCodeLine{690         OSMO\_ASSERT(acc <= 15);}
\DoxyCodeLine{691         \textcolor{keywordflow}{if} (acc >= 8)}
\DoxyCodeLine{692                 \textcolor{keywordflow}{return} (rach\_control-\/>t2 \& (1 << (acc -\/ 8))) != 0;}
\DoxyCodeLine{693         \textcolor{keywordflow}{return} (rach\_control-\/>t3 \& (1 << (acc))) != 0;}
\DoxyCodeLine{694 \}}
\DoxyCodeLine{695 }
\DoxyCodeLine{696 \textcolor{comment}{/* Chapter 10.5.2.30 */}}
\DoxyCodeLine{697 \textcolor{keyword}{struct }gsm48\_req\_ref \{}
\DoxyCodeLine{698 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{699         uint8\_t ra;}
\DoxyCodeLine{700         uint8\_t t3\_high:3,}
\DoxyCodeLine{701                  t1:5;}
\DoxyCodeLine{702         uint8\_t t2:5,}
\DoxyCodeLine{703                  t3\_low:3;}
\DoxyCodeLine{704 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{705 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{706         uint8\_t ra;}
\DoxyCodeLine{707         uint8\_t t1:5, t3\_high:3;}
\DoxyCodeLine{708         uint8\_t t3\_low:3, t2:5;}
\DoxyCodeLine{709 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{710 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{711 }
\DoxyCodeLine{712 \textcolor{comment}{/* Chapter 10.5.2.38 */}}
\DoxyCodeLine{713 \textcolor{keyword}{struct }gsm48\_start\_time \{}
\DoxyCodeLine{714 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{715         uint8\_t t3\_high:3,}
\DoxyCodeLine{716                  t1:5;}
\DoxyCodeLine{717         uint8\_t t2:5,}
\DoxyCodeLine{718                  t3\_low:3;}
\DoxyCodeLine{719 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{720 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{721         uint8\_t t1:5, t3\_high:3;}
\DoxyCodeLine{722         uint8\_t t3\_low:3, t2:5;}
\DoxyCodeLine{723 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{724 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{725 }
\DoxyCodeLine{726 \textcolor{comment}{/* Chapter 10.5.2.39 */}}
\DoxyCodeLine{727 \textcolor{keyword}{struct }gsm48\_sync\_ind \{}
\DoxyCodeLine{728 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{729         uint8\_t si:2,}
\DoxyCodeLine{730                  rot:1,}
\DoxyCodeLine{731                  nci:1,}
\DoxyCodeLine{732                  sync\_ie:4;}
\DoxyCodeLine{733 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{734 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{735         uint8\_t sync\_ie:4, nci:1, rot:1, si:2;}
\DoxyCodeLine{736 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{737 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{738 }
\DoxyCodeLine{739 \textcolor{comment}{/*}}
\DoxyCodeLine{740 \textcolor{comment}{ * Chapter 9.1.5/9.1.6}}
\DoxyCodeLine{741 \textcolor{comment}{ *}}
\DoxyCodeLine{742 \textcolor{comment}{ * For 9.1.6 the chan\_desc has the meaning of 10.5.2.5a}}
\DoxyCodeLine{743 \textcolor{comment}{ */}}
\DoxyCodeLine{744 \textcolor{keyword}{struct }gsm48\_chan\_mode\_modify \{}
\DoxyCodeLine{745         \textcolor{keyword}{struct }gsm48\_chan\_desc chan\_desc;}
\DoxyCodeLine{746         uint8\_t mode;}
\DoxyCodeLine{747 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{748 }
\DoxyCodeLine{750 \textcolor{keyword}{enum} gsm48\_chan\_mode \{}
\DoxyCodeLine{752         GSM48\_CMODE\_SIGN        = 0x00,}
\DoxyCodeLine{754         GSM48\_CMODE\_SPEECH\_V1      = 0x01,}
\DoxyCodeLine{756         GSM48\_CMODE\_SPEECH\_EFR    = 0x21, }
\DoxyCodeLine{758         GSM48\_CMODE\_SPEECH\_AMR    = 0x41, }
\DoxyCodeLine{760         GSM48\_CMODE\_SPEECH\_V4      = 0x81,}
\DoxyCodeLine{762         GSM48\_CMODE\_SPEECH\_V5      = 0x82,}
\DoxyCodeLine{764         GSM48\_CMODE\_SPEECH\_V6      = 0x83,}
\DoxyCodeLine{765 }
\DoxyCodeLine{766         \textcolor{comment}{/* ECSD: 43.5 kbit/s (DL) + 14.5 kbit/s (UL) */}}
\DoxyCodeLine{767         GSM48\_CMODE\_DATA\_43k5\_14k5    = 0x61,}
\DoxyCodeLine{768         \textcolor{comment}{/* ECSD: 29.0 kbit/s (DL) + 14.5 kbit/s (UL) */}}
\DoxyCodeLine{769         GSM48\_CMODE\_DATA\_29k0\_14k5    = 0x62,}
\DoxyCodeLine{770         \textcolor{comment}{/* ECSD: 43.5 kbit/s (DL) + 29.0 kbit/s (UL) */}}
\DoxyCodeLine{771         GSM48\_CMODE\_DATA\_43k5\_29k0    = 0x64,}
\DoxyCodeLine{772         \textcolor{comment}{/* ECSD: 14.5 kbit/s (DL) + 43.5 kbit/s (UL) */}}
\DoxyCodeLine{773         GSM48\_CMODE\_DATA\_14k5\_43k5    = 0x67,}
\DoxyCodeLine{774         \textcolor{comment}{/* ECSD: 14.5 kbit/s (DL) + 29.0 kbit/s (UL) */}}
\DoxyCodeLine{775         GSM48\_CMODE\_DATA\_14k5\_29k0    = 0x65,}
\DoxyCodeLine{776         \textcolor{comment}{/* ECSD: 29.0 kbit/s (DL) + 43.5 kbit/s (UL) */}}
\DoxyCodeLine{777         GSM48\_CMODE\_DATA\_29k0\_43k5    = 0x66,}
\DoxyCodeLine{778 }
\DoxyCodeLine{780         GSM48\_CMODE\_DATA\_43k5      = 0x27,}
\DoxyCodeLine{782         GSM48\_CMODE\_DATA\_32k0      = 0x63,}
\DoxyCodeLine{784         GSM48\_CMODE\_DATA\_29k0      = 0x43,}
\DoxyCodeLine{786         GSM48\_CMODE\_DATA\_14k5      = 0x0f,}
\DoxyCodeLine{788         GSM48\_CMODE\_DATA\_12k0      = 0x03,}
\DoxyCodeLine{790         GSM48\_CMODE\_DATA\_6k0        = 0x0b,}
\DoxyCodeLine{792         GSM48\_CMODE\_DATA\_3k6        = 0x13,}
\DoxyCodeLine{793 }
\DoxyCodeLine{795         GSM48\_CMODE\_SPEECH\_V1\_VAMOS  = 0xc1,}
\DoxyCodeLine{797         GSM48\_CMODE\_SPEECH\_V2\_VAMOS  = 0xc2,}
\DoxyCodeLine{799         GSM48\_CMODE\_SPEECH\_V3\_VAMOS  = 0xc3,}
\DoxyCodeLine{801         GSM48\_CMODE\_SPEECH\_V5\_VAMOS  = 0xc5,}
\DoxyCodeLine{802 \};}
\DoxyCodeLine{803 }
\DoxyCodeLine{804 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm48\_chan\_mode\_names[];}
\DoxyCodeLine{805 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm48\_chan\_mode\_name(\textcolor{keyword}{enum} gsm48\_chan\_mode val)}
\DoxyCodeLine{806 \{ \textcolor{keywordflow}{return} get\_value\_string(gsm48\_chan\_mode\_names, val); \}}
\DoxyCodeLine{807 }
\DoxyCodeLine{808 \textcolor{comment}{/* Chapter 9.1.2 */}}
\DoxyCodeLine{809 \textcolor{keyword}{struct }gsm48\_ass\_cmd \{}
\DoxyCodeLine{810         \textcolor{comment}{/* Semantic is from 10.5.2.5a */}}
\DoxyCodeLine{811         \textcolor{keyword}{struct }gsm48\_chan\_desc chan\_desc;}
\DoxyCodeLine{812         uint8\_t power\_command;}
\DoxyCodeLine{813         uint8\_t data[0];}
\DoxyCodeLine{814 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{815 }
\DoxyCodeLine{816 \textcolor{comment}{/* Chapter 9.1.13 */}}
\DoxyCodeLine{817 \textcolor{keyword}{struct }gsm48\_frq\_redef \{}
\DoxyCodeLine{818         \textcolor{comment}{/* Semantic is from 10.5.2.5a */}}
\DoxyCodeLine{819         \textcolor{keyword}{struct }gsm48\_chan\_desc chan\_desc;}
\DoxyCodeLine{820         uint8\_t mob\_alloc\_len;}
\DoxyCodeLine{821         uint8\_t mob\_alloc[0];}
\DoxyCodeLine{822 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{823 }
\DoxyCodeLine{824 \textcolor{comment}{/* Chapter 9.1.13b GPRS suspension request */}}
\DoxyCodeLine{825 \textcolor{keyword}{struct }gsm48\_gprs\_susp\_req \{}
\DoxyCodeLine{826         uint32\_t tlli;}
\DoxyCodeLine{827         uint8\_t ra\_id[6];}
\DoxyCodeLine{828         uint8\_t cause;}
\DoxyCodeLine{829         uint8\_t options[0];}
\DoxyCodeLine{830 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{831 }
\DoxyCodeLine{832 \textcolor{comment}{/* Chapter 10.5.2.2 */}}
\DoxyCodeLine{833 \textcolor{keyword}{struct }gsm48\_cell\_desc \{}
\DoxyCodeLine{834 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{835         uint8\_t bcc:3,}
\DoxyCodeLine{836                  ncc:3,}
\DoxyCodeLine{837                  arfcn\_hi:2;}
\DoxyCodeLine{838         uint8\_t arfcn\_lo;}
\DoxyCodeLine{839 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{840 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{841         uint8\_t arfcn\_hi:2, ncc:3, bcc:3;}
\DoxyCodeLine{842         uint8\_t arfcn\_lo;}
\DoxyCodeLine{843 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{844 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{845 }
\DoxyCodeLine{846 \textcolor{comment}{/* Chapter 9.1.15 */}}
\DoxyCodeLine{847 \textcolor{keyword}{struct }gsm48\_ho\_cmd \{}
\DoxyCodeLine{848         \textcolor{keyword}{struct }gsm48\_cell\_desc cell\_desc;}
\DoxyCodeLine{849         \textcolor{keyword}{struct }gsm48\_chan\_desc chan\_desc;}
\DoxyCodeLine{850         uint8\_t ho\_ref;}
\DoxyCodeLine{851         uint8\_t power\_command;}
\DoxyCodeLine{852         uint8\_t data[0];}
\DoxyCodeLine{853 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{854 }
\DoxyCodeLine{855 \textcolor{comment}{/* Chapter 9.1.18 */}}
\DoxyCodeLine{856 \textcolor{keyword}{struct }gsm48\_imm\_ass \{}
\DoxyCodeLine{857         uint8\_t l2\_plen;}
\DoxyCodeLine{858         uint8\_t proto\_discr;}
\DoxyCodeLine{859         uint8\_t msg\_type;}
\DoxyCodeLine{860         uint8\_t page\_mode;}
\DoxyCodeLine{861         \textcolor{keyword}{struct }gsm48\_chan\_desc chan\_desc;}
\DoxyCodeLine{862         \textcolor{keyword}{struct }gsm48\_req\_ref req\_ref;}
\DoxyCodeLine{863         uint8\_t timing\_advance;}
\DoxyCodeLine{864         uint8\_t mob\_alloc\_len;}
\DoxyCodeLine{865         uint8\_t mob\_alloc[0];}
\DoxyCodeLine{866 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{867 }
\DoxyCodeLine{868 \textcolor{comment}{/* Chapter 9.1.25 */}}
\DoxyCodeLine{869 \textcolor{keyword}{struct }gsm48\_pag\_resp \{}
\DoxyCodeLine{870 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{871         uint8\_t spare:4,}
\DoxyCodeLine{872                  key\_seq:4;}
\DoxyCodeLine{873         \textcolor{keyword}{union }\{}
\DoxyCodeLine{874                 uint32\_t classmark2;  \textcolor{comment}{/* Backward compatibility */}}
\DoxyCodeLine{875                 \textcolor{keyword}{struct }\{}
\DoxyCodeLine{876                         uint8\_t cm2\_len;}
\DoxyCodeLine{877                         \textcolor{keyword}{struct }gsm48\_classmark2 cm2;}
\DoxyCodeLine{878                 \};}
\DoxyCodeLine{879         \};}
\DoxyCodeLine{880         uint8\_t mi\_len;}
\DoxyCodeLine{881         uint8\_t mi[0];}
\DoxyCodeLine{882 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{883 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{884         uint8\_t key\_seq:4, spare:4;}
\DoxyCodeLine{885         \textcolor{keyword}{union }\{}
\DoxyCodeLine{886                 uint32\_t classmark2;}
\DoxyCodeLine{887                 \textcolor{keyword}{struct }\{}
\DoxyCodeLine{888                         uint8\_t cm2\_len;}
\DoxyCodeLine{889                         \textcolor{keyword}{struct }gsm48\_classmark2 cm2;}
\DoxyCodeLine{890                 \};}
\DoxyCodeLine{891         \};}
\DoxyCodeLine{892         uint8\_t mi\_len;}
\DoxyCodeLine{893         uint8\_t mi[0];}
\DoxyCodeLine{894 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{895 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{896 }
\DoxyCodeLine{897 \textcolor{comment}{/* Chapter 10.5.1.3 */}}
\DoxyCodeLine{898 \textcolor{keyword}{struct }gsm48\_loc\_area\_id \{}
\DoxyCodeLine{899         uint8\_t digits[3];        \textcolor{comment}{/* BCD! */}}
\DoxyCodeLine{900         uint16\_t lac;}
\DoxyCodeLine{901 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{902 }
\DoxyCodeLine{903 \textcolor{comment}{/* Section 9.2.2 */}}
\DoxyCodeLine{904 \textcolor{keyword}{struct }gsm48\_auth\_req \{}
\DoxyCodeLine{905 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{906         uint8\_t key\_seq:4,}
\DoxyCodeLine{907                  spare:4;}
\DoxyCodeLine{908         uint8\_t rand[16];}
\DoxyCodeLine{909 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{910 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{911         uint8\_t spare:4, key\_seq:4;}
\DoxyCodeLine{912         uint8\_t rand[16];}
\DoxyCodeLine{913 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{914 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{915 }
\DoxyCodeLine{916 \textcolor{comment}{/* Section 9.2.3 */}}
\DoxyCodeLine{917 \textcolor{keyword}{struct }gsm48\_auth\_resp \{}
\DoxyCodeLine{918         uint8\_t sres[4];}
\DoxyCodeLine{919 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{920 }
\DoxyCodeLine{921 \textcolor{comment}{/* Section 9.2.15 */}}
\DoxyCodeLine{922 \textcolor{keyword}{struct }gsm48\_loc\_upd\_req \{}
\DoxyCodeLine{923 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{924         uint8\_t type:4,}
\DoxyCodeLine{925                  key\_seq:4;}
\DoxyCodeLine{926         \textcolor{keyword}{struct }gsm48\_loc\_area\_id lai;}
\DoxyCodeLine{927         \textcolor{keyword}{struct }gsm48\_classmark1 classmark1;}
\DoxyCodeLine{928         uint8\_t mi\_len;}
\DoxyCodeLine{929         uint8\_t mi[0];}
\DoxyCodeLine{930 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{931 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{932         uint8\_t key\_seq:4, type:4;}
\DoxyCodeLine{933         \textcolor{keyword}{struct }gsm48\_loc\_area\_id lai;}
\DoxyCodeLine{934         \textcolor{keyword}{struct }gsm48\_classmark1 classmark1;}
\DoxyCodeLine{935         uint8\_t mi\_len;}
\DoxyCodeLine{936         uint8\_t mi[0];}
\DoxyCodeLine{937 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{938 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{939 }
\DoxyCodeLine{940 \textcolor{comment}{/* Section 10.1 */}}
\DoxyCodeLine{941 \textcolor{keyword}{struct }gsm48\_hdr \{}
\DoxyCodeLine{942         uint8\_t proto\_discr;}
\DoxyCodeLine{943         uint8\_t msg\_type;}
\DoxyCodeLine{944         uint8\_t data[0];}
\DoxyCodeLine{945 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{946 }
\DoxyCodeLine{947 \textcolor{comment}{/* Short header */}}
\DoxyCodeLine{948 \textcolor{keyword}{struct }gsm48\_hdr\_sh \{}
\DoxyCodeLine{949 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{950         uint8\_t l2\_header:2,    \textcolor{comment}{/* < short layer 2 header : bit(2) > See 3GPP TS 44.006 §6.4a */}}
\DoxyCodeLine{951                 msg\_type:5,     \textcolor{comment}{/* < message type : bit(5) > See 3GPP TS 44.018 Table 10.4.2 */}}
\DoxyCodeLine{952                 rr\_short\_pd:1;  \textcolor{comment}{/* < RR short PD : bit > See 3GPP TS 24.007 §11.3.2 */}}
\DoxyCodeLine{953         uint8\_t data[0];}
\DoxyCodeLine{954 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{955 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{956         uint8\_t rr\_short\_pd:1, msg\_type:5, l2\_header:2;}
\DoxyCodeLine{957         uint8\_t data[0];}
\DoxyCodeLine{958 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{959 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{960 }
\DoxyCodeLine{961 \textcolor{comment}{/* Section 9.1.3x System information Type header */}}
\DoxyCodeLine{962 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_header \{}
\DoxyCodeLine{963 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{964         uint8\_t l2\_plen;}
\DoxyCodeLine{965         uint8\_t rr\_protocol\_discriminator :4,}
\DoxyCodeLine{966                 skip\_indicator:4;}
\DoxyCodeLine{967         uint8\_t system\_information;}
\DoxyCodeLine{968 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{969 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{970         uint8\_t l2\_plen;}
\DoxyCodeLine{971         uint8\_t skip\_indicator:4, rr\_protocol\_discriminator:4;}
\DoxyCodeLine{972         uint8\_t system\_information;}
\DoxyCodeLine{973 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{974 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{975 }
\DoxyCodeLine{976 \textcolor{comment}{/* 3GPP TS 44.018 Section 10.5.2.4 Cell Selection Parameters */}}
\DoxyCodeLine{977 \textcolor{keyword}{struct }gsm48\_cell\_sel\_par \{}
\DoxyCodeLine{978 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{979         uint8\_t ms\_txpwr\_max\_ccch:5,    \textcolor{comment}{/* MS-\/TXPWR-\/MAX-\/CCH, 3GPP TS 45.008 MS\_TXPWR\_MAX\_CCH */}}
\DoxyCodeLine{980                  cell\_resel\_hyst:3;     \textcolor{comment}{/* CELL-\/RESELECT-\/HYSTERESIS, 3GPP TS 45.008 CELL\_RESELECT\_HYSTERESIS */}}
\DoxyCodeLine{981         uint8\_t rxlev\_acc\_min:6,        \textcolor{comment}{/* RXLEV-\/ACCESS-\/MIN, 3GPP TS 45.008 RXLEV\_ACCESS\_MIN */}}
\DoxyCodeLine{982                  neci:1,}
\DoxyCodeLine{983                  acs:1;}
\DoxyCodeLine{984 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{985 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{986         uint8\_t cell\_resel\_hyst:3, ms\_txpwr\_max\_ccch:5;}
\DoxyCodeLine{987         uint8\_t acs:1, neci:1, rxlev\_acc\_min:6;}
\DoxyCodeLine{988 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{989 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{990 }
\DoxyCodeLine{991 \textcolor{comment}{/* 3GPP TS 44.018 Section 10.5.2.11 Control Channel Description */}}
\DoxyCodeLine{992 \textcolor{keyword}{struct }gsm48\_control\_channel\_descr \{}
\DoxyCodeLine{993 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{994         uint8\_t ccch\_conf :3,}
\DoxyCodeLine{995                 bs\_ag\_blks\_res :3,}
\DoxyCodeLine{996                 att :1,}
\DoxyCodeLine{997                 mscr :1;}
\DoxyCodeLine{998         uint8\_t bs\_pa\_mfrms : 3,}
\DoxyCodeLine{999                 spare\_1 :2,}
\DoxyCodeLine{1000                 cbq3 :2,}
\DoxyCodeLine{1001                 spare\_2 :1;}
\DoxyCodeLine{1002         uint8\_t t3212;}
\DoxyCodeLine{1003 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{1004 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{1005         uint8\_t mscr:1, att:1, bs\_ag\_blks\_res:3, ccch\_conf:3;}
\DoxyCodeLine{1006         uint8\_t spare\_2:1, cbq3:2, spare\_1:2, bs\_pa\_mfrms:3;}
\DoxyCodeLine{1007         uint8\_t t3212;}
\DoxyCodeLine{1008 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{1009 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1010 }
\DoxyCodeLine{1011 \textcolor{keyword}{enum} gsm48\_dtx\_mode \{}
\DoxyCodeLine{1012         GSM48\_DTX\_MAY\_BE\_USED,}
\DoxyCodeLine{1013         GSM48\_DTX\_SHALL\_BE\_USED,}
\DoxyCodeLine{1014         GSM48\_DTX\_SHALL\_NOT\_BE\_USED}
\DoxyCodeLine{1015 \};}
\DoxyCodeLine{1016 }
\DoxyCodeLine{1017 \textcolor{comment}{/* Cell Options for SI6, SACCH (10.5.2.3a.2) or SI3, BCCH (Table 10.5.2.3.1),}}
\DoxyCodeLine{1018 \textcolor{comment}{   3GPP TS 44.018 */}}
\DoxyCodeLine{1019 \textcolor{keyword}{struct }gsm48\_cell\_options \{}
\DoxyCodeLine{1020 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{1021         uint8\_t radio\_link\_timeout:4,}
\DoxyCodeLine{1022                  dtx:2,}
\DoxyCodeLine{1023                  pwrc:1,}
\DoxyCodeLine{1024         \textcolor{comment}{/* either DN-\/IND or top bit of DTX IND */}}
\DoxyCodeLine{1025                  d:1;}
\DoxyCodeLine{1026 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{1027 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{1028         uint8\_t d:1, pwrc:1, dtx:2, radio\_link\_timeout:4;}
\DoxyCodeLine{1029 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{1030 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1031 }
\DoxyCodeLine{1032 \textcolor{comment}{/* Section 9.2.9 CM service request */}}
\DoxyCodeLine{1033 \textcolor{keyword}{struct }gsm48\_service\_request \{}
\DoxyCodeLine{1034 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{1035         uint8\_t cm\_service\_type : 4,}
\DoxyCodeLine{1036                  cipher\_key\_seq  : 4;}
\DoxyCodeLine{1037         \textcolor{keyword}{union }\{}
\DoxyCodeLine{1038                 uint32\_t classmark;  \textcolor{comment}{/* Backward compatibility */}}
\DoxyCodeLine{1039                 \textcolor{keyword}{struct }\{}
\DoxyCodeLine{1040                         uint8\_t cm2\_len;}
\DoxyCodeLine{1041                         \textcolor{keyword}{struct }gsm48\_classmark2 classmark2;}
\DoxyCodeLine{1042                 \};}
\DoxyCodeLine{1043         \};}
\DoxyCodeLine{1044         uint8\_t mi\_len;}
\DoxyCodeLine{1045         uint8\_t mi[0];}
\DoxyCodeLine{1046         \textcolor{comment}{/* optional priority level */}}
\DoxyCodeLine{1047 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{1048 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{1049         uint8\_t cipher\_key\_seq:4, cm\_service\_type:4;}
\DoxyCodeLine{1050         \textcolor{keyword}{union }\{}
\DoxyCodeLine{1051                 uint32\_t classmark;}
\DoxyCodeLine{1052                 \textcolor{keyword}{struct }\{}
\DoxyCodeLine{1053                         uint8\_t cm2\_len;}
\DoxyCodeLine{1054                         \textcolor{keyword}{struct }gsm48\_classmark2 classmark2;}
\DoxyCodeLine{1055                 \};}
\DoxyCodeLine{1056         \};}
\DoxyCodeLine{1057         uint8\_t mi\_len;}
\DoxyCodeLine{1058         uint8\_t mi[0];}
\DoxyCodeLine{1059 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{1060 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1061 }
\DoxyCodeLine{1062 \textcolor{comment}{/* Section 9.1.31 System information Type 1 */}}
\DoxyCodeLine{1063 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_1 \{}
\DoxyCodeLine{1064         \textcolor{keyword}{struct }gsm48\_system\_information\_type\_header header;}
\DoxyCodeLine{1065         uint8\_t cell\_channel\_description[16];}
\DoxyCodeLine{1066         \textcolor{keyword}{struct }gsm48\_rach\_control rach\_control;}
\DoxyCodeLine{1067         uint8\_t rest\_octets[0]; \textcolor{comment}{/* NCH position on the CCCH */}}
\DoxyCodeLine{1068 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1069 }
\DoxyCodeLine{1070 \textcolor{comment}{/* Section 9.1.32 System information Type 2 */}}
\DoxyCodeLine{1071 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_2 \{}
\DoxyCodeLine{1072         \textcolor{keyword}{struct }gsm48\_system\_information\_type\_header header;}
\DoxyCodeLine{1073         uint8\_t bcch\_frequency\_list[16];}
\DoxyCodeLine{1074         uint8\_t ncc\_permitted;}
\DoxyCodeLine{1075         \textcolor{keyword}{struct }gsm48\_rach\_control rach\_control;}
\DoxyCodeLine{1076 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1077 }
\DoxyCodeLine{1078 \textcolor{comment}{/* Section 9.1.33 System information Type 2bis */}}
\DoxyCodeLine{1079 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_2bis \{}
\DoxyCodeLine{1080         \textcolor{keyword}{struct }gsm48\_system\_information\_type\_header header;}
\DoxyCodeLine{1081         uint8\_t bcch\_frequency\_list[16];}
\DoxyCodeLine{1082         \textcolor{keyword}{struct }gsm48\_rach\_control rach\_control;}
\DoxyCodeLine{1083         uint8\_t rest\_octets[0];}
\DoxyCodeLine{1084 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1085 }
\DoxyCodeLine{1086 \textcolor{comment}{/* Section 9.1.34 System information Type 2ter */}}
\DoxyCodeLine{1087 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_2ter \{}
\DoxyCodeLine{1088         \textcolor{keyword}{struct }gsm48\_system\_information\_type\_header header;}
\DoxyCodeLine{1089         uint8\_t ext\_bcch\_frequency\_list[16];}
\DoxyCodeLine{1090         uint8\_t rest\_octets[0];}
\DoxyCodeLine{1091 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1092 }
\DoxyCodeLine{1093 \textcolor{comment}{/* Section 9.1.34a System information Type 2quater */}}
\DoxyCodeLine{1094 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_2quater \{}
\DoxyCodeLine{1095         \textcolor{keyword}{struct }gsm48\_system\_information\_type\_header header;}
\DoxyCodeLine{1096         uint8\_t rest\_octets[0];}
\DoxyCodeLine{1097 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1098 }
\DoxyCodeLine{1099 \textcolor{comment}{/* Section 9.1.35 System information Type 3 */}}
\DoxyCodeLine{1100 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_3 \{}
\DoxyCodeLine{1101         \textcolor{keyword}{struct }gsm48\_system\_information\_type\_header header;}
\DoxyCodeLine{1102         uint16\_t cell\_identity;}
\DoxyCodeLine{1103         \textcolor{keyword}{struct }gsm48\_loc\_area\_id lai;}
\DoxyCodeLine{1104         \textcolor{keyword}{struct }gsm48\_control\_channel\_descr control\_channel\_desc;}
\DoxyCodeLine{1105         \textcolor{keyword}{struct }gsm48\_cell\_options cell\_options;}
\DoxyCodeLine{1106         \textcolor{keyword}{struct }gsm48\_cell\_sel\_par cell\_sel\_par;}
\DoxyCodeLine{1107         \textcolor{keyword}{struct }gsm48\_rach\_control rach\_control;}
\DoxyCodeLine{1108         uint8\_t rest\_octets[0];}
\DoxyCodeLine{1109 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1110 }
\DoxyCodeLine{1111 \textcolor{comment}{/* Section 9.1.36 System information Type 4 */}}
\DoxyCodeLine{1112 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_4 \{}
\DoxyCodeLine{1113         \textcolor{keyword}{struct }gsm48\_system\_information\_type\_header header;}
\DoxyCodeLine{1114         \textcolor{keyword}{struct }gsm48\_loc\_area\_id lai;}
\DoxyCodeLine{1115         \textcolor{keyword}{struct }gsm48\_cell\_sel\_par cell\_sel\_par;}
\DoxyCodeLine{1116         \textcolor{keyword}{struct }gsm48\_rach\_control rach\_control;}
\DoxyCodeLine{1117         \textcolor{comment}{/*      optional CBCH conditional CBCH... followed by}}
\DoxyCodeLine{1118 \textcolor{comment}{                mandantory SI 4 Reset Octets}}
\DoxyCodeLine{1119 \textcolor{comment}{         */}}
\DoxyCodeLine{1120         uint8\_t data[0];}
\DoxyCodeLine{1121 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1122 }
\DoxyCodeLine{1123 \textcolor{comment}{/* Section 9.1.37 System information Type 5 */}}
\DoxyCodeLine{1124 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_5 \{}
\DoxyCodeLine{1125 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{1126         uint8\_t rr\_protocol\_discriminator :4,}
\DoxyCodeLine{1127                 skip\_indicator:4;}
\DoxyCodeLine{1128         uint8\_t system\_information;}
\DoxyCodeLine{1129         uint8\_t bcch\_frequency\_list[16];}
\DoxyCodeLine{1130 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{1131 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{1132         uint8\_t skip\_indicator:4, rr\_protocol\_discriminator:4;}
\DoxyCodeLine{1133         uint8\_t system\_information;}
\DoxyCodeLine{1134         uint8\_t bcch\_frequency\_list[16];}
\DoxyCodeLine{1135 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{1136 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1137 }
\DoxyCodeLine{1138 \textcolor{comment}{/* Section 9.1.38 System information Type 5bis */}}
\DoxyCodeLine{1139 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_5bis \{}
\DoxyCodeLine{1140 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{1141         uint8\_t rr\_protocol\_discriminator :4,}
\DoxyCodeLine{1142                  skip\_indicator:4;}
\DoxyCodeLine{1143         uint8\_t system\_information;}
\DoxyCodeLine{1144         uint8\_t bcch\_frequency\_list[16];}
\DoxyCodeLine{1145 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{1146 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{1147         uint8\_t skip\_indicator:4, rr\_protocol\_discriminator:4;}
\DoxyCodeLine{1148         uint8\_t system\_information;}
\DoxyCodeLine{1149         uint8\_t bcch\_frequency\_list[16];}
\DoxyCodeLine{1150 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{1151 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1152 }
\DoxyCodeLine{1153 \textcolor{comment}{/* Section 9.1.39 System information Type 5ter */}}
\DoxyCodeLine{1154 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_5ter \{}
\DoxyCodeLine{1155 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{1156         uint8\_t rr\_protocol\_discriminator :4,}
\DoxyCodeLine{1157                  skip\_indicator:4;}
\DoxyCodeLine{1158         uint8\_t system\_information;}
\DoxyCodeLine{1159         uint8\_t bcch\_frequency\_list[16];}
\DoxyCodeLine{1160 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{1161 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{1162         uint8\_t skip\_indicator:4, rr\_protocol\_discriminator:4;}
\DoxyCodeLine{1163         uint8\_t system\_information;}
\DoxyCodeLine{1164         uint8\_t bcch\_frequency\_list[16];}
\DoxyCodeLine{1165 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{1166 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1167 }
\DoxyCodeLine{1168 \textcolor{comment}{/* Section 9.1.40 System information Type 6 */}}
\DoxyCodeLine{1169 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_6 \{}
\DoxyCodeLine{1170 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{1171         uint8\_t rr\_protocol\_discriminator :4,}
\DoxyCodeLine{1172                 skip\_indicator:4;}
\DoxyCodeLine{1173         uint8\_t system\_information;}
\DoxyCodeLine{1174         uint16\_t cell\_identity;}
\DoxyCodeLine{1175         \textcolor{keyword}{struct }gsm48\_loc\_area\_id lai;}
\DoxyCodeLine{1176         \textcolor{keyword}{struct }gsm48\_cell\_options cell\_options;}
\DoxyCodeLine{1177         uint8\_t ncc\_permitted;}
\DoxyCodeLine{1178         uint8\_t rest\_octets[0];}
\DoxyCodeLine{1179 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{1180 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{1181         uint8\_t skip\_indicator:4, rr\_protocol\_discriminator:4;}
\DoxyCodeLine{1182         uint8\_t system\_information;}
\DoxyCodeLine{1183         uint16\_t cell\_identity;}
\DoxyCodeLine{1184         \textcolor{keyword}{struct }gsm48\_loc\_area\_id lai;}
\DoxyCodeLine{1185         \textcolor{keyword}{struct }gsm48\_cell\_options cell\_options;}
\DoxyCodeLine{1186         uint8\_t ncc\_permitted;}
\DoxyCodeLine{1187         uint8\_t rest\_octets[0];}
\DoxyCodeLine{1188 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{1189 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1190 }
\DoxyCodeLine{1191 \textcolor{comment}{/* Section 9.1.50 System Information type 10 (ASCI) */}}
\DoxyCodeLine{1192 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_10 \{}
\DoxyCodeLine{1193 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{1194         uint8\_t l2\_header:2,    \textcolor{comment}{/* < short layer 2 header : bit(2) > See 3GPP TS 44.006 §6.4a */}}
\DoxyCodeLine{1195                 msg\_type:5,     \textcolor{comment}{/* < message type : bit(5) > See 3GPP TS 44.018 Table 10.4.2 */}}
\DoxyCodeLine{1196                 rr\_short\_pd:1;  \textcolor{comment}{/* < RR short PD : bit > See 3GPP TS 24.007 §11.3.2 */}}
\DoxyCodeLine{1197         uint8\_t rest\_octets[0];      \textcolor{comment}{/* < SI10 Rest Octets : bit(160) > See 3GPP TS 44.018 §10.5.2.44 */}}
\DoxyCodeLine{1198 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{1199 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{1200         uint8\_t rr\_short\_pd:1, msg\_type:5, l2\_header:2;}
\DoxyCodeLine{1201         uint8\_t rest\_octets[0];}
\DoxyCodeLine{1202 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{1203 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1204 }
\DoxyCodeLine{1205 \textcolor{comment}{/* TS 44.018 Section 9.1.49 */}}
\DoxyCodeLine{1206 \textcolor{keyword}{struct }gsm0408\_vgcs\_ul\_grant \{}
\DoxyCodeLine{1207         \textcolor{keyword}{struct }gsm48\_hdr hdr;}
\DoxyCodeLine{1208         \textcolor{keyword}{struct }gsm48\_req\_ref req\_ref;}
\DoxyCodeLine{1209         uint8\_t ta;}
\DoxyCodeLine{1210 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1211 }
\DoxyCodeLine{1212 \textcolor{comment}{/* Section 9.1.43a System Information type 13 */}}
\DoxyCodeLine{1213 \textcolor{keyword}{struct }gsm48\_system\_information\_type\_13 \{}
\DoxyCodeLine{1214         \textcolor{keyword}{struct }gsm48\_system\_information\_type\_header header;}
\DoxyCodeLine{1215         uint8\_t rest\_octets[0];}
\DoxyCodeLine{1216 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1217 }
\DoxyCodeLine{1218 \textcolor{comment}{/* Section 9.2.12 IMSI Detach Indication */}}
\DoxyCodeLine{1219 \textcolor{keyword}{struct }gsm48\_imsi\_detach\_ind \{}
\DoxyCodeLine{1220         \textcolor{keyword}{struct }gsm48\_classmark1 classmark1;}
\DoxyCodeLine{1221         uint8\_t mi\_len;}
\DoxyCodeLine{1222         uint8\_t mi[0];}
\DoxyCodeLine{1223 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1224 }
\DoxyCodeLine{1225 \textcolor{comment}{/* Section 9.1.1 */}}
\DoxyCodeLine{1226 \textcolor{keyword}{struct }gsm48\_add\_ass \{}
\DoxyCodeLine{1227         \textcolor{comment}{/* Semantic is from 10.5.2.5 */}}
\DoxyCodeLine{1228         \textcolor{keyword}{struct }gsm48\_chan\_desc chan\_desc;}
\DoxyCodeLine{1229         uint8\_t data[0];}
\DoxyCodeLine{1230 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1231 }
\DoxyCodeLine{1232 \textcolor{comment}{/* Section 9.1.3 */}}
\DoxyCodeLine{1233 \textcolor{keyword}{struct }gsm48\_ass\_cpl \{}
\DoxyCodeLine{1234         uint8\_t rr\_cause;}
\DoxyCodeLine{1235 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1236 }
\DoxyCodeLine{1237 \textcolor{comment}{/* Section 9.1.4 */}}
\DoxyCodeLine{1238 \textcolor{keyword}{struct }gsm48\_ass\_fail \{}
\DoxyCodeLine{1239         uint8\_t rr\_cause;}
\DoxyCodeLine{1240 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1241 }
\DoxyCodeLine{1242 \textcolor{comment}{/* Section 9.1.3 */}}
\DoxyCodeLine{1243 \textcolor{keyword}{struct }gsm48\_ho\_cpl \{}
\DoxyCodeLine{1244         uint8\_t rr\_cause;}
\DoxyCodeLine{1245         uint8\_t data[0];}
\DoxyCodeLine{1246 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1247 }
\DoxyCodeLine{1248 \textcolor{comment}{/* Section 9.1.4 */}}
\DoxyCodeLine{1249 \textcolor{keyword}{struct }gsm48\_ho\_fail \{}
\DoxyCodeLine{1250         uint8\_t rr\_cause;}
\DoxyCodeLine{1251 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1252 }
\DoxyCodeLine{1253 \textcolor{comment}{/* Section 9.1.7 */}}
\DoxyCodeLine{1254 \textcolor{keyword}{struct }gsm48\_chan\_rel \{}
\DoxyCodeLine{1255         uint8\_t rr\_cause;}
\DoxyCodeLine{1256         uint8\_t data[0];}
\DoxyCodeLine{1257 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1258 }
\DoxyCodeLine{1259 \textcolor{comment}{/* Section 9.1.9 */}}
\DoxyCodeLine{1260 \textcolor{keyword}{struct }gsm48\_cip\_mode\_cmd \{}
\DoxyCodeLine{1261 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{1262         uint8\_t sc:1,}
\DoxyCodeLine{1263                  alg\_id:3,}
\DoxyCodeLine{1264                  cr:1,}
\DoxyCodeLine{1265                  spare:3;}
\DoxyCodeLine{1266 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{1267 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{1268         uint8\_t spare:3, cr:1, alg\_id:3, sc:1;}
\DoxyCodeLine{1269 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{1270 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1271 }
\DoxyCodeLine{1272 \textcolor{comment}{/* Section 9.1.11 */}}
\DoxyCodeLine{1273 \textcolor{keyword}{struct }gsm48\_cm\_change \{}
\DoxyCodeLine{1274         uint8\_t cm2\_len;}
\DoxyCodeLine{1275         \textcolor{keyword}{struct }gsm48\_classmark2 cm2;}
\DoxyCodeLine{1276         uint8\_t data[0];}
\DoxyCodeLine{1277 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1278 }
\DoxyCodeLine{1279 \textcolor{comment}{/* Section 9.1.19 */}}
\DoxyCodeLine{1280 \textcolor{keyword}{struct }gsm48\_imm\_ass\_ext \{}
\DoxyCodeLine{1281         uint8\_t l2\_plen;}
\DoxyCodeLine{1282         uint8\_t proto\_discr;}
\DoxyCodeLine{1283         uint8\_t msg\_type;}
\DoxyCodeLine{1284         uint8\_t page\_mode;}
\DoxyCodeLine{1285         \textcolor{keyword}{struct }gsm48\_chan\_desc chan\_desc1;}
\DoxyCodeLine{1286         \textcolor{keyword}{struct }gsm48\_req\_ref req\_ref1;}
\DoxyCodeLine{1287         uint8\_t timing\_advance1;}
\DoxyCodeLine{1288         \textcolor{keyword}{struct }gsm48\_chan\_desc chan\_desc2;}
\DoxyCodeLine{1289         \textcolor{keyword}{struct }gsm48\_req\_ref req\_ref2;}
\DoxyCodeLine{1290         uint8\_t timing\_advance2;}
\DoxyCodeLine{1291         uint8\_t mob\_alloc\_len;}
\DoxyCodeLine{1292         uint8\_t mob\_alloc[0];}
\DoxyCodeLine{1293 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1294 }
\DoxyCodeLine{1295 \textcolor{comment}{/* Section 9.1.20 */}}
\DoxyCodeLine{1296 \textcolor{keyword}{struct }gsm48\_imm\_ass\_rej \{}
\DoxyCodeLine{1297         uint8\_t l2\_plen;}
\DoxyCodeLine{1298         uint8\_t proto\_discr;}
\DoxyCodeLine{1299         uint8\_t msg\_type;}
\DoxyCodeLine{1300         uint8\_t page\_mode;}
\DoxyCodeLine{1301         \textcolor{keyword}{struct }gsm48\_req\_ref req\_ref1;}
\DoxyCodeLine{1302         uint8\_t wait\_ind1;}
\DoxyCodeLine{1303         \textcolor{keyword}{struct }gsm48\_req\_ref req\_ref2;}
\DoxyCodeLine{1304         uint8\_t wait\_ind2;}
\DoxyCodeLine{1305         \textcolor{keyword}{struct }gsm48\_req\_ref req\_ref3;}
\DoxyCodeLine{1306         uint8\_t wait\_ind3;}
\DoxyCodeLine{1307         \textcolor{keyword}{struct }gsm48\_req\_ref req\_ref4;}
\DoxyCodeLine{1308         uint8\_t wait\_ind4;}
\DoxyCodeLine{1309         uint8\_t rest[0];}
\DoxyCodeLine{1310 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{1311 }
\DoxyCodeLine{1312 \textcolor{comment}{/* Section 9.1.21b */}}
\DoxyCodeLine{1313 \textcolor{keyword}{struct }gsm48\_notification\_nch \{}
\DoxyCodeLine{1314         uint8\_t l2\_plen;}
\DoxyCodeLine{1315         uint8\_t proto\_discr;}
\DoxyCodeLine{1316         uint8\_t msg\_type;}
\DoxyCodeLine{1317         uint8\_t data[0];}
\DoxyCodeLine{1318 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1319 }
\DoxyCodeLine{1320 \textcolor{comment}{/* Section 9.1.22 */}}
\DoxyCodeLine{1321 \textcolor{keyword}{struct }gsm48\_paging1 \{}
\DoxyCodeLine{1322 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{1323         uint8\_t l2\_plen;}
\DoxyCodeLine{1324         uint8\_t proto\_discr;}
\DoxyCodeLine{1325         uint8\_t msg\_type;}
\DoxyCodeLine{1326         uint8\_t pag\_mode:2,}
\DoxyCodeLine{1327                  spare:2,}
\DoxyCodeLine{1328                  cneed1:2,}
\DoxyCodeLine{1329                  cneed2:2;}
\DoxyCodeLine{1330         uint8\_t data[0];}
\DoxyCodeLine{1331 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{1332 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{1333         uint8\_t l2\_plen;}
\DoxyCodeLine{1334         uint8\_t proto\_discr;}
\DoxyCodeLine{1335         uint8\_t msg\_type;}
\DoxyCodeLine{1336         uint8\_t cneed2:2, cneed1:2, spare:2, pag\_mode:2;}
\DoxyCodeLine{1337         uint8\_t data[0];}
\DoxyCodeLine{1338 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{1339 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1340 }
\DoxyCodeLine{1341 \textcolor{comment}{/* Section 9.1.23 */}}
\DoxyCodeLine{1342 \textcolor{keyword}{struct }gsm48\_paging2 \{}
\DoxyCodeLine{1343 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{1344         uint8\_t l2\_plen;}
\DoxyCodeLine{1345         uint8\_t proto\_discr;}
\DoxyCodeLine{1346         uint8\_t msg\_type;}
\DoxyCodeLine{1347         uint8\_t pag\_mode:2,}
\DoxyCodeLine{1348                  spare:2,}
\DoxyCodeLine{1349                  cneed1:2,}
\DoxyCodeLine{1350                  cneed2:2;}
\DoxyCodeLine{1351         uint32\_t tmsi1;}
\DoxyCodeLine{1352         uint32\_t tmsi2;}
\DoxyCodeLine{1353         uint8\_t data[0];}
\DoxyCodeLine{1354 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{1355 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{1356         uint8\_t l2\_plen;}
\DoxyCodeLine{1357         uint8\_t proto\_discr;}
\DoxyCodeLine{1358         uint8\_t msg\_type;}
\DoxyCodeLine{1359         uint8\_t cneed2:2, cneed1:2, spare:2, pag\_mode:2;}
\DoxyCodeLine{1360         uint32\_t tmsi1;}
\DoxyCodeLine{1361         uint32\_t tmsi2;}
\DoxyCodeLine{1362         uint8\_t data[0];}
\DoxyCodeLine{1363 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{1364 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1365 }
\DoxyCodeLine{1366 \textcolor{comment}{/* Section 9.1.24 */}}
\DoxyCodeLine{1367 \textcolor{keyword}{struct }gsm48\_paging3 \{}
\DoxyCodeLine{1368 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{1369         uint8\_t l2\_plen;}
\DoxyCodeLine{1370         uint8\_t proto\_discr;}
\DoxyCodeLine{1371         uint8\_t msg\_type;}
\DoxyCodeLine{1372         uint8\_t pag\_mode:2,}
\DoxyCodeLine{1373                  spare:2,}
\DoxyCodeLine{1374                  cneed1:2,}
\DoxyCodeLine{1375                  cneed2:2;}
\DoxyCodeLine{1376         uint32\_t tmsi1;}
\DoxyCodeLine{1377         uint32\_t tmsi2;}
\DoxyCodeLine{1378         uint32\_t tmsi3;}
\DoxyCodeLine{1379         uint32\_t tmsi4;}
\DoxyCodeLine{1380         uint8\_t cneed3:2,}
\DoxyCodeLine{1381                  cneed4:2,}
\DoxyCodeLine{1382                  spare2:4;}
\DoxyCodeLine{1383         uint8\_t rest[0];}
\DoxyCodeLine{1384 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{1385 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{1386         uint8\_t l2\_plen;}
\DoxyCodeLine{1387         uint8\_t proto\_discr;}
\DoxyCodeLine{1388         uint8\_t msg\_type;}
\DoxyCodeLine{1389         uint8\_t cneed2:2, cneed1:2, spare:2, pag\_mode:2;}
\DoxyCodeLine{1390         uint32\_t tmsi1;}
\DoxyCodeLine{1391         uint32\_t tmsi2;}
\DoxyCodeLine{1392         uint32\_t tmsi3;}
\DoxyCodeLine{1393         uint32\_t tmsi4;}
\DoxyCodeLine{1394         uint8\_t spare2:4, cneed4:2, cneed3:2;}
\DoxyCodeLine{1395         uint8\_t rest[0];}
\DoxyCodeLine{1396 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{1397 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1398 }
\DoxyCodeLine{1399 \textcolor{comment}{/* Section 9.1.25 */}}
\DoxyCodeLine{1400 \textcolor{keyword}{struct }gsm48\_pag\_rsp \{}
\DoxyCodeLine{1401 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{1402         uint8\_t key\_seq:3,}
\DoxyCodeLine{1403                  spare:5;}
\DoxyCodeLine{1404         uint8\_t cm2\_len;}
\DoxyCodeLine{1405         \textcolor{keyword}{struct }gsm48\_classmark2 cm2;}
\DoxyCodeLine{1406         uint8\_t data[0];}
\DoxyCodeLine{1407 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{1408 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{1409         uint8\_t spare:5, key\_seq:3;}
\DoxyCodeLine{1410         uint8\_t cm2\_len;}
\DoxyCodeLine{1411         \textcolor{keyword}{struct }gsm48\_classmark2 cm2;}
\DoxyCodeLine{1412         uint8\_t data[0];}
\DoxyCodeLine{1413 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{1414 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1415 }
\DoxyCodeLine{1416 \textcolor{comment}{/* Section 9.1.29 */}}
\DoxyCodeLine{1417 \textcolor{keyword}{struct }gsm48\_rr\_status \{}
\DoxyCodeLine{1418         uint8\_t rr\_cause;}
\DoxyCodeLine{1419 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1420 }
\DoxyCodeLine{1421 \textcolor{comment}{/* Section 9.1.44 */}}
\DoxyCodeLine{1422 \textcolor{keyword}{struct }gsm48\_talker\_indication \{}
\DoxyCodeLine{1423         uint8\_t cm2\_len;}
\DoxyCodeLine{1424         \textcolor{keyword}{struct }gsm48\_classmark2 cm2;}
\DoxyCodeLine{1425         uint8\_t data[0];}
\DoxyCodeLine{1426 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1427 }
\DoxyCodeLine{1428 \textcolor{comment}{/* Section 9.1.48 */}}
\DoxyCodeLine{1429 \textcolor{keyword}{struct }gsm48\_uplink\_release \{}
\DoxyCodeLine{1430         uint8\_t rr\_cause;}
\DoxyCodeLine{1431 \} \_\_attribute\_\_((packed));}
\DoxyCodeLine{1432 }
\DoxyCodeLine{1433 \textcolor{comment}{/* Section 10.2 + GSM 04.07 12.2.3.1.1 + 3GPP TS 24.007 11.2.3.1.1 */}}
\DoxyCodeLine{1434 \textcolor{preprocessor}{\#define GSM48\_PDISC\_GROUP\_CC    0x00}}
\DoxyCodeLine{1435 \textcolor{preprocessor}{\#define GSM48\_PDISC\_BCAST\_CC    0x01}}
\DoxyCodeLine{1436 \textcolor{preprocessor}{\#define GSM48\_PDISC\_PDSS1       0x02    }\textcolor{comment}{/* 04.07 only */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1437 \textcolor{preprocessor}{\#define GSM48\_PDISC\_CC          0x03}}
\DoxyCodeLine{1438 \textcolor{preprocessor}{\#define GSM48\_PDISC\_PDSS2       0x04    }\textcolor{comment}{/* 04.07 only */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1439 \textcolor{preprocessor}{\#define GSM48\_PDISC\_GTTP        0x04    }\textcolor{comment}{/* 24.007 only */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1440 \textcolor{preprocessor}{\#define GSM48\_PDISC\_MM          0x05}}
\DoxyCodeLine{1441 \textcolor{preprocessor}{\#define GSM48\_PDISC\_RR          0x06}}
\DoxyCodeLine{1442 \textcolor{preprocessor}{\#define GSM48\_PDISC\_MM\_GPRS     0x08}}
\DoxyCodeLine{1443 \textcolor{preprocessor}{\#define GSM48\_PDISC\_SMS         0x09}}
\DoxyCodeLine{1444 \textcolor{preprocessor}{\#define GSM48\_PDISC\_SM\_GPRS     0x0a}}
\DoxyCodeLine{1445 \textcolor{preprocessor}{\#define GSM48\_PDISC\_NC\_SS       0x0b}}
\DoxyCodeLine{1446 \textcolor{preprocessor}{\#define GSM48\_PDISC\_LOC         0x0c}}
\DoxyCodeLine{1447 \textcolor{preprocessor}{\#define GSM48\_PDISC\_EXTEND      0x0e}}
\DoxyCodeLine{1448 \textcolor{preprocessor}{\#define GSM48\_PDISC\_TEST        0x0f    }\textcolor{comment}{/* as per 11.10, 04.14 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1449 \textcolor{preprocessor}{\#define GSM48\_PDISC\_MASK        0x0f}}
\DoxyCodeLine{1450 }
\DoxyCodeLine{1451 \textcolor{comment}{/* Section 11.3.2.1 3GPP TS 24.007: Short PDISC */}}
\DoxyCodeLine{1452 \textcolor{preprocessor}{\#define GSM48\_PDISC\_SH\_RR       0}}
\DoxyCodeLine{1453 }
\DoxyCodeLine{1454 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm48\_pdisc\_names[];}
\DoxyCodeLine{1455 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm48\_pdisc\_name(uint8\_t val)}
\DoxyCodeLine{1456 \{ \textcolor{keywordflow}{return} get\_value\_string(gsm48\_pdisc\_names, val); \}}
\DoxyCodeLine{1457 }
\DoxyCodeLine{1458 \textcolor{keywordtype}{bool} gsm48\_hdr\_gmm\_cipherable(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm48\_hdr *hdr);}
\DoxyCodeLine{1459 }
\DoxyCodeLine{1460 \textcolor{keyword}{static} \textcolor{keyword}{inline} uint8\_t gsm48\_hdr\_pdisc(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm48\_hdr *hdr)}
\DoxyCodeLine{1461 \{}
\DoxyCodeLine{1462         \textcolor{comment}{/*}}
\DoxyCodeLine{1463 \textcolor{comment}{         * 3GPP TS 24.007 version 12.0.0 Release 12,}}
\DoxyCodeLine{1464 \textcolor{comment}{         * 11.2.3.1.1 Protocol discriminator}}
\DoxyCodeLine{1465 \textcolor{comment}{         */}}
\DoxyCodeLine{1466         uint8\_t pdisc = hdr-\/>proto\_discr \& GSM48\_PDISC\_MASK;}
\DoxyCodeLine{1467         \textcolor{keywordflow}{if} (pdisc == GSM48\_PDISC\_EXTEND)}
\DoxyCodeLine{1468                 \textcolor{keywordflow}{return} hdr-\/>proto\_discr;}
\DoxyCodeLine{1469         \textcolor{keywordflow}{return} pdisc;}
\DoxyCodeLine{1470 \}}
\DoxyCodeLine{1471 }
\DoxyCodeLine{1472 \textcolor{keyword}{static} \textcolor{keyword}{inline} uint8\_t gsm48\_hdr\_trans\_id(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm48\_hdr *hdr)}
\DoxyCodeLine{1473 \{}
\DoxyCodeLine{1474         \textcolor{comment}{/*}}
\DoxyCodeLine{1475 \textcolor{comment}{         * 3GPP TS 24.007 version 12.0.0 Release 12,}}
\DoxyCodeLine{1476 \textcolor{comment}{         * 11.2.3.1.3 Transaction identifier}}
\DoxyCodeLine{1477 \textcolor{comment}{         */}}
\DoxyCodeLine{1478         \textcolor{keywordflow}{return} (hdr-\/>proto\_discr \& 0xf0) >> 4;}
\DoxyCodeLine{1479 \}}
\DoxyCodeLine{1480 }
\DoxyCodeLine{1481 \textcolor{preprocessor}{\#define GSM48\_TA\_INVALID 220}}
\DoxyCodeLine{1482 }
\DoxyCodeLine{1488 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keywordtype}{bool} gsm48\_ta\_is\_valid(uint8\_t ta)}
\DoxyCodeLine{1489 \{}
\DoxyCodeLine{1490         \textcolor{keywordflow}{return} (ta < 64);}
\DoxyCodeLine{1491 \}}
\DoxyCodeLine{1492 }
\DoxyCodeLine{1493 \textcolor{keyword}{static} \textcolor{keyword}{inline} uint8\_t gsm48\_hdr\_trans\_id\_flip\_ti(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm48\_hdr *hdr)}
\DoxyCodeLine{1494 \{}
\DoxyCodeLine{1495         \textcolor{keywordflow}{return} gsm48\_hdr\_trans\_id(hdr) \string^ 0x08;}
\DoxyCodeLine{1496 \}}
\DoxyCodeLine{1497 }
\DoxyCodeLine{1498 \textcolor{keyword}{static} \textcolor{keyword}{inline} uint8\_t gsm48\_hdr\_trans\_id\_no\_ti(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm48\_hdr *hdr)}
\DoxyCodeLine{1499 \{}
\DoxyCodeLine{1500         \textcolor{keywordflow}{return} gsm48\_hdr\_trans\_id(hdr) \& 0x07;}
\DoxyCodeLine{1501 \}}
\DoxyCodeLine{1502 }
\DoxyCodeLine{1503 \textcolor{keyword}{static} \textcolor{keyword}{inline} uint8\_t gsm48\_hdr\_msg\_type\_r98(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm48\_hdr *hdr)}
\DoxyCodeLine{1504 \{}
\DoxyCodeLine{1505         \textcolor{comment}{/*}}
\DoxyCodeLine{1506 \textcolor{comment}{         * 3GPP TS 24.007 version 12.0.0 Release 12,}}
\DoxyCodeLine{1507 \textcolor{comment}{         * 11.2.3.2.1 Message type octet (when accessing Release 98 and older}}
\DoxyCodeLine{1508 \textcolor{comment}{         * networks only)}}
\DoxyCodeLine{1509 \textcolor{comment}{         */}}
\DoxyCodeLine{1510         \textcolor{keywordflow}{switch} (gsm48\_hdr\_pdisc(hdr)) \{}
\DoxyCodeLine{1511         \textcolor{keywordflow}{case} GSM48\_PDISC\_MM:}
\DoxyCodeLine{1512         \textcolor{keywordflow}{case} GSM48\_PDISC\_CC:}
\DoxyCodeLine{1513         \textcolor{keywordflow}{case} GSM48\_PDISC\_NC\_SS:}
\DoxyCodeLine{1514         \textcolor{keywordflow}{case} GSM48\_PDISC\_GROUP\_CC:}
\DoxyCodeLine{1515         \textcolor{keywordflow}{case} GSM48\_PDISC\_BCAST\_CC:}
\DoxyCodeLine{1516         \textcolor{keywordflow}{case} GSM48\_PDISC\_LOC:}
\DoxyCodeLine{1517                 \textcolor{keywordflow}{return} hdr-\/>msg\_type \& 0x3f;}
\DoxyCodeLine{1518         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{1519                 \textcolor{keywordflow}{return} hdr-\/>msg\_type;}
\DoxyCodeLine{1520         \}}
\DoxyCodeLine{1521 \}}
\DoxyCodeLine{1522 }
\DoxyCodeLine{1523 \textcolor{keyword}{static} \textcolor{keyword}{inline} uint8\_t gsm48\_hdr\_msg\_type\_r99(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm48\_hdr *hdr)}
\DoxyCodeLine{1524 \{}
\DoxyCodeLine{1525         \textcolor{comment}{/*}}
\DoxyCodeLine{1526 \textcolor{comment}{         * 3GPP TS 24.007 version 12.0.0 Release 12,}}
\DoxyCodeLine{1527 \textcolor{comment}{         * 11.2.3.2.2 Message type octet (when accessing Release 99 and newer}}
\DoxyCodeLine{1528 \textcolor{comment}{         * networks)}}
\DoxyCodeLine{1529 \textcolor{comment}{         */}}
\DoxyCodeLine{1530         \textcolor{keywordflow}{switch} (gsm48\_hdr\_pdisc(hdr)) \{}
\DoxyCodeLine{1531         \textcolor{keywordflow}{case} GSM48\_PDISC\_MM:}
\DoxyCodeLine{1532         \textcolor{keywordflow}{case} GSM48\_PDISC\_CC:}
\DoxyCodeLine{1533         \textcolor{keywordflow}{case} GSM48\_PDISC\_NC\_SS:}
\DoxyCodeLine{1534                 \textcolor{keywordflow}{return} hdr-\/>msg\_type \& 0x3f;}
\DoxyCodeLine{1535         \textcolor{keywordflow}{case} GSM48\_PDISC\_GROUP\_CC:}
\DoxyCodeLine{1536         \textcolor{keywordflow}{case} GSM48\_PDISC\_BCAST\_CC:}
\DoxyCodeLine{1537         \textcolor{keywordflow}{case} GSM48\_PDISC\_LOC:}
\DoxyCodeLine{1538                 \textcolor{keywordflow}{return} hdr-\/>msg\_type \& 0x3f;}
\DoxyCodeLine{1539         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{1540                 \textcolor{keywordflow}{return} hdr-\/>msg\_type;}
\DoxyCodeLine{1541         \}}
\DoxyCodeLine{1542 \}}
\DoxyCodeLine{1543 }
\DoxyCodeLine{1544 \textcolor{keywordtype}{void} gsm48\_set\_dtx(\textcolor{keyword}{struct} gsm48\_cell\_options *op, \textcolor{keyword}{enum} gsm48\_dtx\_mode full,}
\DoxyCodeLine{1545                    \textcolor{keyword}{enum} gsm48\_dtx\_mode half, \textcolor{keywordtype}{bool} is\_bcch);}
\DoxyCodeLine{1546 }
\DoxyCodeLine{1547 \textcolor{preprocessor}{\#define gsm48\_hdr\_msg\_type gsm48\_hdr\_msg\_type\_r99}}
\DoxyCodeLine{1548 }
\DoxyCodeLine{1549 \textcolor{comment}{/* Section 10.4 */}}
\DoxyCodeLine{1550 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_INIT\_REQ            0x3c}}
\DoxyCodeLine{1551 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_ADD\_ASS             0x3b}}
\DoxyCodeLine{1552 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_IMM\_ASS             0x3f}}
\DoxyCodeLine{1553 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_IMM\_ASS\_EXT         0x39}}
\DoxyCodeLine{1554 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_IMM\_ASS\_REJ         0x3a}}
\DoxyCodeLine{1555 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_DTM\_ASS\_FAIL        0x48}}
\DoxyCodeLine{1556 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_DTM\_REJECT          0x49}}
\DoxyCodeLine{1557 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_DTM\_REQUEST         0x4A}}
\DoxyCodeLine{1558 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_PACKET\_ASS          0x4B}}
\DoxyCodeLine{1559 }
\DoxyCodeLine{1560 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_CIPH\_M\_CMD          0x35}}
\DoxyCodeLine{1561 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_CIPH\_M\_COMPL        0x32}}
\DoxyCodeLine{1562 }
\DoxyCodeLine{1563 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_CFG\_CHG\_CMD         0x30}}
\DoxyCodeLine{1564 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_CFG\_CHG\_ACK         0x31}}
\DoxyCodeLine{1565 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_CFG\_CHG\_REJ         0x33}}
\DoxyCodeLine{1566 }
\DoxyCodeLine{1567 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_ASS\_CMD             0x2e}}
\DoxyCodeLine{1568 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_ASS\_COMPL           0x29}}
\DoxyCodeLine{1569 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_ASS\_FAIL            0x2f}}
\DoxyCodeLine{1570 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_HANDO\_CMD           0x2b}}
\DoxyCodeLine{1571 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_HANDO\_COMPL         0x2c}}
\DoxyCodeLine{1572 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_HANDO\_FAIL          0x28}}
\DoxyCodeLine{1573 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_HANDO\_INFO          0x2d}}
\DoxyCodeLine{1574 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_HANDO\_INFO          0x2d}}
\DoxyCodeLine{1575 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_DTM\_ASS\_CMD         0x4c}}
\DoxyCodeLine{1576 }
\DoxyCodeLine{1577 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_CELL\_CHG\_ORDER      0x08}}
\DoxyCodeLine{1578 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_PDCH\_ASS\_CMD        0x23}}
\DoxyCodeLine{1579 }
\DoxyCodeLine{1580 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_CHAN\_REL            0x0d}}
\DoxyCodeLine{1581 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_PART\_REL            0x0a}}
\DoxyCodeLine{1582 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_PART\_REL\_COMP       0x0f}}
\DoxyCodeLine{1583 }
\DoxyCodeLine{1584 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_PAG\_REQ\_1           0x21}}
\DoxyCodeLine{1585 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_PAG\_REQ\_2           0x22}}
\DoxyCodeLine{1586 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_PAG\_REQ\_3           0x24}}
\DoxyCodeLine{1587 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_PAG\_RESP            0x27}}
\DoxyCodeLine{1588 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_NOTIF\_NCH           0x20}}
\DoxyCodeLine{1589 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_NOTIF\_FACCH         0x25 }\textcolor{comment}{/* (Reserved) */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1590 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_NOTIF\_RESP          0x26}}
\DoxyCodeLine{1591 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_PACKET\_NOTIF        0x4e}}
\DoxyCodeLine{1592 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_UTRAN\_CLSM\_CHG      0x60}}
\DoxyCodeLine{1593 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_CDMA2K\_CLSM\_CHG     0x62}}
\DoxyCodeLine{1594 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_IS\_TO\_UTRAN\_HANDO   0x63}}
\DoxyCodeLine{1595 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_IS\_TO\_CDMA2K\_HANDO  0x64}}
\DoxyCodeLine{1596 }
\DoxyCodeLine{1597 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_8           0x18}}
\DoxyCodeLine{1598 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_1           0x19}}
\DoxyCodeLine{1599 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_2           0x1a}}
\DoxyCodeLine{1600 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_3           0x1b}}
\DoxyCodeLine{1601 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_4           0x1c}}
\DoxyCodeLine{1602 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_5           0x1d}}
\DoxyCodeLine{1603 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_6           0x1e}}
\DoxyCodeLine{1604 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_7           0x1f}}
\DoxyCodeLine{1605 }
\DoxyCodeLine{1606 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_2bis        0x02}}
\DoxyCodeLine{1607 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_2ter        0x03}}
\DoxyCodeLine{1608 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_2quater     0x07}}
\DoxyCodeLine{1609 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_5bis        0x05}}
\DoxyCodeLine{1610 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_5ter        0x06}}
\DoxyCodeLine{1611 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_9           0x04}}
\DoxyCodeLine{1612 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_13          0x00}}
\DoxyCodeLine{1613 }
\DoxyCodeLine{1614 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_16          0x3d}}
\DoxyCodeLine{1615 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_17          0x3e}}
\DoxyCodeLine{1616 }
\DoxyCodeLine{1617 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_18          0x40}}
\DoxyCodeLine{1618 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_19          0x41}}
\DoxyCodeLine{1619 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_20          0x42}}
\DoxyCodeLine{1620 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_13alt       0x44}}
\DoxyCodeLine{1621 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_2n          0x45}}
\DoxyCodeLine{1622 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_21          0x46}}
\DoxyCodeLine{1623 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_22          0x47}}
\DoxyCodeLine{1624 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SYSINFO\_23          0x4f}}
\DoxyCodeLine{1625 }
\DoxyCodeLine{1626 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_CHAN\_MODE\_MODIF     0x10}}
\DoxyCodeLine{1627 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_STATUS              0x12}}
\DoxyCodeLine{1628 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_CHAN\_MODE\_MODIF\_ACK 0x17}}
\DoxyCodeLine{1629 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_FREQ\_REDEF          0x14}}
\DoxyCodeLine{1630 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_MEAS\_REP            0x15}}
\DoxyCodeLine{1631 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_CLSM\_CHG            0x16}}
\DoxyCodeLine{1632 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_CLSM\_ENQ            0x13}}
\DoxyCodeLine{1633 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_EXT\_MEAS\_REP        0x36}}
\DoxyCodeLine{1634 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_EXT\_MEAS\_REP\_ORD    0x37}}
\DoxyCodeLine{1635 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_GPRS\_SUSP\_REQ       0x34}}
\DoxyCodeLine{1636 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_DTM\_INFO            0x4d}}
\DoxyCodeLine{1637 }
\DoxyCodeLine{1638 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_VGCS\_UPL\_GRANT      0x09}}
\DoxyCodeLine{1639 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_UPLINK\_RELEASE      0x0e}}
\DoxyCodeLine{1640 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_UPLINK\_FREE         0x0c}}
\DoxyCodeLine{1641 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_UPLINK\_BUSY         0x2a}}
\DoxyCodeLine{1642 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_TALKER\_IND          0x11}}
\DoxyCodeLine{1643 }
\DoxyCodeLine{1644 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_APP\_INFO            0x38}}
\DoxyCodeLine{1645 }
\DoxyCodeLine{1646 \textcolor{comment}{/* 3GPP TS 44.018 Table 10.4.2 */}}
\DoxyCodeLine{1647 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SH\_SI10             0x0}}
\DoxyCodeLine{1648 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SH\_FACCH            0x1}}
\DoxyCodeLine{1649 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SH\_UL\_FREE          0x2}}
\DoxyCodeLine{1650 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SH\_MEAS\_REP         0x4}}
\DoxyCodeLine{1651 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SH\_MEAS\_INFO        0x5}}
\DoxyCodeLine{1652 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SH\_VGCS\_RECON       0x6}}
\DoxyCodeLine{1653 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SH\_VGCS\_RECON2      0x7}}
\DoxyCodeLine{1654 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SH\_VGCS\_INFO        0x8}}
\DoxyCodeLine{1655 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SH\_VGCS\_SMS         0x9}}
\DoxyCodeLine{1656 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SH\_SI10bis          0xA}}
\DoxyCodeLine{1657 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SH\_SI10ter          0xB}}
\DoxyCodeLine{1658 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SH\_VGCS\_NEIGH       0xC}}
\DoxyCodeLine{1659 \textcolor{preprocessor}{\#define GSM48\_MT\_RR\_SH\_APP\_DATA         0xD}}
\DoxyCodeLine{1660 }
\DoxyCodeLine{1661 \textcolor{comment}{/* Table 10.2/3GPP TS 04.08 */}}
\DoxyCodeLine{1662 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_IMSI\_DETACH\_IND     0x01}}
\DoxyCodeLine{1663 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_LOC\_UPD\_ACCEPT      0x02}}
\DoxyCodeLine{1664 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_LOC\_UPD\_REJECT      0x04}}
\DoxyCodeLine{1665 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_LOC\_UPD\_REQUEST     0x08}}
\DoxyCodeLine{1666 }
\DoxyCodeLine{1667 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_AUTH\_REJ            0x11}}
\DoxyCodeLine{1668 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_AUTH\_REQ            0x12}}
\DoxyCodeLine{1669 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_AUTH\_RESP           0x14}}
\DoxyCodeLine{1670 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_AUTH\_FAIL           0x1c}}
\DoxyCodeLine{1671 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_ID\_REQ              0x18}}
\DoxyCodeLine{1672 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_ID\_RESP             0x19}}
\DoxyCodeLine{1673 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_TMSI\_REALL\_CMD      0x1a}}
\DoxyCodeLine{1674 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_TMSI\_REALL\_COMPL    0x1b}}
\DoxyCodeLine{1675 }
\DoxyCodeLine{1676 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_CM\_SERV\_ACC         0x21}}
\DoxyCodeLine{1677 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_CM\_SERV\_REJ         0x22}}
\DoxyCodeLine{1678 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_CM\_SERV\_ABORT       0x23}}
\DoxyCodeLine{1679 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_CM\_SERV\_REQ         0x24}}
\DoxyCodeLine{1680 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_CM\_SERV\_PROMPT      0x25}}
\DoxyCodeLine{1681 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_CM\_REEST\_REQ        0x28}}
\DoxyCodeLine{1682 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_ABORT               0x29}}
\DoxyCodeLine{1683 }
\DoxyCodeLine{1684 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_NULL                0x30}}
\DoxyCodeLine{1685 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_STATUS              0x31}}
\DoxyCodeLine{1686 \textcolor{preprocessor}{\#define GSM48\_MT\_MM\_INFO                0x32}}
\DoxyCodeLine{1687 }
\DoxyCodeLine{1688 \textcolor{comment}{/* Table 10.3/3GPP TS 04.08 */}}
\DoxyCodeLine{1689 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_ALERTING            0x01}}
\DoxyCodeLine{1690 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_CALL\_CONF           0x08}}
\DoxyCodeLine{1691 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_CALL\_PROC           0x02}}
\DoxyCodeLine{1692 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_CONNECT             0x07}}
\DoxyCodeLine{1693 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_CONNECT\_ACK         0x0f}}
\DoxyCodeLine{1694 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_EMERG\_SETUP         0x0e}}
\DoxyCodeLine{1695 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_PROGRESS            0x03}}
\DoxyCodeLine{1696 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_ESTAB               0x04}}
\DoxyCodeLine{1697 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_ESTAB\_CONF          0x06}}
\DoxyCodeLine{1698 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_RECALL              0x0b}}
\DoxyCodeLine{1699 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_START\_CC            0x09}}
\DoxyCodeLine{1700 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_SETUP               0x05}}
\DoxyCodeLine{1701 }
\DoxyCodeLine{1702 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_MODIFY              0x17}}
\DoxyCodeLine{1703 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_MODIFY\_COMPL        0x1f}}
\DoxyCodeLine{1704 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_MODIFY\_REJECT       0x13}}
\DoxyCodeLine{1705 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_USER\_INFO           0x10}}
\DoxyCodeLine{1706 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_HOLD                0x18}}
\DoxyCodeLine{1707 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_HOLD\_ACK            0x19}}
\DoxyCodeLine{1708 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_HOLD\_REJ            0x1a}}
\DoxyCodeLine{1709 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_RETR                0x1c}}
\DoxyCodeLine{1710 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_RETR\_ACK            0x1d}}
\DoxyCodeLine{1711 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_RETR\_REJ            0x1e}}
\DoxyCodeLine{1712 }
\DoxyCodeLine{1713 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_DISCONNECT          0x25}}
\DoxyCodeLine{1714 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_RELEASE             0x2d}}
\DoxyCodeLine{1715 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_RELEASE\_COMPL       0x2a}}
\DoxyCodeLine{1716 }
\DoxyCodeLine{1717 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_CONG\_CTRL           0x39}}
\DoxyCodeLine{1718 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_NOTIFY              0x3e}}
\DoxyCodeLine{1719 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_STATUS              0x3d}}
\DoxyCodeLine{1720 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_STATUS\_ENQ          0x34}}
\DoxyCodeLine{1721 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_START\_DTMF          0x35}}
\DoxyCodeLine{1722 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_STOP\_DTMF           0x31}}
\DoxyCodeLine{1723 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_STOP\_DTMF\_ACK       0x32}}
\DoxyCodeLine{1724 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_START\_DTMF\_ACK      0x36}}
\DoxyCodeLine{1725 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_START\_DTMF\_REJ      0x37}}
\DoxyCodeLine{1726 \textcolor{preprocessor}{\#define GSM48\_MT\_CC\_FACILITY            0x3a}}
\DoxyCodeLine{1727 }
\DoxyCodeLine{1728 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm48\_rr\_msgtype\_names[];}
\DoxyCodeLine{1729 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm48\_mm\_msgtype\_names[];}
\DoxyCodeLine{1730 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm48\_cc\_msgtype\_names[];}
\DoxyCodeLine{1731 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm48\_pdisc\_msgtype\_name(uint8\_t pdisc, uint8\_t msg\_type);}
\DoxyCodeLine{1732 \textcolor{keywordtype}{char} *gsm48\_pdisc\_msgtype\_name\_buf(\textcolor{keywordtype}{char} *buf, \textcolor{keywordtype}{size\_t} buf\_len, uint8\_t pdisc, uint8\_t msg\_type);}
\DoxyCodeLine{1733 \textcolor{keywordtype}{char} *gsm48\_pdisc\_msgtype\_name\_c(\textcolor{keyword}{const} \textcolor{keywordtype}{void} *ctx, uint8\_t pdisc, uint8\_t msg\_type);}
\DoxyCodeLine{1734 }
\DoxyCodeLine{1735 \textcolor{comment}{/* FIXME: Table 10.4 / 10.4a (GPRS) */}}
\DoxyCodeLine{1736 }
\DoxyCodeLine{1737 \textcolor{comment}{/* Section 10.5.3.3 CM service type */}}
\DoxyCodeLine{1738 \textcolor{keyword}{enum} osmo\_cm\_service\_type \{}
\DoxyCodeLine{1739         GSM48\_CMSERV\_MO\_CALL\_PACKET  = 1,}
\DoxyCodeLine{1740         GSM48\_CMSERV\_EMERGENCY            = 2,}
\DoxyCodeLine{1741         GSM48\_CMSERV\_SMS                = 4,}
\DoxyCodeLine{1742         GSM48\_CMSERV\_SUP\_SERV              = 8,}
\DoxyCodeLine{1743         GSM48\_CMSERV\_VGCS              = 9,}
\DoxyCodeLine{1744         GSM48\_CMSERV\_VBS                = 10,}
\DoxyCodeLine{1745         GSM48\_CMSERV\_LOC\_SERV              = 11,}
\DoxyCodeLine{1746         GSM48\_CMSERV\_MAX\_VAL                = GSM48\_CMSERV\_LOC\_SERV}
\DoxyCodeLine{1747 \};}
\DoxyCodeLine{1748 }
\DoxyCodeLine{1749 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string osmo\_cm\_service\_type\_names[];}
\DoxyCodeLine{1750 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_cm\_service\_type\_name(\textcolor{keyword}{enum} osmo\_cm\_service\_type val)}
\DoxyCodeLine{1751 \{ \textcolor{keywordflow}{return} get\_value\_string(osmo\_cm\_service\_type\_names, val); \}}
\DoxyCodeLine{1752 }
\DoxyCodeLine{1753 \textcolor{comment}{/* Section 10.5.2.26, Table 10.5.64 */}}
\DoxyCodeLine{1754 \textcolor{preprocessor}{\#define GSM48\_PM\_MASK           0x03}}
\DoxyCodeLine{1755 \textcolor{preprocessor}{\#define GSM48\_PM\_NORMAL         0x00}}
\DoxyCodeLine{1756 \textcolor{preprocessor}{\#define GSM48\_PM\_EXTENDED       0x01}}
\DoxyCodeLine{1757 \textcolor{preprocessor}{\#define GSM48\_PM\_REORG          0x02}}
\DoxyCodeLine{1758 \textcolor{preprocessor}{\#define GSM48\_PM\_SAME           0x03}}
\DoxyCodeLine{1759 }
\DoxyCodeLine{1760 \textcolor{comment}{/* Chapter 10.5.3.5 / Table 10.5.93 */}}
\DoxyCodeLine{1761 \textcolor{preprocessor}{\#define GSM48\_LUPD\_NORMAL       0x0}}
\DoxyCodeLine{1762 \textcolor{preprocessor}{\#define GSM48\_LUPD\_PERIODIC     0x1}}
\DoxyCodeLine{1763 \textcolor{preprocessor}{\#define GSM48\_LUPD\_IMSI\_ATT     0x2}}
\DoxyCodeLine{1764 \textcolor{preprocessor}{\#define GSM48\_LUPD\_RESERVED     0x3}}
\DoxyCodeLine{1765 }
\DoxyCodeLine{1766 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string osmo\_lu\_type\_names[];}
\DoxyCodeLine{1767 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *osmo\_lu\_type\_name(uint8\_t lu\_type)}
\DoxyCodeLine{1768 \{ \textcolor{keywordflow}{return} get\_value\_string(osmo\_lu\_type\_names, lu\_type); \}}
\DoxyCodeLine{1769 }
\DoxyCodeLine{1770 \textcolor{comment}{/* Table 10.5.4 */}}
\DoxyCodeLine{1771 \textcolor{preprocessor}{\#define GSM\_MI\_TYPE\_MASK        0x07}}
\DoxyCodeLine{1772 \textcolor{preprocessor}{\#define GSM\_MI\_TYPE\_NONE        0x00}}
\DoxyCodeLine{1773 \textcolor{preprocessor}{\#define GSM\_MI\_TYPE\_IMSI        0x01}}
\DoxyCodeLine{1774 \textcolor{preprocessor}{\#define GSM\_MI\_TYPE\_IMEI        0x02}}
\DoxyCodeLine{1775 \textcolor{preprocessor}{\#define GSM\_MI\_TYPE\_IMEISV      0x03}}
\DoxyCodeLine{1776 \textcolor{preprocessor}{\#define GSM\_MI\_TYPE\_TMSI        0x04}}
\DoxyCodeLine{1777 \textcolor{preprocessor}{\#define GSM\_MI\_ODD              0x08}}
\DoxyCodeLine{1778 }
\DoxyCodeLine{1779 \textcolor{preprocessor}{\#define GSM48\_IE\_MOBILE\_ID      0x17    }\textcolor{comment}{/* 10.5.1.4 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1780 \textcolor{preprocessor}{\#define GSM48\_IE\_NAME\_LONG      0x43    }\textcolor{comment}{/* 10.5.3.5a */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1781 \textcolor{preprocessor}{\#define GSM48\_IE\_NAME\_SHORT     0x45    }\textcolor{comment}{/* 10.5.3.5a */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1782 \textcolor{preprocessor}{\#define GSM48\_IE\_UTC            0x46    }\textcolor{comment}{/* 10.5.3.8 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1783 \textcolor{preprocessor}{\#define GSM48\_IE\_NET\_TIME\_TZ    0x47    }\textcolor{comment}{/* 10.5.3.9 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1784 \textcolor{preprocessor}{\#define GSM48\_IE\_LSA\_IDENT      0x48    }\textcolor{comment}{/* 10.5.3.11 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1785 \textcolor{preprocessor}{\#define GSM48\_IE\_NET\_DST        0x49    }\textcolor{comment}{/* 10.5.3.12 [24.008] */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1786 }
\DoxyCodeLine{1787 \textcolor{preprocessor}{\#define GSM48\_IE\_BEARER\_CAP     0x04    }\textcolor{comment}{/* 10.5.4.5 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1788 \textcolor{preprocessor}{\#define GSM48\_IE\_CAUSE          0x08    }\textcolor{comment}{/* 10.5.4.11 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1789 \textcolor{preprocessor}{\#define GSM48\_IE\_CC\_CAP         0x15    }\textcolor{comment}{/* 10.5.4.5a */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1790 \textcolor{preprocessor}{\#define GSM48\_IE\_ALERT          0x19    }\textcolor{comment}{/* 10.5.4.26 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1791 \textcolor{preprocessor}{\#define GSM48\_IE\_FACILITY       0x1c    }\textcolor{comment}{/* 10.5.4.15 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1792 \textcolor{preprocessor}{\#define GSM48\_IE\_PROGR\_IND      0x1e    }\textcolor{comment}{/* 10.5.4.21 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1793 \textcolor{preprocessor}{\#define GSM48\_IE\_AUX\_STATUS     0x24    }\textcolor{comment}{/* 10.5.4.4 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1794 \textcolor{preprocessor}{\#define GSM48\_IE\_NOTIFY         0x27    }\textcolor{comment}{/* 10.5.4.20 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1795 \textcolor{preprocessor}{\#define GSM48\_IE\_KPD\_FACILITY   0x2c    }\textcolor{comment}{/* 10.5.4.17 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1796 \textcolor{preprocessor}{\#define GSM48\_IE\_SIGNAL         0x34    }\textcolor{comment}{/* 10.5.4.23 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1797 \textcolor{preprocessor}{\#define GSM48\_IE\_CONN\_BCD       0x4c    }\textcolor{comment}{/* 10.5.4.13 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1798 \textcolor{preprocessor}{\#define GSM48\_IE\_CONN\_SUB       0x4d    }\textcolor{comment}{/* 10.5.4.14 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1799 \textcolor{preprocessor}{\#define GSM48\_IE\_CALLING\_BCD    0x5c    }\textcolor{comment}{/* 10.5.4.9 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1800 \textcolor{preprocessor}{\#define GSM48\_IE\_CALLING\_SUB    0x5d    }\textcolor{comment}{/* 10.5.4.10 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1801 \textcolor{preprocessor}{\#define GSM48\_IE\_CALLED\_BCD     0x5e    }\textcolor{comment}{/* 10.5.4.7 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1802 \textcolor{preprocessor}{\#define GSM48\_IE\_CALLED\_SUB     0x6d    }\textcolor{comment}{/* 10.5.4.8 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1803 \textcolor{preprocessor}{\#define GSM48\_IE\_REDIR\_BCD      0x74    }\textcolor{comment}{/* 10.5.4.21a */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1804 \textcolor{preprocessor}{\#define GSM48\_IE\_REDIR\_SUB      0x75    }\textcolor{comment}{/* 10.5.4.21b */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1805 \textcolor{preprocessor}{\#define GSM48\_IE\_LOWL\_COMPAT    0x7c    }\textcolor{comment}{/* 10.5.4.18 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1806 \textcolor{preprocessor}{\#define GSM48\_IE\_HIGHL\_COMPAT   0x7d    }\textcolor{comment}{/* 10.5.4.16 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1807 \textcolor{preprocessor}{\#define GSM48\_IE\_USER\_USER      0x7e    }\textcolor{comment}{/* 10.5.4.25 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1808 \textcolor{preprocessor}{\#define GSM48\_IE\_SS\_VERS        0x7f    }\textcolor{comment}{/* 10.5.4.24 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1809 \textcolor{preprocessor}{\#define GSM48\_IE\_MORE\_DATA      0xa0    }\textcolor{comment}{/* 10.5.4.19 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1810 \textcolor{preprocessor}{\#define GSM48\_IE\_CLIR\_SUPP      0xa1    }\textcolor{comment}{/* 10.5.4.11a */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1811 \textcolor{preprocessor}{\#define GSM48\_IE\_CLIR\_INVOC     0xa2    }\textcolor{comment}{/* 10.5.4.11b */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1812 \textcolor{preprocessor}{\#define GSM48\_IE\_REV\_C\_SETUP    0xa3    }\textcolor{comment}{/* 10.5.4.22a */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1813 \textcolor{preprocessor}{\#define GSM48\_IE\_REPEAT\_CIR     0xd1    }\textcolor{comment}{/* 10.5.4.22 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1814 \textcolor{preprocessor}{\#define GSM48\_IE\_REPEAT\_SEQ     0xd3    }\textcolor{comment}{/* 10.5.4.22 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1815 }
\DoxyCodeLine{1816 \textcolor{comment}{/* Section 10.5.4.11 / Table 10.5.122 */}}
\DoxyCodeLine{1817 \textcolor{preprocessor}{\#define GSM48\_CAUSE\_CS\_GSM      0x60}}
\DoxyCodeLine{1818 }
\DoxyCodeLine{1819 \textcolor{comment}{/* Section 9.1.2 / Table 9.3 */}}
\DoxyCodeLine{1820 \textcolor{comment}{/* RR elements */}}
\DoxyCodeLine{1821 \textcolor{preprocessor}{\#define GSM48\_IE\_VGCS\_TARGET    0x01}}
\DoxyCodeLine{1822 \textcolor{comment}{//\#define GSM48\_IE\_VGCS\_T\_MODE\_I        0x01}}
\DoxyCodeLine{1823 \textcolor{preprocessor}{\#define GSM48\_IE\_FRQSHORT\_AFTER 0x02}}
\DoxyCodeLine{1824 \textcolor{preprocessor}{\#define GSM48\_IE\_MUL\_RATE\_CFG   0x03    }\textcolor{comment}{/* 10.5.2.21aa */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1825 \textcolor{preprocessor}{\#define GSM48\_IE\_FREQ\_L\_AFTER   0x05}}
\DoxyCodeLine{1826 \textcolor{preprocessor}{\#define GSM48\_IE\_GROUP\_CIP\_SEQ\_HO 0x08 }\textcolor{comment}{/* HO = Half Octet Tag */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1827 \textcolor{preprocessor}{\#define GSM48\_IE\_CIP\_MODE\_SET\_HO 0x09 }\textcolor{comment}{/* HO = Half Octet Tag */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1828 \textcolor{preprocessor}{\#define GSM48\_IE\_GPRS\_RESUMPT\_HO 0xc0 }\textcolor{comment}{/* HO = Half Octet Tag */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1829 \textcolor{preprocessor}{\#define GSM48\_IE\_SYNC\_IND\_HO    0x0d }\textcolor{comment}{/* HO = Half Octet Tag */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1830 \textcolor{preprocessor}{\#define GSM48\_IE\_MSLOT\_DESC     0x10}}
\DoxyCodeLine{1831 \textcolor{preprocessor}{\#define GSM48\_IE\_CHANMODE\_2     0x11}}
\DoxyCodeLine{1832 \textcolor{preprocessor}{\#define GSM48\_IE\_FRQSHORT\_BEFORE 0x12}}
\DoxyCodeLine{1833 \textcolor{comment}{//\#define GSM48\_IE\_FRQSHORT\_BEFOR 0x12}}
\DoxyCodeLine{1834 \textcolor{preprocessor}{\#define GSM48\_IE\_CHANMODE\_3     0x13}}
\DoxyCodeLine{1835 \textcolor{preprocessor}{\#define GSM48\_IE\_CHANMODE\_4     0x14}}
\DoxyCodeLine{1836 \textcolor{preprocessor}{\#define GSM48\_IE\_CHANMODE\_5     0x15}}
\DoxyCodeLine{1837 \textcolor{preprocessor}{\#define GSM48\_IE\_CHANMODE\_6     0x16}}
\DoxyCodeLine{1838 \textcolor{preprocessor}{\#define GSM48\_IE\_CHANMODE\_7     0x17}}
\DoxyCodeLine{1839 \textcolor{preprocessor}{\#define GSM48\_IE\_CHANMODE\_8     0x18}}
\DoxyCodeLine{1840 \textcolor{preprocessor}{\#define GSM48\_IE\_CHANDESC\_2     0x64}}
\DoxyCodeLine{1841 \textcolor{preprocessor}{\#define GSM48\_IE\_MA\_AFTER       0x72}}
\DoxyCodeLine{1842 \textcolor{preprocessor}{\#define GSM48\_IE\_START\_TIME     0x7c}}
\DoxyCodeLine{1843 \textcolor{preprocessor}{\#define GSM48\_IE\_FREQ\_L\_BEFORE  0x19}}
\DoxyCodeLine{1844 \textcolor{comment}{//\#define GSM48\_IE\_FRQLIST\_BEFORE       0x19}}
\DoxyCodeLine{1845 \textcolor{preprocessor}{\#define GSM48\_IE\_CH\_DESC\_1\_BEFORE       0x1c}}
\DoxyCodeLine{1846 \textcolor{comment}{//\#define GSM48\_IE\_CHDES\_1\_BEFORE 0x1c}}
\DoxyCodeLine{1847 \textcolor{preprocessor}{\#define GSM48\_IE\_CH\_DESC\_2\_BEFORE       0x1d}}
\DoxyCodeLine{1848 \textcolor{comment}{//\#define GSM48\_IE\_CHDES\_2\_BEFORE       0x1d}}
\DoxyCodeLine{1849 \textcolor{preprocessor}{\#define GSM48\_IE\_F\_CH\_SEQ\_BEFORE        0x1e}}
\DoxyCodeLine{1850 \textcolor{comment}{//\#define GSM48\_IE\_FRQSEQ\_BEFORE        0x1e}}
\DoxyCodeLine{1851 \textcolor{preprocessor}{\#define GSM48\_IE\_CLASSMARK3     0x20}}
\DoxyCodeLine{1852 \textcolor{preprocessor}{\#define GSM48\_IE\_MA\_BEFORE      0x21}}
\DoxyCodeLine{1853 \textcolor{preprocessor}{\#define GSM48\_IE\_RR\_PACKET\_UL   0x22}}
\DoxyCodeLine{1854 \textcolor{preprocessor}{\#define GSM48\_IE\_RR\_PACKET\_DL   0x23}}
\DoxyCodeLine{1855 \textcolor{preprocessor}{\#define GSM48\_IE\_CELL\_CH\_DESC   0x62}}
\DoxyCodeLine{1856 \textcolor{preprocessor}{\#define GSM48\_IE\_CHANMODE\_1     0x63}}
\DoxyCodeLine{1857 \textcolor{preprocessor}{\#define GSM48\_IE\_CHDES\_2\_AFTER  0x64}}
\DoxyCodeLine{1858 \textcolor{preprocessor}{\#define GSM48\_IE\_MODE\_SEC\_CH    0x66}}
\DoxyCodeLine{1859 \textcolor{preprocessor}{\#define GSM48\_IE\_F\_CH\_SEQ\_AFTER 0x69}}
\DoxyCodeLine{1860 \textcolor{preprocessor}{\#define GSM48\_IE\_EXTENDED\_TSC\_SET       0x6d}}
\DoxyCodeLine{1861 \textcolor{preprocessor}{\#define GSM48\_IE\_MA\_AFTER       0x72}}
\DoxyCodeLine{1862 \textcolor{preprocessor}{\#define GSM48\_IE\_BA\_RANGE       0x73}}
\DoxyCodeLine{1863 \textcolor{preprocessor}{\#define GSM48\_IE\_GROUP\_CHDES    0x74}}
\DoxyCodeLine{1864 \textcolor{preprocessor}{\#define GSM48\_IE\_BA\_LIST\_PREF   0x75}}
\DoxyCodeLine{1865 \textcolor{preprocessor}{\#define GSM48\_IE\_MOB\_OVSERV\_DIF 0x77}}
\DoxyCodeLine{1866 \textcolor{preprocessor}{\#define GSM48\_IE\_CELL\_SEL\_IND\_AFTER\_REL 0x77 }\textcolor{comment}{/* 44.018 Section 9.1.7 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1867 \textcolor{preprocessor}{\#define GSM48\_IE\_REALTIME\_DIFF  0x7b}}
\DoxyCodeLine{1868 \textcolor{preprocessor}{\#define GSM48\_IE\_START\_TIME     0x7c}}
\DoxyCodeLine{1869 \textcolor{preprocessor}{\#define GSM48\_IE\_INDIVIDUAL\_PRIORITIES 0x7c }\textcolor{comment}{/* 44.018 Section 9.1.7 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1870 \textcolor{preprocessor}{\#define GSM48\_IE\_TIMING\_ADVANCE 0x7d}}
\DoxyCodeLine{1871 \textcolor{preprocessor}{\#define GSM48\_IE\_GROUP\_CIP\_SEQ 0x80 }\textcolor{comment}{/* DEPRECATED, use GSM48\_IE\_GROUP\_CIP\_SEQ\_HO instead */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1872 \textcolor{preprocessor}{\#define GSM48\_IE\_CIP\_MODE\_SET  0x90  }\textcolor{comment}{/* DEPRECATED, use GSM48\_IE\_CIP\_MODE\_SET\_HO instead */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1873 \textcolor{preprocessor}{\#define GSM48\_IE\_GPRS\_RESUMPT  0xc0 }\textcolor{comment}{/* DEPRECATED, use GSM48\_IE\_GPRS\_RESUMPT\_HO instead */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1874 \textcolor{preprocessor}{\#define GSM48\_IE\_SYNC\_IND      0xd0 }\textcolor{comment}{/* DEPRECATED, use GSM48\_IE\_SYNC\_IND\_HO instead */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1875 \textcolor{comment}{/* System Information 4 (types are equal IEs above) */}}
\DoxyCodeLine{1876 \textcolor{preprocessor}{\#define GSM48\_IE\_CBCH\_CHAN\_DESC 0x64}}
\DoxyCodeLine{1877 \textcolor{preprocessor}{\#define GSM48\_IE\_CBCH\_MOB\_AL    0x72}}
\DoxyCodeLine{1878 }
\DoxyCodeLine{1879 \textcolor{comment}{/* Additional MM elements */}}
\DoxyCodeLine{1880 \textcolor{preprocessor}{\#define GSM48\_IE\_PRIORITY\_LEV\_HO 0x08 }\textcolor{comment}{/* HO = Half Octet Tag */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1881 \textcolor{preprocessor}{\#define GSM48\_IE\_LOCATION\_AREA  0x13}}
\DoxyCodeLine{1882 \textcolor{preprocessor}{\#define GSM48\_IE\_AUTN           0x20}}
\DoxyCodeLine{1883 \textcolor{preprocessor}{\#define GSM48\_IE\_AUTH\_RES\_EXT   0x21}}
\DoxyCodeLine{1884 \textcolor{preprocessor}{\#define GSM48\_IE\_AUTS           0x22}}
\DoxyCodeLine{1885 \textcolor{preprocessor}{\#define GSM48\_IE\_PRIORITY\_LEV   0x80 }\textcolor{comment}{/* DEPRECATED, use GSM48\_IE\_PRIORITY\_LEV\_HO instead */}\textcolor{preprocessor}{}}
\DoxyCodeLine{1886 \textcolor{preprocessor}{\#define GSM48\_IE\_FOLLOW\_ON\_PROC 0xa1}}
\DoxyCodeLine{1887 \textcolor{preprocessor}{\#define GSM48\_IE\_CTS\_PERMISSION 0xa2}}
\DoxyCodeLine{1888 }
\DoxyCodeLine{1889 \textcolor{comment}{/* Section 10.5.4.21 / Table 10.5.127 */}}
\DoxyCodeLine{1890 }
\DoxyCodeLine{1891 \textcolor{keyword}{enum} gsm48\_progress\_desc \{}
\DoxyCodeLine{1892         GSM48\_PROGR\_NOT\_E2E          = 0x00,}
\DoxyCodeLine{1893         GSM48\_PROGR\_DEST\_NOT\_PLMN      = 0x02,}
\DoxyCodeLine{1894         GSM48\_PROGR\_ORIG\_NOT\_PLMN      = 0x03,}
\DoxyCodeLine{1895         GSM48\_PROGR\_RETURNED                = 0x04,}
\DoxyCodeLine{1896         GSM48\_PROGR\_IN\_BAND\_AVAIL      = 0x08,}
\DoxyCodeLine{1897         GSM48\_PROGR\_CALL\_E2E                = 0x20,}
\DoxyCodeLine{1898         GSM48\_PROGR\_QUEUEING                = 0x40,}
\DoxyCodeLine{1899 \};}
\DoxyCodeLine{1900 }
\DoxyCodeLine{1901 \textcolor{comment}{/* Section 10.5.4.23 / Table 10.5.130 */}}
\DoxyCodeLine{1902 \textcolor{keyword}{enum} gsm48\_signal\_val \{}
\DoxyCodeLine{1903         GSM48\_SIGNAL\_DIALTONE      = 0x00,}
\DoxyCodeLine{1904         GSM48\_SIGNAL\_RINGBACK      = 0x01,}
\DoxyCodeLine{1905         GSM48\_SIGNAL\_INTERCEPT    = 0x02,}
\DoxyCodeLine{1906         GSM48\_SIGNAL\_NET\_CONG      = 0x03,}
\DoxyCodeLine{1907         GSM48\_SIGNAL\_BUSY      = 0x04,}
\DoxyCodeLine{1908         GSM48\_SIGNAL\_CONFIRM        = 0x05,}
\DoxyCodeLine{1909         GSM48\_SIGNAL\_ANSWER  = 0x06,}
\DoxyCodeLine{1910         GSM48\_SIGNAL\_CALL\_WAIT    = 0x07,}
\DoxyCodeLine{1911         GSM48\_SIGNAL\_OFF\_HOOK      = 0x08,}
\DoxyCodeLine{1912         GSM48\_SIGNAL\_OFF        = 0x3f,}
\DoxyCodeLine{1913         GSM48\_SIGNAL\_ALERT\_OFF    = 0x4f,}
\DoxyCodeLine{1914 \};}
\DoxyCodeLine{1915 }
\DoxyCodeLine{1916 \textcolor{comment}{/* Section 10.5.4.11 / Table 10.5.122 */}}
\DoxyCodeLine{1917 \textcolor{keyword}{enum} gsm48\_cause\_coding \{}
\DoxyCodeLine{1918         GSM48\_CAUSE\_CODING\_CCITT\_Q931      = 0x00,}
\DoxyCodeLine{1919         GSM48\_CAUSE\_CODING\_RESERVED  = 0x01,}
\DoxyCodeLine{1920         GSM48\_CAUSE\_CODING\_NATIONAL  = 0x02,}
\DoxyCodeLine{1921         GSM48\_CAUSE\_CODING\_GSM            = 0x03,}
\DoxyCodeLine{1922 \};}
\DoxyCodeLine{1923 }
\DoxyCodeLine{1924 \textcolor{keyword}{enum} gsm48\_cause\_loc \{}
\DoxyCodeLine{1925         GSM48\_CAUSE\_LOC\_USER                = 0x00,}
\DoxyCodeLine{1926         GSM48\_CAUSE\_LOC\_PRN\_S\_LU        = 0x01,}
\DoxyCodeLine{1927         GSM48\_CAUSE\_LOC\_PUN\_S\_LU        = 0x02,}
\DoxyCodeLine{1928         GSM48\_CAUSE\_LOC\_TRANS\_NET      = 0x03,}
\DoxyCodeLine{1929         GSM48\_CAUSE\_LOC\_PUN\_S\_RU        = 0x04,}
\DoxyCodeLine{1930         GSM48\_CAUSE\_LOC\_PRN\_S\_RU        = 0x05,}
\DoxyCodeLine{1931         \textcolor{comment}{/* not defined */}}
\DoxyCodeLine{1932         GSM48\_CAUSE\_LOC\_INN\_NET          = 0x07,}
\DoxyCodeLine{1933         GSM48\_CAUSE\_LOC\_NET\_BEYOND    = 0x0a,}
\DoxyCodeLine{1934 \};}
\DoxyCodeLine{1935 }
\DoxyCodeLine{1936 \textcolor{comment}{/* 3GPP TS 44.018 10.5.2.31 RR Cause / Table 10.5.70 */}}
\DoxyCodeLine{1937 \textcolor{keyword}{enum} gsm48\_rr\_cause \{}
\DoxyCodeLine{1938         GSM48\_RR\_CAUSE\_NORMAL              = 0x00,}
\DoxyCodeLine{1939         GSM48\_RR\_CAUSE\_ABNORMAL\_UNSPEC    = 0x01,}
\DoxyCodeLine{1940         GSM48\_RR\_CAUSE\_ABNORMAL\_UNACCT    = 0x02,}
\DoxyCodeLine{1941         GSM48\_RR\_CAUSE\_ABNORMAL\_TIMER      = 0x03,}
\DoxyCodeLine{1942         GSM48\_RR\_CAUSE\_ABNORMAL\_NOACT      = 0x04,}
\DoxyCodeLine{1943         GSM48\_RR\_CAUSE\_PREMPTIVE\_REL        = 0x05,}
\DoxyCodeLine{1944         GSM48\_RR\_CAUSE\_UTRAN\_CFG\_UNK        = 0x06,}
\DoxyCodeLine{1945         GSM48\_RR\_CAUSE\_HNDOVER\_IMP    = 0x08,}
\DoxyCodeLine{1946         GSM48\_RR\_CAUSE\_CHAN\_MODE\_UNACCT  = 0x09,}
\DoxyCodeLine{1947         GSM48\_RR\_CAUSE\_FREQ\_NOT\_IMPL        = 0x0a,}
\DoxyCodeLine{1948         GSM48\_RR\_CAUSE\_LEAVE\_GROUP\_CA      = 0x0b,}
\DoxyCodeLine{1949         GSM48\_RR\_CAUSE\_LOW\_LEVEL\_FAIL      = 0x0c,}
\DoxyCodeLine{1950         GSM48\_RR\_CAUSE\_CALL\_CLEARED  = 0x41,}
\DoxyCodeLine{1951         GSM48\_RR\_CAUSE\_SEMANT\_INCORR        = 0x5f,}
\DoxyCodeLine{1952         GSM48\_RR\_CAUSE\_INVALID\_MAND\_INF = 0x60,}
\DoxyCodeLine{1953         GSM48\_RR\_CAUSE\_MSG\_TYPE\_N      = 0x61,}
\DoxyCodeLine{1954         GSM48\_RR\_CAUSE\_MSG\_TYPE\_N\_COMPAT= 0x62,}
\DoxyCodeLine{1955         GSM48\_RR\_CAUSE\_COND\_IE\_ERROR        = 0x64,}
\DoxyCodeLine{1956         GSM48\_RR\_CAUSE\_NO\_CELL\_ALLOC\_A    = 0x65,}
\DoxyCodeLine{1957         GSM48\_RR\_CAUSE\_PROT\_ERROR\_UNSPC = 0x6f,}
\DoxyCodeLine{1958 \};}
\DoxyCodeLine{1959 }
\DoxyCodeLine{1960 \textcolor{comment}{/* Section 10.5.4.11 CC Cause / Table 10.5.123 */}}
\DoxyCodeLine{1961 \textcolor{keyword}{enum} gsm48\_cc\_cause \{}
\DoxyCodeLine{1962         GSM48\_CC\_CAUSE\_UNASSIGNED\_NR        = 1,}
\DoxyCodeLine{1963         GSM48\_CC\_CAUSE\_NO\_ROUTE          = 3,}
\DoxyCodeLine{1964         GSM48\_CC\_CAUSE\_CHAN\_UNACCEPT        = 6,}
\DoxyCodeLine{1965         GSM48\_CC\_CAUSE\_OP\_DET\_BARRING      = 8,}
\DoxyCodeLine{1966         GSM48\_CC\_CAUSE\_NORM\_CALL\_CLEAR    = 16,}
\DoxyCodeLine{1967         GSM48\_CC\_CAUSE\_USER\_BUSY        = 17,}
\DoxyCodeLine{1968         GSM48\_CC\_CAUSE\_USER\_NOTRESPOND    = 18,}
\DoxyCodeLine{1969         GSM48\_CC\_CAUSE\_USER\_ALERTING\_NA  = 19,}
\DoxyCodeLine{1970         GSM48\_CC\_CAUSE\_CALL\_REJECTED        = 21,}
\DoxyCodeLine{1971         GSM48\_CC\_CAUSE\_NUMBER\_CHANGED      = 22,}
\DoxyCodeLine{1972         GSM48\_CC\_CAUSE\_PRE\_EMPTION    = 25,}
\DoxyCodeLine{1973         GSM48\_CC\_CAUSE\_NONSE\_USER\_CLR      = 26,}
\DoxyCodeLine{1974         GSM48\_CC\_CAUSE\_DEST\_OOO          = 27,}
\DoxyCodeLine{1975         GSM48\_CC\_CAUSE\_INV\_NR\_FORMAT        = 28,}
\DoxyCodeLine{1976         GSM48\_CC\_CAUSE\_FACILITY\_REJ  = 29,}
\DoxyCodeLine{1977         GSM48\_CC\_CAUSE\_RESP\_STATUS\_INQ    = 30,}
\DoxyCodeLine{1978         GSM48\_CC\_CAUSE\_NORMAL\_UNSPEC        = 31,}
\DoxyCodeLine{1979         GSM48\_CC\_CAUSE\_NO\_CIRCUIT\_CHAN    = 34,}
\DoxyCodeLine{1980         GSM48\_CC\_CAUSE\_NETWORK\_OOO    = 38,}
\DoxyCodeLine{1981         GSM48\_CC\_CAUSE\_TEMP\_FAILURE  = 41,}
\DoxyCodeLine{1982         GSM48\_CC\_CAUSE\_SWITCH\_CONG    = 42,}
\DoxyCodeLine{1983         GSM48\_CC\_CAUSE\_ACC\_INF\_DISCARD    = 43,}
\DoxyCodeLine{1984         GSM48\_CC\_CAUSE\_REQ\_CHAN\_UNAVAIL  = 44,}
\DoxyCodeLine{1985         GSM48\_CC\_CAUSE\_RESOURCE\_UNAVAIL  = 47,}
\DoxyCodeLine{1986         GSM48\_CC\_CAUSE\_QOS\_UNAVAIL    = 49,}
\DoxyCodeLine{1987         GSM48\_CC\_CAUSE\_REQ\_FAC\_NOT\_SUBSC= 50,}
\DoxyCodeLine{1988         GSM48\_CC\_CAUSE\_INC\_BARRED\_CUG      = 55,}
\DoxyCodeLine{1989         GSM48\_CC\_CAUSE\_BEARER\_CAP\_UNAUTH= 57,}
\DoxyCodeLine{1990         GSM48\_CC\_CAUSE\_BEARER\_CA\_UNAVAIL= 58,}
\DoxyCodeLine{1991         GSM48\_CC\_CAUSE\_SERV\_OPT\_UNAVAIL  = 63,}
\DoxyCodeLine{1992         GSM48\_CC\_CAUSE\_BEARERSERV\_UNIMPL= 65,}
\DoxyCodeLine{1993         GSM48\_CC\_CAUSE\_ACM\_GE\_ACM\_MAX      = 68,}
\DoxyCodeLine{1994         GSM48\_CC\_CAUSE\_REQ\_FAC\_NOTIMPL    = 69,}
\DoxyCodeLine{1995         GSM48\_CC\_CAUSE\_RESTR\_BCAP\_AVAIL  = 70,}
\DoxyCodeLine{1996         GSM48\_CC\_CAUSE\_SERV\_OPT\_UNIMPL    = 79,}
\DoxyCodeLine{1997         GSM48\_CC\_CAUSE\_INVAL\_TRANS\_ID      = 81,}
\DoxyCodeLine{1998         GSM48\_CC\_CAUSE\_USER\_NOT\_IN\_CUG    = 87,}
\DoxyCodeLine{1999         GSM48\_CC\_CAUSE\_INCOMPAT\_DEST        = 88,}
\DoxyCodeLine{2000         GSM48\_CC\_CAUSE\_INVAL\_TRANS\_NET    = 91,}
\DoxyCodeLine{2001         GSM48\_CC\_CAUSE\_SEMANTIC\_INCORR    = 95,}
\DoxyCodeLine{2002         GSM48\_CC\_CAUSE\_INVAL\_MAND\_INF      = 96,}
\DoxyCodeLine{2003         GSM48\_CC\_CAUSE\_MSGTYPE\_NOTEXIST  = 97,}
\DoxyCodeLine{2004         GSM48\_CC\_CAUSE\_MSGTYPE\_INCOMPAT  = 98,}
\DoxyCodeLine{2005         GSM48\_CC\_CAUSE\_IE\_NOTEXIST    = 99,}
\DoxyCodeLine{2006         GSM48\_CC\_CAUSE\_COND\_IE\_ERR    = 100,}
\DoxyCodeLine{2007         GSM48\_CC\_CAUSE\_MSG\_INCOMP\_STATE  = 101,}
\DoxyCodeLine{2008         GSM48\_CC\_CAUSE\_RECOVERY\_TIMER      = 102,}
\DoxyCodeLine{2009         GSM48\_CC\_CAUSE\_PROTO\_ERR        = 111,}
\DoxyCodeLine{2010         GSM48\_CC\_CAUSE\_INTERWORKING  = 127,}
\DoxyCodeLine{2011 \};}
\DoxyCodeLine{2012 }
\DoxyCodeLine{2013 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm48\_cc\_cause\_names[];}
\DoxyCodeLine{2014 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm48\_cc\_cause\_name(\textcolor{keyword}{enum} gsm48\_cc\_cause val)}
\DoxyCodeLine{2015 \{ \textcolor{keywordflow}{return} get\_value\_string(gsm48\_cc\_cause\_names, val); \}}
\DoxyCodeLine{2016 }
\DoxyCodeLine{2017 \textcolor{comment}{/* Annex G, GSM specific cause values for mobility management */}}
\DoxyCodeLine{2018 \textcolor{keyword}{enum} gsm48\_reject\_value \{}
\DoxyCodeLine{2019         GSM48\_REJECT\_IMSI\_UNKNOWN\_IN\_HLR        = 2,}
\DoxyCodeLine{2020         GSM48\_REJECT\_ILLEGAL\_MS                  = 3,}
\DoxyCodeLine{2021         GSM48\_REJECT\_IMSI\_UNKNOWN\_IN\_VLR        = 4,}
\DoxyCodeLine{2022         GSM48\_REJECT\_IMEI\_NOT\_ACCEPTED            = 5,}
\DoxyCodeLine{2023         GSM48\_REJECT\_ILLEGAL\_ME                  = 6,}
\DoxyCodeLine{2024         GSM48\_REJECT\_PLMN\_NOT\_ALLOWED              = 11,}
\DoxyCodeLine{2025         GSM48\_REJECT\_LOC\_NOT\_ALLOWED                = 12,}
\DoxyCodeLine{2026         GSM48\_REJECT\_ROAMING\_NOT\_ALLOWED        = 13,}
\DoxyCodeLine{2027         GSM48\_REJECT\_NO\_SUIT\_CELL\_IN\_LA          = 15,}
\DoxyCodeLine{2028         GSM48\_REJECT\_NETWORK\_FAILURE                = 17,}
\DoxyCodeLine{2029         GSM48\_REJECT\_MAC\_FAILURE                = 20,}
\DoxyCodeLine{2030         GSM48\_REJECT\_SYNCH\_FAILURE            = 21,}
\DoxyCodeLine{2031         GSM48\_REJECT\_CONGESTION                  = 22,}
\DoxyCodeLine{2032         GSM48\_REJECT\_GSM\_AUTH\_UNACCEPTABLE    = 23,}
\DoxyCodeLine{2033         GSM48\_REJECT\_NOT\_AUTH\_FOR\_CSG              = 25,}
\DoxyCodeLine{2034         GSM48\_REJECT\_SRV\_OPT\_NOT\_SUPPORTED    = 32,}
\DoxyCodeLine{2035         GSM48\_REJECT\_RQD\_SRV\_OPT\_NOT\_SUPPORTED    = 33,}
\DoxyCodeLine{2036         GSM48\_REJECT\_SRV\_OPT\_TMP\_OUT\_OF\_ORDER      = 34,}
\DoxyCodeLine{2037         GSM48\_REJECT\_CALL\_CAN\_NOT\_BE\_IDENTIFIED  = 38,}
\DoxyCodeLine{2038         GSM48\_REJECT\_INCORRECT\_MESSAGE            = 95,}
\DoxyCodeLine{2039         GSM48\_REJECT\_INVALID\_MANDANTORY\_INF  = 96,}
\DoxyCodeLine{2040         GSM48\_REJECT\_MSG\_TYPE\_NOT\_IMPLEMENTED      = 97,}
\DoxyCodeLine{2041         GSM48\_REJECT\_MSG\_TYPE\_NOT\_COMPATIBLE        = 98,}
\DoxyCodeLine{2042         GSM48\_REJECT\_INF\_ELEME\_NOT\_IMPLEMENTED    = 99,}
\DoxyCodeLine{2043         GSM48\_REJECT\_CONDTIONAL\_IE\_ERROR        = 100,}
\DoxyCodeLine{2044         GSM48\_REJECT\_MSG\_NOT\_COMPATIBLE          = 101,}
\DoxyCodeLine{2045         GSM48\_REJECT\_PROTOCOL\_ERROR          = 111,}
\DoxyCodeLine{2046 }
\DoxyCodeLine{2047         \textcolor{comment}{/* according to G.6 Additional cause codes for GMM */}}
\DoxyCodeLine{2048         GSM48\_REJECT\_GPRS\_NOT\_ALLOWED              = 7,}
\DoxyCodeLine{2049         GSM48\_REJECT\_SERVICES\_NOT\_ALLOWED      = 8,}
\DoxyCodeLine{2050         GSM48\_REJECT\_MS\_IDENTITY\_NOT\_DERVIVABLE = 9,}
\DoxyCodeLine{2051         GSM48\_REJECT\_IMPLICITLY\_DETACHED        = 10,}
\DoxyCodeLine{2052         GSM48\_REJECT\_GPRS\_NOT\_ALLOWED\_IN\_PLMN      = 14,}
\DoxyCodeLine{2053         GSM48\_REJECT\_MSC\_TMP\_NOT\_REACHABLE    = 16,}
\DoxyCodeLine{2054         GSM48\_REJECT\_SMS\_PROV\_VIA\_GPRS\_IN\_RA        = 28,}
\DoxyCodeLine{2055         GSM48\_REJECT\_NO\_PDP\_CONTEXT\_ACTIVATED      = 40,}
\DoxyCodeLine{2056 \};}
\DoxyCodeLine{2057 }
\DoxyCodeLine{2058 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm48\_reject\_value\_names[];}
\DoxyCodeLine{2059 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm48\_reject\_value\_name(\textcolor{keyword}{enum} gsm48\_reject\_value val)}
\DoxyCodeLine{2060 \{ \textcolor{keywordflow}{return} get\_value\_string(gsm48\_reject\_value\_names, val); \}}
\DoxyCodeLine{2061 }
\DoxyCodeLine{2062 \textcolor{keyword}{enum} chreq\_type \{}
\DoxyCodeLine{2063         CHREQ\_T\_EMERG\_CALL,}
\DoxyCodeLine{2064         CHREQ\_T\_CALL\_REEST\_TCH\_F,}
\DoxyCodeLine{2065         CHREQ\_T\_CALL\_REEST\_TCH\_H,}
\DoxyCodeLine{2066         CHREQ\_T\_CALL\_REEST\_TCH\_H\_DBL,}
\DoxyCodeLine{2067         CHREQ\_T\_SDCCH,}
\DoxyCodeLine{2068         CHREQ\_T\_TCH\_F,}
\DoxyCodeLine{2069         CHREQ\_T\_VOICE\_CALL\_TCH\_H,}
\DoxyCodeLine{2070         CHREQ\_T\_DATA\_CALL\_TCH\_H,}
\DoxyCodeLine{2071         CHREQ\_T\_LOCATION\_UPD,}
\DoxyCodeLine{2072         CHREQ\_T\_PAG\_R\_ANY\_NECI0,}
\DoxyCodeLine{2073         CHREQ\_T\_PAG\_R\_ANY\_NECI1,}
\DoxyCodeLine{2074         CHREQ\_T\_PAG\_R\_TCH\_F,}
\DoxyCodeLine{2075         CHREQ\_T\_PAG\_R\_TCH\_FH,}
\DoxyCodeLine{2076         CHREQ\_T\_LMU,}
\DoxyCodeLine{2077         CHREQ\_T\_RESERVED\_SDCCH,}
\DoxyCodeLine{2078         CHREQ\_T\_RESERVED\_IGNORE,}
\DoxyCodeLine{2079         CHREQ\_T\_PDCH\_ONE\_PHASE,}
\DoxyCodeLine{2080         CHREQ\_T\_PDCH\_TWO\_PHASE,}
\DoxyCodeLine{2081         \_NUM\_CHREQ\_T,}
\DoxyCodeLine{2082 \};}
\DoxyCodeLine{2083 }
\DoxyCodeLine{2084 \textcolor{comment}{/* Chapter 11.3 */}}
\DoxyCodeLine{2085 \textcolor{preprocessor}{\#define GSM48\_T301      180, 0}}
\DoxyCodeLine{2086 \textcolor{preprocessor}{\#define GSM48\_T303      30, 0}}
\DoxyCodeLine{2087 \textcolor{preprocessor}{\#define GSM48\_T305      30, 0}}
\DoxyCodeLine{2088 \textcolor{preprocessor}{\#define GSM48\_T306      30, 0}}
\DoxyCodeLine{2089 \textcolor{preprocessor}{\#define GSM48\_T308      10, 0           }\textcolor{comment}{/* no spec default */}\textcolor{preprocessor}{}}
\DoxyCodeLine{2090 \textcolor{preprocessor}{\#define GSM48\_T310      30, 0           }\textcolor{comment}{/* no spec default */}\textcolor{preprocessor}{}}
\DoxyCodeLine{2091 \textcolor{preprocessor}{\#define GSM48\_T313      30, 0           }\textcolor{comment}{/* no spec default */}\textcolor{preprocessor}{}}
\DoxyCodeLine{2092 \textcolor{preprocessor}{\#define GSM48\_T323      30, 0}}
\DoxyCodeLine{2093 \textcolor{preprocessor}{\#define GSM48\_T331      30, 0           }\textcolor{comment}{/* no spec default */}\textcolor{preprocessor}{}}
\DoxyCodeLine{2094 \textcolor{preprocessor}{\#define GSM48\_T333      30, 0           }\textcolor{comment}{/* no spec default */}\textcolor{preprocessor}{}}
\DoxyCodeLine{2095 \textcolor{preprocessor}{\#define GSM48\_T334      25, 0 }\textcolor{comment}{/* min 15s */}\textcolor{preprocessor}{}}
\DoxyCodeLine{2096 \textcolor{preprocessor}{\#define GSM48\_T338      30, 0           }\textcolor{comment}{/* no spec default */}\textcolor{preprocessor}{}}
\DoxyCodeLine{2097 \textcolor{preprocessor}{\#define GSM48\_T303\_MS   30, 0}}
\DoxyCodeLine{2098 \textcolor{preprocessor}{\#define GSM48\_T305\_MS   30, 0}}
\DoxyCodeLine{2099 \textcolor{preprocessor}{\#define GSM48\_T308\_MS   30, 0}}
\DoxyCodeLine{2100 \textcolor{preprocessor}{\#define GSM48\_T310\_MS   30, 0}}
\DoxyCodeLine{2101 \textcolor{preprocessor}{\#define GSM48\_T313\_MS   30, 0}}
\DoxyCodeLine{2102 \textcolor{preprocessor}{\#define GSM48\_T323\_MS   30, 0}}
\DoxyCodeLine{2103 \textcolor{preprocessor}{\#define GSM48\_T332\_MS   30, 0}}
\DoxyCodeLine{2104 \textcolor{preprocessor}{\#define GSM48\_T335\_MS   30, 0}}
\DoxyCodeLine{2105 }
\DoxyCodeLine{2106 \textcolor{comment}{/* Chapter 5.1.2.2 */}}
\DoxyCodeLine{2107 \textcolor{preprocessor}{\#define GSM\_CSTATE\_NULL                 0}}
\DoxyCodeLine{2108 \textcolor{preprocessor}{\#define GSM\_CSTATE\_INITIATED            1}}
\DoxyCodeLine{2109 \textcolor{preprocessor}{\#define GSM\_CSTATE\_MM\_CONNECTION\_PEND   2 }\textcolor{comment}{/* see 10.5.4.6 */}\textcolor{preprocessor}{}}
\DoxyCodeLine{2110 \textcolor{preprocessor}{\#define GSM\_CSTATE\_MO\_CALL\_PROC         3}}
\DoxyCodeLine{2111 \textcolor{preprocessor}{\#define GSM\_CSTATE\_CALL\_DELIVERED       4}}
\DoxyCodeLine{2112 \textcolor{preprocessor}{\#define GSM\_CSTATE\_CALL\_PRESENT         6}}
\DoxyCodeLine{2113 \textcolor{preprocessor}{\#define GSM\_CSTATE\_CALL\_RECEIVED        7}}
\DoxyCodeLine{2114 \textcolor{preprocessor}{\#define GSM\_CSTATE\_CONNECT\_REQUEST      8}}
\DoxyCodeLine{2115 \textcolor{preprocessor}{\#define GSM\_CSTATE\_MO\_TERM\_CALL\_CONF    9}}
\DoxyCodeLine{2116 \textcolor{preprocessor}{\#define GSM\_CSTATE\_ACTIVE               10}}
\DoxyCodeLine{2117 \textcolor{preprocessor}{\#define GSM\_CSTATE\_DISCONNECT\_REQ       12}}
\DoxyCodeLine{2118 \textcolor{preprocessor}{\#define GSM\_CSTATE\_DISCONNECT\_IND       12}}
\DoxyCodeLine{2119 \textcolor{preprocessor}{\#define GSM\_CSTATE\_RELEASE\_REQ          19}}
\DoxyCodeLine{2120 \textcolor{preprocessor}{\#define GSM\_CSTATE\_MO\_ORIG\_MODIFY       26}}
\DoxyCodeLine{2121 \textcolor{preprocessor}{\#define GSM\_CSTATE\_MO\_TERM\_MODIFY       27}}
\DoxyCodeLine{2122 \textcolor{preprocessor}{\#define GSM\_CSTATE\_CONNECT\_IND          28}}
\DoxyCodeLine{2123 }
\DoxyCodeLine{2124 \textcolor{preprocessor}{\#define SBIT(a) (1 << a)}}
\DoxyCodeLine{2125 \textcolor{preprocessor}{\#define ALL\_STATES 0xffffffff}}
\DoxyCodeLine{2126 }
\DoxyCodeLine{2127 \textcolor{comment}{/* Table 10.5.3/3GPP TS 04.08: Location Area Identification information element */}}
\DoxyCodeLine{2128 \textcolor{preprocessor}{\#define GSM\_LAC\_RESERVED\_DETACHED       0x0}}
\DoxyCodeLine{2129 \textcolor{preprocessor}{\#define GSM\_LAC\_RESERVED\_ALL\_BTS        0xfffe}}
\DoxyCodeLine{2130 }
\DoxyCodeLine{2131 \textcolor{comment}{/* GSM 04.08 Bearer Capability: Information Transfer Capability */}}
\DoxyCodeLine{2132 \textcolor{keyword}{enum} gsm48\_bcap\_itcap \{}
\DoxyCodeLine{2133         GSM48\_BCAP\_ITCAP\_SPEECH          = 0,}
\DoxyCodeLine{2134         GSM48\_BCAP\_ITCAP\_UNR\_DIG\_INF        = 1,}
\DoxyCodeLine{2135         GSM48\_BCAP\_ITCAP\_3k1\_AUDIO    = 2,}
\DoxyCodeLine{2136         GSM48\_BCAP\_ITCAP\_FAX\_G3          = 3,}
\DoxyCodeLine{2137         GSM48\_BCAP\_ITCAP\_OTHER            = 5,}
\DoxyCodeLine{2138         GSM48\_BCAP\_ITCAP\_RESERVED      = 7,}
\DoxyCodeLine{2139 \};}
\DoxyCodeLine{2140 }
\DoxyCodeLine{2141 \textcolor{comment}{/* GSM 04.08 Bearer Capability: Transfer Mode */}}
\DoxyCodeLine{2142 \textcolor{keyword}{enum} gsm48\_bcap\_tmod \{}
\DoxyCodeLine{2143         GSM48\_BCAP\_TMOD\_CIRCUIT          = 0,}
\DoxyCodeLine{2144         GSM48\_BCAP\_TMOD\_PACKET            = 1,}
\DoxyCodeLine{2145 \};}
\DoxyCodeLine{2146 }
\DoxyCodeLine{2147 \textcolor{comment}{/* GSM 04.08 Bearer Capability: Coding Standard */}}
\DoxyCodeLine{2148 \textcolor{keyword}{enum} gsm48\_bcap\_coding \{}
\DoxyCodeLine{2149         GSM48\_BCAP\_CODING\_GSM\_STD      = 0,}
\DoxyCodeLine{2150 \};}
\DoxyCodeLine{2151 }
\DoxyCodeLine{2152 \textcolor{comment}{/* GSM 04.08 Bearer Capability: Radio Channel Requirements */}}
\DoxyCodeLine{2153 \textcolor{keyword}{enum} gsm48\_bcap\_rrq \{}
\DoxyCodeLine{2154         GSM48\_BCAP\_RRQ\_FR\_ONLY    = 1,}
\DoxyCodeLine{2155         GSM48\_BCAP\_RRQ\_DUAL\_HR    = 2,}
\DoxyCodeLine{2156         GSM48\_BCAP\_RRQ\_DUAL\_FR    = 3,}
\DoxyCodeLine{2157 \textcolor{comment}{/* GSM 04.08 Table 10.72: In network to MS direction, the network must send}}
\DoxyCodeLine{2158 \textcolor{comment}{ * spare bits that are encoded the same as FR\_ONLY. */}}
\DoxyCodeLine{2159 \textcolor{preprocessor}{\#define GSM48\_BCAP\_RRQ\_SPARE\_NETWORK\_TO\_MS GSM48\_BCAP\_RRQ\_FR\_ONLY}}
\DoxyCodeLine{2160 \};}
\DoxyCodeLine{2161 }
\DoxyCodeLine{2162 \textcolor{comment}{/* GSM 04.08 Bearer Capability: Rate Adaption */}}
\DoxyCodeLine{2163 \textcolor{keyword}{enum} gsm48\_bcap\_ra \{}
\DoxyCodeLine{2164         GSM48\_BCAP\_RA\_NONE    = 0,}
\DoxyCodeLine{2165         GSM48\_BCAP\_RA\_V110\_X30    = 1,}
\DoxyCodeLine{2166         GSM48\_BCAP\_RA\_X31      = 2,}
\DoxyCodeLine{2167         GSM48\_BCAP\_RA\_OTHER  = 3,}
\DoxyCodeLine{2168 \};}
\DoxyCodeLine{2169 }
\DoxyCodeLine{2170 \textcolor{comment}{/* GSM 04.08 Bearer Capability: Signalling access protocol */}}
\DoxyCodeLine{2171 \textcolor{keyword}{enum} gsm48\_bcap\_sig\_access \{}
\DoxyCodeLine{2172         GSM48\_BCAP\_SA\_I440\_I450  = 1,}
\DoxyCodeLine{2173         GSM48\_BCAP\_SA\_X21      = 2,}
\DoxyCodeLine{2174         GSM48\_BCAP\_SA\_X28\_DP\_IN  = 3,}
\DoxyCodeLine{2175         GSM48\_BCAP\_SA\_X28\_DP\_UN  = 4,}
\DoxyCodeLine{2176         GSM48\_BCAP\_SA\_X28\_NDP      = 5,}
\DoxyCodeLine{2177         GSM48\_BCAP\_SA\_X32      = 6,}
\DoxyCodeLine{2178 \};}
\DoxyCodeLine{2179 }
\DoxyCodeLine{2180 \textcolor{comment}{/* GSM 04.08 Bearer Capability: User Rate */}}
\DoxyCodeLine{2181 \textcolor{keyword}{enum} gsm48\_bcap\_user\_rate \{}
\DoxyCodeLine{2182         GSM48\_BCAP\_UR\_300      = 1,}
\DoxyCodeLine{2183         GSM48\_BCAP\_UR\_1200    = 2,}
\DoxyCodeLine{2184         GSM48\_BCAP\_UR\_2400    = 3,}
\DoxyCodeLine{2185         GSM48\_BCAP\_UR\_4800    = 4,}
\DoxyCodeLine{2186         GSM48\_BCAP\_UR\_9600    = 5,}
\DoxyCodeLine{2187         GSM48\_BCAP\_UR\_12000  = 6,}
\DoxyCodeLine{2188         GSM48\_BCAP\_UR\_1200\_75      = 7,}
\DoxyCodeLine{2189 \};}
\DoxyCodeLine{2190 }
\DoxyCodeLine{2191 \textcolor{comment}{/* GSM 04.08 Bearer Capability: Parity */}}
\DoxyCodeLine{2192 \textcolor{keyword}{enum} gsm48\_bcap\_parity \{}
\DoxyCodeLine{2193         GSM48\_BCAP\_PAR\_ODD    = 0,}
\DoxyCodeLine{2194         GSM48\_BCAP\_PAR\_EVEN  = 2,}
\DoxyCodeLine{2195         GSM48\_BCAP\_PAR\_NONE  = 3,}
\DoxyCodeLine{2196         GSM48\_BCAP\_PAR\_ZERO  = 4,}
\DoxyCodeLine{2197         GSM48\_BCAP\_PAR\_ONE    = 5,}
\DoxyCodeLine{2198 \};}
\DoxyCodeLine{2199 }
\DoxyCodeLine{2200 \textcolor{comment}{/* GSM 04.08 Bearer Capability: Intermediate Rate */}}
\DoxyCodeLine{2201 \textcolor{keyword}{enum} gsm48\_bcap\_interm\_rate \{}
\DoxyCodeLine{2202         GSM48\_BCAP\_IR\_8k        = 2,}
\DoxyCodeLine{2203         GSM48\_BCAP\_IR\_16k      = 3,}
\DoxyCodeLine{2204 \};}
\DoxyCodeLine{2205 }
\DoxyCodeLine{2206 \textcolor{comment}{/* GSM 04.08 Bearer Capability: Transparency */}}
\DoxyCodeLine{2207 \textcolor{keyword}{enum} gsm48\_bcap\_transp \{}
\DoxyCodeLine{2208         GSM48\_BCAP\_TR\_TRANSP        = 0,}
\DoxyCodeLine{2209         GSM48\_BCAP\_TR\_RLP      = 1,}
\DoxyCodeLine{2210         GSM48\_BCAP\_TR\_TR\_PREF      = 2,}
\DoxyCodeLine{2211         GSM48\_BCAP\_TR\_RLP\_PREF    = 3,}
\DoxyCodeLine{2212 \};}
\DoxyCodeLine{2213 }
\DoxyCodeLine{2214 \textcolor{comment}{/* GSM 04.08 Bearer Capability: Modem Type */}}
\DoxyCodeLine{2215 \textcolor{keyword}{enum} gsm48\_bcap\_modem\_type \{}
\DoxyCodeLine{2216         GSM48\_BCAP\_MT\_NONE    = 0,}
\DoxyCodeLine{2217         GSM48\_BCAP\_MT\_V21      = 1,}
\DoxyCodeLine{2218         GSM48\_BCAP\_MT\_V22      = 2,}
\DoxyCodeLine{2219         GSM48\_BCAP\_MT\_V22bis        = 3,}
\DoxyCodeLine{2220         GSM48\_BCAP\_MT\_V23      = 4,}
\DoxyCodeLine{2221         GSM48\_BCAP\_MT\_V26ter        = 5,}
\DoxyCodeLine{2222         GSM48\_BCAP\_MT\_V32      = 6,}
\DoxyCodeLine{2223         GSM48\_BCAP\_MT\_UNDEF  = 7,}
\DoxyCodeLine{2224         GSM48\_BCAP\_MT\_AUTO\_1        = 8,}
\DoxyCodeLine{2225 \};}
\DoxyCodeLine{2226 }
\DoxyCodeLine{2228 \textcolor{keyword}{enum} gsm48\_bcap\_other\_modem\_type \{}
\DoxyCodeLine{2229         GSM48\_BCAP\_OTHER\_MT\_NONE        = 0,    }
\DoxyCodeLine{2230         GSM48\_BCAP\_OTHER\_MT\_V34          = 2,    }
\DoxyCodeLine{2231 \};}
\DoxyCodeLine{2232 }
\DoxyCodeLine{2234 \textcolor{keyword}{enum} gsm48\_bcap\_fixed\_net\_user\_rate \{}
\DoxyCodeLine{2235         GSM48\_BCAP\_FNUR\_NONE                = 0,    }
\DoxyCodeLine{2236         GSM48\_BCAP\_FNUR\_X1\_V110\_9600        = 1,    }
\DoxyCodeLine{2237         GSM48\_BCAP\_FNUR\_X1\_V110\_14400      = 2,    }
\DoxyCodeLine{2238         GSM48\_BCAP\_FNUR\_X1\_V110\_19200      = 3,    }
\DoxyCodeLine{2239         GSM48\_BCAP\_FNUR\_X1\_V110\_28800      = 4,    }
\DoxyCodeLine{2240         GSM48\_BCAP\_FNUR\_X1\_V110\_38400      = 5,    }
\DoxyCodeLine{2241         GSM48\_BCAP\_FNUR\_X1\_V110\_48000      = 6,    }
\DoxyCodeLine{2242         GSM48\_BCAP\_FNUR\_X1\_V110\_56000      = 7,    }
\DoxyCodeLine{2243         GSM48\_BCAP\_FNUR\_BT\_64000        = 8,    }
\DoxyCodeLine{2244         GSM48\_BCAP\_FNUR\_BT\_33600        = 9,    }
\DoxyCodeLine{2245         GSM48\_BCAP\_FNUR\_I460\_32000    = 10,   }
\DoxyCodeLine{2246         GSM48\_BCAP\_FNUR\_V34\_31200      = 11,   }
\DoxyCodeLine{2247 \};}
\DoxyCodeLine{2248 }
\DoxyCodeLine{2252 \textcolor{keyword}{enum} gsm48\_bcap\_speech\_ver \{}
\DoxyCodeLine{2253         GSM48\_BCAP\_SV\_FR        = 0,    }
\DoxyCodeLine{2254         GSM48\_BCAP\_SV\_HR        = 1,    }
\DoxyCodeLine{2255         GSM48\_BCAP\_SV\_EFR      = 2,    }
\DoxyCodeLine{2256         GSM48\_BCAP\_SV\_AMR\_F  = 4,    }
\DoxyCodeLine{2257         GSM48\_BCAP\_SV\_AMR\_H  = 5,    }
\DoxyCodeLine{2258         GSM48\_BCAP\_SV\_AMR\_OFW      = 6,    }
\DoxyCodeLine{2259         GSM48\_BCAP\_SV\_AMR\_OHW      = 7,    }
\DoxyCodeLine{2260         GSM48\_BCAP\_SV\_AMR\_FW        = 8,    }
\DoxyCodeLine{2261         GSM48\_BCAP\_SV\_AMR\_OH        = 11,   }
\DoxyCodeLine{2262 \};}
\DoxyCodeLine{2263 }
\DoxyCodeLine{2264 \textcolor{preprocessor}{\#define GSM48\_TMSI\_LEN  5}}
\DoxyCodeLine{2265 \textcolor{preprocessor}{\#define GSM48\_MID\_TMSI\_LEN      (GSM48\_TMSI\_LEN + 2)}}
\DoxyCodeLine{2266 \textcolor{preprocessor}{\#define GSM48\_MI\_SIZE 32}}
\DoxyCodeLine{2267 }
\DoxyCodeLine{2268 \textcolor{comment}{/* 3GPP TS 24.008 § 10.5.5.15 Routing area identification */}}
\DoxyCodeLine{2269 \textcolor{keyword}{struct }gsm48\_ra\_id \{}
\DoxyCodeLine{2270         uint8\_t digits[3];        \textcolor{comment}{/* MCC + MNC BCD digits */}}
\DoxyCodeLine{2271         uint16\_t lac;                \textcolor{comment}{/* Location Area Code */}}
\DoxyCodeLine{2272         uint8\_t rac;         \textcolor{comment}{/* Routing Area Code */}}
\DoxyCodeLine{2273 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{2274 }
\DoxyCodeLine{2275 \textcolor{preprocessor}{\#define GSM48\_CELL\_CHAN\_DESC\_SIZE       16}}
\DoxyCodeLine{2276 }
\DoxyCodeLine{2277 \textcolor{preprocessor}{\#define GSM\_MACBLOCK\_LEN        23}}
\DoxyCodeLine{2278 \textcolor{preprocessor}{\#define GSM\_MACBLOCK\_PADDING    0x2b}}
\DoxyCodeLine{2279 }
\DoxyCodeLine{2280 \textcolor{comment}{/* Table 10.5.118 / 3GPP TS 24.008 Section 10.5.4.7 */}}
\DoxyCodeLine{2281 \textcolor{keyword}{enum} gsm48\_type\_of\_number \{}
\DoxyCodeLine{2282         GSM48\_TON\_UNKNOWN      = 0,}
\DoxyCodeLine{2283         GSM48\_TON\_INTERNATIONAL  = 1,}
\DoxyCodeLine{2284         GSM48\_TON\_NATIONAL    = 2,}
\DoxyCodeLine{2285         GSM48\_TON\_NET\_SPEC    = 3,}
\DoxyCodeLine{2286         GSM48\_TON\_SHORT\_CODE        = 4,}
\DoxyCodeLine{2287         \textcolor{comment}{/* reserved */}}
\DoxyCodeLine{2288 \};}
\DoxyCodeLine{2289 }
\DoxyCodeLine{2290 \textcolor{comment}{/* Table 10.5.118 / 3GPP TS 24.008 Section 10.5.4.7 */}}
\DoxyCodeLine{2291 \textcolor{keyword}{enum} gsm48\_numbering\_plan \{}
\DoxyCodeLine{2292         GSM48\_NPI\_UNKNOWN      = 0,}
\DoxyCodeLine{2293         GSM48\_NPI\_ISDN\_E164  = 1,}
\DoxyCodeLine{2294         GSM48\_NPI\_DATA\_X121  = 3,}
\DoxyCodeLine{2295         GSM48\_NPI\_TELEX\_F69  = 4,}
\DoxyCodeLine{2296         GSM48\_NPI\_NATIONAL    = 8,}
\DoxyCodeLine{2297         GSM48\_NPI\_PRIVATE      = 9,}
\DoxyCodeLine{2298         GSM48\_NPI\_CTS              = 11,}
\DoxyCodeLine{2299         \textcolor{comment}{/* reserved */}}
\DoxyCodeLine{2300 \};}

\end{DoxyCode}
