/* * Copyright (c) 2023 Fancy Code. * 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. */ #ifndef LEDS_HANDLE_H #define LEDS_HANDLE_H #include "SetLedState.h" enum class DeviceStatus { NORMAL = 0, TAKING_PICTURE_OR_VIDEO, END }; class LedsHandle { public: LedsHandle() = default; virtual ~LedsHandle() = default; protected: /** * @brief This function is designed as a virtual function so that when the board uses different LED circuits, this * function can be overloaded to achieve polymorphic control of the light. * @param status * @param keepAliveTime * @param blinkPeriod */ virtual void ControlDeviceStatusLed(const DeviceStatus &status, const long int &keepAliveTime = KEEP_ALIVE_FOREVER, const unsigned int &blinkPeriod = LED_NOT_BLINK); void DeleteDeviceStatusLed(void); void DeleteAllLeds(void); private: std::shared_ptr mDeviceStatus; }; #endif