aboutsummaryrefslogtreecommitdiff
path: root/location/loc_net_iface/LocNetIfaceAgps.cpp
diff options
context:
space:
mode:
authordianlujitao <dianlujitao@lineageos.org>2018-01-20 10:25:47 +0800
committerDavide Garberi <dade.garberi@gmail.com>2018-01-27 23:40:16 +0100
commit596fd461f0a603c861ca9df4076f24a66e732cb5 (patch)
tree6eaf2d1255b13d5dcc14e938eed2f1321d4ba309 /location/loc_net_iface/LocNetIfaceAgps.cpp
parent18fc14ac0a3a0e622d679e7a6f708b4e468e1cfb (diff)
msm8996: gps: Squashed update to LA.UM.6.5.r1-05300-8x96.0
Change-Id: I76b39dd5329a050d44f126c684edb44b0184f0fc Signed-off-by: Davide Garberi <dade.garberi@gmail.com>
Diffstat (limited to 'location/loc_net_iface/LocNetIfaceAgps.cpp')
-rw-r--r--location/loc_net_iface/LocNetIfaceAgps.cpp211
1 files changed, 0 insertions, 211 deletions
diff --git a/location/loc_net_iface/LocNetIfaceAgps.cpp b/location/loc_net_iface/LocNetIfaceAgps.cpp
deleted file mode 100644
index 683247d..0000000
--- a/location/loc_net_iface/LocNetIfaceAgps.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-
-/* Copyright (c) 2017, 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.
- */
-#define LOG_TAG "LocSvc_LocNetIfaceHolder"
-
-#include <LocNetIfaceAgps.h>
-#include <platform_lib_log_util.h>
-
-/* LocNetIfaceAgps members */
-LocNetIface* LocNetIfaceAgps::sLocNetIfaceAgpsInternet = NULL;
-LocNetIface* LocNetIfaceAgps::sLocNetIfaceAgpsSupl = NULL;
-LocAgpsOpenResultCb LocNetIfaceAgps::sAgpsOpenResultCb = NULL;
-LocAgpsCloseResultCb LocNetIfaceAgps::sAgpsCloseResultCb = NULL;
-void* LocNetIfaceAgps::sUserDataPtr = NULL;
-
-/* Method accessed from HAL */
-agps_status_extended LocNetIfaceAgps_getStatusCb(
- LocAgpsOpenResultCb openResultCb,
- LocAgpsCloseResultCb closeResultCb, void* userDataPtr) {
-
- ENTRY_LOG();
-
- /* Save callbacks and userDataPtr */
- LocNetIfaceAgps::sAgpsOpenResultCb = openResultCb;
- LocNetIfaceAgps::sAgpsCloseResultCb = closeResultCb;
- LocNetIfaceAgps::sUserDataPtr = userDataPtr;
-
- /* Create LocNetIface instances */
- if (LocNetIfaceAgps::sLocNetIfaceAgpsInternet == NULL) {
- LocNetIfaceAgps::sLocNetIfaceAgpsInternet =
- new LocNetIface(LOC_NET_CONN_TYPE_WWAN_INTERNET);
- LocNetIfaceAgps::sLocNetIfaceAgpsInternet->
- registerWwanCallStatusCallback(
- LocNetIfaceAgps::wwanStatusCallback,
- LocNetIfaceAgps::sLocNetIfaceAgpsInternet);
- } else {
- LOC_LOGE("sLocNetIfaceAgpsInternet not NULL");
- }
-
- if (LocNetIfaceAgps::sLocNetIfaceAgpsSupl == NULL) {
- LocNetIfaceAgps::sLocNetIfaceAgpsSupl =
- new LocNetIface(LOC_NET_CONN_TYPE_WWAN_SUPL);
- LocNetIfaceAgps::sLocNetIfaceAgpsSupl->
- registerWwanCallStatusCallback(
- LocNetIfaceAgps::wwanStatusCallback,
- LocNetIfaceAgps::sLocNetIfaceAgpsSupl);
- } else {
- LOC_LOGE("sLocNetIfaceAgpsSupl not NULL");
- }
-
- /* Return our callback */
- return LocNetIfaceAgps::agpsStatusCb;
-}
-
-void LocNetIfaceAgps::agpsStatusCb(AGpsExtStatus* status){
-
- ENTRY_LOG();
-
- /* Validate */
- if (sLocNetIfaceAgpsInternet == NULL) {
- LOC_LOGE("Not init'd");
- return;
- }
- if (status == NULL) {
- LOC_LOGE("NULL status");
- return;
- }
-
- if (status->status == LOC_GPS_REQUEST_AGPS_DATA_CONN) {
-
- if (status->type == LOC_AGPS_TYPE_SUPL) {
-
- LOC_LOGV("REQUEST LOC_AGPS_TYPE_SUPL");
- if (!sLocNetIfaceAgpsSupl->setupWwanCall()) {
- LOC_LOGE("Setup wwan call failed !");
- wwanStatusCallback(
- sLocNetIfaceAgpsSupl,
- LOC_NET_WWAN_CALL_EVT_OPEN_FAILED,
- NULL, LOC_NET_CONN_IP_TYPE_INVALID);
- }
- } else if (status->type == LOC_AGPS_TYPE_WWAN_ANY) {
-
- LOC_LOGV("REQUEST LOC_AGPS_TYPE_WWAN_ANY");
- if (!sLocNetIfaceAgpsInternet->connectBackhaul()) {
- LOC_LOGE("Connect Backhaul failed");
- wwanStatusCallback(
- sLocNetIfaceAgpsInternet,
- LOC_NET_WWAN_CALL_EVT_OPEN_FAILED,
- NULL, LOC_NET_CONN_IP_TYPE_INVALID);
- }
- } else {
-
- LOC_LOGE("Unsupported AGPS type %d", status->type);
- }
- }
- else if (status->status == LOC_GPS_RELEASE_AGPS_DATA_CONN) {
-
- if (status->type == LOC_AGPS_TYPE_SUPL) {
-
- LOC_LOGV("RELEASE LOC_AGPS_TYPE_SUPL");
- if (!sLocNetIfaceAgpsSupl->stopWwanCall()) {
- LOC_LOGE("Stop wwan call failed !");
- wwanStatusCallback(
- sLocNetIfaceAgpsSupl,
- LOC_NET_WWAN_CALL_EVT_CLOSE_FAILED,
- NULL, LOC_NET_CONN_IP_TYPE_INVALID);
- }
- } else if (status->type == LOC_AGPS_TYPE_WWAN_ANY) {
-
- LOC_LOGV("RELEASE LOC_AGPS_TYPE_WWAN_ANY");
- if (!sLocNetIfaceAgpsInternet->disconnectBackhaul()) {
- LOC_LOGE("Disconnect backhaul failed !");
- wwanStatusCallback(
- sLocNetIfaceAgpsInternet,
- LOC_NET_WWAN_CALL_EVT_CLOSE_FAILED,
- NULL, LOC_NET_CONN_IP_TYPE_INVALID);
- }
- } else {
-
- LOC_LOGE("Unsupported AGPS type %d", status->type);
- }
- }
- else {
- LOC_LOGE("Unsupported AGPS action %d", status->status);
- }
-}
-
-void LocNetIfaceAgps::wwanStatusCallback(
- void* userDataPtr, LocNetWwanCallEvent event,
- const char* apn, LocNetConnIpType apnIpType){
-
- ENTRY_LOG();
- LOC_LOGV("event: %d, apnIpType: %d", event, apnIpType);
-
- /* Derive bearer type */
- AGpsBearerType bearerType = AGPS_APN_BEARER_INVALID;
- switch (apnIpType) {
- case LOC_NET_CONN_IP_TYPE_V4:
- bearerType = AGPS_APN_BEARER_IPV4;
- break;
- case LOC_NET_CONN_IP_TYPE_V6:
- bearerType = AGPS_APN_BEARER_IPV6;
- break;
- case LOC_NET_CONN_IP_TYPE_V4V6:
- bearerType = AGPS_APN_BEARER_IPV4V6;
- break;
- default:
- LOC_LOGE("Invalid APN IP type %d", apnIpType);
- }
-
- /* Derive AGPS type */
- AGpsExtType agpsType = LOC_AGPS_TYPE_INVALID;
- if (userDataPtr == (void*)sLocNetIfaceAgpsInternet) {
- agpsType = LOC_AGPS_TYPE_WWAN_ANY;
- }
- else if (userDataPtr == (void*)sLocNetIfaceAgpsSupl) {
- agpsType = LOC_AGPS_TYPE_SUPL;
- }
- else {
- LOC_LOGE("Invalid user data ptr %p", userDataPtr);
- return;
- }
-
- /* Complete AGPS call flow */
- if (event == LOC_NET_WWAN_CALL_EVT_OPEN_SUCCESS) {
- LOC_LOGV("LOC_NET_WWAN_CALL_EVT_OPEN_SUCCESS");
- sAgpsOpenResultCb(
- true, agpsType, apn, bearerType, sUserDataPtr);
- }
- else if (event == LOC_NET_WWAN_CALL_EVT_OPEN_FAILED) {
- LOC_LOGE("LOC_NET_WWAN_CALL_EVT_OPEN_FAILED");
- sAgpsOpenResultCb(
- false, agpsType, apn, bearerType, sUserDataPtr);
- }
- else if (event == LOC_NET_WWAN_CALL_EVT_CLOSE_SUCCESS) {
- LOC_LOGV("LOC_NET_WWAN_CALL_EVT_CLOSE_SUCCESS");
- sAgpsCloseResultCb(true, agpsType, sUserDataPtr);
- }
- else if (event == LOC_NET_WWAN_CALL_EVT_CLOSE_FAILED) {
- LOC_LOGE("LOC_NET_WWAN_CALL_EVT_CLOSE_FAILED");
- sAgpsCloseResultCb(false, agpsType, sUserDataPtr);
- }
- else {
- LOC_LOGE("Unsupported event %d", event);
- }
-}