#ifndef __LED_H__
#define __LED_H__

#include "./SYSTEM/sys/sys.h"

/* LED状态枚举 - 使用枚举类型提高类型安全性 */
typedef enum {
    LED_OFF = 0,    /* LED熄灭 */
    LED_ON  = 1     /* LED点亮 */
} LED_State_t;

/* LED极性定义 */
#define LED_POLARITY_LOW_ACTIVE   0   /* 低电平有效（低电平亮） */
#define LED_POLARITY_HIGH_ACTIVE  1   /* 高电平有效（高电平亮） */

/* LED配置结构体 - 所有硬件相关参数集中在此 */
typedef struct {
    GPIO_TypeDef *port;           /* GPIO端口 (如: GPIOA, GPIOB, ...) */
    uint16_t pin;                 /* GPIO引脚 (如: GPIO_PIN_0, GPIO_PIN_1, ...) */
    uint8_t polarity;             /* 极性：LED_POLARITY_LOW_ACTIVE 或 LED_POLARITY_HIGH_ACTIVE */
    GPIO_PinState default_state;  /* 默认状态：GPIO_PIN_SET 或 GPIO_PIN_RESET */
    uint32_t speed;               /* GPIO速度：GPIO_SPEED_FREQ_LOW/MEDIUM/HIGH */
    uint32_t pull;                /* 上拉下拉：GPIO_PULLUP/GPIO_PULLDOWN/GPIO_NOPULL */
} LED_Config_t;

/* LED数量定义 - 修改此值以适配不同数量的LED */
#define LED_COUNT   20

/* 函数声明 */
void LED_Init(void);
void LED_On(uint8_t led_id);
void LED_Off(uint8_t led_id);
void LED_Toggle(uint8_t led_id);
void LED_Set(uint8_t led_id, LED_State_t state);
LED_State_t LED_GetState(uint8_t led_id);
void LED_Printf(uint8_t* ledbuf);



/* 向后兼容的宏定义（基于新的API实现） */
#define LED_POW(x)     LED_Set(0, x)     /* 电源指示灯 */
#define LED_RUN          1               /* 运行指示灯 */

#endif
