14f7ff21fSopenharmony_ci/*
24f7ff21fSopenharmony_ci * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
34f7ff21fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44f7ff21fSopenharmony_ci * you may not use this file except in compliance with the License.
54f7ff21fSopenharmony_ci * You may obtain a copy of the License at
64f7ff21fSopenharmony_ci *
74f7ff21fSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84f7ff21fSopenharmony_ci *
94f7ff21fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104f7ff21fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114f7ff21fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124f7ff21fSopenharmony_ci * See the License for the specific language governing permissions and
134f7ff21fSopenharmony_ci * limitations under the License.
144f7ff21fSopenharmony_ci */
154f7ff21fSopenharmony_ci
164f7ff21fSopenharmony_ci#ifndef FINGERPRINT_AUTH_DRIVER_HDI
174f7ff21fSopenharmony_ci#define FINGERPRINT_AUTH_DRIVER_HDI
184f7ff21fSopenharmony_ci
194f7ff21fSopenharmony_ci#include <vector>
204f7ff21fSopenharmony_ci
214f7ff21fSopenharmony_ci#include "iremote_broker.h"
224f7ff21fSopenharmony_ci#include "nocopyable.h"
234f7ff21fSopenharmony_ci
244f7ff21fSopenharmony_ci#include "iam_executor_iauth_driver_hdi.h"
254f7ff21fSopenharmony_ci#include "iam_executor_iauth_executor_hdi.h"
264f7ff21fSopenharmony_ci
274f7ff21fSopenharmony_ci#include "fingerprint_auth_all_in_one_executor_hdi.h"
284f7ff21fSopenharmony_ci#include "fingerprint_auth_interface_adapter.h"
294f7ff21fSopenharmony_ci
304f7ff21fSopenharmony_cinamespace OHOS {
314f7ff21fSopenharmony_cinamespace UserIam {
324f7ff21fSopenharmony_cinamespace FingerprintAuth {
334f7ff21fSopenharmony_cinamespace UserAuth = OHOS::UserIam::UserAuth;
344f7ff21fSopenharmony_ciclass FingerprintAuthDriverHdi : public UserAuth::IAuthDriverHdi, public NoCopyable {
354f7ff21fSopenharmony_cipublic:
364f7ff21fSopenharmony_ci    explicit FingerprintAuthDriverHdi(
374f7ff21fSopenharmony_ci        const std::shared_ptr<FingerprintAuthInterfaceAdapter> fingerprintAuthInterfaceAdapter);
384f7ff21fSopenharmony_ci    ~FingerprintAuthDriverHdi() override = default;
394f7ff21fSopenharmony_ci
404f7ff21fSopenharmony_ci    void GetExecutorList(std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> &executorList) override;
414f7ff21fSopenharmony_ci    void OnHdiDisconnect() override;
424f7ff21fSopenharmony_ci
434f7ff21fSopenharmony_ciprivate:
444f7ff21fSopenharmony_ci    static std::mutex mutex_;
454f7ff21fSopenharmony_ci    const std::shared_ptr<FingerprintAuthInterfaceAdapter> fingerprintAuthInterfaceAdapter_;
464f7ff21fSopenharmony_ci    std::vector<std::shared_ptr<FingerprintAllInOneExecutorHdi>> fingerprintAuthExecutorList_;
474f7ff21fSopenharmony_ci};
484f7ff21fSopenharmony_ci} // namespace FingerprintAuth
494f7ff21fSopenharmony_ci} // namespace UserIam
504f7ff21fSopenharmony_ci} // namespace OHOS
514f7ff21fSopenharmony_ci
524f7ff21fSopenharmony_ci#endif // FINGERPRINT_AUTH_DRIVER_HDI