#ifndef __DRV_RGB_H__
#define __DRV_RGB_H__

#include <rtthread.h>
#include "drivers/rt_drv_pwm.h"
#include "stdbool.h"
#include "bf0_hal.h"
#include "stdio.h"

#include "drv_rgb_pwm.h"

#ifdef __cplusplus
extern "C" {
#endif

/*
 * @brief RGB设备配置参数   
*/
struct rgb_drv_cfg{
    bool is_initlized;                      /**< 是否初始化 */
    struct rgb_pwm_config rgb_strip_cfg;    /**< 灯条LED配置 */
    struct rgb_pwm_config rgb_circle_cfg;   /**< 灯环LED配置 */    
    struct rt_device *rgb_strip_dev;        /**< 灯条设备句柄 */
    struct rt_device *rgb_circle_dev;       /**< 灯环设备句柄 */    
};

/**
 * @brief 初始化RGB驱动
 * 
 * @return rt_err_t 错误码，RT_EOK表示成功，-RT_ERROR表示失败
 */
rt_err_t rgb_drv_init(void);

/**
 * @brief 设置RGB条形LED颜色
 * 
 * @param[in] array RGB颜色数组
 * @param[in] count RGB颜色数量
 * @return rt_err_t 错误码，RT_EOK表示成功，-RT_ERROR表示失败
 */
rt_err_t rgb_strip_set_color(uint32_t *array, uint32_t count);

/**
 * @brief 设置RGB灯环LED颜色
 * 
 * @param[in] array RGB颜色数组
 * @param[in] count RGB颜色数量
 * @return rt_err_t 错误码，RT_EOK表示成功，-RT_ERROR表示失败
 */
rt_err_t rgb_circle_set_color(uint32_t *array, uint32_t count);

#ifdef __cplusplus
}
#endif

#endif  /* __DRV_RGB_H__ */


