Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad9f6b17 authored by Anil Admal's avatar Anil Admal Committed by Yu-Han Yang
Browse files

Add GNSS satellite blacklist VTS 2.0 test

- Use IGnssCallback@2.0::gnssSvStatusCb_2_0() method to receive SV
  info.
- Run the test only if SATELLITE_BLACKLIST capability is supported.
- IRNSS is excluded from blacklisting as IGnssConfiguration@2.0 is
  not updated to support the blacklisting new constellation type.
- Modify the corresponding VTS 1.1 test to run only if the GNSS
  HAL version is 1.1.

Bug: 128028791
Test: atest VtsHalGnssV2_0Target
Change-Id: Idd44a5a1c9d54d7434da945ecbd1ee90007f5054
Merged-In: Idd44a5a1c9d54d7434da945ecbd1ee90007f5054
(cherry picked from commit f4260267)
parent 1f12b532
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -16,10 +16,16 @@

#define LOG_TAG "GnssHalTest"

#include <android/hidl/manager/1.2/IServiceManager.h>
#include <hidl/ServiceManagement.h>

#include <gnss_hal_test.h>
#include <chrono>
#include "Utils.h"

using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;

using ::android::hardware::gnss::common::Utils;

// Implementations for the main test class for GNSS HAL
@@ -149,6 +155,28 @@ void GnssHalTest::StartAndCheckLocations(int count) {
    }
}

bool GnssHalTest::IsGnssHalVersion_1_1() const {
    using ::android::hidl::manager::V1_2::IServiceManager;
    sp<IServiceManager> manager = ::android::hardware::defaultServiceManager1_2();

    bool hasGnssHalVersion_1_1 = false;
    manager->listManifestByInterface(
            "android.hardware.gnss@1.1::IGnss",
            [&hasGnssHalVersion_1_1](const hidl_vec<hidl_string>& registered) {
                ASSERT_EQ(1, registered.size());
                hasGnssHalVersion_1_1 = true;
            });

    bool hasGnssHalVersion_2_0 = false;
    manager->listManifestByInterface(
            "android.hardware.gnss@2.0::IGnss",
            [&hasGnssHalVersion_2_0](const hidl_vec<hidl_string>& registered) {
                hasGnssHalVersion_2_0 = registered.size() != 0;
            });

    return hasGnssHalVersion_1_1 && !hasGnssHalVersion_2_0;
}

void GnssHalTest::notify() {
    std::unique_lock<std::mutex> lock(mtx_);
    notify_count_++;
+6 −0
Original line number Diff line number Diff line
@@ -145,6 +145,12 @@ class GnssHalTest : public ::testing::VtsHalHidlTargetTestBase {
     */
    void SetPositionMode(const int min_interval_msec, const bool low_power_mode);

    /*
     * IsGnssHalVersion_1_1:
     * returns  true if the GNSS HAL version is exactly 1.1.
     */
    bool IsGnssHalVersion_1_1() const;

    sp<IGnss> gnss_hal_;         // GNSS HAL to call into
    sp<IGnssCallback> gnss_cb_;  // Primary callback interface

+10 −0
Original line number Diff line number Diff line
@@ -209,6 +209,11 @@ IGnssConfiguration::BlacklistedSource FindStrongFrequentNonGpsSource(
 * formerly strongest satellite
 */
TEST_F(GnssHalTest, BlacklistIndividualSatellites) {
    if (!IsGnssHalVersion_1_1()) {
        ALOGI("Test BlacklistIndividualSatellites skipped. GNSS HAL version is greater than 1.1.");
        return;
    }

    const int kLocationsToAwait = 3;
    const int kRetriesToUnBlacklist = 10;

@@ -330,6 +335,11 @@ TEST_F(GnssHalTest, BlacklistIndividualSatellites) {
 * 4a & b) Clean up by turning off location, and send in empty blacklist.
 */
TEST_F(GnssHalTest, BlacklistConstellation) {
    if (!IsGnssHalVersion_1_1()) {
        ALOGI("Test BlacklistConstellation skipped. GNSS HAL version is greater than 1.1.");
        return;
    }

    const int kLocationsToAwait = 3;

    StartAndCheckLocations(kLocationsToAwait);
+0 −1
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ int main(int argc, char** argv) {
    ::testing::AddGlobalTestEnvironment(GnssHidlEnvironment::Instance());
    ::testing::InitGoogleTest(&argc, argv);
    GnssHidlEnvironment::Instance()->init(&argc, argv);
    // TODO (b/122463165): Expand coverage to include 1.1 and 1.0 VTS tests.
    int status = RUN_ALL_TESTS();
    ALOGI("Test result = %d", status);
    return status;
+2 −2
Original line number Diff line number Diff line
@@ -152,7 +152,7 @@ GnssHalTest::GnssCallback::GnssCallback()
      name_cbq_("name"),
      capabilities_cbq_("capabilities"),
      location_cbq_("location"),
      sv_info_cbq_("sv_info") {}
      sv_info_list_cbq_("sv_info") {}

Return<void> GnssHalTest::GnssCallback::gnssSetSystemInfoCb(
        const IGnssCallback_1_0::GnssSystemInfo& info) {
@@ -204,7 +204,7 @@ Return<void> GnssHalTest::GnssCallback::gnssSvStatusCb(const IGnssCallback_1_0::
Return<void> GnssHalTest::GnssCallback::gnssSvStatusCb_2_0(
        const hidl_vec<IGnssCallback_2_0::GnssSvInfo>& svInfoList) {
    ALOGI("gnssSvStatusCb_2_0. Size = %d", (int)svInfoList.size());
    sv_info_cbq_.store(svInfoList);
    sv_info_list_cbq_.store(svInfoList);
    return Void();
}

Loading