"Initial commit to Gerrit"
[profile/ivi/gpsd.git] / test_gpsmm.cpp
1 /*
2  * Copyright (C) 2005 Alfredo Pironti
3  *
4  * This software is distributed under a BSD-style license. See the
5  * file "COPYING" in the top-level directory of the distribution for details.
6  *
7  */
8
9 /* This simple program shows the basic functionality of the C++ wrapper class */
10 #include <iostream>
11 #include <string>
12 #include <unistd.h>
13
14 #include "libgpsmm.h"
15
16 using namespace std;
17
18 #ifdef SAMPLE_USAGE
19 static void callback(struct gps_data_t* p, char* buf, size_t len);
20 #endif
21
22 int main(void) {
23         gpsmm gps_rec;
24         struct gps_data_t *resp;
25
26         resp=gps_rec.open();
27         if (resp==NULL) {
28                 cout << "Error opening gpsd\n";
29                 return (1);
30         }
31
32 #ifdef SAMPLE_USAGE
33         cout << "Going to set the callback...\n";
34         if (gps_rec.set_callback(callback)!=0 ) {
35                 cout << "Error setting callback.\n";
36                 return (1);
37         }
38
39         cout << "Callback setted, sleeping...\n";
40         sleep(10);
41         cout << "Exited from sleep...\n";
42 #endif
43
44 #ifdef SAMPLE_USAGE
45         if (gps_rec.del_callback()!=0) {
46                 cout << "Error deleting callback\n";
47                 return (1);
48         }
49         cout << "Sleeping again, to make sure the callback is disabled\n";
50         sleep(4);
51 #endif
52
53         cout << "Exiting\n";
54         return 0;
55 }
56
57 #ifdef SAMPLE_USAGE
58 static void callback(struct gps_data_t* p, char* buf, size_t len) {
59         if (p==NULL) {
60                 cout << "Error polling gpsd\n";
61                 return;
62         }
63         cout << "Online:\t" << p->online << "\n";
64         cout << "Status:\t" << p->status << "\n";
65         cout << "Mode:\t" << p->fix.mode << "\n";
66         if (p->fix.mode>=MODE_2D) {
67                 if (p->set & LATLON_SET) {
68                         cout << "LatLon changed\n";
69                 }
70                 else {
71                         cout << "LatLon unchanged\n";
72                 }
73                 cout << "Longitude:\t" << p->fix.longitude <<"\n";
74                 cout << "Latitude:\t" << p->fix.latitude <<"\n";
75         }
76 }
77 #endif