1. 更改模式时进行渐变
2. 开灯渐变
3. 提高亮灯的速度,从flashboot中开始亮灯
4. spotlight_main 调整到app_main中来
This commit is contained in:
2025-06-25 23:14:48 +08:00
parent c2ac3319f2
commit a4b68ffadb
12 changed files with 398 additions and 211 deletions

View File

@ -27,7 +27,6 @@ typedef enum {
#define SVC_ID_CCT "cct" // 色温控制
#define SVC_ID_LIGHT_MODE "lightMode" // 场景模式控制
#define SVC_ID_FADE_TIME "progressSwitch" // 渐变时长的控制
#define SVC_ID_NET_INFO "netInfo" // 配网信息
// JSON字段名定义
#define JSON_FIELD_ON "on" // 开关状态字段
@ -36,14 +35,21 @@ typedef enum {
#define JSON_FIELD_MODE "mode" // 场景模式字段
#define JSON_FIELD_FADE_TIME "fadeTime" // 渐变时长字段
typedef enum {
REPORT_SWITCH = 1 << 0,
REPORT_BRIGHTNESS = 1 << 1,
REPORT_CCT = 1 << 2,
REPORT_LIGHT_MODE = 1 << 3,
REPORT_FADE_TIME = 1 << 4,
REPORT_ALL = REPORT_SWITCH | REPORT_BRIGHTNESS | REPORT_CCT | REPORT_LIGHT_MODE | REPORT_FADE_TIME,
} report_mask_e;
// 当前亮度和色温状态
typedef struct __attribute__((packed, aligned(1))) {
// 物模型同步需要 持久化维持
uint8_t on; // 开关状态
lightMode_e elightMode;
uint16_t brightness_local; // 当前亮度 (0-1000)
uint16_t fade_time; // s
uint16_t fade_time; // 渐变时长(s)
uint16_t cct_local; // 当前色温 (2700-6500)
// 持久化维持
int32_t power_on_cnt; // 上电次数计数
@ -102,8 +108,8 @@ typedef struct __attribute__((packed, aligned(1))) {
#define NET_CFG_TIMEOUT_BRIGHTNESS 50 // 呼吸灯超时后的亮度
#define NET_CFG_TIMEOUT_CCT 4000 // 呼吸灯超时后的色温
#define FADE_INTERVAL_MIN (1*1000) //us
#define FADE_INTERVAL_MIN (10*1000) //us
#define NORMAL_FADE_TIME 3 //s
#define PWM_DUTY_RATIO_MAX 1000
//呼吸灯定义
@ -112,6 +118,9 @@ typedef struct __attribute__((packed, aligned(1))) {
#define BREARTH_STEP ((PWM_DUTY_RATIO_MAX) * 2) / (BREARTH_PERIOD / BREARTH_INTERVAL) //每次变化的幅度
// PWM频率和周期定义
#define PWM_FREQUENCY 3000 // PWM频率 2KHz
//渐变范围
#define SMOOTH_TIME_MAX 30
#define SMOOTH_TIME_MIN 0
@ -147,6 +156,15 @@ typedef enum {
SAVE_STATE_WAITING // 等待保存
} save_state_e;
typedef enum {
APP_CHANGE_LIGHT_MODE = 0,
APP_CHANGE_LIGHT_BRIGHTNESS_CCT,
APP_CLOSE_LIGHT,
APP_OPEN_LIGHT,
DEV_POWER_ON,
} light_ctrl_source_e;
#define DEFAULT_DEVICE_DATA { \
.read_done = false, \
.on = true, \
@ -161,8 +179,8 @@ typedef enum {
};
int spotlight_main(void);
int set_light(int32_t brightness, int32_t cct); // 新的统一控制函数
int set_switch(bool open);
int set_light(light_ctrl_source_e source,
int32_t brightness_local_target, int32_t cct_local_target);
int set_smooth_time(uint32_t smooth_time); // 设置渐变时长
void update_pwm_output(bool on_state, uint16_t duty_cw, uint16_t duty_ww);