/* * Copyright (c) 2018 Actions Semiconductor Co., Ltd * * SPDX-License-Identifier: Apache-2.0 */ /** * @file led manager interface */ #ifndef __LED_MANGER_H__ #define __LED_MANGER_H__ #include <drivers/pwm.h> /** * @defgroup led_manager_apis App Led Manager APIs * @ingroup system_apis * @{ */ /** * @cond INTERNAL_HIDDEN */ #define DISPLAY_FOREVER 0xFFFF /** * INTERNAL_HIDDEN @endcond */ /** led status */ enum { /** led status on */ LED_ON = 1, /** led status of */ LED_OFF, /** led status blink */ LED_BLINK, /** led status breath*/ LED_BREATH, /** led status do nothing */ LED_NONE, }; enum { /**start state off */ LED_START_STATE_OFF = 0, /**start state on */ LED_START_STATE_ON, }; typedef void (*led_display_callback)(void); typedef int (*led_timeout_callback)(void); /** * @brief led manager init funcion * * This routine calls init led manager ,called by main * * @return 0 if invoked succsess. * @return others if invoked failed. */ int led_manager_init(void); /** * @brief led manager deinit funcion * * This routine calls deinit led manager ,called by main * * @return 0 if invoked succsess. * @return others if invoked failed. */ int led_manager_deinit(void); /** * @brief set led index display state * * This routine set led index display state , on or off * * @param led_index index of led * @param onoff onoff state of led * @param timeout timeout of current state * @param cb callback when timeout occur. * * @return 0 if invoked succsess. * @return others if invoked failed. */ int led_manager_set_display(uint16_t led_index, uint8_t onoff, uint32_t timeout, led_display_callback cb); /** * @brief set led breath mode * * @param led_index index of led * @param breath param * @param timeout timeout of current state * @param cb callback when timeout occur. * * @return 0 if invoked succsess. * @return others if invoked failed. */ int led_manager_set_breath(uint16_t led_index, pwm_breath_ctrl_t *ctrl, uint32_t timeout, led_display_callback cb); /** * @brief set led blink mode * * @param led_index index of led * @param blink_period period of blink * @param blink_pulse pulse of blink * @param timeout timeout of current state * @param start_state set high or low voltage level active * @param cb callback when blink cnt overflow occur. * * @return 0 if invoked succsess. * @return others if invoked failed. */ int led_manager_set_blink(uint8_t led_index, uint16_t blink_period, uint16_t blink_pulse, uint32_t timeout, uint8_t start_state, led_display_callback cb); /** * @brief set all led on or off mode * * @param onoff state of all led * * @return 0 if invoked succsess. * @return others if invoked failed. */ int led_manager_set_all(uint8_t onoff); /** * @brief set led mamager to sleep mode, when sleep mode all led will off * * @return 0 if invoked succsess. * @return others if invoked failed. */ int led_manager_sleep(void); /** * @brief set led mamager to wakeup mode, when sleep mode all led will restore history state before sleep * * @return 0 if invoked succsess. * @return others if invoked failed. */ int led_manager_wake_up(void); /** * @brief save current led state * * @return 0 if invoked succsess. * @return others if invoked failed. */ int led_manager_store(void); /** * @brief restore led state from history * * @return 0 if invoked succsess. * @return others if invoked failed. */ int led_manager_restore(void); /** * @brief set timeout event lock * * @return 0 if invoked succsess. * @return others if invoked failed. */ int led_manager_set_timeout_event_start(void); /** * @brief set timeout event * @param timeout of current state * @param cb callback when timeout overflow occur. * @return 0 if invoked succsess. * @return others if invoked failed. */ int led_manager_set_timeout_event(int timeout, led_timeout_callback cb); /** * @} end defgroup led_manager_apis */ #endif