1ea497e4dSopenharmony_ci/*
2ea497e4dSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
3ea497e4dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4ea497e4dSopenharmony_ci * you may not use this file except in compliance with the License.
5ea497e4dSopenharmony_ci * You may obtain a copy of the License at
6ea497e4dSopenharmony_ci *
7ea497e4dSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8ea497e4dSopenharmony_ci *
9ea497e4dSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10ea497e4dSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11ea497e4dSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12ea497e4dSopenharmony_ci * See the License for the specific language governing permissions and
13ea497e4dSopenharmony_ci * limitations under the License.
14ea497e4dSopenharmony_ci */
15ea497e4dSopenharmony_ci
16ea497e4dSopenharmony_ci#ifndef SCREEN_BRIGHTNESS_MANAGER
17ea497e4dSopenharmony_ci#define SCREEN_BRIGHTNESS_MANAGER
18ea497e4dSopenharmony_ci
19ea497e4dSopenharmony_ci#include <map>
20ea497e4dSopenharmony_ci#include <mutex>
21ea497e4dSopenharmony_ci
22ea497e4dSopenharmony_ci#include "nocopyable.h"
23ea497e4dSopenharmony_ci
24ea497e4dSopenharmony_ci#include "face_auth_all_in_one_executor_hdi.h"
25ea497e4dSopenharmony_ci#include "face_auth_hdi.h"
26ea497e4dSopenharmony_ci#include "isa_command_processor.h"
27ea497e4dSopenharmony_ci#include "iscreen_brightness_task.h"
28ea497e4dSopenharmony_ci
29ea497e4dSopenharmony_cinamespace OHOS {
30ea497e4dSopenharmony_cinamespace UserIam {
31ea497e4dSopenharmony_cinamespace FaceAuth {
32ea497e4dSopenharmony_cinamespace UserAuth = OHOS::UserIam::UserAuth;
33ea497e4dSopenharmony_ciclass ScreenBrightnessManager : public std::enable_shared_from_this<ScreenBrightnessManager>,
34ea497e4dSopenharmony_ci                                public ISaCommandProcessor,
35ea497e4dSopenharmony_ci                                public NoCopyable {
36ea497e4dSopenharmony_cipublic:
37ea497e4dSopenharmony_ci    ScreenBrightnessManager() = default;
38ea497e4dSopenharmony_ci    ~ScreenBrightnessManager() override = default;
39ea497e4dSopenharmony_ci    static std::shared_ptr<ScreenBrightnessManager> GetInstance();
40ea497e4dSopenharmony_ci
41ea497e4dSopenharmony_ci    UserAuth::ResultCode ProcessSaCommand(std::shared_ptr<FaceAuthAllInOneExecutorHdi> executor,
42ea497e4dSopenharmony_ci        const SaCommand &command) override;
43ea497e4dSopenharmony_ci    void OnHdiDisconnect(std::shared_ptr<FaceAuthAllInOneExecutorHdi> executor) override;
44ea497e4dSopenharmony_ci
45ea497e4dSopenharmony_ci    std::shared_ptr<IScreenBrightnessTask> GetCurrentTask();
46ea497e4dSopenharmony_ci
47ea497e4dSopenharmony_ciprivate:
48ea497e4dSopenharmony_ci    UserAuth::ResultCode ProcessScreenBrightnessIncreaseBegin(std::shared_ptr<FaceAuthAllInOneExecutorHdi> executor,
49ea497e4dSopenharmony_ci        const SaCommandParam param);
50ea497e4dSopenharmony_ci    UserAuth::ResultCode ProcessScreenBrightnessIncreaseEnd(std::shared_ptr<FaceAuthAllInOneExecutorHdi> executor,
51ea497e4dSopenharmony_ci        const SaCommandParam param);
52ea497e4dSopenharmony_ci
53ea497e4dSopenharmony_ci    std::shared_ptr<FaceAuthAllInOneExecutorHdi> executorInProc_ = nullptr;
54ea497e4dSopenharmony_ci    std::shared_ptr<IScreenBrightnessTask> taskInProc_ = nullptr;
55ea497e4dSopenharmony_ci    std::mutex mutex_;
56ea497e4dSopenharmony_ci};
57ea497e4dSopenharmony_ci} // namespace FaceAuth
58ea497e4dSopenharmony_ci} // namespace UserIam
59ea497e4dSopenharmony_ci} // namespace OHOS
60ea497e4dSopenharmony_ci
61ea497e4dSopenharmony_ci#endif // SCREEN_BRIGHTNESS_MANAGER