18c2d3d5afc51d3f35150f748f263870367771b6fEd Tam/* Copyright (c) 2011-2014, The Linux Foundation. All rights reserved. 28c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * 38c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * Redistribution and use in source and binary forms, with or without 48c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * modification, are permitted provided that the following conditions are 58c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * met: 68c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * * Redistributions of source code must retain the above copyright 78c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * notice, this list of conditions and the following disclaimer. 88c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * * Redistributions in binary form must reproduce the above 98c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * copyright notice, this list of conditions and the following 108c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * disclaimer in the documentation and/or other materials provided 118c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * with the distribution. 128c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * * Neither the name of The Linux Foundation, nor the names of its 138c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * contributors may be used to endorse or promote products derived 148c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * from this software without specific prior written permission. 158c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * 168c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 178c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 188c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 198c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 208c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 218c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 228c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 238c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 248c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 258c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 268c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * 288c2d3d5afc51d3f35150f748f263870367771b6fEd Tam */ 298c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#ifndef LOC_API_ENG_ADAPTER_H 308c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#define LOC_API_ENG_ADAPTER_H 318c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 328c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <ctype.h> 338c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <hardware/gps.h> 348c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <loc.h> 358c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <loc_eng_log.h> 368c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <log_util.h> 378c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <LocAdapterBase.h> 388c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <LocDualContext.h> 398c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <UlpProxyBase.h> 408c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <platform_lib_includes.h> 418c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 428c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#define MAX_URL_LEN 256 438c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 448c2d3d5afc51d3f35150f748f263870367771b6fEd Tamusing namespace loc_core; 458c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 468c2d3d5afc51d3f35150f748f263870367771b6fEd Tamclass LocEngAdapter; 478c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 488c2d3d5afc51d3f35150f748f263870367771b6fEd Tamclass LocInternalAdapter : public LocAdapterBase { 498c2d3d5afc51d3f35150f748f263870367771b6fEd Tam LocEngAdapter* mLocEngAdapter; 508c2d3d5afc51d3f35150f748f263870367771b6fEd Tampublic: 518c2d3d5afc51d3f35150f748f263870367771b6fEd Tam LocInternalAdapter(LocEngAdapter* adapter); 528c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 538c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void reportPosition(UlpLocation &location, 548c2d3d5afc51d3f35150f748f263870367771b6fEd Tam GpsLocationExtended &locationExtended, 558c2d3d5afc51d3f35150f748f263870367771b6fEd Tam void* locationExt, 568c2d3d5afc51d3f35150f748f263870367771b6fEd Tam enum loc_sess_status status, 578c2d3d5afc51d3f35150f748f263870367771b6fEd Tam LocPosTechMask loc_technology_mask); 588c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void reportSv(GpsSvStatus &svStatus, 598c2d3d5afc51d3f35150f748f263870367771b6fEd Tam GpsLocationExtended &locationExtended, 608c2d3d5afc51d3f35150f748f263870367771b6fEd Tam void* svExt); 618c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void reportStatus(GpsStatusValue status); 628c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void setPositionModeInt(LocPosMode& posMode); 638c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void startFixInt(); 648c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void stopFixInt(); 658c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void getZppInt(); 668c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void setUlpProxy(UlpProxyBase* ulp); 678c2d3d5afc51d3f35150f748f263870367771b6fEd Tam}; 688c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 698c2d3d5afc51d3f35150f748f263870367771b6fEd Tamtypedef void (*loc_msg_sender)(void* loc_eng_data_p, void* msgp); 708c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 718c2d3d5afc51d3f35150f748f263870367771b6fEd Tamclass LocEngAdapter : public LocAdapterBase { 728c2d3d5afc51d3f35150f748f263870367771b6fEd Tam void* mOwner; 738c2d3d5afc51d3f35150f748f263870367771b6fEd Tam LocInternalAdapter* mInternalAdapter; 748c2d3d5afc51d3f35150f748f263870367771b6fEd Tam UlpProxyBase* mUlp; 758c2d3d5afc51d3f35150f748f263870367771b6fEd Tam LocPosMode mFixCriteria; 768c2d3d5afc51d3f35150f748f263870367771b6fEd Tam bool mNavigating; 778c2d3d5afc51d3f35150f748f263870367771b6fEd Tam // mPowerVote is encoded as 788c2d3d5afc51d3f35150f748f263870367771b6fEd Tam // mPowerVote & 0x20 -- powerVoteRight 798c2d3d5afc51d3f35150f748f263870367771b6fEd Tam // mPowerVote & 0x10 -- power On / Off 808c2d3d5afc51d3f35150f748f263870367771b6fEd Tam unsigned int mPowerVote; 818c2d3d5afc51d3f35150f748f263870367771b6fEd Tam static const unsigned int POWER_VOTE_RIGHT = 0x20; 828c2d3d5afc51d3f35150f748f263870367771b6fEd Tam static const unsigned int POWER_VOTE_VALUE = 0x10; 838c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 848c2d3d5afc51d3f35150f748f263870367771b6fEd Tampublic: 858c2d3d5afc51d3f35150f748f263870367771b6fEd Tam bool mSupportsAgpsRequests; 868c2d3d5afc51d3f35150f748f263870367771b6fEd Tam bool mSupportsPositionInjection; 878c2d3d5afc51d3f35150f748f263870367771b6fEd Tam bool mSupportsTimeInjection; 888c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 898c2d3d5afc51d3f35150f748f263870367771b6fEd Tam LocEngAdapter(LOC_API_ADAPTER_EVENT_MASK_T mask, 908c2d3d5afc51d3f35150f748f263870367771b6fEd Tam void* owner, ContextBase* context, 918c2d3d5afc51d3f35150f748f263870367771b6fEd Tam MsgTask::tCreate tCreator); 928c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual ~LocEngAdapter(); 938c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 948c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void setUlpProxy(UlpProxyBase* ulp); 958c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline void requestUlp(unsigned long capabilities) { 968c2d3d5afc51d3f35150f748f263870367771b6fEd Tam mContext->requestUlp(mInternalAdapter, capabilities); 978c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 988c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline LocInternalAdapter* getInternalAdapter() { return mInternalAdapter; } 998c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline UlpProxyBase* getUlpProxy() { return mUlp; } 1008c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline void* getOwner() { return mOwner; } 1018c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline bool hasAgpsExtendedCapabilities() { 1028c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mContext->hasAgpsExtendedCapabilities(); 1038c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1048c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline bool hasCPIExtendedCapabilities() { 1058c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mContext->hasCPIExtendedCapabilities(); 1068c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1078c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline const MsgTask* getMsgTask() { return mMsgTask; } 1088c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 1098c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1108c2d3d5afc51d3f35150f748f263870367771b6fEd Tam startFix() 1118c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1128c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->startFix(mFixCriteria); 1138c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1148c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1158c2d3d5afc51d3f35150f748f263870367771b6fEd Tam stopFix() 1168c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1178c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->stopFix(); 1188c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1198c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1208c2d3d5afc51d3f35150f748f263870367771b6fEd Tam deleteAidingData(GpsAidingData f) 1218c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1228c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->deleteAidingData(f); 1238c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1248c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1258c2d3d5afc51d3f35150f748f263870367771b6fEd Tam enableData(int enable) 1268c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1278c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->enableData(enable); 1288c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1298c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1308c2d3d5afc51d3f35150f748f263870367771b6fEd Tam setAPN(char* apn, int len) 1318c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1328c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->setAPN(apn, len); 1338c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1348c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1358c2d3d5afc51d3f35150f748f263870367771b6fEd Tam injectPosition(double latitude, double longitude, float accuracy) 1368c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1378c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->injectPosition(latitude, longitude, accuracy); 1388c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1398c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1408c2d3d5afc51d3f35150f748f263870367771b6fEd Tam setXtraData(char* data, int length) 1418c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1428c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->setXtraData(data, length); 1438c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1448c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1458c2d3d5afc51d3f35150f748f263870367771b6fEd Tam requestXtraServer() 1468c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1478c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->requestXtraServer(); 1488c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1498c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1508c2d3d5afc51d3f35150f748f263870367771b6fEd Tam atlOpenStatus(int handle, int is_succ, char* apn, AGpsBearerType bearer, AGpsType agpsType) 1518c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1528c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->atlOpenStatus(handle, is_succ, apn, bearer, agpsType); 1538c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1548c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1558c2d3d5afc51d3f35150f748f263870367771b6fEd Tam atlCloseStatus(int handle, int is_succ) 1568c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1578c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->atlCloseStatus(handle, is_succ); 1588c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1598c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1608c2d3d5afc51d3f35150f748f263870367771b6fEd Tam setPositionMode(const LocPosMode *posMode) 1618c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1628c2d3d5afc51d3f35150f748f263870367771b6fEd Tam if (NULL != posMode) { 1638c2d3d5afc51d3f35150f748f263870367771b6fEd Tam mFixCriteria = *posMode; 1648c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1658c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->setPositionMode(mFixCriteria); 1668c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1678c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1688c2d3d5afc51d3f35150f748f263870367771b6fEd Tam setServer(const char* url, int len) 1698c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1708c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->setServer(url, len); 1718c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1728c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1738c2d3d5afc51d3f35150f748f263870367771b6fEd Tam setServer(unsigned int ip, int port, 1748c2d3d5afc51d3f35150f748f263870367771b6fEd Tam LocServerType type) 1758c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1768c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->setServer(ip, port, type); 1778c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1788c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1798c2d3d5afc51d3f35150f748f263870367771b6fEd Tam informNiResponse(GpsUserResponseType userResponse, const void* passThroughData) 1808c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1818c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->informNiResponse(userResponse, passThroughData); 1828c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1838c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1848c2d3d5afc51d3f35150f748f263870367771b6fEd Tam setSUPLVersion(uint32_t version) 1858c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1868c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->setSUPLVersion(version); 1878c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1888c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1898c2d3d5afc51d3f35150f748f263870367771b6fEd Tam setLPPConfig(uint32_t profile) 1908c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1918c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->setLPPConfig(profile); 1928c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1938c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1948c2d3d5afc51d3f35150f748f263870367771b6fEd Tam setSensorControlConfig(int sensorUsage, int sensorProvider) 1958c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 1968c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->setSensorControlConfig(sensorUsage, sensorProvider); 1978c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 1988c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 1998c2d3d5afc51d3f35150f748f263870367771b6fEd Tam setSensorProperties(bool gyroBiasVarianceRandomWalk_valid, float gyroBiasVarianceRandomWalk, 2008c2d3d5afc51d3f35150f748f263870367771b6fEd Tam bool accelBiasVarianceRandomWalk_valid, float accelBiasVarianceRandomWalk, 2018c2d3d5afc51d3f35150f748f263870367771b6fEd Tam bool angleBiasVarianceRandomWalk_valid, float angleBiasVarianceRandomWalk, 2028c2d3d5afc51d3f35150f748f263870367771b6fEd Tam bool rateBiasVarianceRandomWalk_valid, float rateBiasVarianceRandomWalk, 2038c2d3d5afc51d3f35150f748f263870367771b6fEd Tam bool velocityBiasVarianceRandomWalk_valid, float velocityBiasVarianceRandomWalk) 2048c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 2058c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->setSensorProperties(gyroBiasVarianceRandomWalk_valid, gyroBiasVarianceRandomWalk, 2068c2d3d5afc51d3f35150f748f263870367771b6fEd Tam accelBiasVarianceRandomWalk_valid, accelBiasVarianceRandomWalk, 2078c2d3d5afc51d3f35150f748f263870367771b6fEd Tam angleBiasVarianceRandomWalk_valid, angleBiasVarianceRandomWalk, 2088c2d3d5afc51d3f35150f748f263870367771b6fEd Tam rateBiasVarianceRandomWalk_valid, rateBiasVarianceRandomWalk, 2098c2d3d5afc51d3f35150f748f263870367771b6fEd Tam velocityBiasVarianceRandomWalk_valid, velocityBiasVarianceRandomWalk); 2108c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 2118c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline virtual enum loc_api_adapter_err 2128c2d3d5afc51d3f35150f748f263870367771b6fEd Tam setSensorPerfControlConfig(int controlMode, int accelSamplesPerBatch, int accelBatchesPerSec, 2138c2d3d5afc51d3f35150f748f263870367771b6fEd Tam int gyroSamplesPerBatch, int gyroBatchesPerSec, 2148c2d3d5afc51d3f35150f748f263870367771b6fEd Tam int accelSamplesPerBatchHigh, int accelBatchesPerSecHigh, 2158c2d3d5afc51d3f35150f748f263870367771b6fEd Tam int gyroSamplesPerBatchHigh, int gyroBatchesPerSecHigh, int algorithmConfig) 2168c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 2178c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->setSensorPerfControlConfig(controlMode, accelSamplesPerBatch, accelBatchesPerSec, 2188c2d3d5afc51d3f35150f748f263870367771b6fEd Tam gyroSamplesPerBatch, gyroBatchesPerSec, 2198c2d3d5afc51d3f35150f748f263870367771b6fEd Tam accelSamplesPerBatchHigh, accelBatchesPerSecHigh, 2208c2d3d5afc51d3f35150f748f263870367771b6fEd Tam gyroSamplesPerBatchHigh, gyroBatchesPerSecHigh, 2218c2d3d5afc51d3f35150f748f263870367771b6fEd Tam algorithmConfig); 2228c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 2238c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline virtual enum loc_api_adapter_err 2248c2d3d5afc51d3f35150f748f263870367771b6fEd Tam setExtPowerConfig(int isBatteryCharging) 2258c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 2268c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->setExtPowerConfig(isBatteryCharging); 2278c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 2288c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline virtual enum loc_api_adapter_err 2298c2d3d5afc51d3f35150f748f263870367771b6fEd Tam setAGLONASSProtocol(unsigned long aGlonassProtocol) 2308c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 2318c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->setAGLONASSProtocol(aGlonassProtocol); 2328c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 2338c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline virtual int initDataServiceClient() 2348c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 2358c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->initDataServiceClient(); 2368c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 2378c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline virtual int openAndStartDataCall() 2388c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 2398c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->openAndStartDataCall(); 2408c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 2418c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline virtual void stopDataCall() 2428c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 2438c2d3d5afc51d3f35150f748f263870367771b6fEd Tam mLocApi->stopDataCall(); 2448c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 2458c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline virtual void closeDataCall() 2468c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 2478c2d3d5afc51d3f35150f748f263870367771b6fEd Tam mLocApi->closeDataCall(); 2488c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 2498c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline enum loc_api_adapter_err 2508c2d3d5afc51d3f35150f748f263870367771b6fEd Tam getZpp(GpsLocation &zppLoc, LocPosTechMask &tech_mask) 2518c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 2528c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->getBestAvailableZppFix(zppLoc, tech_mask); 2538c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 2548c2d3d5afc51d3f35150f748f263870367771b6fEd Tam enum loc_api_adapter_err setTime(GpsUtcTime time, 2558c2d3d5afc51d3f35150f748f263870367771b6fEd Tam int64_t timeReference, 2568c2d3d5afc51d3f35150f748f263870367771b6fEd Tam int uncertainty); 2578c2d3d5afc51d3f35150f748f263870367771b6fEd Tam enum loc_api_adapter_err setXtraVersionCheck(int check); 2588c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline virtual void installAGpsCert(const DerEncodedCertificate* pData, 2598c2d3d5afc51d3f35150f748f263870367771b6fEd Tam size_t length, 2608c2d3d5afc51d3f35150f748f263870367771b6fEd Tam uint32_t slotBitMask) 2618c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 2628c2d3d5afc51d3f35150f748f263870367771b6fEd Tam mLocApi->installAGpsCert(pData, length, slotBitMask); 2638c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 2648c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void handleEngineDownEvent(); 2658c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void handleEngineUpEvent(); 2668c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void reportPosition(UlpLocation &location, 2678c2d3d5afc51d3f35150f748f263870367771b6fEd Tam GpsLocationExtended &locationExtended, 2688c2d3d5afc51d3f35150f748f263870367771b6fEd Tam void* locationExt, 2698c2d3d5afc51d3f35150f748f263870367771b6fEd Tam enum loc_sess_status status, 2708c2d3d5afc51d3f35150f748f263870367771b6fEd Tam LocPosTechMask loc_technology_mask); 2718c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void reportSv(GpsSvStatus &svStatus, 2728c2d3d5afc51d3f35150f748f263870367771b6fEd Tam GpsLocationExtended &locationExtended, 2738c2d3d5afc51d3f35150f748f263870367771b6fEd Tam void* svExt); 2748c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void reportStatus(GpsStatusValue status); 2758c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void reportNmea(const char* nmea, int length); 2768c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual bool reportXtraServer(const char* url1, const char* url2, 2778c2d3d5afc51d3f35150f748f263870367771b6fEd Tam const char* url3, const int maxlength); 2788c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual bool requestXtraData(); 2798c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual bool requestTime(); 2808c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual bool requestATL(int connHandle, AGpsType agps_type); 2818c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual bool releaseATL(int connHandle); 2828c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual bool requestNiNotify(GpsNiNotification ¬ify, const void* data); 2838c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual bool requestSuplES(int connHandle); 2848c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual bool reportDataCallOpened(); 2858c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual bool reportDataCallClosed(); 2868c2d3d5afc51d3f35150f748f263870367771b6fEd Tam virtual void reportGpsMeasurementData(GpsData &gpsMeasurementData); 2878c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 2888c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline const LocPosMode& getPositionMode() const 2898c2d3d5afc51d3f35150f748f263870367771b6fEd Tam {return mFixCriteria;} 2908c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline virtual bool isInSession() 2918c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { return mNavigating; } 2928c2d3d5afc51d3f35150f748f263870367771b6fEd Tam void setInSession(bool inSession); 2938c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 2948c2d3d5afc51d3f35150f748f263870367771b6fEd Tam // Permit/prohibit power voting 2958c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline void setPowerVoteRight(bool powerVoteRight) { 2968c2d3d5afc51d3f35150f748f263870367771b6fEd Tam mPowerVote = powerVoteRight ? (mPowerVote | POWER_VOTE_RIGHT) : 2978c2d3d5afc51d3f35150f748f263870367771b6fEd Tam (mPowerVote & ~POWER_VOTE_RIGHT); 2988c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 2998c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline bool getPowerVoteRight() const { 3008c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return (mPowerVote & POWER_VOTE_RIGHT) != 0 ; 3018c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 3028c2d3d5afc51d3f35150f748f263870367771b6fEd Tam // Set the power voting up/down and do actual operation if permitted 3038c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline void setPowerVote(bool powerOn) { 3048c2d3d5afc51d3f35150f748f263870367771b6fEd Tam mPowerVote = powerOn ? (mPowerVote | POWER_VOTE_VALUE) : 3058c2d3d5afc51d3f35150f748f263870367771b6fEd Tam (mPowerVote & ~POWER_VOTE_VALUE); 3068c2d3d5afc51d3f35150f748f263870367771b6fEd Tam requestPowerVote(); 3078c2d3d5afc51d3f35150f748f263870367771b6fEd Tam mContext->modemPowerVote(powerOn); 3088c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 3098c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline bool getPowerVote() const { 3108c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return (mPowerVote & POWER_VOTE_VALUE) != 0 ; 3118c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 3128c2d3d5afc51d3f35150f748f263870367771b6fEd Tam // Do power voting according to last settings if permitted 3138c2d3d5afc51d3f35150f748f263870367771b6fEd Tam void requestPowerVote(); 3148c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 3158c2d3d5afc51d3f35150f748f263870367771b6fEd Tam /*Values for lock 3168c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 1 = Do not lock any position sessions 3178c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 2 = Lock MI position sessions 3188c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 3 = Lock MT position sessions 3198c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 4 = Lock all position sessions 3208c2d3d5afc51d3f35150f748f263870367771b6fEd Tam */ 3218c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline int setGpsLock(LOC_GPS_LOCK_MASK lock) 3228c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 3238c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->setGpsLock(lock); 3248c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 3258c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 3268c2d3d5afc51d3f35150f748f263870367771b6fEd Tam int setGpsLockMsg(LOC_GPS_LOCK_MASK lock); 3278c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 3288c2d3d5afc51d3f35150f748f263870367771b6fEd Tam /* 3298c2d3d5afc51d3f35150f748f263870367771b6fEd Tam Returns 3308c2d3d5afc51d3f35150f748f263870367771b6fEd Tam Current value of GPS lock on success 3318c2d3d5afc51d3f35150f748f263870367771b6fEd Tam -1 on failure 3328c2d3d5afc51d3f35150f748f263870367771b6fEd Tam */ 3338c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline int getGpsLock() 3348c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 3358c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return mLocApi->getGpsLock(); 3368c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 3378c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 3388c2d3d5afc51d3f35150f748f263870367771b6fEd Tam /* 3398c2d3d5afc51d3f35150f748f263870367771b6fEd Tam Update Registration Mask 3408c2d3d5afc51d3f35150f748f263870367771b6fEd Tam */ 3418c2d3d5afc51d3f35150f748f263870367771b6fEd Tam void updateRegistrationMask(LOC_API_ADAPTER_EVENT_MASK_T event, 3428c2d3d5afc51d3f35150f748f263870367771b6fEd Tam loc_registration_mask_status isEnabled); 3438c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 3448c2d3d5afc51d3f35150f748f263870367771b6fEd Tam /* 3458c2d3d5afc51d3f35150f748f263870367771b6fEd Tam Set Gnss Constellation Config 3468c2d3d5afc51d3f35150f748f263870367771b6fEd Tam */ 3478c2d3d5afc51d3f35150f748f263870367771b6fEd Tam bool gnssConstellationConfig(); 3488c2d3d5afc51d3f35150f748f263870367771b6fEd Tam}; 3498c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 3508c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#endif //LOC_API_ENG_ADAPTER_H 351