Merge "Add gnssSetSignalTypeCapabilitiesCb()"

This commit is contained in:
TreeHugger Robot
2022-10-21 00:27:39 +00:00
committed by Android (Google) Code Review
18 changed files with 74 additions and 13 deletions

View File

@@ -230,7 +230,7 @@
</hal>
<hal format="aidl" optional="true">
<name>android.hardware.gnss</name>
<version>2</version>
<version>3</version>
<interface>
<name>IGnss</name>
<instance>default</instance>

View File

@@ -27,7 +27,7 @@ cc_binary {
"android.hardware.gnss@2.0",
"android.hardware.gnss@1.1",
"android.hardware.gnss@1.0",
"android.hardware.gnss-V2-ndk",
"android.hardware.gnss-V3-ndk",
],
static_libs: [
"android.hardware.gnss@common-default-lib",

View File

@@ -36,7 +36,7 @@ cc_test {
"android.hardware.gnss@1.1",
"android.hardware.gnss@2.0",
"android.hardware.gnss@common-vts-lib",
"android.hardware.gnss-V2-cpp",
"android.hardware.gnss-V3-cpp",
],
shared_libs: [
"android.hardware.gnss.measurement_corrections@1.0",

View File

@@ -50,7 +50,7 @@ cc_binary {
"android.hardware.gnss@2.0",
"android.hardware.gnss@1.1",
"android.hardware.gnss@1.0",
"android.hardware.gnss-V2-ndk",
"android.hardware.gnss-V3-ndk",
],
static_libs: [
"android.hardware.gnss@common-default-lib",

View File

@@ -39,7 +39,7 @@ cc_test {
"android.hardware.gnss@2.0",
"android.hardware.gnss@2.1",
"android.hardware.gnss@common-vts-lib",
"android.hardware.gnss-V2-cpp",
"android.hardware.gnss-V3-cpp",
],
test_suites: [
"general-tests",

View File

@@ -44,7 +44,7 @@ cc_binary {
"android.hardware.gnss@1.0",
"android.hardware.gnss@1.1",
"android.hardware.gnss@2.0",
"android.hardware.gnss-V2-ndk",
"android.hardware.gnss-V3-ndk",
],
static_libs: [
"android.hardware.gnss@common-default-lib",

View File

@@ -40,7 +40,7 @@ cc_test {
"android.hardware.gnss@2.0",
"android.hardware.gnss@2.1",
"android.hardware.gnss@common-vts-lib",
"android.hardware.gnss-V2-cpp",
"android.hardware.gnss-V3-cpp",
],
shared_libs: [
"libvintf",

View File

@@ -45,6 +45,7 @@ interface IGnssCallback {
void gnssSetSystemInfoCb(in android.hardware.gnss.IGnssCallback.GnssSystemInfo info);
void gnssRequestTimeCb();
void gnssRequestLocationCb(in boolean independentFromGnss, in boolean isUserEmergency);
void gnssSetSignalTypeCapabilitiesCb(in android.hardware.gnss.GnssSignalType[] gnssSignalTypes);
const int CAPABILITY_SCHEDULING = 1;
const int CAPABILITY_MSB = 2;
const int CAPABILITY_MSA = 4;

View File

@@ -18,6 +18,7 @@ package android.hardware.gnss;
import android.hardware.gnss.GnssConstellationType;
import android.hardware.gnss.GnssLocation;
import android.hardware.gnss.GnssSignalType;
import android.hardware.gnss.IGnssConfiguration;
import android.hardware.gnss.IGnssPsds;
@@ -308,4 +309,18 @@ interface IGnssCallback {
* during-call to E911, or up to 5 minutes after end-of-call or text to E911).
*/
void gnssRequestLocationCb(in boolean independentFromGnss, in boolean isUserEmergency);
/**
* Callback to inform the framework of the list of GnssSignalTypes the GNSS HAL implementation
* supports.
*
* These capabilities are static at runtime, i.e., they represent the signal types the
* GNSS implementation supports without considering the temporary disabled signal types such as
* the blocklisted satellites/constellations or the constellations disabled by regional
* restrictions.
*
* @param gnssSignalTypes a list of GnssSignalTypes specifying the constellations, carrier
* frequencies, and the code types the GNSS HAL implementation supports.
*/
void gnssSetSignalTypeCapabilitiesCb(in GnssSignalType[] gnssSignalTypes);
}

View File

@@ -50,7 +50,7 @@ cc_binary {
"android.hardware.gnss.measurement_corrections@1.1",
"android.hardware.gnss.measurement_corrections@1.0",
"android.hardware.gnss.visibility_control@1.0",
"android.hardware.gnss-V2-ndk",
"android.hardware.gnss-V3-ndk",
],
srcs: [
"AGnssRil.cpp",

View File

@@ -74,7 +74,21 @@ ScopedAStatus Gnss::setCallback(const std::shared_ptr<IGnssCallback>& callback)
if (!status.isOk()) {
ALOGE("%s: Unable to invoke callback.gnssSetSystemInfoCb", __func__);
}
GnssSignalType signalType1 = {
.constellation = GnssConstellationType::GPS,
.carrierFrequencyHz = 1.59975e+09,
.codeType = GnssSignalType::CODE_TYPE_C,
};
GnssSignalType signalType2 = {
.constellation = GnssConstellationType::GLONASS,
.carrierFrequencyHz = 1.59975e+09,
.codeType = GnssSignalType::CODE_TYPE_C,
};
status = sGnssCallback->gnssSetSignalTypeCapabilitiesCb(
std::vector<GnssSignalType>({signalType1, signalType2}));
if (!status.isOk()) {
ALOGE("%s: Unable to invoke callback.gnssSetSignalTypeCapabilitiesCb", __func__);
}
return ScopedAStatus::ok();
}

View File

@@ -1,7 +1,7 @@
<manifest version="1.0" type="device">
<hal format="aidl">
<name>android.hardware.gnss</name>
<version>2</version>
<version>3</version>
<interface>
<name>IGnss</name>
<instance>default</instance>

View File

@@ -51,7 +51,7 @@ cc_test {
"libbinder",
],
static_libs: [
"android.hardware.gnss-V2-cpp",
"android.hardware.gnss-V3-cpp",
"android.hardware.gnss@common-vts-lib",
],
test_suites: [

View File

@@ -23,6 +23,7 @@ using android::binder::Status;
using android::hardware::gnss::GnssLocation;
using GnssSvInfo = android::hardware::gnss::IGnssCallback::GnssSvInfo;
using GnssSystemInfo = android::hardware::gnss::IGnssCallback::GnssSystemInfo;
using GnssSignalType = android::hardware::gnss::GnssSignalType;
Status GnssCallbackAidl::gnssSetCapabilitiesCb(const int capabilities) {
ALOGI("Capabilities received %#08x", capabilities);
@@ -30,6 +31,20 @@ Status GnssCallbackAidl::gnssSetCapabilitiesCb(const int capabilities) {
return Status::ok();
}
Status GnssCallbackAidl::gnssSetSignalTypeCapabilitiesCb(
const std::vector<GnssSignalType>& signalTypes) {
ALOGI("SignalTypeCapabilities received");
std::ostringstream ss;
for (auto& signalType : signalTypes) {
ss << "[constellation=" << (int)signalType.constellation
<< ", carrierFrequencyHz=" << signalType.carrierFrequencyHz
<< ", codeType=" << signalType.codeType << "], ";
}
ALOGI("%s", ss.str().c_str());
signal_type_capabilities_cbq_.store(signalTypes);
return Status::ok();
}
Status GnssCallbackAidl::gnssStatusCb(const GnssStatusValue /* status */) {
ALOGI("gnssStatusCb");
return Status::ok();

View File

@@ -25,6 +25,7 @@ class GnssCallbackAidl : public android::hardware::gnss::BnGnssCallback {
public:
GnssCallbackAidl()
: capabilities_cbq_("capabilities"),
signal_type_capabilities_cbq_("signal_type_capabilities"),
info_cbq_("system_info"),
location_cbq_("location"),
sv_info_list_cbq_("sv_info"),
@@ -32,6 +33,8 @@ class GnssCallbackAidl : public android::hardware::gnss::BnGnssCallback {
~GnssCallbackAidl(){};
android::binder::Status gnssSetCapabilitiesCb(const int capabilities) override;
android::binder::Status gnssSetSignalTypeCapabilitiesCb(
const std::vector<android::hardware::gnss::GnssSignalType>& signalTypes) override;
android::binder::Status gnssStatusCb(const GnssStatusValue status) override;
android::binder::Status gnssSvStatusCb(const std::vector<GnssSvInfo>& svInfoList) override;
android::binder::Status gnssLocationCb(
@@ -45,10 +48,14 @@ class GnssCallbackAidl : public android::hardware::gnss::BnGnssCallback {
const bool isUserEmergency) override;
int last_capabilities_;
std::vector<android::hardware::gnss::GnssSignalType> last_signal_type_capabilities;
android::hardware::gnss::IGnssCallback::GnssSystemInfo last_info_;
android::hardware::gnss::GnssLocation last_location_;
android::hardware::gnss::common::GnssCallbackEventQueue<int> capabilities_cbq_;
android::hardware::gnss::common::GnssCallbackEventQueue<
std::vector<android::hardware::gnss::GnssSignalType>>
signal_type_capabilities_cbq_;
android::hardware::gnss::common::GnssCallbackEventQueue<
android::hardware::gnss::IGnssCallback::GnssSystemInfo>
info_cbq_;

View File

@@ -105,6 +105,15 @@ void GnssHalTest::SetUpGnssCallback() {
EXPECT_TRUE(aidl_gnss_cb_->info_cbq_.retrieve(aidl_gnss_cb_->last_info_, TIMEOUT_SEC));
EXPECT_EQ(aidl_gnss_cb_->info_cbq_.calledCount(), 1);
}
/*
* SignalTypeCapabilities callback should trigger.
*/
if (aidl_gnss_hal_->getInterfaceVersion() >= 3) {
EXPECT_TRUE(aidl_gnss_cb_->signal_type_capabilities_cbq_.retrieve(
aidl_gnss_cb_->last_signal_type_capabilities, TIMEOUT_SEC));
EXPECT_EQ(aidl_gnss_cb_->signal_type_capabilities_cbq_.calledCount(), 1);
}
}
void GnssHalTest::TearDown() {

View File

@@ -57,6 +57,6 @@ cc_library_static {
"android.hardware.gnss@2.1",
"android.hardware.gnss.measurement_corrections@1.1",
"android.hardware.gnss.measurement_corrections@1.0",
"android.hardware.gnss-V2-ndk",
"android.hardware.gnss-V3-ndk",
],
}

View File

@@ -44,7 +44,7 @@ cc_library_static {
"android.hardware.gnss@2.1",
"android.hardware.gnss.measurement_corrections@1.0",
"android.hardware.gnss.measurement_corrections@1.1",
"android.hardware.gnss-V2-cpp",
"android.hardware.gnss-V3-cpp",
],
static_libs: [
"libgtest",