PUD: include nmealib v0.6.7
[olsrd.git] / lib / pud / nmealib / samples / parse_file / main.c
1 /*
2  * This file is part of nmealib.
3  *
4  * Copyright (c) 2008 Timur Sinitsyn
5  * Copyright (c) 2011 Ferry Huberts
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #include <nmea/nmea.h>
22
23 #include <stdio.h>
24 #include <string.h>
25 #include <unistd.h>
26
27
28 void trace(const char *str, int str_size)
29 {
30     printf("Trace: ");
31     write(1, str, str_size);
32     printf("\n");
33 }
34 void error(const char *str, int str_size)
35 {
36     printf("Error: ");
37     write(1, str, str_size);
38     printf("\n");
39 }
40
41 int main()
42 {
43     static const char * filename = "../../samples/parse_file/gpslog.txt";
44     nmeaINFO info;
45     nmeaPARSER parser;
46     FILE *file;
47     char buff[2048];
48     int size, it = 0;
49     nmeaPOS dpos;
50
51     file = fopen(filename, "rb");
52
53     if(!file) {
54         printf("Could not open file %s\n", filename);
55         return -1;
56     }
57
58     nmea_property()->trace_func = &trace;
59     nmea_property()->error_func = &error;
60
61     nmea_zero_INFO(&info);
62     nmea_parser_init(&parser);
63
64     /*
65     while(1)
66     {
67     */
68
69     while(!feof(file))
70     {
71         size = (int)fread(&buff[0], 1, 100, file);
72
73         nmea_parse(&parser, &buff[0], size, &info);
74
75         nmea_info2pos(&info, &dpos);
76
77         printf(
78             "%03d, Lat: %f, Lon: %f, Sig: %d, Fix: %d\n",
79             it++, dpos.lat, dpos.lon, info.sig, info.fix
80             );
81     }
82
83     fseek(file, 0, SEEK_SET);
84
85     /*
86     }
87     */
88
89     nmea_parser_destroy(&parser);
90     fclose(file);
91
92     return 0;
93 }