18c2d3d5afc51d3f35150f748f263870367771b6fEd Tam/* Copyright (c) 2013, 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 GPS_EXTENDED_H 308c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#define GPS_EXTENDED_H 318c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 328c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#ifdef __cplusplus 338c2d3d5afc51d3f35150f748f263870367771b6fEd Tamextern "C" { 348c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#endif /* __cplusplus */ 358c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 368c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <gps_extended_c.h> 378c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 388c2d3d5afc51d3f35150f748f263870367771b6fEd Tamstruct LocPosMode 398c2d3d5afc51d3f35150f748f263870367771b6fEd Tam{ 408c2d3d5afc51d3f35150f748f263870367771b6fEd Tam LocPositionMode mode; 418c2d3d5afc51d3f35150f748f263870367771b6fEd Tam GpsPositionRecurrence recurrence; 428c2d3d5afc51d3f35150f748f263870367771b6fEd Tam uint32_t min_interval; 438c2d3d5afc51d3f35150f748f263870367771b6fEd Tam uint32_t preferred_accuracy; 448c2d3d5afc51d3f35150f748f263870367771b6fEd Tam uint32_t preferred_time; 458c2d3d5afc51d3f35150f748f263870367771b6fEd Tam char credentials[14]; 468c2d3d5afc51d3f35150f748f263870367771b6fEd Tam char provider[8]; 478c2d3d5afc51d3f35150f748f263870367771b6fEd Tam LocPosMode(LocPositionMode m, GpsPositionRecurrence recr, 488c2d3d5afc51d3f35150f748f263870367771b6fEd Tam uint32_t gap, uint32_t accu, uint32_t time, 498c2d3d5afc51d3f35150f748f263870367771b6fEd Tam const char* cred, const char* prov) : 508c2d3d5afc51d3f35150f748f263870367771b6fEd Tam mode(m), recurrence(recr), 518c2d3d5afc51d3f35150f748f263870367771b6fEd Tam min_interval(gap < MIN_POSSIBLE_FIX_INTERVAL ? MIN_POSSIBLE_FIX_INTERVAL : gap), 528c2d3d5afc51d3f35150f748f263870367771b6fEd Tam preferred_accuracy(accu), preferred_time(time) { 538c2d3d5afc51d3f35150f748f263870367771b6fEd Tam memset(credentials, 0, sizeof(credentials)); 548c2d3d5afc51d3f35150f748f263870367771b6fEd Tam memset(provider, 0, sizeof(provider)); 558c2d3d5afc51d3f35150f748f263870367771b6fEd Tam if (NULL != cred) { 568c2d3d5afc51d3f35150f748f263870367771b6fEd Tam memcpy(credentials, cred, sizeof(credentials)-1); 578c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 588c2d3d5afc51d3f35150f748f263870367771b6fEd Tam if (NULL != prov) { 598c2d3d5afc51d3f35150f748f263870367771b6fEd Tam memcpy(provider, prov, sizeof(provider)-1); 608c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 618c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 628c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 638c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline LocPosMode() : 648c2d3d5afc51d3f35150f748f263870367771b6fEd Tam mode(LOC_POSITION_MODE_MS_BASED), 658c2d3d5afc51d3f35150f748f263870367771b6fEd Tam recurrence(GPS_POSITION_RECURRENCE_PERIODIC), 668c2d3d5afc51d3f35150f748f263870367771b6fEd Tam min_interval(MIN_POSSIBLE_FIX_INTERVAL), 678c2d3d5afc51d3f35150f748f263870367771b6fEd Tam preferred_accuracy(50), preferred_time(120000) { 688c2d3d5afc51d3f35150f748f263870367771b6fEd Tam memset(credentials, 0, sizeof(credentials)); 698c2d3d5afc51d3f35150f748f263870367771b6fEd Tam memset(provider, 0, sizeof(provider)); 708c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 718c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 728c2d3d5afc51d3f35150f748f263870367771b6fEd Tam inline bool equals(const LocPosMode &anotherMode) const 738c2d3d5afc51d3f35150f748f263870367771b6fEd Tam { 748c2d3d5afc51d3f35150f748f263870367771b6fEd Tam return anotherMode.mode == mode && 758c2d3d5afc51d3f35150f748f263870367771b6fEd Tam anotherMode.recurrence == recurrence && 768c2d3d5afc51d3f35150f748f263870367771b6fEd Tam anotherMode.min_interval == min_interval && 778c2d3d5afc51d3f35150f748f263870367771b6fEd Tam anotherMode.preferred_accuracy == preferred_accuracy && 788c2d3d5afc51d3f35150f748f263870367771b6fEd Tam anotherMode.preferred_time == preferred_time && 798c2d3d5afc51d3f35150f748f263870367771b6fEd Tam !strncmp(anotherMode.credentials, credentials, sizeof(credentials)-1) && 808c2d3d5afc51d3f35150f748f263870367771b6fEd Tam !strncmp(anotherMode.provider, provider, sizeof(provider)-1); 818c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } 828c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 838c2d3d5afc51d3f35150f748f263870367771b6fEd Tam void logv() const; 848c2d3d5afc51d3f35150f748f263870367771b6fEd Tam}; 858c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 868c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 878c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#ifdef __cplusplus 888c2d3d5afc51d3f35150f748f263870367771b6fEd Tam} 898c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#endif /* __cplusplus */ 908c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 918c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#endif /* GPS_EXTENDED_H */ 928c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 93