199552fe9Sopenharmony_ci/*
299552fe9Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
399552fe9Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
499552fe9Sopenharmony_ci * you may not use this file except in compliance with the License.
599552fe9Sopenharmony_ci * You may obtain a copy of the License at
699552fe9Sopenharmony_ci *
799552fe9Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
899552fe9Sopenharmony_ci *
999552fe9Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1099552fe9Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1199552fe9Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1299552fe9Sopenharmony_ci * See the License for the specific language governing permissions and
1399552fe9Sopenharmony_ci * limitations under the License.
1499552fe9Sopenharmony_ci */
1599552fe9Sopenharmony_ci#ifndef FOUNDATION_RESOURCESCHEDULE_STANDBY_SERVICE_SERVICES_CORE_INCLUDE_NAP_STATE_H
1699552fe9Sopenharmony_ci#define FOUNDATION_RESOURCESCHEDULE_STANDBY_SERVICE_SERVICES_CORE_INCLUDE_NAP_STATE_H
1799552fe9Sopenharmony_ci
1899552fe9Sopenharmony_ci#include "base_state.h"
1999552fe9Sopenharmony_ci
2099552fe9Sopenharmony_cinamespace OHOS {
2199552fe9Sopenharmony_cinamespace DevStandbyMgr {
2299552fe9Sopenharmony_ciclass IStateManagerAdapter;
2399552fe9Sopenharmony_ciclass NapState : public BaseState, public StateWithMaint, public std::enable_shared_from_this<NapState> {
2499552fe9Sopenharmony_cipublic:
2599552fe9Sopenharmony_ci    NapState(uint32_t curState, uint32_t curPhase, const std::shared_ptr<IStateManagerAdapter>&
2699552fe9Sopenharmony_ci        stateManager, std::shared_ptr<AppExecFwk::EventHandler>& handler);
2799552fe9Sopenharmony_ci    ErrCode BeginState() override;
2899552fe9Sopenharmony_ci    ErrCode EndState() override;
2999552fe9Sopenharmony_ci    bool CheckTransitionValid(uint32_t nextState) override;
3099552fe9Sopenharmony_ci    void EndEvalCurrentState(bool evalResult) override;
3199552fe9Sopenharmony_ci    void OnStateBlocked() override;
3299552fe9Sopenharmony_ciprotected:
3399552fe9Sopenharmony_ci    bool IsInFinalPhase() override;
3499552fe9Sopenharmony_ciprivate:
3599552fe9Sopenharmony_ci    void SetPhaseTransitTask(bool evalResult);
3699552fe9Sopenharmony_ci    void HandleEvalResToSleepState(bool evalResult);
3799552fe9Sopenharmony_ci};
3899552fe9Sopenharmony_ci}  // namespace DevStandbyMgr
3999552fe9Sopenharmony_ci}  // namespace OHOS
4099552fe9Sopenharmony_ci#endif  // FOUNDATION_RESOURCESCHEDULE_STANDBY_SERVICE_SERVICES_CORE_INCLUDE_NAP_STATE_H