Type-C 长供电、上电即工作、无软关机,删除 app_boot/app_power 及 DP0 开关相关逻辑, 去掉空占位 app_fan_run 和无效的 usr_timer_pick_mode/rearm(数码管 4ms 扫描已 priority=1, 系统本来就不会进低功耗)。按键 5s 配对 / 12s OTA 改走 key.c 长按分级,去掉自计时与 1~5s 死区。 新增 app_defer,NVM/配对/OTA 只在 ISR 置位、在 500ms 任务上下文落地,避免再在 usr_timer 里写 flash。 规格书与注释同步精简。
117 lines
3.8 KiB
C
117 lines
3.8 KiB
C
/******************************************************************************
|
||
* @file led.h
|
||
* @brief LED 事件框架:按通道掩码独立开关
|
||
* @author cyWu <1917507415@qq.com>
|
||
* @date 2026.08.31
|
||
* @version V1.2.0,CBR3 单灯:裁掉充电/低电/空电等门夹事件
|
||
******************************************************************************/
|
||
|
||
#ifndef __LED_H__
|
||
#define __LED_H__
|
||
|
||
#include <stdint.h>
|
||
#include <string.h>
|
||
|
||
/*============================================================================*/
|
||
/* 宏定义 */
|
||
/*============================================================================*/
|
||
|
||
#define BLINK_ENABLE 1
|
||
#define ALTERNATING_BLINK_ENABLE 0
|
||
#define BREATH_ENABLE 0
|
||
#define RUNNING_ENABLE 0
|
||
#define MARQUEE_ENABLE 0
|
||
|
||
#define LED_ON 1
|
||
#define LED_OFF 0
|
||
|
||
#define LED_CHANNEL(user_led) (1u << (user_led))
|
||
|
||
#define ledPrintf(level, fmt, ...) ((void)0)
|
||
|
||
/*============================================================================*/
|
||
/* 类型 */
|
||
/*============================================================================*/
|
||
|
||
typedef enum {
|
||
LED_LIGHT = 0, /**< 常亮 */
|
||
LED_BLINKING, /**< 闪烁 */
|
||
LED_ALTERNATING_BLINK /**< 交替闪(本产品未用) */
|
||
} LED_State_t;
|
||
|
||
typedef enum {
|
||
LED_EVENT_NONE = 0,
|
||
LED_EVENT_STANDBY, /**< 开机常亮 */
|
||
LED_EVENT_PAIRING, /**< 配对快闪 */
|
||
LED_EVENT_PAIR_OK, /**< 配对成功常亮若干秒 */
|
||
LED_EVENT_PAIR_FAIL, /**< 配对失败闪若干秒 */
|
||
LED_EVENT_OTA, /**< OTA 闪,直到升级结束/复位 */
|
||
LED_EVENT_MAX
|
||
} LED_Event_t;
|
||
|
||
/**
|
||
* 同优先级会互相覆盖
|
||
*/
|
||
typedef enum {
|
||
PRIORITY_1 = 0, /**< 开机常亮 */
|
||
PRIORITY_2, /**< 配对中 / 配对结果 */
|
||
PRIORITY_3, /**< OTA */
|
||
PRIORITY_MAX
|
||
} LED_EventPriority_t;
|
||
|
||
#if (BLINK_ENABLE)
|
||
typedef struct {
|
||
uint8_t orDer; /**< 1=先灭后亮,0=先亮后灭 */
|
||
uint32_t onTime; /**< 亮时间 ms */
|
||
uint32_t offTime; /**< 灭时间 ms */
|
||
} LED_BlinkParams_t;
|
||
#endif
|
||
|
||
#if (ALTERNATING_BLINK_ENABLE)
|
||
#define ALTERNAT_GROUP 2
|
||
typedef struct {
|
||
uint16_t Group[ALTERNAT_GROUP]; /**< 交替两组的通道掩码 */
|
||
uint32_t Cycle; /**< 一整轮交替周期 ms */
|
||
} LED_AlternatingBlinkParams_t;
|
||
#endif
|
||
|
||
typedef struct {
|
||
LED_State_t state;
|
||
uint16_t ledMask; /**< 本事件只动这些通道,其它灯不受影响 */
|
||
uint16_t runNum; /**< 0=无限;常亮按秒计,闪烁按周期计 */
|
||
uint32_t currentTime;
|
||
#if (BLINK_ENABLE)
|
||
LED_BlinkParams_t blinkParams;
|
||
#endif
|
||
#if (ALTERNATING_BLINK_ENABLE)
|
||
LED_AlternatingBlinkParams_t alternatingBlinkParams;
|
||
#endif
|
||
} LED_Config_t;
|
||
|
||
typedef struct {
|
||
LED_Event_t event;
|
||
LED_EventPriority_t priority;
|
||
LED_Config_t config;
|
||
uint8_t (*ledEventHandler)(LED_Config_t *config);
|
||
} LED_EventTableItem_t;
|
||
|
||
typedef void (*LED_SetState_t)(uint16_t led, uint8_t state);
|
||
typedef uint32_t (*TIME_Get_t)(void);
|
||
|
||
/*============================================================================*/
|
||
/* 外部接口 */
|
||
/*============================================================================*/
|
||
|
||
void LED_SetStateInit(LED_SetState_t setState);
|
||
void SET_TimeGetInit(TIME_Get_t getTime);
|
||
void LED_EventTableInit(LED_EventTableItem_t ledEvent[]);
|
||
void LED_EventAdd(LED_Event_t ledEvent);
|
||
void LED_EventDelete(LED_Event_t ledEvent);
|
||
void LED_EventAllDelete(void);
|
||
void LED_EventHandle(void);
|
||
uint8_t LED_IsEventActive(void);
|
||
uint8_t LED_IsEventExist(LED_Event_t ledEvent);
|
||
uint8_t LED_Update(LED_Config_t *led);
|
||
|
||
#endif /* __LED_H__ */
|