1/* 2 * Copyright (c) 2017, The Linux Foundation. All rights reserved. 3 * Not a Contribution 4 */ 5/* 6 * Copyright (C) 2016 The Android Open Source Project 7 * 8 * Licensed under the Apache License, Version 2.0 (the "License"); 9 * you may not use this file except in compliance with the License. 10 * You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, software 15 * distributed under the License is distributed on an "AS IS" BASIS, 16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 * See the License for the specific language governing permissions and 18 * limitations under the License. 19 */ 20 21#define LOG_TAG "LocSvc_GnssConfigurationInterface" 22 23#include <log_util.h> 24#include "Gnss.h" 25#include "GnssConfiguration.h" 26 27namespace android { 28namespace hardware { 29namespace gnss { 30namespace V1_0 { 31namespace implementation { 32 33GnssConfiguration::GnssConfiguration(Gnss* gnss) : mGnss(gnss) { 34} 35 36// Methods from ::android::hardware::gps::V1_0::IGnssConfiguration follow. 37Return<bool> GnssConfiguration::setSuplEs(bool enabled) { 38 if (mGnss == nullptr) { 39 LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__); 40 return false; 41 } 42 43 GnssConfig config; 44 memset(&config, 0, sizeof(GnssConfig)); 45 config.size = sizeof(GnssConfig); 46 config.flags = GNSS_CONFIG_FLAGS_SUPL_EM_SERVICES_BIT; 47 config.suplEmergencyServices = static_cast<GnssConfigSuplEmergencyServices>(enabled); 48 49 return mGnss->updateConfiguration(config); 50} 51 52Return<bool> GnssConfiguration::setSuplVersion(uint32_t version) { 53 if (mGnss == nullptr) { 54 LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__); 55 return false; 56 } 57 58 GnssConfig config; 59 memset(&config, 0, sizeof(GnssConfig)); 60 config.size = sizeof(GnssConfig); 61 config.flags = GNSS_CONFIG_FLAGS_SUPL_VERSION_VALID_BIT; 62 config.suplVersion = static_cast<GnssConfigSuplVersion>(version); 63 64 return mGnss->updateConfiguration(config); 65} 66 67Return<bool> GnssConfiguration::setSuplMode(uint8_t mode) { 68 if (mGnss == nullptr) { 69 LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__); 70 return false; 71 } 72 73 GnssConfig config; 74 memset(&config, 0, sizeof(GnssConfig)); 75 config.size = sizeof(GnssConfig); 76 config.flags = GNSS_CONFIG_FLAGS_SUPL_MODE_BIT; 77 config.suplModeMask = static_cast<GnssConfigSuplModeMask>(mode); 78 79 return mGnss->updateConfiguration(config); 80} 81 82Return<bool> GnssConfiguration::setLppProfile(uint8_t lppProfile) { 83 if (mGnss == nullptr) { 84 LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__); 85 return false; 86 } 87 88 GnssConfig config; 89 memset(&config, 0, sizeof(GnssConfig)); 90 config.size = sizeof(GnssConfig); 91 config.flags = GNSS_CONFIG_FLAGS_LPP_PROFILE_VALID_BIT; 92 config.lppProfile = static_cast<GnssConfigLppProfile>(lppProfile); 93 94 return mGnss->updateConfiguration(config); 95} 96 97Return<bool> GnssConfiguration::setGlonassPositioningProtocol(uint8_t protocol) { 98 if (mGnss == nullptr) { 99 LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__); 100 return false; 101 } 102 103 GnssConfig config; 104 memset(&config, 0, sizeof(GnssConfig)); 105 config.size = sizeof(GnssConfig); 106 config.flags = GNSS_CONFIG_FLAGS_AGLONASS_POSITION_PROTOCOL_VALID_BIT; 107 config.aGlonassPositionProtocolMask = 108 static_cast<GnssConfigAGlonassPositionProtocolMask>(protocol); 109 110 return mGnss->updateConfiguration(config); 111} 112 113Return<bool> GnssConfiguration::setGpsLock(uint8_t lock) { 114 if (mGnss == nullptr) { 115 LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__); 116 return false; 117 } 118 119 GnssConfig config; 120 memset(&config, 0, sizeof(GnssConfig)); 121 config.size = sizeof(GnssConfig); 122 config.flags = GNSS_CONFIG_FLAGS_GPS_LOCK_VALID_BIT; 123 config.gpsLock = static_cast<GnssConfigGpsLock>(lock); 124 125 return mGnss->updateConfiguration(config); 126} 127 128Return<bool> GnssConfiguration::setEmergencySuplPdn(bool enabled) { 129 if (mGnss == nullptr) { 130 LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__); 131 return false; 132 } 133 134 GnssConfig config; 135 memset(&config, 0, sizeof(GnssConfig)); 136 config.size = sizeof(GnssConfig); 137 config.flags = GNSS_CONFIG_FLAGS_EM_PDN_FOR_EM_SUPL_VALID_BIT; 138 config.emergencyPdnForEmergencySupl = 139 static_cast<GnssConfigEmergencyPdnForEmergencySupl>(enabled); 140 141 return mGnss->updateConfiguration(config); 142} 143 144} // namespace implementation 145} // namespace V1_0 146} // namespace gnss 147} // namespace hardware 148} // namespace android 149