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#define LOG_NDDEBUG 0
30e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOG_TAG "LocSvc_LocAdapterBase"
31e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
32e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <dlfcn.h>
33e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <LocAdapterBase.h>
34e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <loc_target.h>
35e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <log_util.h>
36e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <LocAdapterProxyBase.h>
37e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
38e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletinamespace loc_core {
39e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
40e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// This is the top level class, so the constructor will
41e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// always gets called. Here we prepare for the default.
42e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// But if getLocApi(targetEnumType target) is overriden,
43e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti// the right locApi should get created.
44e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiLocAdapterBase::LocAdapterBase(const LOC_API_ADAPTER_EVENT_MASK_T mask,
45e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                               ContextBase* context, LocAdapterProxyBase *adapterProxyBase) :
46e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mEvtMask(mask), mContext(context),
47e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mLocApi(context->getLocApi()), mLocAdapterProxyBase(adapterProxyBase),
48e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mMsgTask(context->getMsgTask())
49e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
50e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    mLocApi->addAdapter(this);
51e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
52e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
53e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocAdapterBase::handleEngineUpEvent()
54e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
55e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (mLocAdapterProxyBase) {
56e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mLocAdapterProxyBase->handleEngineUpEvent();
57e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
58e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
59e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
60e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocAdapterBase::handleEngineDownEvent()
61e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{
62e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (mLocAdapterProxyBase) {
63e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        mLocAdapterProxyBase->handleEngineDownEvent();
64e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
65e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
66e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
67e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocAdapterBase::
68e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    reportPosition(UlpLocation &location,
69e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                   GpsLocationExtended &locationExtended,
70e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                   void* locationExt,
71e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                   enum loc_sess_status status,
72e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                   LocPosTechMask loc_technology_mask) {
73e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    if (mLocAdapterProxyBase == NULL ||
74e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        !mLocAdapterProxyBase->reportPosition(location,
75e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                              locationExtended,
76e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                              status,
77e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                                              loc_technology_mask)) {
78e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        DEFAULT_IMPL()
79e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    }
80e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
81e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
82e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocAdapterBase::
8364efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    reportSv(GnssSvStatus &svStatus,
84e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             GpsLocationExtended &locationExtended,
85e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti             void* svExt)
86e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL()
87e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
88e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
89e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocAdapterBase::
90e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    reportStatus(GpsStatusValue status)
91e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL()
92e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
93e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
94e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocAdapterBase::
95e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    reportNmea(const char* nmea, int length)
96e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL()
97e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
98e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletibool LocAdapterBase::
99e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    reportXtraServer(const char* url1, const char* url2,
100e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti                     const char* url3, const int maxlength)
101e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL(false)
102e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
103e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletibool LocAdapterBase::
104e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    requestXtraData()
105e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL(false)
106e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
107e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletibool LocAdapterBase::
108e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    requestTime()
109e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL(false)
110e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
111e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletibool LocAdapterBase::
112e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    requestLocation()
113e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL(false)
114e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
115e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletibool LocAdapterBase::
116e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    requestATL(int connHandle, AGpsType agps_type)
117e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL(false)
118e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
119e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletibool LocAdapterBase::
120e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    releaseATL(int connHandle)
121e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL(false)
122e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
123e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletibool LocAdapterBase::
124e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    requestSuplES(int connHandle)
125e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL(false)
126e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
127e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletibool LocAdapterBase::
128e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    reportDataCallOpened()
129e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL(false)
130e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
131e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletibool LocAdapterBase::
132e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    reportDataCallClosed()
133e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL(false)
134e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
135e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletibool LocAdapterBase::
136e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    requestNiNotify(GpsNiNotification &notify, const void* data)
137e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL(false)
138e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
139e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletivoid LocAdapterBase::
14064efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar    reportGnssMeasurementData(GnssData &gnssMeasurementData)
141e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore PasupuletiDEFAULT_IMPL()
142e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} // namespace loc_core
143