sm8250-common: import gps from LA.UM.9.12.r1-13500.01-SMxx50.QSSI12.0
Change-Id: Ib5a80c095e5e203f90cc0d685758553fd18a7f0c
This commit is contained in:
parent
e4e7e5be57
commit
72410cf795
270 changed files with 66183 additions and 615 deletions
31
gps/batching/Android.bp
Normal file
31
gps/batching/Android.bp
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
cc_library_shared {
|
||||
|
||||
name: "libbatching",
|
||||
vendor: true,
|
||||
|
||||
|
||||
|
||||
shared_libs: [
|
||||
"libutils",
|
||||
"libcutils",
|
||||
"liblog",
|
||||
"libloc_core",
|
||||
"libgps.utils",
|
||||
"libdl",
|
||||
],
|
||||
|
||||
srcs: [
|
||||
"location_batching.cpp",
|
||||
"BatchingAdapter.cpp",
|
||||
],
|
||||
|
||||
header_libs: [
|
||||
"libgps.utils_headers",
|
||||
"libloc_core_headers",
|
||||
"libloc_pla_headers",
|
||||
"liblocation_api_headers",
|
||||
],
|
||||
|
||||
cflags: GNSS_CFLAGS,
|
||||
}
|
||||
1051
gps/batching/BatchingAdapter.cpp
Normal file
1051
gps/batching/BatchingAdapter.cpp
Normal file
File diff suppressed because it is too large
Load diff
152
gps/batching/BatchingAdapter.h
Normal file
152
gps/batching/BatchingAdapter.h
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
/* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
* * Neither the name of The Linux Foundation, nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
#ifndef BATCHING_ADAPTER_H
|
||||
#define BATCHING_ADAPTER_H
|
||||
|
||||
#include <LocAdapterBase.h>
|
||||
#include <LocContext.h>
|
||||
#include <LocationAPI.h>
|
||||
#include <map>
|
||||
|
||||
using namespace loc_core;
|
||||
|
||||
class BatchingAdapter : public LocAdapterBase {
|
||||
|
||||
/* ==== BATCHING ======================================================================= */
|
||||
typedef struct {
|
||||
uint32_t accumulatedDistanceOngoingBatch;
|
||||
uint32_t accumulatedDistanceThisTrip;
|
||||
uint32_t accumulatedDistanceOnTripRestart;
|
||||
uint32_t tripDistance;
|
||||
uint32_t tripTBFInterval;
|
||||
} TripSessionStatus;
|
||||
typedef std::map<uint32_t, TripSessionStatus> TripSessionStatusMap;
|
||||
typedef std::map<LocationSessionKey, BatchingOptions> BatchingSessionMap;
|
||||
|
||||
BatchingSessionMap mBatchingSessions;
|
||||
TripSessionStatusMap mTripSessions;
|
||||
uint32_t mOngoingTripDistance;
|
||||
uint32_t mOngoingTripTBFInterval;
|
||||
bool mTripWithOngoingTBFDropped;
|
||||
bool mTripWithOngoingTripDistanceDropped;
|
||||
|
||||
void startTripBatchingMultiplex(LocationAPI* client, uint32_t sessionId,
|
||||
const BatchingOptions& batchingOptions);
|
||||
void stopTripBatchingMultiplex(LocationAPI* client, uint32_t sessionId,
|
||||
bool restartNeeded,
|
||||
const BatchingOptions& batchOptions);
|
||||
inline void stopTripBatchingMultiplex(LocationAPI* client, uint32_t id) {
|
||||
BatchingOptions batchOptions;
|
||||
stopTripBatchingMultiplex(client, id, false, batchOptions);
|
||||
};
|
||||
void stopTripBatchingMultiplexCommon(LocationError err,
|
||||
LocationAPI* client,
|
||||
uint32_t sessionId,
|
||||
bool restartNeeded,
|
||||
const BatchingOptions& batchOptions);
|
||||
void restartTripBatching(bool queryAccumulatedDistance, uint32_t accDist = 0,
|
||||
uint32_t numbatchedPos = 0);
|
||||
void printTripReport();
|
||||
|
||||
/* ==== CONFIGURATION ================================================================== */
|
||||
uint32_t mBatchingTimeout;
|
||||
uint32_t mBatchingAccuracy;
|
||||
size_t mBatchSize;
|
||||
size_t mTripBatchSize;
|
||||
|
||||
protected:
|
||||
|
||||
/* ==== CLIENT ========================================================================= */
|
||||
virtual void updateClientsEventMask();
|
||||
virtual void stopClientSessions(LocationAPI* client);
|
||||
|
||||
public:
|
||||
BatchingAdapter();
|
||||
virtual ~BatchingAdapter() {}
|
||||
|
||||
/* ==== SSR ============================================================================ */
|
||||
/* ======== EVENTS ====(Called from QMI Thread)========================================= */
|
||||
virtual void handleEngineUpEvent();
|
||||
/* ======== UTILITIES ================================================================== */
|
||||
void restartSessions();
|
||||
|
||||
/* ==== BATCHING ======================================================================= */
|
||||
/* ======== COMMANDS ====(Called from Client Thread)==================================== */
|
||||
uint32_t startBatchingCommand(LocationAPI* client, BatchingOptions &batchOptions);
|
||||
void updateBatchingOptionsCommand(
|
||||
LocationAPI* client, uint32_t id, BatchingOptions& batchOptions);
|
||||
void stopBatchingCommand(LocationAPI* client, uint32_t id);
|
||||
void getBatchedLocationsCommand(LocationAPI* client, uint32_t id, size_t count);
|
||||
/* ======== RESPONSES ================================================================== */
|
||||
void reportResponse(LocationAPI* client, LocationError err, uint32_t sessionId);
|
||||
/* ======== UTILITIES ================================================================== */
|
||||
bool hasBatchingCallback(LocationAPI* client);
|
||||
bool isBatchingSession(LocationAPI* client, uint32_t sessionId);
|
||||
bool isTripSession(uint32_t sessionId);
|
||||
void saveBatchingSession(LocationAPI* client, uint32_t sessionId,
|
||||
const BatchingOptions& batchingOptions);
|
||||
void eraseBatchingSession(LocationAPI* client, uint32_t sessionId);
|
||||
uint32_t autoReportBatchingSessionsCount();
|
||||
void startBatching(LocationAPI* client, uint32_t sessionId,
|
||||
const BatchingOptions& batchingOptions);
|
||||
void stopBatching(LocationAPI* client, uint32_t sessionId, bool restartNeeded,
|
||||
const BatchingOptions& batchOptions);
|
||||
void stopBatching(LocationAPI* client, uint32_t sessionId) {
|
||||
BatchingOptions batchOptions;
|
||||
stopBatching(client, sessionId, false, batchOptions);
|
||||
};
|
||||
|
||||
/* ==== REPORTS ======================================================================== */
|
||||
/* ======== EVENTS ====(Called from QMI Thread)========================================= */
|
||||
void reportLocationsEvent(const Location* locations, size_t count,
|
||||
BatchingMode batchingMode);
|
||||
void reportCompletedTripsEvent(uint32_t accumulatedDistance);
|
||||
void reportBatchStatusChangeEvent(BatchingStatus batchStatus);
|
||||
/* ======== UTILITIES ================================================================== */
|
||||
void reportLocations(Location* locations, size_t count, BatchingMode batchingMode);
|
||||
void reportBatchStatusChange(BatchingStatus batchStatus,
|
||||
std::list<uint32_t> & completedTripsList);
|
||||
|
||||
/* ==== CONFIGURATION ================================================================== */
|
||||
/* ======== COMMANDS ====(Called from Client Thread)==================================== */
|
||||
void readConfigCommand();
|
||||
void setConfigCommand();
|
||||
/* ======== UTILITIES ================================================================== */
|
||||
void setBatchSize(size_t batchSize) { mBatchSize = batchSize; }
|
||||
size_t getBatchSize() { return mBatchSize; }
|
||||
void setTripBatchSize(size_t batchSize) { mTripBatchSize = batchSize; }
|
||||
size_t getTripBatchSize() { return mTripBatchSize; }
|
||||
void setBatchingTimeout(uint32_t batchingTimeout) { mBatchingTimeout = batchingTimeout; }
|
||||
uint32_t getBatchingTimeout() { return mBatchingTimeout; }
|
||||
void setBatchingAccuracy(uint32_t accuracy) { mBatchingAccuracy = accuracy; }
|
||||
uint32_t getBatchingAccuracy() { return mBatchingAccuracy; }
|
||||
|
||||
};
|
||||
|
||||
#endif /* BATCHING_ADAPTER_H */
|
||||
44
gps/batching/Makefile.am
Normal file
44
gps/batching/Makefile.am
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
AM_CFLAGS = \
|
||||
$(GPSUTILS_CFLAGS) \
|
||||
$(LOCCORE_CFLAGS) \
|
||||
-I./ \
|
||||
-std=c++1y \
|
||||
-D__func__=__PRETTY_FUNCTION__ \
|
||||
-fno-short-enums
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
requiredlibs = \
|
||||
$(GPSUTILS_LIBS) \
|
||||
$(LOCCORE_LIBS) \
|
||||
-llog
|
||||
|
||||
h_sources = \
|
||||
BatchingAdapter.h
|
||||
|
||||
libbatching_la_SOURCES = \
|
||||
location_batching.cpp \
|
||||
BatchingAdapter.cpp
|
||||
|
||||
if USE_GLIB
|
||||
libbatching_la_CFLAGS = -DUSE_GLIB $(AM_CFLAGS) @GLIB_CFLAGS@
|
||||
libbatching_la_LDFLAGS = -lstdc++ -g -Wl,-z,defs -lpthread $(requiredlibs) @GLIB_LIBS@ -shared -version-info 1:0:0
|
||||
libbatching_la_CPPFLAGS = -DUSE_GLIB $(AM_CFLAGS) $(AM_CPPFLAGS) @GLIB_CFLAGS@
|
||||
else
|
||||
libbatching_la_CFLAGS = $(AM_CFLAGS)
|
||||
libbatching_la_LDFLAGS = -Wl,-z,defs -lpthread $(requiredlibs) -shared -version-info 1:0:0
|
||||
libbatching_la_CPPFLAGS = $(AM_CFLAGS) $(AM_CPPFLAGS)
|
||||
endif
|
||||
|
||||
library_include_HEADERS = $(h_sources)
|
||||
|
||||
library_includedir = $(pkgincludedir)
|
||||
|
||||
#Create and Install libraries
|
||||
lib_LTLIBRARIES = libbatching.la
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = location-batching.pc
|
||||
sysconf_DATA = $(WORKSPACE)/hardware/qcom/gps/etc/flp.conf
|
||||
EXTRA_DIST = $(pkgconfig_DATA)
|
||||
|
||||
74
gps/batching/configure.ac
Normal file
74
gps/batching/configure.ac
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
# configure.ac -- Autoconf script for gps location-batching
|
||||
#
|
||||
# Process this file with autoconf to produce a configure script
|
||||
|
||||
# Requires autoconf tool later than 2.61
|
||||
AC_PREREQ(2.61)
|
||||
# Initialize the gps location-batching package version 1.0.0
|
||||
AC_INIT([location-batching],1.0.0)
|
||||
# Does not strictly follow GNU Coding standards
|
||||
AM_INIT_AUTOMAKE([foreign subdir-objects])
|
||||
# Disables auto rebuilding of configure, Makefile.ins
|
||||
AM_MAINTAINER_MODE
|
||||
# Verifies the --srcdir is correct by checking for the path
|
||||
AC_CONFIG_SRCDIR([Makefile.am])
|
||||
# defines some macros variable to be included by source
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_CXX
|
||||
AC_PROG_CC
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_AWK
|
||||
AC_PROG_CPP
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
# Checks for libraries.
|
||||
PKG_CHECK_MODULES([GPSUTILS], [gps-utils])
|
||||
AC_SUBST([GPSUTILS_CFLAGS])
|
||||
AC_SUBST([GPSUTILS_LIBS])
|
||||
|
||||
PKG_CHECK_MODULES([LOCCORE], [loc-core])
|
||||
AC_SUBST([LOCCORE_CFLAGS])
|
||||
AC_SUBST([LOCCORE_LIBS])
|
||||
|
||||
AC_ARG_WITH([locpla_includes],
|
||||
AC_HELP_STRING([--with-locpla-includes=@<:@dir@:>@],
|
||||
[specify the path to locpla-includes in loc-pla_git.bb]),
|
||||
[locpla_incdir=$withval],
|
||||
with_locpla_includes=no)
|
||||
|
||||
if test "x$with_locpla_includes" != "xno"; then
|
||||
AC_SUBST(LOCPLA_CFLAGS, "-I${locpla_incdir}")
|
||||
fi
|
||||
|
||||
AC_ARG_WITH([glib],
|
||||
AC_HELP_STRING([--with-glib],
|
||||
[enable glib, building HLOS systems which use glib]))
|
||||
|
||||
if (test "x${with_glib}" = "xyes"); then
|
||||
AC_DEFINE(ENABLE_USEGLIB, 1, [Define if HLOS systems uses glib])
|
||||
PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.16, dummy=yes,
|
||||
AC_MSG_ERROR(GThread >= 2.16 is required))
|
||||
PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16, dummy=yes,
|
||||
AC_MSG_ERROR(GLib >= 2.16 is required))
|
||||
GLIB_CFLAGS="$GLIB_CFLAGS $GTHREAD_CFLAGS"
|
||||
GLIB_LIBS="$GLIB_LIBS $GTHREAD_LIBS"
|
||||
|
||||
AC_SUBST(GLIB_CFLAGS)
|
||||
AC_SUBST(GLIB_LIBS)
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(USE_GLIB, test "x${with_glib}" = "xyes")
|
||||
|
||||
AC_CONFIG_FILES([ \
|
||||
Makefile \
|
||||
location-batching.pc
|
||||
])
|
||||
|
||||
AC_OUTPUT
|
||||
10
gps/batching/location-batching.pc.in
Normal file
10
gps/batching/location-batching.pc.in
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: location-batching
|
||||
Description: QTI GPS Batching
|
||||
Version: @VERSION
|
||||
Libs: -L${libdir} -lbatching
|
||||
Cflags: -I${includedir}/location-batching
|
||||
134
gps/batching/location_batching.cpp
Normal file
134
gps/batching/location_batching.cpp
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
/* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
* * Neither the name of The Linux Foundation, nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
#include "BatchingAdapter.h"
|
||||
#include "location_interface.h"
|
||||
|
||||
static BatchingAdapter* gBatchingAdapter = NULL;
|
||||
|
||||
static void initialize();
|
||||
static void deinitialize();
|
||||
|
||||
static void addClient(LocationAPI* client, const LocationCallbacks& callbacks);
|
||||
static void removeClient(LocationAPI* client, removeClientCompleteCallback rmClientCb);
|
||||
static void requestCapabilities(LocationAPI* client);
|
||||
|
||||
static uint32_t startBatching(LocationAPI* client, BatchingOptions&);
|
||||
static void stopBatching(LocationAPI* client, uint32_t id);
|
||||
static void updateBatchingOptions(LocationAPI* client, uint32_t id, BatchingOptions&);
|
||||
static void getBatchedLocations(LocationAPI* client, uint32_t id, size_t count);
|
||||
|
||||
static const BatchingInterface gBatchingInterface = {
|
||||
sizeof(BatchingInterface),
|
||||
initialize,
|
||||
deinitialize,
|
||||
addClient,
|
||||
removeClient,
|
||||
requestCapabilities,
|
||||
startBatching,
|
||||
stopBatching,
|
||||
updateBatchingOptions,
|
||||
getBatchedLocations
|
||||
};
|
||||
|
||||
#ifndef DEBUG_X86
|
||||
extern "C" const BatchingInterface* getBatchingInterface()
|
||||
#else
|
||||
const BatchingInterface* getBatchingInterface()
|
||||
#endif // DEBUG_X86
|
||||
{
|
||||
return &gBatchingInterface;
|
||||
}
|
||||
|
||||
static void initialize()
|
||||
{
|
||||
if (NULL == gBatchingAdapter) {
|
||||
gBatchingAdapter = new BatchingAdapter();
|
||||
}
|
||||
}
|
||||
|
||||
static void deinitialize()
|
||||
{
|
||||
if (NULL != gBatchingAdapter) {
|
||||
delete gBatchingAdapter;
|
||||
gBatchingAdapter = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void addClient(LocationAPI* client, const LocationCallbacks& callbacks)
|
||||
{
|
||||
if (NULL != gBatchingAdapter) {
|
||||
gBatchingAdapter->addClientCommand(client, callbacks);
|
||||
}
|
||||
}
|
||||
|
||||
static void removeClient(LocationAPI* client, removeClientCompleteCallback rmClientCb)
|
||||
{
|
||||
if (NULL != gBatchingAdapter) {
|
||||
gBatchingAdapter->removeClientCommand(client, rmClientCb);
|
||||
}
|
||||
}
|
||||
|
||||
static void requestCapabilities(LocationAPI* client)
|
||||
{
|
||||
if (NULL != gBatchingAdapter) {
|
||||
gBatchingAdapter->requestCapabilitiesCommand(client);
|
||||
}
|
||||
}
|
||||
|
||||
static uint32_t startBatching(LocationAPI* client, BatchingOptions &batchOptions)
|
||||
{
|
||||
if (NULL != gBatchingAdapter) {
|
||||
return gBatchingAdapter->startBatchingCommand(client, batchOptions);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void stopBatching(LocationAPI* client, uint32_t id)
|
||||
{
|
||||
if (NULL != gBatchingAdapter) {
|
||||
gBatchingAdapter->stopBatchingCommand(client, id);
|
||||
}
|
||||
}
|
||||
|
||||
static void updateBatchingOptions(
|
||||
LocationAPI* client, uint32_t id, BatchingOptions& batchOptions)
|
||||
{
|
||||
if (NULL != gBatchingAdapter) {
|
||||
gBatchingAdapter->updateBatchingOptionsCommand(client, id, batchOptions);
|
||||
}
|
||||
}
|
||||
|
||||
static void getBatchedLocations(LocationAPI* client, uint32_t id, size_t count)
|
||||
{
|
||||
if (NULL != gBatchingAdapter) {
|
||||
gBatchingAdapter->getBatchedLocationsCommand(client, id, count);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue