| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /*
- *
- * Copyright (c) 2019 Google LLC.
- * All rights reserved.
- *
- * 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
- #include <stdbool.h>
- #include <stdint.h>
- #include "AppEvent.h"
- #include "FreeRTOS.h"
- #include "timers.h" // provides FreeRTOS timer support
- #include <lib/core/CHIPError.h>
- class LightingManager
- {
- public:
- enum Action_t
- {
- ON_ACTION = 0,
- OFF_ACTION,
- INVALID_ACTION
- } Action;
- enum State_t
- {
- kState_OffInitiated = 0,
- kState_OffCompleted,
- kState_OnInitiated,
- kState_OnCompleted,
- } State;
- CHIP_ERROR Init();
- bool IsLightOn();
- void EnableAutoTurnOff(bool aOn);
- void SetAutoTurnOffDuration(uint32_t aDurationInSecs);
- bool IsActionInProgress();
- bool InitiateAction(int32_t aActor, Action_t aAction);
- typedef void (*Callback_fn_initiated)(Action_t, int32_t aActor);
- typedef void (*Callback_fn_completed)(Action_t);
- void SetCallbacks(Callback_fn_initiated aActionInitiated_CB, Callback_fn_completed aActionCompleted_CB);
- private:
- friend LightingManager & LightMgr(void);
- State_t mState;
- Callback_fn_initiated mActionInitiated_CB;
- Callback_fn_completed mActionCompleted_CB;
- bool mAutoTurnOff;
- uint32_t mAutoTurnOffDuration;
- bool mAutoTurnOffTimerArmed;
- void CancelTimer(void);
- void StartTimer(uint32_t aTimeoutMs);
- static void TimerEventHandler(TimerHandle_t xTimer);
- static void AutoTurnOffTimerEventHandler(AppEvent * aEvent);
- static void ActuatorMovementTimerEventHandler(AppEvent * aEvent);
- static LightingManager sLight;
- };
- inline LightingManager & LightMgr(void)
- {
- return LightingManager::sLight;
- }
|