\doxysection{gsm\+\_\+23\+\_\+032.\+h}
\label{gsm__23__032_8h_source}\index{include/osmocom/gsm/protocol/gsm\_23\_032.h@{include/osmocom/gsm/protocol/gsm\_23\_032.h}}
\textbf{ Go to the documentation of this file.}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 }
\DoxyCodeLine{5 \textcolor{comment}{/*}}
\DoxyCodeLine{6 \textcolor{comment}{ * (C) 2020 by sysmocom -\/ s.f.m.c. GmbH <info@sysmocom.de>}}
\DoxyCodeLine{7 \textcolor{comment}{ *}}
\DoxyCodeLine{8 \textcolor{comment}{ * All Rights Reserved}}
\DoxyCodeLine{9 \textcolor{comment}{ *}}
\DoxyCodeLine{10 \textcolor{comment}{ * Author: Neels Hofmeyr <neels@hofmeyr.de>}}
\DoxyCodeLine{11 \textcolor{comment}{ *}}
\DoxyCodeLine{12 \textcolor{comment}{ * This program is free software; you can redistribute it and/or modify}}
\DoxyCodeLine{13 \textcolor{comment}{ * it under the terms of the GNU Affero General Public License as published by}}
\DoxyCodeLine{14 \textcolor{comment}{ * the Free Software Foundation; either version 3 of the License, or}}
\DoxyCodeLine{15 \textcolor{comment}{ * (at your option) any later version.}}
\DoxyCodeLine{16 \textcolor{comment}{ *}}
\DoxyCodeLine{17 \textcolor{comment}{ * This program is distributed in the hope that it will be useful,}}
\DoxyCodeLine{18 \textcolor{comment}{ * but WITHOUT ANY WARRANTY; without even the implied warranty of}}
\DoxyCodeLine{19 \textcolor{comment}{ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the}}
\DoxyCodeLine{20 \textcolor{comment}{ * GNU Affero General Public License for more details.}}
\DoxyCodeLine{21 \textcolor{comment}{ *}}
\DoxyCodeLine{22 \textcolor{comment}{ * You should have received a copy of the GNU Affero General Public License}}
\DoxyCodeLine{23 \textcolor{comment}{ * along with this program.  If not, see <http://www.gnu.org/licenses/>.}}
\DoxyCodeLine{24 \textcolor{comment}{ *}}
\DoxyCodeLine{25 \textcolor{comment}{ */}}
\DoxyCodeLine{26 }
\DoxyCodeLine{27 \textcolor{preprocessor}{\#pragma once}}
\DoxyCodeLine{28 }
\DoxyCodeLine{29 \textcolor{preprocessor}{\#include <stdint.h>}}
\DoxyCodeLine{30 \textcolor{preprocessor}{\#include <osmocom/core/endian.h>}}
\DoxyCodeLine{31 }
\DoxyCodeLine{32 \textcolor{keyword}{enum} gad\_type \{}
\DoxyCodeLine{34         GAD\_TYPE\_ELL\_POINT = 0,}
\DoxyCodeLine{36         GAD\_TYPE\_ELL\_POINT\_UNC\_CIRCLE = 1,}
\DoxyCodeLine{38         GAD\_TYPE\_ELL\_POINT\_UNC\_ELLIPSE = 3,}
\DoxyCodeLine{39         GAD\_TYPE\_POLYGON = 5,}
\DoxyCodeLine{41         GAD\_TYPE\_ELL\_POINT\_ALT = 8,}
\DoxyCodeLine{43         GAD\_TYPE\_ELL\_POINT\_ALT\_UNC\_ELL = 9,}
\DoxyCodeLine{45         GAD\_TYPE\_ELL\_ARC = 10,}
\DoxyCodeLine{47         GAD\_TYPE\_HA\_ELL\_POINT\_UNC\_ELLIPSE = 11,}
\DoxyCodeLine{49         GAD\_TYPE\_HA\_ELL\_POINT\_ALT\_UNC\_ELL = 12,}
\DoxyCodeLine{50 \};}
\DoxyCodeLine{51 }
\DoxyCodeLine{52 \textcolor{keyword}{struct }gad\_raw\_head \{}
\DoxyCodeLine{53 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{54         uint8\_t spare:4,}
\DoxyCodeLine{55                 type:4;}
\DoxyCodeLine{56 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{57 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{58         uint8\_t type:4, spare:4;}
\DoxyCodeLine{59 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{60 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{61 }
\DoxyCodeLine{62 \textcolor{keyword}{struct }gad\_raw\_ell\_point \{}
\DoxyCodeLine{63         \textcolor{keyword}{struct }gad\_raw\_head h; }
\DoxyCodeLine{64         uint8\_t lat[3];}
\DoxyCodeLine{65         uint8\_t lon[3];}
\DoxyCodeLine{66 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{67 }
\DoxyCodeLine{68 \textcolor{keyword}{struct }gad\_raw\_ell\_point\_unc\_circle \{}
\DoxyCodeLine{69 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{70         \textcolor{keyword}{struct }gad\_raw\_head h; }
\DoxyCodeLine{71         uint8\_t lat[3];}
\DoxyCodeLine{72         uint8\_t lon[3];}
\DoxyCodeLine{73         uint8\_t unc:7,}
\DoxyCodeLine{74                 spare2:1;}
\DoxyCodeLine{75 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{76 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{77         \textcolor{keyword}{struct }gad\_raw\_head h;}
\DoxyCodeLine{78         uint8\_t lat[3];}
\DoxyCodeLine{79         uint8\_t lon[3];}
\DoxyCodeLine{80         uint8\_t spare2:1, unc:7;}
\DoxyCodeLine{81 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{82 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{83 }
\DoxyCodeLine{84 \textcolor{keyword}{struct }gad\_raw\_ell\_point\_unc\_ellipse \{}
\DoxyCodeLine{85 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{86         \textcolor{keyword}{struct }gad\_raw\_head h; }
\DoxyCodeLine{87         uint8\_t lat[3];}
\DoxyCodeLine{88         uint8\_t lon[3];}
\DoxyCodeLine{89         uint8\_t unc\_semi\_major:7,}
\DoxyCodeLine{90                 spare1:1;}
\DoxyCodeLine{91         uint8\_t unc\_semi\_minor:7,}
\DoxyCodeLine{92                 spare2:1;}
\DoxyCodeLine{93         uint8\_t major\_ori;}
\DoxyCodeLine{94         uint8\_t confidence:7,}
\DoxyCodeLine{95                 spare3:1;}
\DoxyCodeLine{96 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{97 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{98         \textcolor{keyword}{struct }gad\_raw\_head h;}
\DoxyCodeLine{99         uint8\_t lat[3];}
\DoxyCodeLine{100         uint8\_t lon[3];}
\DoxyCodeLine{101         uint8\_t spare1:1, unc\_semi\_major:7;}
\DoxyCodeLine{102         uint8\_t spare2:1, unc\_semi\_minor:7;}
\DoxyCodeLine{103         uint8\_t major\_ori;}
\DoxyCodeLine{104         uint8\_t spare3:1, confidence:7;}
\DoxyCodeLine{105 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{106 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{107 }
\DoxyCodeLine{108 \textcolor{keyword}{struct }gad\_raw\_polygon \{}
\DoxyCodeLine{109         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{110 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{111                 uint8\_t num\_points:4;}
\DoxyCodeLine{112                 uint8\_t type:4; }
\DoxyCodeLine{113 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{114 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{115                 uint8\_t type:4, num\_points:4;}
\DoxyCodeLine{116 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{117         \} h;}
\DoxyCodeLine{118         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{119                 uint8\_t lat[3];}
\DoxyCodeLine{120                 uint8\_t lon[3];}
\DoxyCodeLine{121         \} point[15];}
\DoxyCodeLine{122 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{123 }
\DoxyCodeLine{124 \textcolor{keyword}{struct }gad\_raw\_ell\_point\_alt \{}
\DoxyCodeLine{125         \textcolor{keyword}{struct }gad\_raw\_head h; }
\DoxyCodeLine{126         uint8\_t lat[3];}
\DoxyCodeLine{127         uint8\_t lon[3];}
\DoxyCodeLine{128         uint8\_t alt[2];}
\DoxyCodeLine{129 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{130 }
\DoxyCodeLine{131 \textcolor{keyword}{struct }gad\_raw\_ell\_point\_alt\_unc\_ell \{}
\DoxyCodeLine{132 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{133         \textcolor{keyword}{struct }gad\_raw\_head h; }
\DoxyCodeLine{134         uint8\_t lat[3];}
\DoxyCodeLine{135         uint8\_t lon[3];}
\DoxyCodeLine{136         uint8\_t alt[2];}
\DoxyCodeLine{137         uint8\_t unc\_semi\_major:7,}
\DoxyCodeLine{138                 spare1:1;}
\DoxyCodeLine{139         uint8\_t unc\_semi\_minor:7,}
\DoxyCodeLine{140                 spare2:1;}
\DoxyCodeLine{141         uint8\_t major\_ori;}
\DoxyCodeLine{142         uint8\_t unc\_alt:7,}
\DoxyCodeLine{143                 spare3:1;}
\DoxyCodeLine{144         uint8\_t confidence:7,}
\DoxyCodeLine{145                 spare4:1;}
\DoxyCodeLine{146 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{147 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{148         \textcolor{keyword}{struct }gad\_raw\_head h;}
\DoxyCodeLine{149         uint8\_t lat[3];}
\DoxyCodeLine{150         uint8\_t lon[3];}
\DoxyCodeLine{151         uint8\_t alt[2];}
\DoxyCodeLine{152         uint8\_t spare1:1, unc\_semi\_major:7;}
\DoxyCodeLine{153         uint8\_t spare2:1, unc\_semi\_minor:7;}
\DoxyCodeLine{154         uint8\_t major\_ori;}
\DoxyCodeLine{155         uint8\_t spare3:1, unc\_alt:7;}
\DoxyCodeLine{156         uint8\_t spare4:1, confidence:7;}
\DoxyCodeLine{157 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{158 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{159 }
\DoxyCodeLine{160 \textcolor{keyword}{struct }gad\_raw\_ell\_arc \{}
\DoxyCodeLine{161 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{162         \textcolor{keyword}{struct }gad\_raw\_head h; }
\DoxyCodeLine{163         uint8\_t lat[3];}
\DoxyCodeLine{164         uint8\_t lon[3];}
\DoxyCodeLine{165         uint8\_t inner\_r[2];}
\DoxyCodeLine{166         uint8\_t unc\_r:7,}
\DoxyCodeLine{167                 spare1:1;}
\DoxyCodeLine{168         uint8\_t ofs\_angle;}
\DoxyCodeLine{169         uint8\_t incl\_angle;}
\DoxyCodeLine{170         uint8\_t confidence:7,}
\DoxyCodeLine{171                 spare2:1;}
\DoxyCodeLine{172 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{173 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{174         \textcolor{keyword}{struct }gad\_raw\_head h;}
\DoxyCodeLine{175         uint8\_t lat[3];}
\DoxyCodeLine{176         uint8\_t lon[3];}
\DoxyCodeLine{177         uint8\_t inner\_r[2];}
\DoxyCodeLine{178         uint8\_t spare1:1, unc\_r:7;}
\DoxyCodeLine{179         uint8\_t ofs\_angle;}
\DoxyCodeLine{180         uint8\_t incl\_angle;}
\DoxyCodeLine{181         uint8\_t spare2:1, confidence:7;}
\DoxyCodeLine{182 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{183 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{184 }
\DoxyCodeLine{185 \textcolor{keyword}{struct }gad\_raw\_ha\_ell\_point\_unc\_ell \{}
\DoxyCodeLine{186 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{187         \textcolor{keyword}{struct }gad\_raw\_head h; }
\DoxyCodeLine{188         uint8\_t lat[4];}
\DoxyCodeLine{189         uint8\_t lon[4];}
\DoxyCodeLine{190         uint8\_t alt[3];}
\DoxyCodeLine{191         uint8\_t unc\_semi\_major;}
\DoxyCodeLine{192         uint8\_t unc\_semi\_minor;}
\DoxyCodeLine{193         uint8\_t major\_ori;}
\DoxyCodeLine{194         uint8\_t confidence:7,}
\DoxyCodeLine{195                 spare1:1;}
\DoxyCodeLine{196 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{197 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{198         \textcolor{keyword}{struct }gad\_raw\_head h;}
\DoxyCodeLine{199         uint8\_t lat[4];}
\DoxyCodeLine{200         uint8\_t lon[4];}
\DoxyCodeLine{201         uint8\_t alt[3];}
\DoxyCodeLine{202         uint8\_t unc\_semi\_major;}
\DoxyCodeLine{203         uint8\_t unc\_semi\_minor;}
\DoxyCodeLine{204         uint8\_t major\_ori;}
\DoxyCodeLine{205         uint8\_t spare1:1, confidence:7;}
\DoxyCodeLine{206 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{207 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{208 }
\DoxyCodeLine{209 \textcolor{keyword}{struct }gad\_raw\_ha\_ell\_point\_alt\_unc\_ell \{}
\DoxyCodeLine{210 \textcolor{preprocessor}{\#if OSMO\_IS\_LITTLE\_ENDIAN}}
\DoxyCodeLine{211         \textcolor{keyword}{struct }gad\_raw\_head h; }
\DoxyCodeLine{212         uint8\_t lat[4];}
\DoxyCodeLine{213         uint8\_t lon[4];}
\DoxyCodeLine{214         uint8\_t alt[3];}
\DoxyCodeLine{215         uint8\_t unc\_semi\_major;}
\DoxyCodeLine{216         uint8\_t unc\_semi\_minor;}
\DoxyCodeLine{217         uint8\_t major\_ori;}
\DoxyCodeLine{218         uint8\_t h\_confidence:7,}
\DoxyCodeLine{219                 spare1:1;}
\DoxyCodeLine{220         uint8\_t unc\_alt;}
\DoxyCodeLine{221         uint8\_t v\_confidence:7,}
\DoxyCodeLine{222                 spare2:1;}
\DoxyCodeLine{223 \textcolor{preprocessor}{\#elif OSMO\_IS\_BIG\_ENDIAN}}
\DoxyCodeLine{224 \textcolor{comment}{/* auto-\/generated from the little endian part above (libosmocore/contrib/struct\_endianness.py) */}}
\DoxyCodeLine{225         \textcolor{keyword}{struct }gad\_raw\_head h;}
\DoxyCodeLine{226         uint8\_t lat[4];}
\DoxyCodeLine{227         uint8\_t lon[4];}
\DoxyCodeLine{228         uint8\_t alt[3];}
\DoxyCodeLine{229         uint8\_t unc\_semi\_major;}
\DoxyCodeLine{230         uint8\_t unc\_semi\_minor;}
\DoxyCodeLine{231         uint8\_t major\_ori;}
\DoxyCodeLine{232         uint8\_t spare1:1, h\_confidence:7;}
\DoxyCodeLine{233         uint8\_t unc\_alt;}
\DoxyCodeLine{234         uint8\_t spare2:1, v\_confidence:7;}
\DoxyCodeLine{235 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{236 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{237 }
\DoxyCodeLine{239 \textcolor{keyword}{union }gad\_raw \{}
\DoxyCodeLine{240         \textcolor{keyword}{struct }gad\_raw\_head h;}
\DoxyCodeLine{241         \textcolor{keyword}{struct }gad\_raw\_ell\_point ell\_point;}
\DoxyCodeLine{242         \textcolor{keyword}{struct }gad\_raw\_ell\_point\_unc\_circle ell\_point\_unc\_circle;}
\DoxyCodeLine{243         \textcolor{keyword}{struct }gad\_raw\_ell\_point\_unc\_ellipse ell\_point\_unc\_ellipse;}
\DoxyCodeLine{244         \textcolor{keyword}{struct }gad\_raw\_polygon polygon;}
\DoxyCodeLine{245         \textcolor{keyword}{struct }gad\_raw\_ell\_point\_alt ell\_point\_alt;}
\DoxyCodeLine{246         \textcolor{keyword}{struct }gad\_raw\_ell\_point\_alt\_unc\_ell ell\_point\_alt\_unc\_ell;}
\DoxyCodeLine{247         \textcolor{keyword}{struct }gad\_raw\_ell\_arc ell\_arc;}
\DoxyCodeLine{248         \textcolor{keyword}{struct }gad\_raw\_ha\_ell\_point\_unc\_ell ha\_ell\_point\_unc\_ell;}
\DoxyCodeLine{249         \textcolor{keyword}{struct }gad\_raw\_ha\_ell\_point\_alt\_unc\_ell ha\_ell\_point\_alt\_unc\_ell;}
\DoxyCodeLine{250 \} \_\_attribute\_\_ ((packed));}
\DoxyCodeLine{251 }

\end{DoxyCode}
