mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
Add IAGnssRil AIDL HAL (hardware/interfaces)
Bug: 205185251 Bug: 182975915 Test: atest VtsHalGnssTargetTest Change-Id: Ie5746ae25db3beff20f1311f4ddaa592d8ca934b
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.gnss;
|
||||
@VintfStability
|
||||
interface IAGnssRil {
|
||||
void setCallback(in android.hardware.gnss.IAGnssRilCallback callback);
|
||||
void setRefLocation(in android.hardware.gnss.IAGnssRil.AGnssRefLocation agnssReflocation);
|
||||
void setSetId(in android.hardware.gnss.IAGnssRil.SetIDType type, in @utf8InCpp String setid);
|
||||
void updateNetworkState(in android.hardware.gnss.IAGnssRil.NetworkAttributes attributes);
|
||||
const int NETWORK_CAPABILITY_NOT_METERED = 1;
|
||||
const int NETWORK_CAPABILITY_NOT_ROAMING = 2;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum AGnssRefLocationType {
|
||||
GSM_CELLID = 1,
|
||||
UMTS_CELLID = 2,
|
||||
LTE_CELLID = 4,
|
||||
NR_CELLID = 8,
|
||||
}
|
||||
@Backing(type="int") @VintfStability
|
||||
enum SetIDType {
|
||||
NONE = 0,
|
||||
IMSI = 1,
|
||||
MSISDM = 2,
|
||||
}
|
||||
@VintfStability
|
||||
parcelable AGnssRefLocationCellID {
|
||||
android.hardware.gnss.IAGnssRil.AGnssRefLocationType type;
|
||||
int mcc;
|
||||
int mnc;
|
||||
int lac;
|
||||
long cid;
|
||||
int tac;
|
||||
int pcid;
|
||||
int arfcn;
|
||||
}
|
||||
@VintfStability
|
||||
parcelable AGnssRefLocation {
|
||||
android.hardware.gnss.IAGnssRil.AGnssRefLocationType type;
|
||||
android.hardware.gnss.IAGnssRil.AGnssRefLocationCellID cellID;
|
||||
}
|
||||
@VintfStability
|
||||
parcelable NetworkAttributes {
|
||||
long networkHandle;
|
||||
boolean isConnected;
|
||||
int capabilities;
|
||||
@utf8InCpp String apn;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.gnss;
|
||||
@VintfStability
|
||||
interface IAGnssRilCallback {
|
||||
void requestSetIdCb(in int setIdflag);
|
||||
void requestRefLocCb();
|
||||
}
|
||||
@@ -44,6 +44,7 @@ interface IGnss {
|
||||
@nullable android.hardware.gnss.IGnssGeofence getExtensionGnssGeofence();
|
||||
@nullable android.hardware.gnss.IGnssNavigationMessageInterface getExtensionGnssNavigationMessage();
|
||||
android.hardware.gnss.IAGnss getExtensionAGnss();
|
||||
android.hardware.gnss.IAGnssRil getExtensionAGnssRil();
|
||||
android.hardware.gnss.IGnssDebug getExtensionGnssDebug();
|
||||
android.hardware.gnss.visibility_control.IGnssVisibilityControl getExtensionGnssVisibilityControl();
|
||||
void start();
|
||||
|
||||
163
gnss/aidl/android/hardware/gnss/IAGnssRil.aidl
Normal file
163
gnss/aidl/android/hardware/gnss/IAGnssRil.aidl
Normal file
@@ -0,0 +1,163 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.gnss;
|
||||
|
||||
import android.hardware.gnss.IAGnssRilCallback;
|
||||
import android.hardware.gnss.IAGnssRilCallback.SetIDType;
|
||||
|
||||
/**
|
||||
* Extended interface for AGNSS RIL support. An Assisted GNSS Radio Interface
|
||||
* Layer interface allows the GNSS chipset to request radio interface layer
|
||||
* information from Android platform. Examples of such information are reference
|
||||
* location, unique subscriber ID, phone number string and network availability changes.
|
||||
*/
|
||||
@VintfStability
|
||||
interface IAGnssRil {
|
||||
/** Network capability mode bitmask for not metered. */
|
||||
const int NETWORK_CAPABILITY_NOT_METERED = 0x01;
|
||||
|
||||
/** Network capability mode bitmask for not roaming. */
|
||||
const int NETWORK_CAPABILITY_NOT_ROAMING = 0x02;
|
||||
|
||||
/** AGNSS reference location type */
|
||||
@VintfStability
|
||||
@Backing(type="int")
|
||||
enum AGnssRefLocationType {
|
||||
GSM_CELLID = 1,
|
||||
UMTS_CELLID = 2,
|
||||
LTE_CELLID = 4,
|
||||
NR_CELLID = 8,
|
||||
}
|
||||
|
||||
/** SET ID type*/
|
||||
@VintfStability
|
||||
@Backing(type="int")
|
||||
enum SetIDType {
|
||||
NONE = 0,
|
||||
IMSI = 1,
|
||||
MSISDM = 2,
|
||||
}
|
||||
|
||||
/** CellID for 2G, 3G ,LTE and NR used in AGNSS. */
|
||||
@VintfStability
|
||||
parcelable AGnssRefLocationCellID {
|
||||
AGnssRefLocationType type;
|
||||
|
||||
/** Mobile Country Code. */
|
||||
int mcc;
|
||||
|
||||
/** Mobile Network Code .*/
|
||||
int mnc;
|
||||
|
||||
/**
|
||||
* Location Area Code in 2G, 3G and LTE. In 3G lac is discarded. In LTE,
|
||||
* lac is populated with tac, to ensure that we don't break old clients that
|
||||
* might rely on the old (wrong) behavior.
|
||||
*/
|
||||
int lac;
|
||||
|
||||
/**
|
||||
* Cell id in 2G. Utran Cell id in 3G. Cell Global Id EUTRA in LTE.
|
||||
* Cell Global Id NR in 5G.
|
||||
*/
|
||||
long cid;
|
||||
|
||||
/** Tracking Area Code in LTE and NR. */
|
||||
int tac;
|
||||
|
||||
/** Physical Cell id in LTE and NR (not used in 2G and 3G) */
|
||||
int pcid;
|
||||
|
||||
/** Absolute Radio Frequency Channel Number in NR. */
|
||||
int arfcn;
|
||||
}
|
||||
|
||||
/** Represents ref locations */
|
||||
@VintfStability
|
||||
parcelable AGnssRefLocation {
|
||||
AGnssRefLocationType type;
|
||||
|
||||
AGnssRefLocationCellID cellID;
|
||||
}
|
||||
|
||||
/** Represents network connection status and capabilities. */
|
||||
@VintfStability
|
||||
parcelable NetworkAttributes {
|
||||
/** Network handle of the network for use with the NDK API. */
|
||||
long networkHandle;
|
||||
|
||||
/**
|
||||
* True indicates that network connectivity exists and it is possible to
|
||||
* establish connections and pass data. If false, only the networkHandle field
|
||||
* is populated to indicate that this network has just disconnected.
|
||||
*/
|
||||
boolean isConnected;
|
||||
|
||||
/**
|
||||
* A bitfield of flags indicating the capabilities of this network. The bit masks are
|
||||
* defined in NETWORK_CAPABILITY_*.
|
||||
*/
|
||||
int capabilities;
|
||||
|
||||
/**
|
||||
* Telephony preferred Access Point Name to use for carrier data connection when
|
||||
* connected to a cellular network. Empty string, otherwise.
|
||||
*/
|
||||
@utf8InCpp String apn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the AGNSS interface and provides the callback routines
|
||||
* to the implementation of this interface.
|
||||
*
|
||||
* @param callback Interface for AGnssRil callbacks.
|
||||
*
|
||||
*/
|
||||
void setCallback(in IAGnssRilCallback callback);
|
||||
|
||||
/**
|
||||
* Sets the reference location.
|
||||
*
|
||||
* @param agnssReflocation AGNSS reference location CellID.
|
||||
*
|
||||
*/
|
||||
void setRefLocation(in AGnssRefLocation agnssReflocation);
|
||||
|
||||
/**
|
||||
* Sets the SET ID.
|
||||
*
|
||||
* @param type Must be populated with either IMSI or MSISDN or NONE.
|
||||
* @param setid If type is IMSI then setid is populated with
|
||||
* a string representing the unique Subscriber ID, for example, the IMSI for
|
||||
* a GMS phone. If type is MSISDN, then setid must contain
|
||||
* the phone number string for line 1. For example, the MSISDN for a GSM phone.
|
||||
* If the type is NONE, then the string must be empty.
|
||||
*
|
||||
*/
|
||||
void setSetId(in SetIDType type, in @utf8InCpp String setid);
|
||||
|
||||
/**
|
||||
* Notifies GNSS of network status changes.
|
||||
*
|
||||
* The framework calls this method to update the GNSS HAL implementation of network
|
||||
* state changes.
|
||||
*
|
||||
* @param attributes Updated network attributes.
|
||||
*
|
||||
*/
|
||||
void updateNetworkState(in NetworkAttributes attributes);
|
||||
}
|
||||
38
gnss/aidl/android/hardware/gnss/IAGnssRilCallback.aidl
Normal file
38
gnss/aidl/android/hardware/gnss/IAGnssRilCallback.aidl
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.gnss;
|
||||
|
||||
/**
|
||||
* Callback for IAGnssRil interface. Used to request SET ID and
|
||||
* Reference Location.
|
||||
*/
|
||||
@VintfStability
|
||||
interface IAGnssRilCallback {
|
||||
/**
|
||||
* The Hal uses this API to request a SET ID.
|
||||
*
|
||||
* @param setIdflag A bitfield of IAGnssRil.SetIDType that is required by
|
||||
* the HAL. The framework will inject an empty SET ID if the flag is NONE.
|
||||
*
|
||||
*/
|
||||
void requestSetIdCb(in int setIdflag);
|
||||
|
||||
/**
|
||||
* The Hal uses this API to request a reference location.
|
||||
*/
|
||||
void requestRefLocCb();
|
||||
}
|
||||
@@ -18,6 +18,7 @@ package android.hardware.gnss;
|
||||
|
||||
import android.hardware.gnss.GnssLocation;
|
||||
import android.hardware.gnss.IAGnss;
|
||||
import android.hardware.gnss.IAGnssRil;
|
||||
import android.hardware.gnss.IGnssBatching;
|
||||
import android.hardware.gnss.IGnssCallback;
|
||||
import android.hardware.gnss.IGnssConfiguration;
|
||||
@@ -185,6 +186,13 @@ interface IGnss {
|
||||
*/
|
||||
IAGnss getExtensionAGnss();
|
||||
|
||||
/**
|
||||
* This method returns the IAGnssRil interface.
|
||||
*
|
||||
* @return The IAGnssRil interface.
|
||||
*/
|
||||
IAGnssRil getExtensionAGnssRil();
|
||||
|
||||
/**
|
||||
* This method returns the IGnssDebug interface.
|
||||
*
|
||||
|
||||
55
gnss/aidl/default/AGnssRil.cpp
Normal file
55
gnss/aidl/default/AGnssRil.cpp
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright (C) 2021 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#define LOG_TAG "AGnssRilAidl"
|
||||
|
||||
#include "AGnssRil.h"
|
||||
#include <log/log.h>
|
||||
|
||||
namespace aidl::android::hardware::gnss {
|
||||
|
||||
std::shared_ptr<IAGnssRilCallback> AGnssRil::sCallback = nullptr;
|
||||
|
||||
ndk::ScopedAStatus AGnssRil::setCallback(const std::shared_ptr<IAGnssRilCallback>& callback) {
|
||||
ALOGD("AGnssRil::setCallback");
|
||||
std::unique_lock<std::mutex> lock(mMutex);
|
||||
sCallback = callback;
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus AGnssRil::setRefLocation(const AGnssRefLocation& agnssReflocation) {
|
||||
const AGnssRefLocationCellID& cellInfo = agnssReflocation.cellID;
|
||||
ALOGD("AGnssRil::setRefLocation: type: %s, mcc: %d, mnc: %d, lac: %d, cid: %ld, tac: %d, pcid: "
|
||||
"%d, arfcn: %d",
|
||||
toString(agnssReflocation.type).c_str(), cellInfo.mcc, cellInfo.mnc, cellInfo.lac,
|
||||
cellInfo.cid, cellInfo.tac, cellInfo.pcid, cellInfo.arfcn);
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus AGnssRil::setSetId(SetIDType type, const std::string& setid) {
|
||||
ALOGD("AGnssRil::setSetId: type:%s, setid: %s", toString(type).c_str(), setid.c_str());
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus AGnssRil::updateNetworkState(const NetworkAttributes& attributes) {
|
||||
ALOGD("AGnssRil::updateNetworkState: networkHandle: %ld, isConnected: %d, capabilities: %d, "
|
||||
"apn: %s",
|
||||
attributes.networkHandle, attributes.isConnected, attributes.capabilities,
|
||||
attributes.apn.c_str());
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
} // namespace aidl::android::hardware::gnss
|
||||
37
gnss/aidl/default/AGnssRil.h
Normal file
37
gnss/aidl/default/AGnssRil.h
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2021 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <aidl/android/hardware/gnss/BnAGnssRil.h>
|
||||
|
||||
namespace aidl::android::hardware::gnss {
|
||||
|
||||
struct AGnssRil : public BnAGnssRil {
|
||||
public:
|
||||
ndk::ScopedAStatus setCallback(const std::shared_ptr<IAGnssRilCallback>& callback) override;
|
||||
ndk::ScopedAStatus setRefLocation(const AGnssRefLocation& agnssReflocation) override;
|
||||
ndk::ScopedAStatus setSetId(SetIDType type, const std::string& setid) override;
|
||||
ndk::ScopedAStatus updateNetworkState(const NetworkAttributes& attributes) override;
|
||||
|
||||
private:
|
||||
// Synchronization lock for sCallback
|
||||
mutable std::mutex mMutex;
|
||||
// Guarded by mMutex
|
||||
static std::shared_ptr<IAGnssRilCallback> sCallback;
|
||||
};
|
||||
|
||||
} // namespace aidl::android::hardware::gnss
|
||||
@@ -56,6 +56,7 @@ cc_binary {
|
||||
"android.hardware.gnss-V2-ndk",
|
||||
],
|
||||
srcs: [
|
||||
"AGnssRil.cpp",
|
||||
"AGnss.cpp",
|
||||
"Gnss.cpp",
|
||||
"GnssBatching.cpp",
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <inttypes.h>
|
||||
#include <log/log.h>
|
||||
#include "AGnss.h"
|
||||
#include "AGnssRil.h"
|
||||
#include "GnssBatching.h"
|
||||
#include "GnssConfiguration.h"
|
||||
#include "GnssDebug.h"
|
||||
@@ -154,7 +155,7 @@ ScopedAStatus Gnss::close() {
|
||||
return ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus Gnss::getExtensionAGnss(std::shared_ptr<IAGnss>* iAGnss) {
|
||||
ScopedAStatus Gnss::getExtensionAGnss(std::shared_ptr<IAGnss>* iAGnss) {
|
||||
ALOGD("Gnss::getExtensionAGnss");
|
||||
*iAGnss = SharedRefBase::make<AGnss>();
|
||||
return ndk::ScopedAStatus::ok();
|
||||
@@ -166,6 +167,12 @@ ScopedAStatus Gnss::injectTime(int64_t timeMs, int64_t timeReferenceMs, int unce
|
||||
return ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
ScopedAStatus Gnss::getExtensionAGnssRil(std::shared_ptr<IAGnssRil>* iAGnssRil) {
|
||||
ALOGD("Gnss::getExtensionAGnssRil");
|
||||
*iAGnssRil = SharedRefBase::make<AGnssRil>();
|
||||
return ndk::ScopedAStatus::ok();
|
||||
}
|
||||
|
||||
ScopedAStatus Gnss::injectLocation(const GnssLocation& location) {
|
||||
ALOGD("injectLocation. lat:%lf, lng:%lf, acc:%f", location.latitudeDegrees,
|
||||
location.longitudeDegrees, location.horizontalAccuracyMeters);
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <aidl/android/hardware/gnss/BnAGnss.h>
|
||||
#include <aidl/android/hardware/gnss/BnAGnssRil.h>
|
||||
#include <aidl/android/hardware/gnss/BnGnss.h>
|
||||
#include <aidl/android/hardware/gnss/BnGnssBatching.h>
|
||||
#include <aidl/android/hardware/gnss/BnGnssConfiguration.h>
|
||||
@@ -65,6 +66,7 @@ class Gnss : public BnGnss {
|
||||
ndk::ScopedAStatus getExtensionGnssNavigationMessage(
|
||||
std::shared_ptr<IGnssNavigationMessageInterface>* iGnssNavigationMessage) override;
|
||||
ndk::ScopedAStatus getExtensionAGnss(std::shared_ptr<IAGnss>* iAGnss) override;
|
||||
ndk::ScopedAStatus getExtensionAGnssRil(std::shared_ptr<IAGnssRil>* iAGnssRil) override;
|
||||
ndk::ScopedAStatus getExtensionGnssDebug(std::shared_ptr<IGnssDebug>* iGnssDebug) override;
|
||||
ndk::ScopedAStatus getExtensionGnssVisibilityControl(
|
||||
std::shared_ptr<android::hardware::gnss::visibility_control::IGnssVisibilityControl>*
|
||||
|
||||
28
gnss/aidl/vts/AGnssRilCallbackAidl.cpp
Normal file
28
gnss/aidl/vts/AGnssRilCallbackAidl.cpp
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "AGnssRilCallbackAidl.h"
|
||||
#include <log/log.h>
|
||||
|
||||
android::binder::Status AGnssRilCallbackAidl::requestSetIdCb(int setIdflag) {
|
||||
ALOGI("requestSetIdCb setIdflag %d", setIdflag);
|
||||
return android::binder::Status::ok();
|
||||
}
|
||||
|
||||
android::binder::Status AGnssRilCallbackAidl::requestRefLocCb() {
|
||||
ALOGI("requestRefLocCb");
|
||||
return android::binder::Status::ok();
|
||||
}
|
||||
28
gnss/aidl/vts/AGnssRilCallbackAidl.h
Normal file
28
gnss/aidl/vts/AGnssRilCallbackAidl.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <android/hardware/gnss/BnAGnssRilCallback.h>
|
||||
|
||||
/** Implementation for IAGnssRilCallback. */
|
||||
class AGnssRilCallbackAidl : public android::hardware::gnss::BnAGnssRilCallback {
|
||||
public:
|
||||
AGnssRilCallbackAidl(){};
|
||||
~AGnssRilCallbackAidl(){};
|
||||
android::binder::Status requestSetIdCb(int setIdflag) override;
|
||||
android::binder::Status requestRefLocCb() override;
|
||||
};
|
||||
@@ -31,6 +31,7 @@ cc_test {
|
||||
"gnss_hal_test.cpp",
|
||||
"gnss_hal_test_cases.cpp",
|
||||
"AGnssCallbackAidl.cpp",
|
||||
"AGnssRilCallbackAidl.cpp",
|
||||
"GnssBatchingCallback.cpp",
|
||||
"GnssCallbackAidl.cpp",
|
||||
"GnssGeofenceCallback.cpp",
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <android/hardware/gnss/visibility_control/IGnssVisibilityControl.h>
|
||||
#include <cutils/properties.h>
|
||||
#include "AGnssCallbackAidl.h"
|
||||
#include "AGnssRilCallbackAidl.h"
|
||||
#include "GnssBatchingCallback.h"
|
||||
#include "GnssGeofenceCallback.h"
|
||||
#include "GnssMeasurementCallbackAidl.h"
|
||||
@@ -43,6 +44,7 @@ using android::hardware::gnss::GnssData;
|
||||
using android::hardware::gnss::GnssMeasurement;
|
||||
using android::hardware::gnss::GnssPowerStats;
|
||||
using android::hardware::gnss::IAGnss;
|
||||
using android::hardware::gnss::IAGnssRil;
|
||||
using android::hardware::gnss::IGnss;
|
||||
using android::hardware::gnss::IGnssBatching;
|
||||
using android::hardware::gnss::IGnssBatchingCallback;
|
||||
@@ -857,6 +859,42 @@ TEST_P(GnssHalTest, TestAGnssExtension) {
|
||||
ASSERT_TRUE(status.isOk());
|
||||
}
|
||||
|
||||
/*
|
||||
* TestAGnssRilExtension:
|
||||
* 1. Gets the IAGnssRil extension.
|
||||
* 2. Sets AGnssRilCallback.
|
||||
* 3. Sets reference location.
|
||||
*/
|
||||
TEST_P(GnssHalTest, TestAGnssRilExtension) {
|
||||
if (aidl_gnss_hal_->getInterfaceVersion() == 1) {
|
||||
return;
|
||||
}
|
||||
sp<IAGnssRil> iAGnssRil;
|
||||
auto status = aidl_gnss_hal_->getExtensionAGnssRil(&iAGnssRil);
|
||||
ASSERT_TRUE(status.isOk());
|
||||
ASSERT_TRUE(iAGnssRil != nullptr);
|
||||
|
||||
auto agnssRilCallback = sp<AGnssRilCallbackAidl>::make();
|
||||
status = iAGnssRil->setCallback(agnssRilCallback);
|
||||
ASSERT_TRUE(status.isOk());
|
||||
|
||||
// Set RefLocation
|
||||
IAGnssRil::AGnssRefLocationCellID agnssReflocationCellId;
|
||||
agnssReflocationCellId.type = IAGnssRil::AGnssRefLocationType::LTE_CELLID;
|
||||
agnssReflocationCellId.mcc = 466;
|
||||
agnssReflocationCellId.mnc = 97;
|
||||
agnssReflocationCellId.lac = 46697;
|
||||
agnssReflocationCellId.cid = 59168142;
|
||||
agnssReflocationCellId.pcid = 420;
|
||||
agnssReflocationCellId.tac = 11460;
|
||||
IAGnssRil::AGnssRefLocation agnssReflocation;
|
||||
agnssReflocation.type = IAGnssRil::AGnssRefLocationType::LTE_CELLID;
|
||||
agnssReflocation.cellID = agnssReflocationCellId;
|
||||
|
||||
status = iAGnssRil->setRefLocation(agnssReflocation);
|
||||
ASSERT_TRUE(status.isOk());
|
||||
}
|
||||
|
||||
/*
|
||||
* GnssDebugValuesSanityTest:
|
||||
* Ensures that GnssDebug values make sense.
|
||||
|
||||
Reference in New Issue
Block a user