164efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar/* Copyright (c) 2011-2014,2016, The Linux Foundation. All rights reserved.
2e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *
3e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * Redistribution and use in source and binary forms, with or without
4e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * modification, are permitted provided that the following conditions are
5e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * met:
6e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *     * Redistributions of source code must retain the above copyright
7e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       notice, this list of conditions and the following disclaimer.
8e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *     * Redistributions in binary form must reproduce the above
9e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       copyright notice, this list of conditions and the following
10e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       disclaimer in the documentation and/or other materials provided
11e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       with the distribution.
12e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *     * Neither the name of The Linux Foundation, nor the names of its
13e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       contributors may be used to endorse or promote products derived
14e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       from this software without specific prior written permission.
15e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *
16e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *
28e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti */
29e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifndef LOC_API_BASE_H
30e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_API_BASE_H
31e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
32e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <stddef.h>
33e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <ctype.h>
34e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <gps_extended.h>
35e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <MsgTask.h>
36e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <log_util.h>
37e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
38e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletinamespace loc_core {
39e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleticlass ContextBase;
40e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
41e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint hexcode(char *hexstring, int string_size,
42e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            const char *data, int data_size);
43e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiint decodeAddress(char *addr_string, int string_size,
44e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                  const char *data, int data_size);
45e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
46e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define MAX_ADAPTERS          10
47e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
48e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define TO_ALL_ADAPTERS(adapters, call)                                \
49e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    for (int i = 0; i < MAX_ADAPTERS && NULL != (adapters)[i]; i++) {  \
50e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        call;                                                          \
51e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
52e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
53e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define TO_1ST_HANDLING_ADAPTER(adapters, call)                              \
54e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    for (int i = 0; i <MAX_ADAPTERS && NULL != (adapters)[i] && !(call); i++);
55e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
56e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletienum xtra_version_check {
57e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    DISABLED,
58e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    AUTO,
59e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    XTRA2,
60e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    XTRA3
61e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
62e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
63e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleticlass LocAdapterBase;
64e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocSsrMsg;
65e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletistruct LocOpenMsg;
66e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
67e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleticlass LocApiProxyBase {
68e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletipublic:
69e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline LocApiProxyBase() {}
70e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual ~LocApiProxyBase() {}
71e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual void* getSibling2() { return NULL; }
72e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
73e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
74e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleticlass LocApiBase {
75e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    friend struct LocSsrMsg;
76e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    //LocOpenMsg calls open() which makes it necessary to declare
77e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    //it as a friend
78e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    friend struct LocOpenMsg;
79e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    friend class ContextBase;
80e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const MsgTask* mMsgTask;
81e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    ContextBase *mContext;
82e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocAdapterBase* mLocAdapters[MAX_ADAPTERS];
83e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    uint64_t mSupportedMsg;
84e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
85e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiprotected:
86e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
87e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        open(LOC_API_ADAPTER_EVENT_MASK_T mask);
88e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
89e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        close();
90e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_API_ADAPTER_EVENT_MASK_T getEvtMask();
91e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LOC_API_ADAPTER_EVENT_MASK_T mMask;
92e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    LocApiBase(const MsgTask* msgTask,
93e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti               LOC_API_ADAPTER_EVENT_MASK_T excludedMask,
94e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti               ContextBase* context = NULL);
95e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline virtual ~LocApiBase() { close(); }
96e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    bool isInSession();
97e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    const LOC_API_ADAPTER_EVENT_MASK_T mExcludedMask;
98e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
99e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletipublic:
100e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline void sendMsg(const LocMsg* msg) const {
101e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mMsgTask->sendMsg(msg);
102e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
103e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
104e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void addAdapter(LocAdapterBase* adapter);
105e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void removeAdapter(LocAdapterBase* adapter);
106e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
107e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // upward calls
108e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void handleEngineUpEvent();
109e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void handleEngineDownEvent();
110e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void reportPosition(UlpLocation &location,
111e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        GpsLocationExtended &locationExtended,
112e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        void* locationExt,
113e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        enum loc_sess_status status,
114e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                        LocPosTechMask loc_technology_mask =
115e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  LOC_POS_TECH_MASK_DEFAULT);
11664efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    void reportSv(GnssSvStatus &svStatus,
117e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                  GpsLocationExtended &locationExtended,
118e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                  void* svExt);
119e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void reportStatus(GpsStatusValue status);
120e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void reportNmea(const char* nmea, int length);
121e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void reportXtraServer(const char* url1, const char* url2,
122e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                          const char* url3, const int maxlength);
123e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void requestXtraData();
124e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void requestTime();
125e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void requestLocation();
126e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void requestATL(int connHandle, AGpsType agps_type);
127e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void releaseATL(int connHandle);
128e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void requestSuplES(int connHandle);
129e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void reportDataCallOpened();
130e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void reportDataCallClosed();
131e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void requestNiNotify(GpsNiNotification &notify, const void* data);
132e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void saveSupportedMsgList(uint64_t supportedMsgList);
13364efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    void reportGnssMeasurementData(GnssData &gnssMeasurementData);
134e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
135e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // downward calls
136e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // All below functions are to be defined by adapter specific modules:
137e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    // RPC, QMI, etc.  The default implementation is empty.
138e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
139e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual void* getSibling();
140e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual LocApiProxyBase* getLocApiProxy();
141e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
142e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        startFix(const LocPosMode& posMode);
143e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
144e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        stopFix();
145e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
146e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        deleteAidingData(GpsAidingData f);
147e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
148e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        enableData(int enable);
149e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
150e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        setAPN(char* apn, int len);
151e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
152e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        injectPosition(double latitude, double longitude, float accuracy);
153e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
154e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        setTime(GpsUtcTime time, int64_t timeReference, int uncertainty);
155e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
156e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        setXtraData(char* data, int length);
157e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
158e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        requestXtraServer();
159e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
160e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        atlOpenStatus(int handle, int is_succ, char* apn, AGpsBearerType bear, AGpsType agpsType);
161e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
162e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        atlCloseStatus(int handle, int is_succ);
163e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
164e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        setPositionMode(const LocPosMode& posMode);
165e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
166e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        setServer(const char* url, int len);
167e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
168e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        setServer(unsigned int ip, int port,
169e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                  LocServerType type);
170e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
171e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        informNiResponse(GpsUserResponseType userResponse, const void* passThroughData);
172e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
173e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        setSUPLVersion(uint32_t version);
174e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
175e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        setLPPConfig(uint32_t profile);
176e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
177e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        setSensorControlConfig(int sensorUsage, int sensorProvider);
178e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
179e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        setSensorProperties(bool gyroBiasVarianceRandomWalk_valid,
180e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            float gyroBiasVarianceRandomWalk,
181e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            bool accelBiasVarianceRandomWalk_valid,
182e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            float accelBiasVarianceRandomWalk,
183e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            bool angleBiasVarianceRandomWalk_valid,
184e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            float angleBiasVarianceRandomWalk,
185e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            bool rateBiasVarianceRandomWalk_valid,
186e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            float rateBiasVarianceRandomWalk,
187e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            bool velocityBiasVarianceRandomWalk_valid,
188e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                            float velocityBiasVarianceRandomWalk);
189e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
190e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        setSensorPerfControlConfig(int controlMode,
191e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               int accelSamplesPerBatch,
192e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               int accelBatchesPerSec,
193e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               int gyroSamplesPerBatch,
194e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               int gyroBatchesPerSec,
195e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               int accelSamplesPerBatchHigh,
196e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               int accelBatchesPerSecHigh,
197e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               int gyroSamplesPerBatchHigh,
198e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               int gyroBatchesPerSecHigh,
199e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               int algorithmConfig);
200e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
201e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        setExtPowerConfig(int isBatteryCharging);
202e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
203e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        setAGLONASSProtocol(unsigned long aGlonassProtocol);
204e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
205e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        getWwanZppFix(GpsLocation & zppLoc);
206e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
207e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        getBestAvailableZppFix(GpsLocation & zppLoc);
208e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err
209e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        getBestAvailableZppFix(GpsLocation & zppLoc, LocPosTechMask & tech_mask);
210e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual int initDataServiceClient();
211e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual int openAndStartDataCall();
212e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual void stopDataCall();
213e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual void closeDataCall();
214e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual void installAGpsCert(const DerEncodedCertificate* pData,
215e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                 size_t length,
216e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                 uint32_t slotBitMask);
2179e34f5b67a41416858c95e17ab0124fcc12b37ccAjit Kumar    inline virtual void setInSession(bool /* inSession */) {}
218e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    inline bool isMessageSupported (LocCheckingMessagesID msgID) const {
2199e34f5b67a41416858c95e17ab0124fcc12b37ccAjit Kumar        if (msgID > LOC_API_ADAPTER_MESSAGE_MAX) {
220e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            return false;
221e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        } else {
222e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            uint32_t messageChecker = 1 << msgID;
223e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            return (messageChecker & mSupportedMsg) == messageChecker;
224e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }
225e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
226e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    void updateEvtMask();
227e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
228e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    /*Values for lock
229e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      1 = Do not lock any position sessions
230e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      2 = Lock MI position sessions
231e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      3 = Lock MT position sessions
232e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      4 = Lock all position sessions
233e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti     */
234e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual int setGpsLock(LOC_GPS_LOCK_MASK lock);
235e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    /*
236e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      Returns
237e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      Current value of GPS Lock on success
238e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      -1 on failure
239e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti     */
240e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual int getGpsLock(void);
241e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
242e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual enum loc_api_adapter_err setXtraVersionCheck(enum xtra_version_check check);
243e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
244e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    /*
245e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      Update gps reporting events
246e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti     */
247e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual int updateRegistrationMask(LOC_API_ADAPTER_EVENT_MASK_T event,
248e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                       loc_registration_mask_status isEnabled);
249e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    /*
250e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti      Check if the modem support the service
251e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti     */
252e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    virtual bool gnssConstellationConfig();
253e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti};
254e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
255e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletitypedef LocApiBase* (getLocApi_t)(const MsgTask* msgTask,
256e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  LOC_API_ADAPTER_EVENT_MASK_T exMask,
257e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                  ContextBase *context);
258e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
259e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} // namespace loc_core
260e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
261e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif //LOC_API_BASE_H
262