1f16e0440Sopenharmony_ci/*
2f16e0440Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
3f16e0440Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4f16e0440Sopenharmony_ci * you may not use this file except in compliance with the License.
5f16e0440Sopenharmony_ci * You may obtain a copy of the License at
6f16e0440Sopenharmony_ci *
7f16e0440Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8f16e0440Sopenharmony_ci *
9f16e0440Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10f16e0440Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11f16e0440Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12f16e0440Sopenharmony_ci * See the License for the specific language governing permissions and
13f16e0440Sopenharmony_ci * limitations under the License.
14f16e0440Sopenharmony_ci */
15f16e0440Sopenharmony_ci
16f16e0440Sopenharmony_ci#ifndef BATTERY_SRV_PROXY_H
17f16e0440Sopenharmony_ci#define BATTERY_SRV_PROXY_H
18f16e0440Sopenharmony_ci
19f16e0440Sopenharmony_ci#include <cstdint>
20f16e0440Sopenharmony_ci#include <functional>
21f16e0440Sopenharmony_ci#include <iosfwd>
22f16e0440Sopenharmony_ci#include "refbase.h"
23f16e0440Sopenharmony_ci#include "nocopyable.h"
24f16e0440Sopenharmony_ci#include "iremote_broker.h"
25f16e0440Sopenharmony_ci#include "iremote_object.h"
26f16e0440Sopenharmony_ci#include "iremote_proxy.h"
27f16e0440Sopenharmony_ci#include "ibattery_srv.h"
28f16e0440Sopenharmony_ci#include "battery_info.h"
29f16e0440Sopenharmony_ci
30f16e0440Sopenharmony_cinamespace OHOS {
31f16e0440Sopenharmony_cinamespace PowerMgr {
32f16e0440Sopenharmony_ciclass BatterySrvProxy : public IRemoteProxy<IBatterySrv> {
33f16e0440Sopenharmony_cipublic:
34f16e0440Sopenharmony_ci    explicit BatterySrvProxy(const sptr<IRemoteObject>& impl)
35f16e0440Sopenharmony_ci        : IRemoteProxy<IBatterySrv>(impl) {}
36f16e0440Sopenharmony_ci    ~BatterySrvProxy() = default;
37f16e0440Sopenharmony_ci    DISALLOW_COPY_AND_MOVE(BatterySrvProxy);
38f16e0440Sopenharmony_ci
39f16e0440Sopenharmony_ci    virtual int32_t GetCapacity() override;
40f16e0440Sopenharmony_ci    virtual BatteryChargeState GetChargingStatus() override;
41f16e0440Sopenharmony_ci    virtual BatteryHealthState GetHealthStatus() override;
42f16e0440Sopenharmony_ci    virtual BatteryPluggedType GetPluggedType() override;
43f16e0440Sopenharmony_ci    virtual int32_t GetVoltage() override;
44f16e0440Sopenharmony_ci    virtual bool GetPresent() override;
45f16e0440Sopenharmony_ci    virtual std::string GetTechnology() override;
46f16e0440Sopenharmony_ci    virtual int32_t GetTotalEnergy() override;
47f16e0440Sopenharmony_ci    virtual int32_t GetCurrentAverage() override;
48f16e0440Sopenharmony_ci    virtual int32_t GetNowCurrent() override;
49f16e0440Sopenharmony_ci    virtual int32_t GetRemainEnergy() override;
50f16e0440Sopenharmony_ci    virtual int32_t GetBatteryTemperature() override;
51f16e0440Sopenharmony_ci    virtual BatteryCapacityLevel GetCapacityLevel() override;
52f16e0440Sopenharmony_ci    virtual int64_t GetRemainingChargeTime() override;
53f16e0440Sopenharmony_ci    virtual BatteryError SetBatteryConfig(const std::string& sceneName, const std::string& value) override;
54f16e0440Sopenharmony_ci    virtual BatteryError GetBatteryConfig(const std::string& sceneNam, std::string& result) override;
55f16e0440Sopenharmony_ci    virtual BatteryError IsBatteryConfigSupported(const std::string& sceneName, bool& result) override;
56f16e0440Sopenharmony_ciprivate:
57f16e0440Sopenharmony_ci    static inline BrokerDelegator<BatterySrvProxy> delegator_;
58f16e0440Sopenharmony_ci};
59f16e0440Sopenharmony_ci} // namespace PowerMgr
60f16e0440Sopenharmony_ci} // namespace OHOS
61f16e0440Sopenharmony_ci
62f16e0440Sopenharmony_ci#endif // BATTERY_SRV_PROXY_H
63