diff --git a/apps/usr_app/app_function.c b/apps/usr_app/app_function.c index 99075a5..618551a 100644 --- a/apps/usr_app/app_function.c +++ b/apps/usr_app/app_function.c @@ -3,7 +3,7 @@ * @brief 设备功能开关 + 自动玩法 + 手动点动 + 按键动作实现 * @author cyWu <1917507415@qq.com> * @date 2026.09.10 - * @version V1.2.0 + * @version V1.3.0 * @history * - V1.0.0, 2026.08.25, cyWu, 首次发布,实现 DP0 开关、自动玩法、手动点动与按键动作 * - V1.1.0, 2026.08.26, cyWu, 切模式闪灯改到 function_play_mode_apply 统一 @@ -13,6 +13,7 @@ * 自动模式新增单次最长运行时长,到点回待机 * - V1.2.0, 2026.09.10, cyWu, 软关后 APP 下发其它控制指令也可唤醒, * 唤醒后本拍继续执行该指令(玩法/点动) + * - V1.3.0, 2026.09.10, cyWu, 短按循环改为 0→4→2→6→1→3→5,App DP1 编号不变 ******************************************************************************/ #include "app_function.h" @@ -54,6 +55,28 @@ static void function_play_mode_timeout(uint16_t dt); static void function_hand_poll(void); static void function_on_click(void); +/* 短按循环顺序(协议玩法号):停 → s_mode4 → s_mode2 → s_mode6 → s_mode1 → s_mode3 → s_mode5 → 停 */ +static const uint8_t s_key_play_seq[7] = { + 0, 4, 2, 6, 1, 3, 5 +}; + +/** + * @brief 按短按顺序取下一档玩法 + * @param cur 当前 DP1 玩法号 0~6 + * @return 下一档玩法号 + */ +static uint8_t function_key_play_next(uint8_t cur) +{ + uint8_t i; + + for (i = 0; i < 7; i++) { + if (s_key_play_seq[i] == cur) { + return s_key_play_seq[(i + 1) % 7]; + } + } + return 0; +} + /** * @brief 初始化功能模块状态 * @return 无 @@ -366,7 +389,7 @@ static void function_hand_poll(void) } /** - * @brief 短按:自动模式 0→1→…→6→0(闪灯提示交给 function_play_mode_apply) + * @brief 短按:按 s_key_play_seq 切自动模式(闪灯提示交给 function_play_mode_apply) * @return 无 */ static void function_on_click(void) @@ -375,7 +398,7 @@ static void function_on_click(void) log_info("key click ignored, hand busy\n"); return; } - function_play_mode_apply((uint8_t)((s_func.play_mode + 1) % 7)); + function_play_mode_apply(function_key_play_next(s_func.play_mode)); log_info("key click play_mode=%d\n", s_func.play_mode); } diff --git a/apps/usr_app/app_mode.c b/apps/usr_app/app_mode.c index c9bdade..1177c12 100644 --- a/apps/usr_app/app_mode.c +++ b/apps/usr_app/app_mode.c @@ -86,6 +86,7 @@ static const AppModeStep_t s_mode6[] = { /* 闪电快闪:两下轻、两下重 STEP_END }; +/* 下标 = 协议玩法编号 DP1:1~6 对应 s_mode1~s_mode6。短按循环顺序在 app_function.c */ static const AppModeStep_t *const s_tables[7] = { 0, s_mode1, s_mode2, s_mode3, s_mode4, s_mode5, s_mode6 }; diff --git a/apps/usr_jb_proto/Protocol/jb_product.h b/apps/usr_jb_proto/Protocol/jb_product.h index f6b3777..5b48c04 100644 --- a/apps/usr_jb_proto/Protocol/jb_product.h +++ b/apps/usr_jb_proto/Protocol/jb_product.h @@ -22,7 +22,7 @@ /* MCU software version: Vmajor.minor.patch */ #define JB_MCU_SW_VERSION_MAJOR 1 #define JB_MCU_SW_VERSION_MINOR 0 -#define JB_MCU_SW_VERSION_PATCH 0 +#define JB_MCU_SW_VERSION_PATCH 1 /* MCU hardware version: Vmajor.minor.patch */ #define JB_MCU_HW_VERSION_MAJOR 1 diff --git a/docs/门夹弹力绳_需求文档.md b/docs/门夹弹力绳_需求文档.md index 7db247f..23764a4 100644 --- a/docs/门夹弹力绳_需求文档.md +++ b/docs/门夹弹力绳_需求文档.md @@ -80,7 +80,7 @@ | 操作 | 条件 | 行为 | | --- | --- | --- | -| 短按(松开且未到 3 秒) | 功能开、空闲 | 切换玩法:停 → 玩法1 → … → 玩法6 → 停,循环;绿灯闪两下 | +| 短按(松开且未到 3 秒) | 功能开、空闲 | 切换玩法:停 → 起伏攻防战 → 飞鸟俯冲 → 闪电快闪 → 弹力伪装 → 云阶小陀螺 → 微风拂动 → 停,循环;绿灯闪两下。App 仍按 DP1 原编号选玩法 | | 短按 | 功能已关(App 软关 / 拔充电线后) | 只唤醒功能,不切玩法;挂待机绿灯 | | 短按 | 手动点动进行中 | 无效 | | 长按 3 秒 | 功能开 | 关机进深睡 | diff --git a/tools/pack_firmware.ps1 b/tools/pack_firmware.ps1 index 9800d07..bf318d9 100644 --- a/tools/pack_firmware.ps1 +++ b/tools/pack_firmware.ps1 @@ -9,7 +9,7 @@ [CmdletBinding()] param( - [string]$ProjectName = "PICBC2", + [string]$ProjectName = "JBao_Door_Clamp", [string]$SdkRoot = "" )