OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Defines a wrapper around the C libgps API (gps.h). Similar to the libgpsmm.h | 5 // Defines a wrapper around the C libgps API (gps.h). Similar to the libgpsmm.h |
6 // API provided by that package, but adds: | 6 // API provided by that package, but adds: |
7 // - shared object dynamic loading | 7 // - shared object dynamic loading |
8 // - support for (and abstraction from) different libgps.so versions | 8 // - support for (and abstraction from) different libgps.so versions |
9 // - configurable for testing | 9 // - configurable for testing |
10 // - more convenient error handling. | 10 // - more convenient error handling. |
11 | 11 |
12 #ifndef CONTENT_BROWSER_GEOLOCATION_LIBGPS_WRAPPER_LINUX_H_ | 12 #ifndef CONTENT_BROWSER_GEOLOCATION_LIBGPS_WRAPPER_LINUX_H_ |
13 #define CONTENT_BROWSER_GEOLOCATION_LIBGPS_WRAPPER_LINUX_H_ | 13 #define CONTENT_BROWSER_GEOLOCATION_LIBGPS_WRAPPER_LINUX_H_ |
14 #pragma once | 14 #pragma once |
15 | 15 |
16 #include <string> | 16 #include <string> |
17 | 17 |
18 #include "base/memory/scoped_ptr.h" | 18 #include "base/memory/scoped_ptr.h" |
19 #include "base/time.h" | 19 #include "base/time.h" |
| 20 #include "content/common/content_export.h" |
20 | 21 |
21 struct Geoposition; | 22 struct Geoposition; |
22 class LibGpsLibraryWrapper; | 23 class LibGpsLibraryWrapper; |
23 | 24 |
24 class LibGps { | 25 class CONTENT_EXPORT LibGps { |
25 public: | 26 public: |
26 virtual ~LibGps(); | 27 virtual ~LibGps(); |
27 // Attempts to dynamically load the libgps.so library, and creates and | 28 // Attempts to dynamically load the libgps.so library, and creates and |
28 // appropriate LibGps instance for the version loaded. Returns NULL on | 29 // appropriate LibGps instance for the version loaded. Returns NULL on |
29 // failure. | 30 // failure. |
30 static LibGps* New(); | 31 static LibGps* New(); |
31 | 32 |
32 bool Start(); | 33 bool Start(); |
33 void Stop(); | 34 void Stop(); |
34 bool Poll(); | 35 bool Poll(); |
(...skipping 23 matching lines...) Expand all Loading... |
58 scoped_ptr<LibGpsLibraryWrapper> library_; | 59 scoped_ptr<LibGpsLibraryWrapper> library_; |
59 std::string last_error_; | 60 std::string last_error_; |
60 | 61 |
61 DISALLOW_COPY_AND_ASSIGN(LibGps); | 62 DISALLOW_COPY_AND_ASSIGN(LibGps); |
62 }; | 63 }; |
63 | 64 |
64 struct gps_data_t; | 65 struct gps_data_t; |
65 | 66 |
66 // Wraps the low-level shared object, binding C++ member functions onto the | 67 // Wraps the low-level shared object, binding C++ member functions onto the |
67 // underlying C functions obtained from the library. | 68 // underlying C functions obtained from the library. |
68 class LibGpsLibraryWrapper { | 69 class CONTENT_EXPORT LibGpsLibraryWrapper { |
69 public: | 70 public: |
70 typedef gps_data_t* (*gps_open_fn)(const char*, const char*); | 71 typedef gps_data_t* (*gps_open_fn)(const char*, const char*); |
71 typedef int (*gps_close_fn)(gps_data_t*); | 72 typedef int (*gps_close_fn)(gps_data_t*); |
72 typedef int (*gps_poll_fn)(gps_data_t*); | 73 typedef int (*gps_poll_fn)(gps_data_t*); |
73 // v2.34 only | 74 // v2.34 only |
74 typedef int (*gps_query_fn)(gps_data_t*, const char*, ...); | 75 typedef int (*gps_query_fn)(gps_data_t*, const char*, ...); |
75 // v2.90+ | 76 // v2.90+ |
76 typedef int (*gps_stream_fn)(gps_data_t*, unsigned int, void*); | 77 typedef int (*gps_stream_fn)(gps_data_t*, unsigned int, void*); |
77 typedef bool (*gps_waiting_fn)(gps_data_t*); | 78 typedef bool (*gps_waiting_fn)(gps_data_t*); |
78 | 79 |
(...skipping 24 matching lines...) Expand all Loading... |
103 gps_query_fn gps_query_; | 104 gps_query_fn gps_query_; |
104 gps_stream_fn gps_stream_; | 105 gps_stream_fn gps_stream_; |
105 gps_waiting_fn gps_waiting_; | 106 gps_waiting_fn gps_waiting_; |
106 | 107 |
107 gps_data_t* gps_data_; | 108 gps_data_t* gps_data_; |
108 | 109 |
109 DISALLOW_COPY_AND_ASSIGN(LibGpsLibraryWrapper); | 110 DISALLOW_COPY_AND_ASSIGN(LibGpsLibraryWrapper); |
110 }; | 111 }; |
111 | 112 |
112 #endif // CONTENT_BROWSER_GEOLOCATION_LIBGPS_WRAPPER_LINUX_H_ | 113 #endif // CONTENT_BROWSER_GEOLOCATION_LIBGPS_WRAPPER_LINUX_H_ |
OLD | NEW |