19762338dSopenharmony_ci/*
29762338dSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
39762338dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
49762338dSopenharmony_ci * you may not use this file except in compliance with the License.
59762338dSopenharmony_ci * You may obtain a copy of the License at
69762338dSopenharmony_ci *
79762338dSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
89762338dSopenharmony_ci *
99762338dSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
109762338dSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
119762338dSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
129762338dSopenharmony_ci * See the License for the specific language governing permissions and
139762338dSopenharmony_ci * limitations under the License.
149762338dSopenharmony_ci */
159762338dSopenharmony_ci
169762338dSopenharmony_ci#include "idevmgr_hdi.h"
179762338dSopenharmony_ci#include <memory>
189762338dSopenharmony_ci#include <iostream>
199762338dSopenharmony_ci#include <cmath>
209762338dSopenharmony_ci#include <cstdio>
219762338dSopenharmony_ci#include <unistd.h>
229762338dSopenharmony_ci#include <gtest/gtest.h>
239762338dSopenharmony_ci#include <securec.h>
249762338dSopenharmony_ci#ifdef FEATURE_GNSS_SUPPORT
259762338dSopenharmony_ci#include <osal_mem.h>
269762338dSopenharmony_ci#include "hdf_base.h"
279762338dSopenharmony_ci#include "hdf_log.h"
289762338dSopenharmony_ci#include "osal_time.h"
299762338dSopenharmony_ci#include "hdf_sbuf.h"
309762338dSopenharmony_ci#include "v2_0/ignss_interface.h"
319762338dSopenharmony_ci#include "gnss_callback_impl.h"
329762338dSopenharmony_ci
339762338dSopenharmony_ciusing namespace OHOS::HDI::Location::Gnss::V2_0;
349762338dSopenharmony_ci#endif
359762338dSopenharmony_ciusing namespace std;
369762338dSopenharmony_ciusing namespace testing::ext;
379762338dSopenharmony_ci
389762338dSopenharmony_cinamespace {
399762338dSopenharmony_ci    #ifdef FEATURE_GNSS_SUPPORT
409762338dSopenharmony_ci    sptr<IGnssInterface> g_ignssHci = nullptr;
419762338dSopenharmony_ci    constexpr const char *AGNSS_SERVICE_NAME = "agnss_interface_service";
429762338dSopenharmony_ci    constexpr const char *GNSS_SERVICE_NAME = "gnss_interface_service";
439762338dSopenharmony_ci    constexpr const char *GEOFENCE_SERVICE_NAME = "geofence_interface_service";
449762338dSopenharmony_ci    #endif
459762338dSopenharmony_ci}
469762338dSopenharmony_ci
479762338dSopenharmony_ciclass LocationGnssTest : public testing::Test {
489762338dSopenharmony_cipublic:
499762338dSopenharmony_ci    static void SetUpTestCase();
509762338dSopenharmony_ci    static void TearDownTestCase();
519762338dSopenharmony_ci    void SetUp();
529762338dSopenharmony_ci    void TearDown();
539762338dSopenharmony_ci};
549762338dSopenharmony_ci
559762338dSopenharmony_ci#ifdef FEATURE_GNSS_SUPPORT
569762338dSopenharmony_ciint32_t GnssCallbackImpl::ReportLocation(const LocationInfo& location)
579762338dSopenharmony_ci{
589762338dSopenharmony_ci    if (location.timeSinceBoot != 0) {
599762338dSopenharmony_ci        printf("Location success!!\n");
609762338dSopenharmony_ci        return HDF_SUCCESS;
619762338dSopenharmony_ci    }
629762338dSopenharmony_ci    else{
639762338dSopenharmony_ci        printf("Location fail!!\n");
649762338dSopenharmony_ci        return HDF_FAILURE;
659762338dSopenharmony_ci    }
669762338dSopenharmony_ci}
679762338dSopenharmony_ci
689762338dSopenharmony_ciint32_t GnssCallbackImpl::ReportGnssWorkingStatus(GnssWorkingStatus status)
699762338dSopenharmony_ci{
709762338dSopenharmony_ci    if (status == GnssWorkingStatus::GNSS_WORKING_STATUS_NONE) {
719762338dSopenharmony_ci        printf("GNSS_WORKING_STATUS_NONE\n");
729762338dSopenharmony_ci        return HDF_SUCCESS;
739762338dSopenharmony_ci    } else if (status == GnssWorkingStatus::GNSS_WORKING_STATUS_SESSION_BEGIN) {
749762338dSopenharmony_ci        printf("GNSS_WORKING_STATUS_SESSION_BEGIN\n");
759762338dSopenharmony_ci        return HDF_SUCCESS;
769762338dSopenharmony_ci    } else if (status == GnssWorkingStatus::GNSS_WORKING_STATUS_SESSION_END) {
779762338dSopenharmony_ci        printf("GNSS_WORKING_STATUS_SESSION_END\n");
789762338dSopenharmony_ci        return HDF_SUCCESS;
799762338dSopenharmony_ci    } else if (status == GnssWorkingStatus::GNSS_WORKING_STATUS_ENGINE_ON) {
809762338dSopenharmony_ci        printf("GNSS_WORKING_STATUS_ENGINE_ON\n");
819762338dSopenharmony_ci        return HDF_SUCCESS;
829762338dSopenharmony_ci    } else if (status == GnssWorkingStatus::GNSS_WORKING_STATUS_ENGINE_OFF) {
839762338dSopenharmony_ci        printf("GNSS_WORKING_STATUS_ENGINE_OFF\n");
849762338dSopenharmony_ci        return HDF_SUCCESS;
859762338dSopenharmony_ci    } else {
869762338dSopenharmony_ci        printf("Gnss status fail\n");
879762338dSopenharmony_ci        return HDF_FAILURE;
889762338dSopenharmony_ci    }
899762338dSopenharmony_ci}
909762338dSopenharmony_ci
919762338dSopenharmony_ciint32_t GnssCallbackImpl::ReportNmea(int64_t timestamp, const std::string& nmea, int32_t length)
929762338dSopenharmony_ci{
939762338dSopenharmony_ci    (void)timestamp;
949762338dSopenharmony_ci    (void)nmea;
959762338dSopenharmony_ci    if (length >= 0) {
969762338dSopenharmony_ci        printf("Report nmea success\n");
979762338dSopenharmony_ci        return HDF_SUCCESS;
989762338dSopenharmony_ci    }
999762338dSopenharmony_ci    else{
1009762338dSopenharmony_ci        printf("Report nmea fail\n");
1019762338dSopenharmony_ci        return HDF_FAILURE;
1029762338dSopenharmony_ci    }
1039762338dSopenharmony_ci}
1049762338dSopenharmony_ci
1059762338dSopenharmony_ciint32_t GnssCallbackImpl::ReportGnssCapabilities(unsigned int capabilities)
1069762338dSopenharmony_ci{
1079762338dSopenharmony_ci    (void)capabilities;
1089762338dSopenharmony_ci    return HDF_SUCCESS;
1099762338dSopenharmony_ci}
1109762338dSopenharmony_ci
1119762338dSopenharmony_ciint32_t GnssCallbackImpl::ReportSatelliteStatusInfo(const SatelliteStatusInfo& info)
1129762338dSopenharmony_ci{
1139762338dSopenharmony_ci    if (info.satellitesNumber <= 0) {
1149762338dSopenharmony_ci        printf("SvStatusCallback, satellites_num <= 0!\n");
1159762338dSopenharmony_ci        return HDF_ERR_INVALID_PARAM;
1169762338dSopenharmony_ci    }
1179762338dSopenharmony_ci    if (((info.carrierFrequencies).size()) > 0) {
1189762338dSopenharmony_ci        printf("Get satellite info success!!\n");
1199762338dSopenharmony_ci        return HDF_SUCCESS;
1209762338dSopenharmony_ci    }
1219762338dSopenharmony_ci    else{
1229762338dSopenharmony_ci        printf("Get satellite info fail!!\n");
1239762338dSopenharmony_ci        return HDF_FAILURE;
1249762338dSopenharmony_ci    }
1259762338dSopenharmony_ci}
1269762338dSopenharmony_ci
1279762338dSopenharmony_ciint32_t GnssCallbackImpl::RequestGnssReferenceInfo(GnssRefInfoType type)
1289762338dSopenharmony_ci{
1299762338dSopenharmony_ci    (void)type;
1309762338dSopenharmony_ci    return HDF_SUCCESS;
1319762338dSopenharmony_ci}
1329762338dSopenharmony_ci
1339762338dSopenharmony_ciint32_t GnssCallbackImpl::RequestPredictGnssData()
1349762338dSopenharmony_ci{
1359762338dSopenharmony_ci    return HDF_SUCCESS;
1369762338dSopenharmony_ci}
1379762338dSopenharmony_ci
1389762338dSopenharmony_ciint32_t GnssCallbackImpl::ReportCachedLocation(const std::vector<LocationInfo>& gnssLocations)
1399762338dSopenharmony_ci{
1409762338dSopenharmony_ci    (void)gnssLocations;
1419762338dSopenharmony_ci    return HDF_SUCCESS;
1429762338dSopenharmony_ci}
1439762338dSopenharmony_ci
1449762338dSopenharmony_ciint32_t GnssCallbackImpl::ReportGnssNiNotification(const GnssNiNotificationRequest& notification)
1459762338dSopenharmony_ci{
1469762338dSopenharmony_ci    (void)notification;
1479762338dSopenharmony_ci    return HDF_SUCCESS;
1489762338dSopenharmony_ci}
1499762338dSopenharmony_ci#endif
1509762338dSopenharmony_ci
1519762338dSopenharmony_civoid LocationGnssTest::SetUpTestCase()
1529762338dSopenharmony_ci{
1539762338dSopenharmony_ci#ifdef FEATURE_GNSS_SUPPORT
1549762338dSopenharmony_ci    auto devmgr = HDI::DeviceManager::V1_0::IDeviceManager::Get();
1559762338dSopenharmony_ci    if (devmgr == nullptr) {
1569762338dSopenharmony_ci        printf("fail to get devmgr.\n");
1579762338dSopenharmony_ci        return;
1589762338dSopenharmony_ci    }
1599762338dSopenharmony_ci    if (devmgr->LoadDevice(GNSS_SERVICE_NAME) != 0) {
1609762338dSopenharmony_ci        printf("Load gnss service failed!\n");
1619762338dSopenharmony_ci        return;
1629762338dSopenharmony_ci    }
1639762338dSopenharmony_ci    if (devmgr->LoadDevice(AGNSS_SERVICE_NAME) != 0) {
1649762338dSopenharmony_ci        printf("Load agnss service failed!\n");
1659762338dSopenharmony_ci        return;
1669762338dSopenharmony_ci    }
1679762338dSopenharmony_ci    if (devmgr->LoadDevice(GEOFENCE_SERVICE_NAME) != 0) {
1689762338dSopenharmony_ci        printf("Load geofence service failed!\n");
1699762338dSopenharmony_ci        return;
1709762338dSopenharmony_ci    }
1719762338dSopenharmony_ci    g_ignssHci = IGnssInterface::Get();
1729762338dSopenharmony_ci#endif
1739762338dSopenharmony_ci}
1749762338dSopenharmony_ci
1759762338dSopenharmony_civoid LocationGnssTest::TearDownTestCase()
1769762338dSopenharmony_ci{
1779762338dSopenharmony_ci#ifdef FEATURE_GNSS_SUPPORT
1789762338dSopenharmony_ci    auto devmgr = HDI::DeviceManager::V1_0::IDeviceManager::Get();
1799762338dSopenharmony_ci    if (devmgr == nullptr) {
1809762338dSopenharmony_ci        printf("fail to get devmgr.\n");
1819762338dSopenharmony_ci        return;
1829762338dSopenharmony_ci    }
1839762338dSopenharmony_ci    if (devmgr->UnloadDevice(GNSS_SERVICE_NAME) != 0) {
1849762338dSopenharmony_ci        printf("Load gnss service failed!\n");
1859762338dSopenharmony_ci        return;
1869762338dSopenharmony_ci    }
1879762338dSopenharmony_ci    if (devmgr->UnloadDevice(AGNSS_SERVICE_NAME) != 0) {
1889762338dSopenharmony_ci        printf("Load agnss service failed!\n");
1899762338dSopenharmony_ci        return;
1909762338dSopenharmony_ci    }
1919762338dSopenharmony_ci    if (devmgr->UnloadDevice(GEOFENCE_SERVICE_NAME) != 0) {
1929762338dSopenharmony_ci        printf("Load geofence service failed!\n");
1939762338dSopenharmony_ci        return;
1949762338dSopenharmony_ci    }
1959762338dSopenharmony_ci#endif
1969762338dSopenharmony_ci}
1979762338dSopenharmony_ci
1989762338dSopenharmony_civoid LocationGnssTest::SetUp()
1999762338dSopenharmony_ci{
2009762338dSopenharmony_ci}
2019762338dSopenharmony_ci
2029762338dSopenharmony_civoid LocationGnssTest::TearDown()
2039762338dSopenharmony_ci{
2049762338dSopenharmony_ci}
2059762338dSopenharmony_ci
2069762338dSopenharmony_ci
2079762338dSopenharmony_ci/**
2089762338dSopenharmony_ci  * @tc.name: EnableGnss0100
2099762338dSopenharmony_ci  * @tc.desc: Enable the GNSS module and transmit the callback of the upper layer to the GNSS module..
2109762338dSopenharmony_ci  * @tc.type: FUNC
2119762338dSopenharmony_ci  */
2129762338dSopenharmony_ciHWTEST_F(LocationGnssTest, SUB_DriverSystem_EnableGnss_0100, TestSize.Level1)
2139762338dSopenharmony_ci{
2149762338dSopenharmony_ci#ifdef FEATURE_GNSS_SUPPORT
2159762338dSopenharmony_ci    if (g_ignssHci == nullptr) {
2169762338dSopenharmony_ci        ASSERT_NE(nullptr, g_ignssHci);
2179762338dSopenharmony_ci        return;
2189762338dSopenharmony_ci    }
2199762338dSopenharmony_ci    sptr<IGnssCallback> gnss_callback = new (std::nothrow) GnssCallbackImpl();
2209762338dSopenharmony_ci    if (gnss_callback == nullptr) {
2219762338dSopenharmony_ci        ASSERT_NE(nullptr, gnss_callback);
2229762338dSopenharmony_ci        return;
2239762338dSopenharmony_ci    }
2249762338dSopenharmony_ci    int32_t ret = g_ignssHci->EnableGnss(gnss_callback);
2259762338dSopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
2269762338dSopenharmony_ci    GnssStartType starttype = GnssStartType::GNSS_START_TYPE_NORMAL;
2279762338dSopenharmony_ci    int32_t ret1 = g_ignssHci->StartGnss(starttype);
2289762338dSopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret1);
2299762338dSopenharmony_ci#endif
2309762338dSopenharmony_ci}
2319762338dSopenharmony_ci
2329762338dSopenharmony_ci
2339762338dSopenharmony_ci/**
2349762338dSopenharmony_ci  * @tc.name: SetGnssConfigPara0100
2359762338dSopenharmony_ci  * @tc.desc: Setting gnss configuration parameters.
2369762338dSopenharmony_ci  * @tc.type: FUNC
2379762338dSopenharmony_ci  */
2389762338dSopenharmony_ciHWTEST_F(LocationGnssTest, SUB_DriverSystem_SetGnssConfigPara_0100, TestSize.Level1)
2399762338dSopenharmony_ci{
2409762338dSopenharmony_ci#ifdef FEATURE_GNSS_SUPPORT
2419762338dSopenharmony_ci    if (g_ignssHci == nullptr) {
2429762338dSopenharmony_ci        ASSERT_NE(nullptr, g_ignssHci);
2439762338dSopenharmony_ci        return;
2449762338dSopenharmony_ci    }
2459762338dSopenharmony_ci    GnssConfigPara para;
2469762338dSopenharmony_ci    para.gnssBasic.minInterval = 10;
2479762338dSopenharmony_ci    para.gnssBasic.gnssMode = GnssWorkingMode::GNSS_WORKING_MODE_STANDALONE;
2489762338dSopenharmony_ci    para.gnssCaching.interval = 20;
2499762338dSopenharmony_ci    para.gnssCaching.fifoFullNotify = true;
2509762338dSopenharmony_ci    int32_t ret = g_ignssHci->SetGnssConfigPara(para);
2519762338dSopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
2529762338dSopenharmony_ci#endif
2539762338dSopenharmony_ci}
2549762338dSopenharmony_ci
2559762338dSopenharmony_ci
2569762338dSopenharmony_ci/**
2579762338dSopenharmony_ci  * @tc.name: SetGnssReferenceInfo0100
2589762338dSopenharmony_ci  * @tc.desc: Inject reference information to the GNSS module.
2599762338dSopenharmony_ci  * @tc.type: FUNC
2609762338dSopenharmony_ci  */
2619762338dSopenharmony_ciHWTEST_F(LocationGnssTest, SUB_DriverSystem_SetGnssReferenceInfo_0100, TestSize.Level1)
2629762338dSopenharmony_ci{
2639762338dSopenharmony_ci#ifdef FEATURE_GNSS_SUPPORT
2649762338dSopenharmony_ci    if (g_ignssHci == nullptr) {
2659762338dSopenharmony_ci        ASSERT_NE(nullptr, g_ignssHci);
2669762338dSopenharmony_ci        return;
2679762338dSopenharmony_ci    }
2689762338dSopenharmony_ci    GnssRefInfo refInfo;
2699762338dSopenharmony_ci    refInfo.type = GnssRefInfoType::GNSS_REF_INFO_TIME;
2709762338dSopenharmony_ci    refInfo.time.time = 50;
2719762338dSopenharmony_ci    refInfo.time.elapsedRealtime = 100;
2729762338dSopenharmony_ci    refInfo.time.uncertaintyOfTime = 200;
2739762338dSopenharmony_ci    refInfo.gnssLocation.latitude = 39.56;
2749762338dSopenharmony_ci    refInfo.gnssLocation.longitude = 116.20;
2759762338dSopenharmony_ci    refInfo.gnssLocation.horizontalAccuracy = 90;
2769762338dSopenharmony_ci    refInfo.bestLocation.latitude = 39.58;
2779762338dSopenharmony_ci    refInfo.bestLocation.longitude = 116.45;
2789762338dSopenharmony_ci    refInfo.bestLocation.altitude = 110;
2799762338dSopenharmony_ci    refInfo.bestLocation.horizontalAccuracy = 60;
2809762338dSopenharmony_ci    refInfo.bestLocation.speed = 60;
2819762338dSopenharmony_ci    refInfo.bestLocation.bearing = 60;
2829762338dSopenharmony_ci    refInfo.bestLocation.timeForFix = 60;
2839762338dSopenharmony_ci    refInfo.bestLocation.timeSinceBoot = 60;
2849762338dSopenharmony_ci    int32_t ret = g_ignssHci->SetGnssReferenceInfo(refInfo);
2859762338dSopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
2869762338dSopenharmony_ci#endif
2879762338dSopenharmony_ci}
2889762338dSopenharmony_ci
2899762338dSopenharmony_ci/**
2909762338dSopenharmony_ci  * @tc.name: StopGnss0100
2919762338dSopenharmony_ci  * @tc.desc: Stop the navigation function in normal mode.
2929762338dSopenharmony_ci  * @tc.type: FUNC
2939762338dSopenharmony_ci  */
2949762338dSopenharmony_ciHWTEST_F(LocationGnssTest, SUB_DriverSystem_StopGnss_0100, TestSize.Level1)
2959762338dSopenharmony_ci{
2969762338dSopenharmony_ci#ifdef FEATURE_GNSS_SUPPORT
2979762338dSopenharmony_ci    if (g_ignssHci == nullptr) {
2989762338dSopenharmony_ci        ASSERT_NE(nullptr, g_ignssHci);
2999762338dSopenharmony_ci        return;
3009762338dSopenharmony_ci    }
3019762338dSopenharmony_ci    GnssStartType stoptype = GnssStartType::GNSS_START_TYPE_NORMAL;
3029762338dSopenharmony_ci    int32_t ret = g_ignssHci->StopGnss(stoptype);
3039762338dSopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
3049762338dSopenharmony_ci#endif
3059762338dSopenharmony_ci}
3069762338dSopenharmony_ci
3079762338dSopenharmony_ci/**
3089762338dSopenharmony_ci  * @tc.name: DeleteAuxiliaryData0100
3099762338dSopenharmony_ci  * @tc.desc: Delete the specified auxiliary data.
3109762338dSopenharmony_ci  * @tc.type: FUNC
3119762338dSopenharmony_ci  */
3129762338dSopenharmony_ciHWTEST_F(LocationGnssTest, SUB_DriverSystem_DeleteAuxiliaryData_0100, TestSize.Level1)
3139762338dSopenharmony_ci{
3149762338dSopenharmony_ci#ifdef FEATURE_GNSS_SUPPORT
3159762338dSopenharmony_ci    if (g_ignssHci == nullptr) {
3169762338dSopenharmony_ci        ASSERT_NE(nullptr, g_ignssHci);
3179762338dSopenharmony_ci        return;
3189762338dSopenharmony_ci    }
3199762338dSopenharmony_ci    GnssAuxiliaryDataType auxdata = GnssAuxiliaryDataType::GNSS_AUXILIARY_DATA_EPHEMERIS;
3209762338dSopenharmony_ci    int32_t ret = g_ignssHci->DeleteAuxiliaryData(auxdata);
3219762338dSopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
3229762338dSopenharmony_ci#endif
3239762338dSopenharmony_ci}
3249762338dSopenharmony_ci
3259762338dSopenharmony_ci
3269762338dSopenharmony_ci/**
3279762338dSopenharmony_ci  * @tc.name: SetPredictGnssData0100
3289762338dSopenharmony_ci  * @tc.desc: Ingesting Predict Gnss Data.
3299762338dSopenharmony_ci  * @tc.type: FUNC
3309762338dSopenharmony_ci  */
3319762338dSopenharmony_ciHWTEST_F(LocationGnssTest, SUB_DriverSystem_SetPredictGnssData_0100, TestSize.Level1)
3329762338dSopenharmony_ci{
3339762338dSopenharmony_ci#ifdef FEATURE_GNSS_SUPPORT
3349762338dSopenharmony_ci    if (g_ignssHci == nullptr) {
3359762338dSopenharmony_ci        ASSERT_NE(nullptr, g_ignssHci);
3369762338dSopenharmony_ci        return;
3379762338dSopenharmony_ci    }
3389762338dSopenharmony_ci    const std::string str1 = "testing";
3399762338dSopenharmony_ci    int32_t ret = g_ignssHci->SetPredictGnssData(str1);
3409762338dSopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
3419762338dSopenharmony_ci#endif
3429762338dSopenharmony_ci}
3439762338dSopenharmony_ci
3449762338dSopenharmony_ci/**
3459762338dSopenharmony_ci  * @tc.name: GetCachedGnssLocationsSize0100
3469762338dSopenharmony_ci  * @tc.desc: Obtain the number of locations that can be cached by the GNSS module.
3479762338dSopenharmony_ci  * @tc.type: FUNC
3489762338dSopenharmony_ci  */
3499762338dSopenharmony_ciHWTEST_F(LocationGnssTest, SUB_DriverSystem_GetCachedGnssLocationsSize_0100, TestSize.Level1)
3509762338dSopenharmony_ci{
3519762338dSopenharmony_ci#ifdef FEATURE_GNSS_SUPPORT
3529762338dSopenharmony_ci    if (g_ignssHci == nullptr) {
3539762338dSopenharmony_ci        ASSERT_NE(nullptr, g_ignssHci);
3549762338dSopenharmony_ci        return;
3559762338dSopenharmony_ci    }
3569762338dSopenharmony_ci    int cach_size = 60;
3579762338dSopenharmony_ci    int32_t ret = g_ignssHci->GetCachedGnssLocationsSize(cach_size);
3589762338dSopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
3599762338dSopenharmony_ci#endif
3609762338dSopenharmony_ci}
3619762338dSopenharmony_ci
3629762338dSopenharmony_ci/**
3639762338dSopenharmony_ci  * @tc.name: GetCachedGnssLocations0100
3649762338dSopenharmony_ci  * @tc.desc: Request to obtain all the location information in the GNSS cache at a time and clear the cache buffer.
3659762338dSopenharmony_ci  * @tc.type: FUNC
3669762338dSopenharmony_ci  */
3679762338dSopenharmony_ciHWTEST_F(LocationGnssTest, SUB_DriverSystem_GetCachedGnssLocations_0100, TestSize.Level1)
3689762338dSopenharmony_ci{
3699762338dSopenharmony_ci#ifdef FEATURE_GNSS_SUPPORT
3709762338dSopenharmony_ci    if (g_ignssHci == nullptr) {
3719762338dSopenharmony_ci        ASSERT_NE(nullptr, g_ignssHci);
3729762338dSopenharmony_ci        return;
3739762338dSopenharmony_ci    }
3749762338dSopenharmony_ci    int32_t ret = g_ignssHci->GetCachedGnssLocations();
3759762338dSopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
3769762338dSopenharmony_ci#endif
3779762338dSopenharmony_ci}
3789762338dSopenharmony_ci
3799762338dSopenharmony_ci/**
3809762338dSopenharmony_ci  * @tc.name: DisableGnss0100
3819762338dSopenharmony_ci  * @tc.desc: Disable the GNSS module.
3829762338dSopenharmony_ci  * @tc.type: FUNC
3839762338dSopenharmony_ci  */
3849762338dSopenharmony_ciHWTEST_F(LocationGnssTest, SUB_DriverSystem_DisableGnss_0100, TestSize.Level1)
3859762338dSopenharmony_ci{
3869762338dSopenharmony_ci#ifdef FEATURE_GNSS_SUPPORT
3879762338dSopenharmony_ci    if (g_ignssHci == nullptr) {
3889762338dSopenharmony_ci        ASSERT_NE(nullptr, g_ignssHci);
3899762338dSopenharmony_ci        return;
3909762338dSopenharmony_ci    }
3919762338dSopenharmony_ci    int32_t ret = g_ignssHci->DisableGnss();
3929762338dSopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
3939762338dSopenharmony_ci#endif
3949762338dSopenharmony_ci}
395