\doxysection{gsm0808.\+h}
\label{gsm0808_8h_source}\index{include/osmocom/gsm/gsm0808.h@{include/osmocom/gsm/gsm0808.h}}
\textbf{ Go to the documentation of this file.}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 }
\DoxyCodeLine{4 \textcolor{comment}{/*}}
\DoxyCodeLine{5 \textcolor{comment}{ * (C) 2009,2010 by Holger Hans Peter Freyther <zecke@selfish.org>}}
\DoxyCodeLine{6 \textcolor{comment}{ * (C) 2009,2010 by On-\/Waves}}
\DoxyCodeLine{7 \textcolor{comment}{ * All Rights Reserved}}
\DoxyCodeLine{8 \textcolor{comment}{ *}}
\DoxyCodeLine{9 \textcolor{comment}{ * This program is free software; you can redistribute it and/or modify}}
\DoxyCodeLine{10 \textcolor{comment}{ * it under the terms of the GNU General Public License as published by}}
\DoxyCodeLine{11 \textcolor{comment}{ * the Free Software Foundation; either version 2 of the License, or}}
\DoxyCodeLine{12 \textcolor{comment}{ * (at your option) any later version.}}
\DoxyCodeLine{13 \textcolor{comment}{ *}}
\DoxyCodeLine{14 \textcolor{comment}{ * This program is distributed in the hope that it will be useful,}}
\DoxyCodeLine{15 \textcolor{comment}{ * but WITHOUT ANY WARRANTY; without even the implied warranty of}}
\DoxyCodeLine{16 \textcolor{comment}{ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the}}
\DoxyCodeLine{17 \textcolor{comment}{ * GNU General Public License for more details.}}
\DoxyCodeLine{18 \textcolor{comment}{ *}}
\DoxyCodeLine{19 \textcolor{comment}{ */}}
\DoxyCodeLine{20 \textcolor{preprocessor}{\#pragma once}}
\DoxyCodeLine{21 }
\DoxyCodeLine{22 \textcolor{preprocessor}{\#include "{}tlv.h"{}}}
\DoxyCodeLine{23 \textcolor{preprocessor}{\#include <osmocom/gsm/protocol/gsm\_08\_08.h>}}
\DoxyCodeLine{24 \textcolor{preprocessor}{\#include <osmocom/gsm/gsm0808\_utils.h>}}
\DoxyCodeLine{25 \textcolor{preprocessor}{\#include <osmocom/gsm/gsm23003.h>}}
\DoxyCodeLine{26 \textcolor{preprocessor}{\#include <osmocom/gsm/protocol/gsm\_23\_003.h>}}
\DoxyCodeLine{27 \textcolor{preprocessor}{\#include <osmocom/core/utils.h>}}
\DoxyCodeLine{28 }
\DoxyCodeLine{29 \textcolor{preprocessor}{\#include <osmocom/core/socket\_compat.h>}}
\DoxyCodeLine{30 }
\DoxyCodeLine{31 \textcolor{preprocessor}{\#define BSSMAP\_MSG\_SIZE 1024}}
\DoxyCodeLine{32 \textcolor{preprocessor}{\#define BSSMAP\_MSG\_HEADROOM 512}}
\DoxyCodeLine{33 }
\DoxyCodeLine{34 \textcolor{keyword}{struct }msgb;}
\DoxyCodeLine{35 \textcolor{keyword}{struct }gsm0808\_cell\_id\_list2;}
\DoxyCodeLine{36 }
\DoxyCodeLine{37 \textcolor{keyword}{struct }msgb *gsm0808\_create\_layer3(\textcolor{keyword}{struct} msgb *msg\_l3, uint16\_t nc,}
\DoxyCodeLine{38                                    uint16\_t cc, \textcolor{keywordtype}{int} lac, uint16\_t \_ci)}
\DoxyCodeLine{39         OSMO\_DEPRECATED("{}Use gsm0808\_create\_layer3\_2() instead, to not lose leading zeros in the MNC"{});}
\DoxyCodeLine{40 struct msgb *gsm0808\_create\_layer3\_aoip(const struct msgb *msg\_l3, uint16\_t nc,}
\DoxyCodeLine{41                                         uint16\_t cc, \textcolor{keywordtype}{int} lac, uint16\_t \_ci,}
\DoxyCodeLine{42                                         const struct gsm0808\_speech\_codec\_list *scl)}
\DoxyCodeLine{43         OSMO\_DEPRECATED("{}Use gsm0808\_create\_layer3\_2() instead, to not lose leading zeros in the MNC"{});}
\DoxyCodeLine{44 struct msgb *gsm0808\_create\_layer3\_2(const struct msgb *msg\_l3, const struct osmo\_cell\_global\_id *cell,}
\DoxyCodeLine{45                                      const struct gsm0808\_speech\_codec\_list *scl);}
\DoxyCodeLine{46 struct msgb *gsm0808\_create\_reset(\textcolor{keywordtype}{void});}
\DoxyCodeLine{47 struct msgb *gsm0808\_create\_reset\_ack(\textcolor{keywordtype}{void});}
\DoxyCodeLine{48 struct msgb *gsm0808\_create\_clear\_command(uint8\_t cause);}
\DoxyCodeLine{49 struct msgb *gsm0808\_create\_clear\_command2(uint8\_t cause, \textcolor{keywordtype}{bool} csfb\_ind);}
\DoxyCodeLine{50 struct msgb *gsm0808\_create\_clear\_complete(\textcolor{keywordtype}{void});}
\DoxyCodeLine{51 struct msgb *gsm0808\_create\_cipher(const struct gsm0808\_encrypt\_info *ei,}
\DoxyCodeLine{52                                    const uint8\_t *cipher\_response\_mode);}
\DoxyCodeLine{53 }
\DoxyCodeLine{54 struct gsm0808\_cipher\_mode\_command \{}
\DoxyCodeLine{55         \textcolor{keyword}{struct }gsm0808\_encrypt\_info ei;}
\DoxyCodeLine{56 }
\DoxyCodeLine{58         \textcolor{keywordtype}{bool} cipher\_response\_mode\_present;}
\DoxyCodeLine{63         uint8\_t cipher\_response\_mode;}
\DoxyCodeLine{64 }
\DoxyCodeLine{65         \textcolor{keywordtype}{bool} kc128\_present;}
\DoxyCodeLine{66         uint8\_t kc128[16];}
\DoxyCodeLine{67 }
\DoxyCodeLine{68         \textcolor{comment}{/* more items are defined in the spec and may be added later */}}
\DoxyCodeLine{69         \textcolor{keywordtype}{bool} more\_items; \textcolor{comment}{/*< always set this to false */}}
\DoxyCodeLine{70 \};}
\DoxyCodeLine{71 \textcolor{keyword}{struct }msgb *gsm0808\_create\_cipher2(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_cipher\_mode\_command *cmc);}
\DoxyCodeLine{72 }
\DoxyCodeLine{73 \textcolor{keyword}{struct }msgb *gsm0808\_create\_cipher\_complete(\textcolor{keyword}{struct} msgb *layer3, uint8\_t alg\_id);}
\DoxyCodeLine{74 \textcolor{keyword}{struct }msgb *gsm0808\_create\_cipher\_reject(\textcolor{keyword}{enum} gsm0808\_cause cause);}
\DoxyCodeLine{75 \textcolor{keyword}{struct }msgb *gsm0808\_create\_cipher\_reject\_ext(\textcolor{keyword}{enum} gsm0808\_cause\_class \textcolor{keyword}{class}, uint8\_t ext);}
\DoxyCodeLine{76 \textcolor{keyword}{struct }msgb *gsm0808\_create\_classmark\_request(\textcolor{keywordtype}{void});}
\DoxyCodeLine{77 \textcolor{keyword}{struct }msgb *gsm0808\_create\_classmark\_update(\textcolor{keyword}{const} uint8\_t *cm2, uint8\_t cm2\_len,}
\DoxyCodeLine{78                                              \textcolor{keyword}{const} uint8\_t *cm3, uint8\_t cm3\_len);}
\DoxyCodeLine{79 \textcolor{keyword}{struct }msgb *gsm0808\_create\_sapi\_reject\_cause(uint8\_t link\_id, uint16\_t cause);}
\DoxyCodeLine{80 \textcolor{keyword}{struct }msgb *gsm0808\_create\_sapi\_reject(uint8\_t link\_id)}
\DoxyCodeLine{81         OSMO\_DEPRECATED(\textcolor{stringliteral}{"{}Use gsm0808\_create\_sapi\_reject\_cause() instead"{}});}
\DoxyCodeLine{82 \textcolor{keyword}{struct }msgb *gsm0808\_create\_ass(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_channel\_type *ct,}
\DoxyCodeLine{83                                 \textcolor{keyword}{const} uint16\_t *cic,}
\DoxyCodeLine{84                                 \textcolor{keyword}{const} \textcolor{keyword}{struct} sockaddr\_storage *ss,}
\DoxyCodeLine{85                                 \textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_speech\_codec\_list *scl,}
\DoxyCodeLine{86                                 \textcolor{keyword}{const} uint32\_t *ci);}
\DoxyCodeLine{87 \textcolor{keyword}{struct }msgb *gsm0808\_create\_ass2(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_channel\_type *ct,}
\DoxyCodeLine{88                                  \textcolor{keyword}{const} uint16\_t *cic,}
\DoxyCodeLine{89                                  \textcolor{keyword}{const} \textcolor{keyword}{struct} sockaddr\_storage *ss,}
\DoxyCodeLine{90                                  \textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_speech\_codec\_list *scl,}
\DoxyCodeLine{91                                  \textcolor{keyword}{const} uint32\_t *ci,}
\DoxyCodeLine{92                                  \textcolor{keyword}{const} uint8\_t *kc, \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_lcls *lcls);}
\DoxyCodeLine{93 \textcolor{keyword}{struct }msgb *gsm0808\_create\_ass\_compl(uint8\_t rr\_cause, uint8\_t chosen\_channel,}
\DoxyCodeLine{94                                       uint8\_t encr\_alg\_id, uint8\_t speech\_mode,}
\DoxyCodeLine{95                                       \textcolor{keyword}{const} \textcolor{keyword}{struct} sockaddr\_storage *ss,}
\DoxyCodeLine{96                                       \textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_speech\_codec *sc,}
\DoxyCodeLine{97                                       \textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_speech\_codec\_list}
\DoxyCodeLine{98                                       *scl);}
\DoxyCodeLine{99 \textcolor{keyword}{struct }msgb *gsm0808\_create\_ass\_compl2(uint8\_t rr\_cause, uint8\_t chosen\_channel,}
\DoxyCodeLine{100                                        uint8\_t encr\_alg\_id, uint8\_t speech\_mode,}
\DoxyCodeLine{101                                        \textcolor{keyword}{const} \textcolor{keyword}{struct} sockaddr\_storage *ss,}
\DoxyCodeLine{102                                        \textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_speech\_codec *sc,}
\DoxyCodeLine{103                                        \textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_speech\_codec\_list *scl,}
\DoxyCodeLine{104                                        \textcolor{keyword}{enum} gsm0808\_lcls\_status lcls\_bss\_status);}
\DoxyCodeLine{105 \textcolor{keyword}{struct }msgb *gsm0808\_create\_assignment\_completed(uint8\_t rr\_cause,}
\DoxyCodeLine{106                                                  uint8\_t chosen\_channel,}
\DoxyCodeLine{107                                                  uint8\_t encr\_alg\_id,}
\DoxyCodeLine{108                                                  uint8\_t speech\_mode);}
\DoxyCodeLine{109 \textcolor{keyword}{struct }msgb *gsm0808\_create\_ass\_fail(uint8\_t cause, \textcolor{keyword}{const} uint8\_t *rr\_cause,}
\DoxyCodeLine{110                                      \textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_speech\_codec\_list}
\DoxyCodeLine{111                                      *scl);}
\DoxyCodeLine{112 \textcolor{keyword}{struct }msgb *gsm0808\_create\_assignment\_failure(uint8\_t cause, uint8\_t *rr\_cause);}
\DoxyCodeLine{113 \textcolor{keyword}{struct }msgb *gsm0808\_create\_clear\_rqst(uint8\_t cause);}
\DoxyCodeLine{114 \textcolor{keyword}{struct }msgb *gsm0808\_create\_paging2(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *imsi, \textcolor{keyword}{const} uint32\_t *tmsi,}
\DoxyCodeLine{115                                    \textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_cell\_id\_list2 *cil,}
\DoxyCodeLine{116                                    \textcolor{keyword}{const} uint8\_t *chan\_needed);}
\DoxyCodeLine{117 \textcolor{keyword}{struct }msgb *gsm0808\_create\_paging(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *imsi, \textcolor{keyword}{const} uint32\_t *tmsi,}
\DoxyCodeLine{118                                    \textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_cell\_id\_list *cil,}
\DoxyCodeLine{119                                    \textcolor{keyword}{const} uint8\_t *chan\_needed)}
\DoxyCodeLine{120                                    OSMO\_DEPRECATED(\textcolor{stringliteral}{"{}use gsm0808\_create\_paging2 instead"{}});}
\DoxyCodeLine{121 \textcolor{keyword}{struct }msgb *gsm0808\_create\_lcls\_conn\_ctrl(\textcolor{keyword}{enum} gsm0808\_lcls\_config config,}
\DoxyCodeLine{122                                            \textcolor{keyword}{enum} gsm0808\_lcls\_control control);}
\DoxyCodeLine{123 \textcolor{keyword}{struct }msgb *gsm0808\_create\_lcls\_conn\_ctrl\_ack(\textcolor{keyword}{enum} gsm0808\_lcls\_status status);}
\DoxyCodeLine{124 \textcolor{keyword}{struct }msgb *gsm0808\_create\_lcls\_notification(\textcolor{keyword}{enum} gsm0808\_lcls\_status status, \textcolor{keywordtype}{bool} break\_req);}
\DoxyCodeLine{125 \textcolor{keyword}{struct }msgb *gsm0808\_create\_common\_id(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *imsi,}
\DoxyCodeLine{126                                       \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_plmn\_id *selected\_plmn\_id,}
\DoxyCodeLine{127                                       \textcolor{keyword}{const} \textcolor{keyword}{struct} osmo\_plmn\_id *last\_used\_eutran\_plnm\_id);}
\DoxyCodeLine{128 }
\DoxyCodeLine{129 }
\DoxyCodeLine{131 \textcolor{keyword}{struct }gsm0808\_old\_bss\_to\_new\_bss\_info \{}
\DoxyCodeLine{132         \textcolor{keywordtype}{bool} extra\_information\_present;}
\DoxyCodeLine{133         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{134                 \textcolor{keywordtype}{bool} prec;}
\DoxyCodeLine{135                 \textcolor{keywordtype}{bool} lcs;}
\DoxyCodeLine{136                 \textcolor{keywordtype}{bool} ue\_prob;}
\DoxyCodeLine{137         \} extra\_information;}
\DoxyCodeLine{138 }
\DoxyCodeLine{139         \textcolor{keywordtype}{bool} current\_channel\_type\_2\_present;}
\DoxyCodeLine{140         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{141                 uint8\_t mode;}
\DoxyCodeLine{142                 uint8\_t field;}
\DoxyCodeLine{143         \} current\_channel\_type\_2;}
\DoxyCodeLine{144 }
\DoxyCodeLine{145         \textcolor{keywordtype}{bool} last\_eutran\_plmn\_id\_present;}
\DoxyCodeLine{146         \textcolor{keyword}{struct }osmo\_plmn\_id last\_eutran\_plmn\_id;}
\DoxyCodeLine{147 }
\DoxyCodeLine{148         \textcolor{comment}{/* more items are defined in the spec and may be added later */}}
\DoxyCodeLine{149         \textcolor{keywordtype}{bool} more\_items; \textcolor{comment}{/*< always set this to false */}}
\DoxyCodeLine{150 \};}
\DoxyCodeLine{151 }
\DoxyCodeLine{153 \textcolor{keyword}{struct }gsm0808\_handover\_required \{}
\DoxyCodeLine{154         uint16\_t cause;}
\DoxyCodeLine{155         \textcolor{keyword}{struct }gsm0808\_cell\_id\_list2 cil;}
\DoxyCodeLine{156 }
\DoxyCodeLine{157         \textcolor{keywordtype}{bool} current\_channel\_type\_1\_present;}
\DoxyCodeLine{158         uint8\_t current\_channel\_type\_1;}
\DoxyCodeLine{159 }
\DoxyCodeLine{160         \textcolor{keywordtype}{bool} speech\_version\_used\_present;}
\DoxyCodeLine{161         \textcolor{keyword}{enum} gsm0808\_permitted\_speech speech\_version\_used;}
\DoxyCodeLine{162 }
\DoxyCodeLine{163         \textcolor{keywordtype}{bool} old\_bss\_to\_new\_bss\_info\_present;}
\DoxyCodeLine{164         \textcolor{keyword}{struct }gsm0808\_old\_bss\_to\_new\_bss\_info old\_bss\_to\_new\_bss\_info;}
\DoxyCodeLine{165 }
\DoxyCodeLine{166         \textcolor{comment}{/* more items are defined in the spec and may be added later */}}
\DoxyCodeLine{167         \textcolor{keywordtype}{bool} more\_items; \textcolor{comment}{/*< always set this to false */}}
\DoxyCodeLine{168 \};}
\DoxyCodeLine{169 \textcolor{keyword}{struct }msgb *gsm0808\_create\_handover\_required(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_handover\_required *params);}
\DoxyCodeLine{170 }
\DoxyCodeLine{172 \textcolor{keyword}{struct }gsm0808\_handover\_required\_reject \{}
\DoxyCodeLine{173         uint16\_t cause;}
\DoxyCodeLine{174 }
\DoxyCodeLine{175         \textcolor{comment}{/* more items are defined in the spec and may be added later */}}
\DoxyCodeLine{176         \textcolor{keywordtype}{bool} more\_items; \textcolor{comment}{/*< always set this to false */}}
\DoxyCodeLine{177 \};}
\DoxyCodeLine{178 \textcolor{keyword}{struct }msgb *gsm0808\_create\_handover\_required\_reject(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_handover\_required\_reject *params);}
\DoxyCodeLine{179 }
\DoxyCodeLine{181 \textcolor{keyword}{struct }gsm0808\_handover\_request \{}
\DoxyCodeLine{182         \textcolor{keyword}{struct }gsm0808\_channel\_type channel\_type;}
\DoxyCodeLine{183         \textcolor{keyword}{struct }gsm0808\_encrypt\_info encryption\_information;}
\DoxyCodeLine{184         \textcolor{keyword}{struct }osmo\_gsm48\_classmark classmark\_information;}
\DoxyCodeLine{185         \textcolor{keyword}{struct }gsm0808\_cell\_id cell\_identifier\_serving;}
\DoxyCodeLine{186         \textcolor{keyword}{struct }gsm0808\_cell\_id cell\_identifier\_target;}
\DoxyCodeLine{187         \textcolor{keyword}{enum} gsm0808\_cause cause;}
\DoxyCodeLine{188 }
\DoxyCodeLine{189         \textcolor{keywordtype}{bool} current\_channel\_type\_1\_present;}
\DoxyCodeLine{190         uint8\_t current\_channel\_type\_1;}
\DoxyCodeLine{191 }
\DoxyCodeLine{192         \textcolor{keyword}{enum} gsm0808\_permitted\_speech speech\_version\_used;}
\DoxyCodeLine{193 }
\DoxyCodeLine{194         uint8\_t chosen\_encryption\_algorithm\_serving;}
\DoxyCodeLine{195 }
\DoxyCodeLine{197         \textcolor{keywordtype}{bool} old\_bss\_to\_new\_bss\_info\_present;}
\DoxyCodeLine{198         \textcolor{keyword}{struct }gsm0808\_old\_bss\_to\_new\_bss\_info old\_bss\_to\_new\_bss\_info;}
\DoxyCodeLine{201         \textcolor{keyword}{const} uint8\_t *old\_bss\_to\_new\_bss\_info\_raw;}
\DoxyCodeLine{202         uint8\_t old\_bss\_to\_new\_bss\_info\_raw\_len;}
\DoxyCodeLine{203 }
\DoxyCodeLine{204         \textcolor{keyword}{const} \textcolor{keywordtype}{char} *imsi;}
\DoxyCodeLine{205 }
\DoxyCodeLine{206         \textcolor{keyword}{const} \textcolor{keyword}{struct }sockaddr\_storage *aoip\_transport\_layer;}
\DoxyCodeLine{207 }
\DoxyCodeLine{208         \textcolor{keyword}{const} \textcolor{keyword}{struct }gsm0808\_speech\_codec\_list *codec\_list\_msc\_preferred;}
\DoxyCodeLine{209 }
\DoxyCodeLine{210         \textcolor{keywordtype}{bool} call\_id\_present;}
\DoxyCodeLine{211         uint32\_t call\_id;}
\DoxyCodeLine{212 }
\DoxyCodeLine{213         \textcolor{keyword}{const} uint8\_t *global\_call\_reference;}
\DoxyCodeLine{214         uint8\_t global\_call\_reference\_len;}
\DoxyCodeLine{215 }
\DoxyCodeLine{216         \textcolor{comment}{/* more items are defined in the spec and may be added later */}}
\DoxyCodeLine{217         \textcolor{keywordtype}{bool} more\_items; }
\DoxyCodeLine{219         \textcolor{keywordtype}{bool} kc128\_present;}
\DoxyCodeLine{220         uint8\_t kc128[16];}
\DoxyCodeLine{221 }
\DoxyCodeLine{222         \textcolor{keywordtype}{bool} more\_items2; }
\DoxyCodeLine{223 \};}
\DoxyCodeLine{224 \textcolor{keyword}{struct }msgb *gsm0808\_create\_handover\_request(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_handover\_request *params);}
\DoxyCodeLine{225 }
\DoxyCodeLine{226 \textcolor{keyword}{struct }msgb *gsm0808\_create\_handover\_request\_ack(\textcolor{keyword}{const} uint8\_t *l3\_info, uint8\_t l3\_info\_len,}
\DoxyCodeLine{227                                                  uint8\_t chosen\_channel, uint8\_t chosen\_encr\_alg,}
\DoxyCodeLine{228                                                  uint8\_t chosen\_speech\_version);}
\DoxyCodeLine{229 }
\DoxyCodeLine{230 \textcolor{keyword}{struct }gsm0808\_handover\_request\_ack \{}
\DoxyCodeLine{231         \textcolor{keyword}{const} uint8\_t *l3\_info;}
\DoxyCodeLine{232         uint8\_t l3\_info\_len;}
\DoxyCodeLine{233 }
\DoxyCodeLine{234         \textcolor{keywordtype}{bool} chosen\_channel\_present;}
\DoxyCodeLine{235         uint8\_t chosen\_channel;}
\DoxyCodeLine{236 }
\DoxyCodeLine{239         uint8\_t chosen\_encr\_alg;}
\DoxyCodeLine{240 }
\DoxyCodeLine{241         \textcolor{comment}{/* chosen\_speech\_version == 0 omits the IE */}}
\DoxyCodeLine{242         \textcolor{keyword}{enum} gsm0808\_permitted\_speech chosen\_speech\_version;}
\DoxyCodeLine{243 }
\DoxyCodeLine{244         \textcolor{keywordtype}{bool} speech\_codec\_chosen\_present;}
\DoxyCodeLine{245         \textcolor{keyword}{struct }gsm0808\_speech\_codec speech\_codec\_chosen;}
\DoxyCodeLine{246 }
\DoxyCodeLine{247         \textcolor{keyword}{const} \textcolor{keyword}{struct }sockaddr\_storage *aoip\_transport\_layer;}
\DoxyCodeLine{248 }
\DoxyCodeLine{249         \textcolor{keywordtype}{bool} more\_items; }
\DoxyCodeLine{251         \textcolor{keyword}{struct }gsm0808\_speech\_codec\_list codec\_list\_bss\_supported; \textcolor{comment}{/*< omit when .len == 0 */}}
\DoxyCodeLine{252 }
\DoxyCodeLine{253         \textcolor{comment}{/* more items are defined in the spec and may be added later */}}
\DoxyCodeLine{254         \textcolor{keywordtype}{bool} more\_items2; }
\DoxyCodeLine{255 \};}
\DoxyCodeLine{256 \textcolor{keyword}{struct }msgb *gsm0808\_create\_handover\_request\_ack2(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_handover\_request\_ack *params);}
\DoxyCodeLine{257 }
\DoxyCodeLine{258 \textcolor{keyword}{struct }gsm0808\_handover\_command \{}
\DoxyCodeLine{259         \textcolor{keyword}{const} uint8\_t *l3\_info;}
\DoxyCodeLine{260         uint8\_t l3\_info\_len;}
\DoxyCodeLine{261 }
\DoxyCodeLine{262         \textcolor{keyword}{struct }gsm0808\_cell\_id cell\_identifier;}
\DoxyCodeLine{263 }
\DoxyCodeLine{264         \textcolor{keyword}{const} uint8\_t *new\_bss\_to\_old\_bss\_info\_raw;}
\DoxyCodeLine{265         \textcolor{keywordtype}{size\_t} new\_bss\_to\_old\_bss\_info\_raw\_len;}
\DoxyCodeLine{266 }
\DoxyCodeLine{267         \textcolor{comment}{/* more items are defined in the spec and may be added later */}}
\DoxyCodeLine{268         \textcolor{keywordtype}{bool} more\_items; }
\DoxyCodeLine{269 \};}
\DoxyCodeLine{270 \textcolor{keyword}{struct }msgb *gsm0808\_create\_handover\_command(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_handover\_command *params);}
\DoxyCodeLine{271 }
\DoxyCodeLine{272 \textcolor{keyword}{struct }msgb *gsm0808\_create\_handover\_detect(\textcolor{keywordtype}{void});}
\DoxyCodeLine{273 \textcolor{keyword}{struct }msgb *gsm0808\_create\_handover\_succeeded(\textcolor{keywordtype}{void});}
\DoxyCodeLine{274 }
\DoxyCodeLine{275 \textcolor{keyword}{struct }gsm0808\_handover\_complete \{}
\DoxyCodeLine{276         \textcolor{keywordtype}{bool} rr\_cause\_present;}
\DoxyCodeLine{277         uint8\_t rr\_cause;}
\DoxyCodeLine{278 }
\DoxyCodeLine{279         \textcolor{keywordtype}{bool} speech\_codec\_chosen\_present;}
\DoxyCodeLine{280         \textcolor{keyword}{struct }gsm0808\_speech\_codec speech\_codec\_chosen;}
\DoxyCodeLine{281 }
\DoxyCodeLine{282         \textcolor{keyword}{struct }gsm0808\_speech\_codec\_list codec\_list\_bss\_supported; \textcolor{comment}{/*< omit when .len == 0 */}}
\DoxyCodeLine{283 }
\DoxyCodeLine{284         \textcolor{keywordtype}{bool} chosen\_encr\_alg\_present;}
\DoxyCodeLine{285         uint8\_t chosen\_encr\_alg;}
\DoxyCodeLine{286 }
\DoxyCodeLine{287         \textcolor{keywordtype}{bool} chosen\_channel\_present;}
\DoxyCodeLine{288         uint8\_t chosen\_channel;}
\DoxyCodeLine{289 }
\DoxyCodeLine{290         \textcolor{keywordtype}{bool} lcls\_bss\_status\_present;}
\DoxyCodeLine{291         \textcolor{keyword}{enum} gsm0808\_lcls\_status lcls\_bss\_status;}
\DoxyCodeLine{292 }
\DoxyCodeLine{293         \textcolor{comment}{/* more items are defined in the spec and may be added later */}}
\DoxyCodeLine{294         \textcolor{keywordtype}{bool} more\_items; \textcolor{comment}{/*< always set this to false */}}
\DoxyCodeLine{295 \};}
\DoxyCodeLine{296 \textcolor{keyword}{struct }msgb *gsm0808\_create\_handover\_complete(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_handover\_complete *params);}
\DoxyCodeLine{297 }
\DoxyCodeLine{298 \textcolor{keyword}{struct }gsm0808\_handover\_failure \{}
\DoxyCodeLine{299         uint16\_t cause;}
\DoxyCodeLine{300 }
\DoxyCodeLine{301         \textcolor{keywordtype}{bool} rr\_cause\_present;}
\DoxyCodeLine{302         uint8\_t rr\_cause;}
\DoxyCodeLine{303 }
\DoxyCodeLine{304         \textcolor{keyword}{struct }gsm0808\_speech\_codec\_list codec\_list\_bss\_supported; \textcolor{comment}{/*< omit when .len == 0 */}}
\DoxyCodeLine{305 }
\DoxyCodeLine{306         \textcolor{comment}{/* more items are defined in the spec and may be added later */}}
\DoxyCodeLine{307         \textcolor{keywordtype}{bool} more\_items; \textcolor{comment}{/*< always set this to false */}}
\DoxyCodeLine{308 \};}
\DoxyCodeLine{309 \textcolor{keyword}{struct }msgb *gsm0808\_create\_handover\_failure(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_handover\_failure *params);}
\DoxyCodeLine{310 }
\DoxyCodeLine{311 \textcolor{keyword}{struct }gsm0808\_handover\_performed \{}
\DoxyCodeLine{312         uint16\_t cause;}
\DoxyCodeLine{313         \textcolor{keyword}{struct }gsm0808\_cell\_id cell\_id;}
\DoxyCodeLine{314 }
\DoxyCodeLine{315         \textcolor{keywordtype}{bool} chosen\_channel\_present;}
\DoxyCodeLine{316         uint8\_t chosen\_channel;}
\DoxyCodeLine{317 }
\DoxyCodeLine{318         \textcolor{keywordtype}{bool} chosen\_encr\_alg\_present;}
\DoxyCodeLine{319         uint8\_t chosen\_encr\_alg;}
\DoxyCodeLine{320 }
\DoxyCodeLine{321         \textcolor{keywordtype}{bool} speech\_version\_chosen\_present;}
\DoxyCodeLine{322         \textcolor{keyword}{enum} gsm0808\_permitted\_speech speech\_version\_chosen;}
\DoxyCodeLine{323 }
\DoxyCodeLine{324         \textcolor{keywordtype}{bool} speech\_codec\_chosen\_present;}
\DoxyCodeLine{325         \textcolor{keyword}{struct }gsm0808\_speech\_codec speech\_codec\_chosen;}
\DoxyCodeLine{326 }
\DoxyCodeLine{327         \textcolor{keywordtype}{bool} lcls\_bss\_status\_present;}
\DoxyCodeLine{328         \textcolor{keyword}{enum} gsm0808\_lcls\_status lcls\_bss\_status;}
\DoxyCodeLine{329 }
\DoxyCodeLine{330         \textcolor{comment}{/* more items are defined in the spec and may be added later */}}
\DoxyCodeLine{331         \textcolor{keywordtype}{bool} more\_items; \textcolor{comment}{/*< always set this to false */}}
\DoxyCodeLine{332 \};}
\DoxyCodeLine{333 \textcolor{keyword}{struct }msgb *gsm0808\_create\_handover\_performed(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_handover\_performed *params);}
\DoxyCodeLine{334 }
\DoxyCodeLine{336 \textcolor{keyword}{struct }gsm0808\_vgcs\_vbs\_setup \{}
\DoxyCodeLine{337         \textcolor{keyword}{struct }gsm0808\_group\_callref callref;}
\DoxyCodeLine{338 }
\DoxyCodeLine{339         \textcolor{keywordtype}{bool} priority\_present;}
\DoxyCodeLine{340         \textcolor{keyword}{struct }gsm0808\_priority priority;}
\DoxyCodeLine{341 }
\DoxyCodeLine{342         \textcolor{keywordtype}{bool} vgcs\_feature\_flags\_present;}
\DoxyCodeLine{343         \textcolor{keyword}{struct }gsm0808\_vgcs\_feature\_flags flags;}
\DoxyCodeLine{344 \};}
\DoxyCodeLine{345 \textcolor{keyword}{struct }msgb *gsm0808\_create\_vgcs\_vbs\_setup(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_vgcs\_vbs\_setup *params);}
\DoxyCodeLine{346 }
\DoxyCodeLine{348 \textcolor{keyword}{struct }gsm0808\_vgcs\_vbs\_setup\_ack \{}
\DoxyCodeLine{349         \textcolor{keywordtype}{bool} vgcs\_feature\_flags\_present;}
\DoxyCodeLine{350         \textcolor{keyword}{struct }gsm0808\_vgcs\_feature\_flags flags;}
\DoxyCodeLine{351 \};}
\DoxyCodeLine{352 \textcolor{keyword}{struct }msgb *gsm0808\_create\_vgcs\_vbs\_setup\_ack(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_vgcs\_vbs\_setup\_ack *params);}
\DoxyCodeLine{353 }
\DoxyCodeLine{355 \textcolor{keyword}{struct }msgb *gsm0808\_create\_vgcs\_vbs\_setup\_refuse(\textcolor{keyword}{enum} gsm0808\_cause cause);}
\DoxyCodeLine{356 }
\DoxyCodeLine{358 \textcolor{keyword}{struct }gsm0808\_vgcs\_vbs\_assign\_req \{}
\DoxyCodeLine{359         \textcolor{keyword}{struct }gsm0808\_channel\_type channel\_type;}
\DoxyCodeLine{360         \textcolor{keyword}{enum} gsm0808\_assignment\_requirement ass\_req;}
\DoxyCodeLine{361         \textcolor{keyword}{struct }gsm0808\_cell\_id cell\_identifier;}
\DoxyCodeLine{362         \textcolor{keyword}{struct }gsm0808\_group\_callref callref;}
\DoxyCodeLine{363 }
\DoxyCodeLine{364         \textcolor{keywordtype}{bool} priority\_present;}
\DoxyCodeLine{365         \textcolor{keyword}{struct }gsm0808\_priority priority;}
\DoxyCodeLine{366 }
\DoxyCodeLine{367         \textcolor{keywordtype}{bool} cic\_present;}
\DoxyCodeLine{368         uint16\_t cic;}
\DoxyCodeLine{369 }
\DoxyCodeLine{370         \textcolor{keywordtype}{bool} downlink\_dtx\_flag\_present;}
\DoxyCodeLine{371         \textcolor{keyword}{enum} gsm0808\_downlink\_dtx\_flag downlink\_dtx\_flag;}
\DoxyCodeLine{372 }
\DoxyCodeLine{373         \textcolor{keywordtype}{bool} encryption\_information\_present;}
\DoxyCodeLine{374         \textcolor{keyword}{struct }gsm0808\_encrypt\_info encryption\_information;}
\DoxyCodeLine{375 }
\DoxyCodeLine{376         \textcolor{keywordtype}{bool} vstk\_rand\_present;}
\DoxyCodeLine{377         uint8\_t vstk\_rand[5];}
\DoxyCodeLine{378 }
\DoxyCodeLine{379         \textcolor{keywordtype}{bool} vstk\_present;}
\DoxyCodeLine{380         uint8\_t vstk[16];}
\DoxyCodeLine{381 }
\DoxyCodeLine{382         \textcolor{keywordtype}{bool} cils\_present;}
\DoxyCodeLine{383         \textcolor{keyword}{struct }gsm0808\_cell\_id\_list\_segment cils;}
\DoxyCodeLine{384 }
\DoxyCodeLine{385         \textcolor{keywordtype}{bool} aoip\_transport\_layer\_present;}
\DoxyCodeLine{386         \textcolor{keyword}{struct }sockaddr\_storage aoip\_transport\_layer;}
\DoxyCodeLine{387 }
\DoxyCodeLine{388         \textcolor{keywordtype}{bool} call\_id\_present;}
\DoxyCodeLine{389         uint32\_t call\_id;}
\DoxyCodeLine{390 }
\DoxyCodeLine{391         \textcolor{keywordtype}{bool} codec\_list\_present;}
\DoxyCodeLine{392         \textcolor{keyword}{struct }gsm0808\_speech\_codec\_list codec\_list\_msc\_preferred;}
\DoxyCodeLine{393 \};}
\DoxyCodeLine{394 \textcolor{keyword}{struct }msgb *gsm0808\_create\_vgcs\_vbs\_assign\_req(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_vgcs\_vbs\_assign\_req *params);}
\DoxyCodeLine{395 }
\DoxyCodeLine{397 \textcolor{keyword}{struct }gsm0808\_vgcs\_vbs\_assign\_res \{}
\DoxyCodeLine{398         \textcolor{keyword}{struct }gsm0808\_channel\_type channel\_type;}
\DoxyCodeLine{399         \textcolor{keyword}{struct }gsm0808\_cell\_id cell\_identifier;}
\DoxyCodeLine{400 }
\DoxyCodeLine{401         \textcolor{keywordtype}{bool} chosen\_channel\_present;}
\DoxyCodeLine{402         uint8\_t chosen\_channel;}
\DoxyCodeLine{403 }
\DoxyCodeLine{404         \textcolor{keywordtype}{bool} cic\_present;}
\DoxyCodeLine{405         uint16\_t cic;}
\DoxyCodeLine{406 }
\DoxyCodeLine{407         \textcolor{keywordtype}{bool} circuit\_pool\_present;}
\DoxyCodeLine{408         uint8\_t circuit\_pool;}
\DoxyCodeLine{409 }
\DoxyCodeLine{410         \textcolor{keywordtype}{bool} aoip\_transport\_layer\_present;}
\DoxyCodeLine{411         \textcolor{keyword}{struct }sockaddr\_storage aoip\_transport\_layer;}
\DoxyCodeLine{412 }
\DoxyCodeLine{413         \textcolor{keywordtype}{bool} codec\_present;}
\DoxyCodeLine{414         \textcolor{keyword}{struct }gsm0808\_speech\_codec codec\_msc\_chosen;}
\DoxyCodeLine{415 }
\DoxyCodeLine{416         \textcolor{keywordtype}{bool} call\_id\_present;}
\DoxyCodeLine{417         uint32\_t call\_id;}
\DoxyCodeLine{418 \};}
\DoxyCodeLine{419 \textcolor{keyword}{struct }msgb *gsm0808\_create\_vgcs\_vbs\_assign\_res(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_vgcs\_vbs\_assign\_res *params);}
\DoxyCodeLine{420 }
\DoxyCodeLine{422 \textcolor{keyword}{struct }gsm0808\_vgcs\_vbs\_assign\_fail \{}
\DoxyCodeLine{423         \textcolor{keyword}{enum} gsm0808\_cause cause;}
\DoxyCodeLine{424 }
\DoxyCodeLine{425         \textcolor{keywordtype}{bool} circuit\_pool\_present;}
\DoxyCodeLine{426         uint8\_t circuit\_pool;}
\DoxyCodeLine{427 }
\DoxyCodeLine{428         \textcolor{keywordtype}{bool} cpl\_present;}
\DoxyCodeLine{429         \textcolor{keyword}{struct }gsm0808\_circuit\_pool\_list cpl;}
\DoxyCodeLine{430 }
\DoxyCodeLine{431         \textcolor{keywordtype}{bool} codec\_list\_present;}
\DoxyCodeLine{432         \textcolor{keyword}{struct }gsm0808\_speech\_codec\_list codec\_list\_bss\_supported;}
\DoxyCodeLine{433 \};}
\DoxyCodeLine{434 \textcolor{keyword}{struct }msgb *gsm0808\_create\_vgcs\_vbs\_assign\_fail(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_vgcs\_vbs\_assign\_fail *params);}
\DoxyCodeLine{435 }
\DoxyCodeLine{437 \textcolor{keyword}{struct }gsm0808\_uplink\_request \{}
\DoxyCodeLine{438         \textcolor{keywordtype}{bool} talker\_priority\_present;}
\DoxyCodeLine{439         \textcolor{keyword}{enum} gsm0808\_talker\_priority talker\_priority;}
\DoxyCodeLine{440 }
\DoxyCodeLine{441         \textcolor{keywordtype}{bool} cell\_identifier\_present;}
\DoxyCodeLine{442         \textcolor{keyword}{struct }gsm0808\_cell\_id cell\_identifier;}
\DoxyCodeLine{443 }
\DoxyCodeLine{444         \textcolor{keywordtype}{bool} l3\_present;}
\DoxyCodeLine{445         \textcolor{keyword}{struct }gsm0808\_layer\_3\_information l3;}
\DoxyCodeLine{446 }
\DoxyCodeLine{447         \textcolor{keywordtype}{bool} mi\_present;}
\DoxyCodeLine{448         \textcolor{keyword}{struct }osmo\_mobile\_identity mi;}
\DoxyCodeLine{449 \};}
\DoxyCodeLine{450 \textcolor{keyword}{struct }msgb *gsm0808\_create\_uplink\_request(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_uplink\_request *params);}
\DoxyCodeLine{451 }
\DoxyCodeLine{453 \textcolor{keyword}{struct }gsm0808\_uplink\_request\_ack \{}
\DoxyCodeLine{454         \textcolor{keywordtype}{bool} talker\_priority\_present;}
\DoxyCodeLine{455         \textcolor{keyword}{enum} gsm0808\_talker\_priority talker\_priority;}
\DoxyCodeLine{456 }
\DoxyCodeLine{457         \textcolor{keywordtype}{bool} emerg\_set\_ind\_present;}
\DoxyCodeLine{458 }
\DoxyCodeLine{459         \textcolor{keywordtype}{bool} talker\_identity\_present;}
\DoxyCodeLine{460         \textcolor{keyword}{struct }gsm0808\_talker\_identity talker\_identity;}
\DoxyCodeLine{461 \};}
\DoxyCodeLine{462 \textcolor{keyword}{struct }msgb *gsm0808\_create\_uplink\_request\_ack(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_uplink\_request\_ack *params);}
\DoxyCodeLine{463 }
\DoxyCodeLine{465 \textcolor{keyword}{struct }gsm0808\_uplink\_request\_cnf \{}
\DoxyCodeLine{466         \textcolor{keyword}{struct }gsm0808\_cell\_id cell\_identifier;}
\DoxyCodeLine{467 }
\DoxyCodeLine{468         \textcolor{keywordtype}{bool} talker\_identity\_present;}
\DoxyCodeLine{469         \textcolor{keyword}{struct }gsm0808\_talker\_identity talker\_identity;}
\DoxyCodeLine{470 }
\DoxyCodeLine{471         \textcolor{comment}{/* mandatory! */}}
\DoxyCodeLine{472         \textcolor{keyword}{struct }gsm0808\_layer\_3\_information l3;}
\DoxyCodeLine{473 \};}
\DoxyCodeLine{474 \textcolor{keyword}{struct }msgb *gsm0808\_create\_uplink\_request\_cnf(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_uplink\_request\_cnf *params);}
\DoxyCodeLine{475 }
\DoxyCodeLine{477 \textcolor{keyword}{struct }gsm0808\_uplink\_app\_data \{}
\DoxyCodeLine{478         \textcolor{keyword}{struct }gsm0808\_cell\_id cell\_identifier;}
\DoxyCodeLine{479         \textcolor{keyword}{struct }gsm0808\_layer\_3\_information l3;}
\DoxyCodeLine{480         \textcolor{keywordtype}{bool} bt\_ind;}
\DoxyCodeLine{481 \};}
\DoxyCodeLine{482 \textcolor{keyword}{struct }msgb *gsm0808\_create\_uplink\_app\_data(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_uplink\_app\_data *params);}
\DoxyCodeLine{483 }
\DoxyCodeLine{485 \textcolor{keyword}{struct }gsm0808\_uplink\_release\_ind \{}
\DoxyCodeLine{486         \textcolor{keyword}{enum} gsm0808\_cause cause;}
\DoxyCodeLine{487 }
\DoxyCodeLine{488         \textcolor{keywordtype}{bool} talker\_priority\_present;}
\DoxyCodeLine{489         \textcolor{keyword}{enum} gsm0808\_talker\_priority talker\_priority;}
\DoxyCodeLine{490 \};}
\DoxyCodeLine{491 \textcolor{keyword}{struct }msgb *gsm0808\_create\_uplink\_release\_ind(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_uplink\_release\_ind *params);}
\DoxyCodeLine{492 }
\DoxyCodeLine{494 \textcolor{keyword}{struct }gsm0808\_uplink\_reject\_cmd \{}
\DoxyCodeLine{495         \textcolor{keyword}{enum} gsm0808\_cause cause;}
\DoxyCodeLine{496 }
\DoxyCodeLine{497         \textcolor{keywordtype}{bool} current\_talker\_priority\_present;}
\DoxyCodeLine{498         \textcolor{keyword}{enum} gsm0808\_talker\_priority current\_talker\_priority;}
\DoxyCodeLine{499         \textcolor{keywordtype}{bool} rejected\_talker\_priority\_present;}
\DoxyCodeLine{500         \textcolor{keyword}{enum} gsm0808\_talker\_priority rejected\_talker\_priority;}
\DoxyCodeLine{501 }
\DoxyCodeLine{502         \textcolor{keywordtype}{bool} talker\_identity\_present;}
\DoxyCodeLine{503         \textcolor{keyword}{struct }gsm0808\_talker\_identity talker\_identity;}
\DoxyCodeLine{504 \};}
\DoxyCodeLine{505 \textcolor{keyword}{struct }msgb *gsm0808\_create\_uplink\_reject\_cmd(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_uplink\_reject\_cmd *params);}
\DoxyCodeLine{506 }
\DoxyCodeLine{508 \textcolor{keyword}{struct }msgb *gsm0808\_create\_uplink\_release\_cmd(\textcolor{keyword}{const} \textcolor{keyword}{enum} gsm0808\_cause cause);}
\DoxyCodeLine{509 }
\DoxyCodeLine{511 \textcolor{keyword}{struct }gsm0808\_uplink\_seized\_cmd \{}
\DoxyCodeLine{512         \textcolor{keyword}{enum} gsm0808\_cause cause;}
\DoxyCodeLine{513 }
\DoxyCodeLine{514         \textcolor{keywordtype}{bool} talker\_priority\_present;}
\DoxyCodeLine{515         \textcolor{keyword}{enum} gsm0808\_talker\_priority talker\_priority;}
\DoxyCodeLine{516 }
\DoxyCodeLine{517         \textcolor{keywordtype}{bool} emerg\_set\_ind\_present;}
\DoxyCodeLine{518 }
\DoxyCodeLine{519         \textcolor{keywordtype}{bool} talker\_identity\_present;}
\DoxyCodeLine{520         \textcolor{keyword}{struct }gsm0808\_talker\_identity talker\_identity;}
\DoxyCodeLine{521 \};}
\DoxyCodeLine{522 \textcolor{keyword}{struct }msgb *gsm0808\_create\_uplink\_seized\_cmd(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_uplink\_seized\_cmd *params);}
\DoxyCodeLine{523 }
\DoxyCodeLine{525 \textcolor{keyword}{struct }msgb *gsm0808\_create\_vgcs\_additional\_info(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_talker\_identity *ti);}
\DoxyCodeLine{526 }
\DoxyCodeLine{528 \textcolor{keyword}{struct }gsm0808\_vgcs\_vbs\_area\_cell\_info \{}
\DoxyCodeLine{529         \textcolor{keyword}{struct }gsm0808\_cell\_id\_list\_segment cils;}
\DoxyCodeLine{530 }
\DoxyCodeLine{531         \textcolor{keywordtype}{bool} ass\_req\_present;}
\DoxyCodeLine{532         \textcolor{keyword}{enum} gsm0808\_assignment\_requirement ass\_req;}
\DoxyCodeLine{533 \};}
\DoxyCodeLine{534 \textcolor{keyword}{struct }msgb *gsm0808\_create\_vgcs\_vbs\_area\_cell\_info(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_vgcs\_vbs\_area\_cell\_info *params);}
\DoxyCodeLine{535 }
\DoxyCodeLine{537 \textcolor{keyword}{struct }gsm0808\_vgcs\_vbs\_assign\_stat \{}
\DoxyCodeLine{538         \textcolor{comment}{/* established cells */}}
\DoxyCodeLine{539         \textcolor{keywordtype}{bool} cils\_est\_present;}
\DoxyCodeLine{540         \textcolor{keyword}{struct }gsm0808\_cell\_id\_list\_segment cils\_est;}
\DoxyCodeLine{541 }
\DoxyCodeLine{542         \textcolor{comment}{/* cells to be established */}}
\DoxyCodeLine{543         \textcolor{keywordtype}{bool} cils\_tbe\_present;}
\DoxyCodeLine{544         \textcolor{keyword}{struct }gsm0808\_cell\_id\_list\_segment cils\_tbe;}
\DoxyCodeLine{545 }
\DoxyCodeLine{546         \textcolor{comment}{/* released cells -\/ no user present */}}
\DoxyCodeLine{547         \textcolor{keywordtype}{bool} cils\_rel\_present;}
\DoxyCodeLine{548         \textcolor{keyword}{struct }gsm0808\_cell\_id\_list\_segment cils\_rel;}
\DoxyCodeLine{549 }
\DoxyCodeLine{550         \textcolor{comment}{/* not established cells -\/ no establishment possible */}}
\DoxyCodeLine{551         \textcolor{keywordtype}{bool} cils\_ne\_present;}
\DoxyCodeLine{552         \textcolor{keyword}{struct }gsm0808\_cell\_id\_list\_segment cils\_ne;}
\DoxyCodeLine{553 }
\DoxyCodeLine{554         \textcolor{keywordtype}{bool} cell\_status\_present;}
\DoxyCodeLine{555         \textcolor{keyword}{enum} gsm0808\_vgcs\_vbs\_cell\_status cell\_status;}
\DoxyCodeLine{556 \};}
\DoxyCodeLine{557 \textcolor{keyword}{struct }msgb *gsm0808\_create\_vgcs\_vbs\_assign\_stat(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_vgcs\_vbs\_assign\_stat *params);}
\DoxyCodeLine{558 }
\DoxyCodeLine{560 \textcolor{keyword}{struct }msgb *gsm0808\_create\_vgcs\_sms(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_sms\_to\_vgcs *sms);}
\DoxyCodeLine{561 }
\DoxyCodeLine{563 \textcolor{keyword}{struct }gsm0808\_notification\_data \{}
\DoxyCodeLine{564         \textcolor{keyword}{struct }gsm0808\_application\_data app\_data;}
\DoxyCodeLine{565         \textcolor{keyword}{struct }gsm0808\_data\_identity data\_ident;}
\DoxyCodeLine{566 }
\DoxyCodeLine{567         \textcolor{keywordtype}{bool} msisdn\_present;}
\DoxyCodeLine{568         \textcolor{keywordtype}{char} msisdn[MSISDN\_MAXLEN + 1];}
\DoxyCodeLine{569 \};}
\DoxyCodeLine{570 \textcolor{keyword}{struct }msgb *gsm0808\_create\_notification\_data(\textcolor{keyword}{const} \textcolor{keyword}{struct} gsm0808\_notification\_data *parms);}
\DoxyCodeLine{571 }
\DoxyCodeLine{572 \textcolor{keyword}{struct }msgb *gsm0808\_create\_dtap(\textcolor{keyword}{struct} msgb *msg, uint8\_t link\_id);}
\DoxyCodeLine{573 \textcolor{keywordtype}{void} gsm0808\_prepend\_dtap\_header(\textcolor{keyword}{struct} msgb *msg, uint8\_t link\_id);}
\DoxyCodeLine{574 }
\DoxyCodeLine{575 \textcolor{keyword}{const} \textcolor{keyword}{struct }tlv\_definition *gsm0808\_att\_tlvdef(\textcolor{keywordtype}{void});}
\DoxyCodeLine{576 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }tlv\_definition gsm0808\_old\_bss\_to\_new\_bss\_info\_att\_tlvdef;}
\DoxyCodeLine{577 }
\DoxyCodeLine{579 \textcolor{preprocessor}{\#define osmo\_bssap\_tlv\_parse(dec, buf, len) tlv\_parse(dec, gsm0808\_att\_tlvdef(), buf, len, 0, 0)}}
\DoxyCodeLine{581 \textcolor{preprocessor}{\#define osmo\_bssap\_tlv\_parse2(dec, dec\_multiples, buf, len) \(\backslash\)}}
\DoxyCodeLine{582 \textcolor{preprocessor}{        tlv\_parse2(dec, dec\_multiples, gsm0808\_att\_tlvdef(), buf, len, 0, 0)}}
\DoxyCodeLine{583 }
\DoxyCodeLine{584 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm0808\_bssmap\_name(uint8\_t msg\_type);}
\DoxyCodeLine{585 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm0808\_bssap\_name(uint8\_t msg\_type);}
\DoxyCodeLine{586 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm0808\_cause\_name(\textcolor{keyword}{enum} gsm0808\_cause cause);}
\DoxyCodeLine{587 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm0808\_cause\_class\_name(\textcolor{keyword}{enum} gsm0808\_cause\_class \textcolor{keyword}{class});}
\DoxyCodeLine{588 }
\DoxyCodeLine{591 \textcolor{keyword}{enum} gsm0808\_cause gsm0808\_get\_cause(\textcolor{keyword}{const} \textcolor{keyword}{struct} tlv\_parsed *tp);}
\DoxyCodeLine{592 }
\DoxyCodeLine{593 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm0808\_diagnostics\_octet\_location\_str(uint8\_t pointer);}
\DoxyCodeLine{594 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm0808\_diagnostics\_bit\_location\_str(uint8\_t bit\_pointer);}
\DoxyCodeLine{595 }
\DoxyCodeLine{596 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm0808\_lcls\_config\_names[];}
\DoxyCodeLine{597 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm0808\_lcls\_control\_names[];}
\DoxyCodeLine{598 \textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keyword}{struct }value\_string gsm0808\_lcls\_status\_names[];}
\DoxyCodeLine{599 }
\DoxyCodeLine{600 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm0808\_lcls\_config\_name(\textcolor{keyword}{enum} gsm0808\_lcls\_config val) \{}
\DoxyCodeLine{601         \textcolor{keywordflow}{return} get\_value\_string(gsm0808\_lcls\_config\_names, val);}
\DoxyCodeLine{602 \}}
\DoxyCodeLine{603 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm0808\_lcls\_control\_name(\textcolor{keyword}{enum} gsm0808\_lcls\_control val) \{}
\DoxyCodeLine{604         \textcolor{keywordflow}{return} get\_value\_string(gsm0808\_lcls\_control\_names, val);}
\DoxyCodeLine{605 \}}
\DoxyCodeLine{606 \textcolor{keyword}{static} \textcolor{keyword}{inline} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *gsm0808\_lcls\_status\_name(\textcolor{keyword}{enum} gsm0808\_lcls\_status val) \{}
\DoxyCodeLine{607         \textcolor{keywordflow}{return} get\_value\_string(gsm0808\_lcls\_status\_names, val);}
\DoxyCodeLine{608 \}}
\DoxyCodeLine{609 }

\end{DoxyCode}
