3 * Copyright (c) 2020 Project CHIP Authors
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
24 #include <drivers/gpio.h>
29 enum Action_t : uint8_t
38 enum State_t : uint8_t
44 using LightingCallback_fn = void (*)(Action_t, int32_t);
46 int Init(const device * pwmDevice, uint32_t pwmChannel);
47 bool IsTurnedOn() const { return mState == kState_On; }
48 uint8_t GetLevel() const { return mLevel; }
49 bool InitiateAction(Action_t aAction, int32_t aActor, uint8_t size, uint8_t * value);
50 void SetCallbacks(LightingCallback_fn aActionInitiated_CB, LightingCallback_fn aActionCompleted_CB);
53 static constexpr uint8_t kMaxLevel = 255;
55 friend LightingManager & LightingMgr();
58 const device * mPwmDevice;
61 LightingCallback_fn mActionInitiated_CB;
62 LightingCallback_fn mActionCompleted_CB;
65 void SetLevel(uint8_t aLevel);
68 static LightingManager sLight;
71 inline LightingManager & LightingMgr(void)
73 return LightingManager::sLight;