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_ADAPTER_BASE_H 30e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_API_ADAPTER_BASE_H 31e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 32e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <gps_extended.h> 33e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <UlpProxyBase.h> 34e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <ContextBase.h> 35e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 36e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletinamespace loc_core { 37e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 38e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleticlass LocAdapterProxyBase; 39e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 40e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleticlass LocAdapterBase { 41e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiprotected: 42e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_API_ADAPTER_EVENT_MASK_T mEvtMask; 43e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ContextBase* mContext; 44e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LocApiBase* mLocApi; 45e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LocAdapterProxyBase* mLocAdapterProxyBase; 46e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti const MsgTask* mMsgTask; 47e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 48e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline LocAdapterBase(const MsgTask* msgTask) : 49e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti mEvtMask(0), mContext(NULL), mLocApi(NULL), 50e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti mLocAdapterProxyBase(NULL), mMsgTask(msgTask) {} 51e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletipublic: 52e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline virtual ~LocAdapterBase() { mLocApi->removeAdapter(this); } 53e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LocAdapterBase(const LOC_API_ADAPTER_EVENT_MASK_T mask, 54e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ContextBase* context, LocAdapterProxyBase *adapterProxyBase = NULL); 55e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline LOC_API_ADAPTER_EVENT_MASK_T 56e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti checkMask(LOC_API_ADAPTER_EVENT_MASK_T mask) const { 57e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return mEvtMask & mask; 58e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 59e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 60e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline LOC_API_ADAPTER_EVENT_MASK_T getEvtMask() const { 61e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return mEvtMask; 62e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 63e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 64e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline void sendMsg(const LocMsg* msg) const { 65e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti mMsgTask->sendMsg(msg); 66e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 67e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 68e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline void sendMsg(const LocMsg* msg) { 69e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti mMsgTask->sendMsg(msg); 70e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 71e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 72e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline void updateEvtMask(LOC_API_ADAPTER_EVENT_MASK_T event, 73e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti loc_registration_mask_status isEnabled) 74e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti { 75e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti mEvtMask = 76e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti isEnabled == LOC_REGISTRATION_MASK_ENABLED ? (mEvtMask|event):(mEvtMask&~event); 77e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 78e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti mLocApi->updateEvtMask(); 79e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 80e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 81e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti // This will be overridden by the individual adapters 82e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti // if necessary. 839e34f5b67a41416858c95e17ab0124fcc12b37ccAjit Kumar inline virtual void setUlpProxy(UlpProxyBase* /* ulp */) {} 84e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual void handleEngineUpEvent(); 85e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual void handleEngineDownEvent(); 869e34f5b67a41416858c95e17ab0124fcc12b37ccAjit Kumar inline virtual void setPositionModeInt(LocPosMode& /* posMode */) {} 87e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual void startFixInt() {} 88e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual void stopFixInt() {} 89e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual void getZppInt() {} 90e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual void reportPosition(UlpLocation &location, 91e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti GpsLocationExtended &locationExtended, 92e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti void* locationExt, 93e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti enum loc_sess_status status, 94e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LocPosTechMask loc_technology_mask); 9564efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar virtual void reportSv(GnssSvStatus &svStatus, 96e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti GpsLocationExtended &locationExtended, 97e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti void* svExt); 98e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual void reportStatus(GpsStatusValue status); 99e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual void reportNmea(const char* nmea, int length); 100e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual bool reportXtraServer(const char* url1, const char* url2, 101e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti const char* url3, const int maxlength); 102e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual bool requestXtraData(); 103e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual bool requestTime(); 104e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual bool requestLocation(); 105e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual bool requestATL(int connHandle, AGpsType agps_type); 106e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual bool releaseATL(int connHandle); 107e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual bool requestSuplES(int connHandle); 108e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual bool reportDataCallOpened(); 109e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual bool reportDataCallClosed(); 110e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti virtual bool requestNiNotify(GpsNiNotification ¬ify, 111e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti const void* data); 112e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline virtual bool isInSession() { return false; } 113e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ContextBase* getContext() const { return mContext; } 11464efbd901d2142e100b2f16f4879baedb7de6efeAjit Kumar virtual void reportGnssMeasurementData(GnssData &gnssMeasurementData); 115e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}; 116e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 117e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} // namespace loc_core 118e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 119e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif //LOC_API_ADAPTER_BASE_H 120