1e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/* Copyright (c) 2011-2015, 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_CONTEXT_BASE__ 30e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define __LOC_CONTEXT_BASE__ 31e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 32e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <stdbool.h> 33e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <ctype.h> 34e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <MsgTask.h> 35e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <LocApiBase.h> 36e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <LBSProxyBase.h> 37e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 38e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletinamespace loc_core { 39e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 40e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleticlass LocAdapterBase; 41e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 42e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleticlass ContextBase { 43e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti static LBSProxyBase* getLBSProxy(const char* libName); 44e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LocApiBase* createLocApi(LOC_API_ADAPTER_EVENT_MASK_T excludedMask); 45e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiprotected: 46e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti const LBSProxyBase* mLBSProxy; 47e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti const MsgTask* mMsgTask; 48e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LocApiBase* mLocApi; 49e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LocApiProxyBase *mLocApiProxy; 50e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletipublic: 51e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti ContextBase(const MsgTask* msgTask, 52e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti LOC_API_ADAPTER_EVENT_MASK_T exMask, 53e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti const char* libName); 54e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline virtual ~ContextBase() { delete mLocApi; delete mLBSProxy; } 55e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 56e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline const MsgTask* getMsgTask() { return mMsgTask; } 57e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline LocApiBase* getLocApi() { return mLocApi; } 58e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline LocApiProxyBase* getLocApiProxy() { return mLocApiProxy; } 59e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline bool hasAgpsExtendedCapabilities() { return mLBSProxy->hasAgpsExtendedCapabilities(); } 60e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline bool hasCPIExtendedCapabilities() { return mLBSProxy->hasCPIExtendedCapabilities(); } 61e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline void modemPowerVote(bool power) const { return mLBSProxy->modemPowerVote(power); } 62e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline void requestUlp(LocAdapterBase* adapter, 63e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti unsigned long capabilities) { 64e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti mLBSProxy->requestUlp(adapter, capabilities); 65e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 66e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline IzatDevId_t getIzatDevId() const { 67e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti return mLBSProxy->getIzatDevId(); 68e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti } 69e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti inline void sendMsg(const LocMsg *msg) { getMsgTask()->sendMsg(msg); } 70e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}; 71e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 72e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti} // namespace loc_core 73e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti 74e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif //__LOC_CONTEXT_BASE__ 75