Home | History | Annotate | Download | only in core
      1 /* Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
      2  *
      3  * Redistribution and use in source and binary forms, with or without
      4  * modification, are permitted provided that the following conditions are
      5  * met:
      6  *     * Redistributions of source code must retain the above copyright
      7  *       notice, this list of conditions and the following disclaimer.
      8  *     * Redistributions in binary form must reproduce the above
      9  *       copyright notice, this list of conditions and the following
     10  *       disclaimer in the documentation and/or other materials provided
     11  *       with the distribution.
     12  *     * Neither the name of The Linux Foundation, nor the names of its
     13  *       contributors may be used to endorse or promote products derived
     14  *       from this software without specific prior written permission.
     15  *
     16  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
     17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
     19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
     20  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
     23  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     24  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
     25  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
     26  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27  *
     28  */
     29 #ifndef LOC_API_ADAPTER_BASE_H
     30 #define LOC_API_ADAPTER_BASE_H
     31 
     32 #include <gps_extended.h>
     33 #include <UlpProxyBase.h>
     34 #include <ContextBase.h>
     35 
     36 namespace loc_core {
     37 
     38 class LocAdapterBase {
     39 protected:
     40     const LOC_API_ADAPTER_EVENT_MASK_T mEvtMask;
     41     ContextBase* mContext;
     42     LocApiBase* mLocApi;
     43     const MsgTask* mMsgTask;
     44 
     45     inline LocAdapterBase(const MsgTask* msgTask) :
     46         mEvtMask(0), mContext(NULL), mLocApi(NULL), mMsgTask(msgTask) {}
     47 
     48     LocAdapterBase(const LOC_API_ADAPTER_EVENT_MASK_T mask,
     49                    ContextBase* context);
     50     inline virtual ~LocAdapterBase() { mLocApi->removeAdapter(this); }
     51 
     52 public:
     53     inline LOC_API_ADAPTER_EVENT_MASK_T
     54         checkMask(LOC_API_ADAPTER_EVENT_MASK_T mask) const {
     55         return mEvtMask & mask;
     56     }
     57 
     58     inline LOC_API_ADAPTER_EVENT_MASK_T getEvtMask() const {
     59         return mEvtMask;
     60     }
     61 
     62     inline void sendMsg(const LocMsg* msg) const {
     63         mMsgTask->sendMsg(msg);
     64     }
     65 
     66     inline void sendMsg(const LocMsg* msg) {
     67         mMsgTask->sendMsg(msg);
     68     }
     69 
     70     // This will be overridden by the individual adapters
     71     // if necessary.
     72     inline virtual void setUlpProxy(UlpProxyBase* ulp) {}
     73     inline virtual void handleEngineUpEvent() {}
     74     virtual void handleEngineDownEvent();
     75     inline virtual void setPositionModeInt(LocPosMode& posMode) {}
     76     virtual void startFixInt() {}
     77     virtual void stopFixInt() {}
     78     virtual void reportPosition(UlpLocation &location,
     79                                 GpsLocationExtended &locationExtended,
     80                                 void* locationExt,
     81                                 enum loc_sess_status status,
     82                                 LocPosTechMask loc_technology_mask);
     83     virtual void reportSv(GpsSvStatus &svStatus,
     84                           GpsLocationExtended &locationExtended,
     85                           void* svExt);
     86     virtual void reportStatus(GpsStatusValue status);
     87     virtual void reportNmea(const char* nmea, int length);
     88     virtual bool reportXtraServer(const char* url1, const char* url2,
     89                                   const char* url3, const int maxlength);
     90     virtual bool requestXtraData();
     91     virtual bool requestTime();
     92     virtual bool requestLocation();
     93     virtual bool requestATL(int connHandle, AGpsType agps_type);
     94     virtual bool releaseATL(int connHandle);
     95     virtual bool requestSuplES(int connHandle);
     96     virtual bool reportDataCallOpened();
     97     virtual bool reportDataCallClosed();
     98     virtual bool requestNiNotify(GpsNiNotification &notify,
     99                                  const void* data);
    100     inline virtual bool isInSession() { return false; }
    101 };
    102 
    103 } // namespace loc_core
    104 
    105 #endif //LOC_API_ADAPTER_BASE_H
    106