| /* |
| * |
| * Copyright (c) 2023 Project CHIP Authors |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| #pragma once |
| |
| #ifndef ICD_SLEEP_TIME_JITTER_MS |
| #define ICD_SLEEP_TIME_JITTER_MS (CHIP_CONFIG_ICD_IDLE_MODE_DURATION_SEC * 0.75) |
| #endif |
| |
| #ifndef ICD_ACTIVE_TIME_JITTER_MS |
| #define ICD_ACTIVE_TIME_JITTER_MS 300 |
| #endif |
| |
| namespace chip { |
| namespace app { |
| |
| /** |
| * @brief Public API used by the ICDManager to expose when different events occur. |
| * ICDManager::RegisterObserver can be used to register as an Observer to be notified when these events occur. |
| * These functions are called synchronously. |
| */ |
| class ICDStateObserver |
| { |
| public: |
| virtual ~ICDStateObserver() {} |
| |
| /** |
| * @brief API called when the ICD enters ActiveMode. API isn't called if we need to extend the remaining active mode timer |
| * duration. API is called after the ICDManager has finished executing its internal actions. |
| */ |
| virtual void OnEnterActiveMode() = 0; |
| |
| /** |
| * @brief API called when the ICD enters IdleMode. |
| * API is called after the ICDManager has finished executing its internal actions. |
| */ |
| virtual void OnEnterIdleMode() = 0; |
| |
| /** |
| * @brief API is called when the ICD is about to enter IdleMode. API is called when there is `ICD_ACTIVE_TIME_JITTER_MS` of time |
| * remaining to the active mode timer. |
| * This API is only called once per transition from ActiveMode to IdleMode. |
| * If OnTransitionToIdle triggers the active mode timer to increase, the next time we are about to enter IdleMode, |
| * this API will not be called. |
| */ |
| virtual void OnTransitionToIdle() = 0; |
| |
| /** |
| * @brief API is called when the ICD changes operating mode. This API is only called if the ICD changes state, not when it |
| * remains in the same state. |
| * API is called after the ICDManager has finished executing its internal actions. |
| */ |
| virtual void OnICDModeChange() = 0; |
| }; |
| |
| } // namespace app |
| } // namespace chip |