/*********************************************************
*Copyright (C), 2024-2030
*文件名:	USER.h
*版  本:	Ver1.00
*日  期:	2025/08/04
*描  述:	灯带功能函数、变量声明
*备  注:	
**********************************************************/
#ifndef   __USER_H__
#define   __USER_H__

#include "common.h"
#include "PWM.h"

// PWM通道选择宏定义
#define PWM4_ENABLED  1   // PWM4启用RGB灯带功能
#define PWM5_ENABLED  2   // PWM5启用RGB灯带功能

// 当前激活的PWM通道（二选一）
#define ACTIVE_PWM_CHANNEL  PWM4_ENABLED  // 此处选择PWM4，如需PWM5则改为PWM5_ENABLED
#define IS_PWM4_ACTIVE  (ACTIVE_PWM_CHANNEL == PWM4_ENABLED)
#define IS_PWM5_ACTIVE  (ACTIVE_PWM_CHANNEL == PWM5_ENABLED)

#define	LED_NUM_MAX	48	// 灯带上灯珠最大数量
#define UPD_NONE 0  		// 灯带数组无更新
#define UPD_ONGOING 1  	// 灯带数组更新中

// 定义灯带管理结构体
typedef struct {
    INT16U total_leds;    // 灯带上灯珠的总数量
    INT16U lit_leds;     	// 需要亮起的灯珠的数量
		INT16U led_index; 		// 当前操作的灯珠索引
		INT8U rgb_flag;				// 当前发送的r、g、b数据
		INT8U	updata_flag;		// 0-当前灯带数组没有更新，1-更新中
} LED_Strip;

extern xdata INT8U LED_DATA_BUF[100][3];	// 灯带数据数组
extern LED_Strip LED_0;
extern LED_Strip LED_1;

void USER_PWM_INIT_RGB(void);
void USER_LED_INIT(void);
void User_SET_LED(void);
void USER_SET_LEDBUF_TEXT_1(INT8U r, INT8U g, INT8U b, INT16U lit_num);
void USER_SET_LEDBUF_TEXT_2(INT8U r, INT8U g, INT8U b);

#endif 
