dom/system/gonk/GonkGPSGeolocationProvider.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* Copyright 2012 Mozilla Foundation and Mozilla contributors
     3  *
     4  * Licensed under the Apache License, Version 2.0 (the "License");
     5  * you may not use this file except in compliance with the License.
     6  * You may obtain a copy of the License at
     7  *
     8  *     http://www.apache.org/licenses/LICENSE-2.0
     9  *
    10  * Unless required by applicable law or agreed to in writing, software
    11  * distributed under the License is distributed on an "AS IS" BASIS,
    12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  * See the License for the specific language governing permissions and
    14  * limitations under the License.
    15  */
    17 #ifndef GonkGPSGeolocationProvider_h
    18 #define GonkGPSGeolocationProvider_h
    20 #include <hardware/gps.h> // for GpsInterface
    21 #include "nsCOMPtr.h"
    22 #include "nsIGeolocationProvider.h"
    23 #include "nsIObserver.h"
    24 #ifdef MOZ_B2G_RIL
    25 #include "nsIRadioInterfaceLayer.h"
    26 #endif
    27 #include "nsISettingsService.h"
    29 class nsIThread;
    31 #define GONK_GPS_GEOLOCATION_PROVIDER_CID \
    32 { 0x48525ec5, 0x5a7f, 0x490a, { 0x92, 0x77, 0xba, 0x66, 0xe0, 0xd2, 0x2c, 0x8b } }
    34 #define GONK_GPS_GEOLOCATION_PROVIDER_CONTRACTID \
    35 "@mozilla.org/gonk-gps-geolocation-provider;1"
    37 class GonkGPSGeolocationProvider : public nsIGeolocationProvider
    38                                  , public nsIObserver
    39                                  , public nsISettingsServiceCallback
    40 {
    41 public:
    42   NS_DECL_THREADSAFE_ISUPPORTS
    43   NS_DECL_NSIGEOLOCATIONPROVIDER
    44   NS_DECL_NSIOBSERVER
    45   NS_DECL_NSISETTINGSSERVICECALLBACK
    47   static already_AddRefed<GonkGPSGeolocationProvider> GetSingleton();
    49 private:
    51   /* Client should use GetSingleton() to get the provider instance. */
    52   GonkGPSGeolocationProvider();
    53   GonkGPSGeolocationProvider(const GonkGPSGeolocationProvider &);
    54   GonkGPSGeolocationProvider & operator = (const GonkGPSGeolocationProvider &);
    55   virtual ~GonkGPSGeolocationProvider();
    57   static void LocationCallback(GpsLocation* location);
    58   static void StatusCallback(GpsStatus* status);
    59   static void SvStatusCallback(GpsSvStatus* sv_info);
    60   static void NmeaCallback(GpsUtcTime timestamp, const char* nmea, int length);
    61   static void SetCapabilitiesCallback(uint32_t capabilities);
    62   static void AcquireWakelockCallback();
    63   static void ReleaseWakelockCallback();
    64   static pthread_t CreateThreadCallback(const char* name, void (*start)(void*), void* arg);
    65   static void RequestUtcTimeCallback();
    66 #ifdef MOZ_B2G_RIL
    67   static void AGPSStatusCallback(AGpsStatus* status);
    68   static void AGPSRILSetIDCallback(uint32_t flags);
    69   static void AGPSRILRefLocCallback(uint32_t flags);
    70 #endif
    72   static GpsCallbacks mCallbacks;
    73 #ifdef MOZ_B2G_RIL
    74   static AGpsCallbacks mAGPSCallbacks;
    75   static AGpsRilCallbacks mAGPSRILCallbacks;
    76 #endif
    78   void Init();
    79   void StartGPS();
    80   void ShutdownGPS();
    81   void InjectLocation(double latitude, double longitude, float accuracy);
    82   void RequestSettingValue(char* aKey);
    83 #ifdef MOZ_B2G_RIL
    84   void SetupAGPS();
    85   int32_t GetDataConnectionState();
    86   void SetAGpsDataConn(nsAString& aApn);
    87   void RequestDataConnection();
    88   void ReleaseDataConnection();
    89   void RequestSetID(uint32_t flags);
    90   void SetReferenceLocation();
    91 #endif
    93   const GpsInterface* GetGPSInterface();
    95   static GonkGPSGeolocationProvider* sSingleton;
    97   bool mStarted;
    99   bool mSupportsScheduling;
   100 #ifdef MOZ_B2G_RIL
   101   bool mSupportsMSB;
   102   bool mSupportsMSA;
   103 #endif
   104   bool mSupportsSingleShot;
   105   bool mSupportsTimeInjection;
   107   const GpsInterface* mGpsInterface;
   108 #ifdef MOZ_B2G_RIL
   109   const AGpsInterface* mAGpsInterface;
   110   const AGpsRilInterface* mAGpsRilInterface;
   111   nsCOMPtr<nsIRadioInterface> mRadioInterface;
   112 #endif
   113   nsCOMPtr<nsIGeolocationUpdate> mLocationCallback;
   114   PRTime mLastGPSDerivedLocationTime;
   115   nsCOMPtr<nsIThread> mInitThread;
   116   nsCOMPtr<nsIGeolocationProvider> mNetworkLocationProvider;
   118   class NetworkLocationUpdate : public nsIGeolocationUpdate
   119   {
   120     public:
   121       NS_DECL_ISUPPORTS
   122       NS_DECL_NSIGEOLOCATIONUPDATE
   124       NetworkLocationUpdate() {}
   126     private:
   127       virtual ~NetworkLocationUpdate() {}
   128   };
   129 };
   131 #endif /* GonkGPSGeolocationProvider_h */

mercurial