| Index: content/browser/geolocation/libgps_wrapper_linux.h
|
| ===================================================================
|
| --- content/browser/geolocation/libgps_wrapper_linux.h (revision 76230)
|
| +++ content/browser/geolocation/libgps_wrapper_linux.h (working copy)
|
| @@ -1,112 +0,0 @@
|
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Defines a wrapper around the C libgps API (gps.h). Similar to the libgpsmm.h
|
| -// API provided by that package, but adds:
|
| -// - shared object dynamic loading
|
| -// - support for (and abstraction from) different libgps.so versions
|
| -// - configurable for testing
|
| -// - more convenient error handling.
|
| -
|
| -#ifndef CONTENT_BROWSER_GEOLOCATION_LIBGPS_WRAPPER_LINUX_H_
|
| -#define CONTENT_BROWSER_GEOLOCATION_LIBGPS_WRAPPER_LINUX_H_
|
| -#pragma once
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/scoped_ptr.h"
|
| -#include "base/time.h"
|
| -
|
| -struct Geoposition;
|
| -class LibGpsLibraryWrapper;
|
| -
|
| -class LibGps {
|
| - public:
|
| - virtual ~LibGps();
|
| - // Attempts to dynamically load the libgps.so library, and creates and
|
| - // appropriate LibGps instance for the version loaded. Returns NULL on
|
| - // failure.
|
| - static LibGps* New();
|
| -
|
| - bool Start();
|
| - void Stop();
|
| - bool Poll();
|
| - bool GetPosition(Geoposition* position);
|
| -
|
| - protected:
|
| - // Takes ownership of |dl_wrapper|.
|
| - explicit LibGps(LibGpsLibraryWrapper* dl_wrapper);
|
| -
|
| - LibGpsLibraryWrapper& library() {
|
| - return *library_;
|
| - }
|
| - // Called be start Start after successful |gps_open| to setup streaming.
|
| - virtual bool StartStreaming() = 0;
|
| - virtual bool DataWaiting() = 0;
|
| - // Returns false if there is not fix available.
|
| - virtual bool GetPositionIfFixed(Geoposition* position) = 0;
|
| -
|
| - private:
|
| - // Factory functions to create instances of LibGps using the corresponding
|
| - // libgps API versions (v2.38 => libgps.so.17, v2.94 => libgps.so.19).
|
| - // See LibGps::New() for the public API to this.
|
| - // Takes ownership of |dl_wrapper|.
|
| - static LibGps* NewV238(LibGpsLibraryWrapper* dl_wrapper);
|
| - static LibGps* NewV294(LibGpsLibraryWrapper* dl_wrapper);
|
| -
|
| - scoped_ptr<LibGpsLibraryWrapper> library_;
|
| - std::string last_error_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(LibGps);
|
| -};
|
| -
|
| -struct gps_data_t;
|
| -
|
| -// Wraps the low-level shared object, binding C++ member functions onto the
|
| -// underlying C functions obtained from the library.
|
| -class LibGpsLibraryWrapper {
|
| - public:
|
| - typedef gps_data_t* (*gps_open_fn)(const char*, const char*);
|
| - typedef int (*gps_close_fn)(gps_data_t*);
|
| - typedef int (*gps_poll_fn)(gps_data_t*);
|
| - // v2.34 only
|
| - typedef int (*gps_query_fn)(gps_data_t*, const char*, ...);
|
| - // v2.90+
|
| - typedef int (*gps_stream_fn)(gps_data_t*, unsigned int, void*);
|
| - typedef bool (*gps_waiting_fn)(gps_data_t*);
|
| -
|
| - LibGpsLibraryWrapper(void* dl_handle,
|
| - gps_open_fn gps_open,
|
| - gps_close_fn gps_close,
|
| - gps_poll_fn gps_poll,
|
| - gps_query_fn gps_query,
|
| - gps_stream_fn gps_stream,
|
| - gps_waiting_fn gps_waiting);
|
| - ~LibGpsLibraryWrapper();
|
| -
|
| - // Analogs of gps_xxx methods in gps.h
|
| - bool open(const char* host, const char* port);
|
| - void close();
|
| - int poll();
|
| - int query(const char* fmt);
|
| - int stream(int flags);
|
| - bool waiting();
|
| - const gps_data_t& data() const;
|
| - bool is_open() const;
|
| -
|
| - private:
|
| - void* dl_handle_;
|
| - gps_open_fn gps_open_;
|
| - gps_close_fn gps_close_;
|
| - gps_poll_fn gps_poll_;
|
| - gps_query_fn gps_query_;
|
| - gps_stream_fn gps_stream_;
|
| - gps_waiting_fn gps_waiting_;
|
| -
|
| - gps_data_t* gps_data_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(LibGpsLibraryWrapper);
|
| -};
|
| -
|
| -#endif // CONTENT_BROWSER_GEOLOCATION_LIBGPS_WRAPPER_LINUX_H_
|
|
|