cc47180dc1cef9fbc44edf1c25300221012cc282
[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 static void trace(const char *str, int str_size)
29 {
30     printf("Trace: ");
31     write(1, str, str_size);
32     printf("\n");
33 }
34 static 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(int argc __attribute__((unused)), char *argv[] __attribute__((unused))) {
42     static const char * filename = "../../samples/parse_file/gpslog.txt";
43     nmeaINFO info;
44     nmeaPARSER parser;
45     FILE *file;
46     char buff[2048];
47     int size, it = 0;
48     nmeaPOS dpos;
49
50     file = fopen(filename, "rb");
51
52     if(!file) {
53         printf("Could not open file %s\n", filename);
54         return -1;
55     }
56
57     nmea_property()->trace_func = &trace;
58     nmea_property()->error_func = &error;
59
60     nmea_zero_INFO(&info);
61     nmea_parser_init(&parser);
62
63     /*
64     while(1)
65     {
66     */
67
68     while(!feof(file))
69     {
70         size = (int)fread(&buff[0], 1, 100, file);
71
72         nmea_parse(&parser, &buff[0], size, &info);
73
74         nmea_info2pos(&info, &dpos);
75
76         printf(
77             "%03d, Lat: %f, Lon: %f, Sig: %d, Fix: %d\n",
78             it++, dpos.lat, dpos.lon, info.sig, info.fix
79             );
80     }
81
82     fseek(file, 0, SEEK_SET);
83
84     /*
85     }
86     */
87
88     nmea_parser_destroy(&parser);
89     fclose(file);
90
91     return 0;
92 }