]> git.mxchange.org Git - flightgear.git/blob - src/Server/buftest.cxx
Various mods to allow querying for nearest airport (with optional ability to
[flightgear.git] / src / Server / buftest.cxx
1 #include "message.hxx"\r
2 \r
3 void dumpmessage(string msg)\r
4 {\r
5         FGMPSMessageBuf buf;\r
6 \r
7         buf.set(msg);\r
8         buf.ofs(0);\r
9 \r
10         bool done=false;\r
11         while (!done) {\r
12                 unsigned char           mid8, uval8;\r
13                 unsigned int            mid16, uval16;\r
14                 unsigned long           uval32;\r
15                 unsigned long long      uval64;\r
16                 char                    val8;\r
17                 int                     val16;\r
18                 long                    val32;\r
19                 long long               val64;\r
20                 float                   valf;\r
21                 double                  vald;\r
22                 string                  vals;\r
23                 printf("dump: ");\r
24                 for (int i=0; i<16; i++) printf("%02x ", buf.peek(i));\r
25                 printf("\n");\r
26                 try {\r
27                         int tag = buf.get(true);\r
28                         switch (tag) {\r
29                         case fgmps_som8:\r
30                                 mid8 = *(unsigned char *)buf.read1();\r
31                                 printf("Start Message ID = %02x\n", mid8);\r
32                                 break;\r
33                         case fgmps_som16:\r
34                                 mid16 = *(unsigned int *)buf.read2();\r
35                                 printf("Start Message ID = %04x\n", mid16);\r
36                                 break;\r
37                         case fgmps_eom:\r
38                                 printf("End Of Message\n", tag);\r
39                                 done = true;\r
40                                 break;\r
41                         case fgmps_uchar:\r
42                                 uval8 = *(unsigned char *)buf.read1();\r
43                                 printf("uchar = %02x\n", uval8);\r
44                                 break;\r
45                         case fgmps_uint:\r
46                                 uval16 = *(unsigned int *)buf.read2();\r
47                                 printf("uint = %04x\n", uval16);\r
48                                 break;\r
49                         case fgmps_ulong:\r
50                                 uval32 = *(unsigned long *)buf.read4();\r
51                                 printf("ulong = %08lx\n", uval32);\r
52                                 break;\r
53                         case fgmps_ulonglong:\r
54                                 uval64 = *(unsigned long long *)buf.read8();\r
55                                 printf("ulonglong = %16llx\n", uval64);\r
56                                 break;\r
57                         case fgmps_char:\r
58                                 val8 = *(char *)buf.read1();\r
59                                 printf("char = %02x\n", val8);\r
60                                 break;\r
61                         case fgmps_int:\r
62                                 val16 = *(int *)buf.read2();\r
63                                 printf("int = %04x\n", val16);\r
64                                 break;\r
65                         case fgmps_long:\r
66                                 val32 = *(long *)buf.read4();\r
67                                 printf("long = %08lx\n", val32);\r
68                                 break;\r
69                         case fgmps_longlong:\r
70                                 val64 = *(long long *)buf.read8();\r
71                                 printf("longlong = %16llx\n", val64);\r
72                                 break;\r
73                         case fgmps_float:\r
74                                 valf = buf.readf();\r
75                                 printf("float = %f\n", valf);\r
76                                 break;\r
77                         case fgmps_double:\r
78                                 vald = buf.readd();\r
79                                 printf("double = %g\n", vald);\r
80                                 break;\r
81                         case fgmps_string:\r
82                                 uval8 = buf.get();\r
83                                 vals = buf.reads(uval8);\r
84                                 printf("string = %s\n", vals.c_str());\r
85                                 break;\r
86                         default:\r
87                                 printf("Unknown prefix = %02x\n", tag);\r
88                                 done = true;\r
89                                 break;\r
90                         }\r
91                 } catch (FGMPSDataException e) {\r
92                         printf("Data Exception\n");\r
93                         done = true;\r
94                 }\r
95         }\r
96 }\r
97 \r
98 main(int argc, char **argv)\r
99 {\r
100         FGMPSMessageBuf buf;\r
101 \r
102         unsigned char           uval8;\r
103         unsigned int            uval16;\r
104         unsigned long           uval32;\r
105         unsigned long long      uval64;\r
106         char                    val8;\r
107         int                     val16;\r
108         long                    val32;\r
109         long long               val64;\r
110         float                   valf;\r
111         double                  vald;\r
112         string                  vals;\r
113 \r
114         buf.clr();\r
115         buf.put(fgmps_som8, true);\r
116         buf.put(1);\r
117         for (int i=0; i<256; i++) {\r
118                 buf.put(fgmps_uchar, true);\r
119                 buf.put(i);\r
120         }\r
121         buf.put(fgmps_eom, true);\r
122         dumpmessage(buf.str());\r
123 \r
124         buf.clr();\r
125         buf.put(fgmps_som8, true);      buf.put(1);\r
126 \r
127         uval8  = 251;           buf.put(fgmps_uchar, true);     buf.write1(&uval8);\r
128         uval16 = 34567;         buf.put(fgmps_uint, true);      buf.write2(&uval16);\r
129         uval32 = 1345678901;    buf.put(fgmps_ulong, true);     buf.write4(&uval32);\r
130         //uval64 = 9999999999;  buf.put(fgmps_ulonglong, true); buf.write8(&uval64);\r
131         val8   = -120;          buf.put(fgmps_char, true);      buf.write1(&val8);\r
132         val16  = -17890;        buf.put(fgmps_int, true);       buf.write2(&val16);\r
133         val32  = -1345678901;   buf.put(fgmps_long, true);      buf.write4(&val32);\r
134         //val64  = -9999999999; buf.put(fgmps_longlong, true);  buf.write8(&val64);\r
135         valf   = 2 * 3.14;      buf.put(fgmps_float, true);     buf.writef(valf);\r
136         vald   = 3 * 3.1415927; buf.put(fgmps_double, true);    buf.writed(vald);\r
137         vals   = "hi there";    buf.put(fgmps_string, true);    buf.writes(vals);\r
138         buf.put(fgmps_eom, true);\r
139         dumpmessage(buf.str());\r
140 }\r