Compare commits

..
13 Commits
Author SHA1 Message Date
zengzhiheng b63a928b92 feat: 完成弹力魔盒初版固件 2026-08-31 20:15:19 +08:00
wuchuyuan 026d6d5da7 1、开机按满 5s 绿灯先切配对快闪提示,松手才清绑定并进配网,继续按到 12s 仍可改道 OTA
2、app_led_init 提前到按键判定前,3s 常亮 / 5s 快闪 / 拒绝开机低电闪统一走灯效事件表,去掉开机阶段手搓 GPIO 闪烁
2026-08-27 20:19:57 +08:00
wuchuyuan 215e1be6bb 1、运行中空电关机改看显示百分比,到 5% 立刻停电机、关绿灯,红灯闪 5 下后再深睡,避免电压先掉、APP 还没到 5% 就关机
2、充电/放电电量缓冲加快,放电突变拦截先关掉,电量曲线满电点收到 4.12V
3、上电串口打印软硬件版本和编译时间
2026-08-27 11:40:57 +08:00
wuchuyuan fdb43011b7 1、低电 3.7V 只闪红灯不再 1 分钟后关机;电量低于约 5% 自动关机,未充电开机先闪 5 下红灯再睡回,只能充电后才能开机
2、自动/手动互相切换都闪 2 下灯;APP 发停止后再发自动模式可正常启动,手动残留停止不再挡住自动
3、自动模式 1~6 单次最长跑 10 分钟后回待机;关机时长按 12 秒进 OTA,OTA 期间红绿交替闪
2026-08-27 10:20:48 +08:00
wuchuyuanandCursor 3d445ae5c5 1、业务调度统一为 20ms 节拍,取消电机运转时的 1ms 高频定时器,避免配网后 BLE 收发与 1kHz 中断抢时序导致看门狗复位
2、调度器只保留可休眠/禁休眠两档,换向死区改由阈值检查判定,不再单独切 1ms 精度

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 17:16:08 +08:00
wuchuyuan 4ee0f86d13 1、Makefile 与 CodeBlocks 编译单元对齐,补 make pack / BURN_KEY,增加 build.bat 与固件打包脚本
2、下载脚本同时生成无 Key / 带 Key 镜像,USB 默认烧无 Key,build.bat key 烧带 Key
3、配对超时从 60s 改为 120s
4、增加需求文档
2026-08-26 17:06:28 +08:00
wuchuyuan 93c1943992 1、充电时不再叠待机绿灯;意外复位不再跳过 3s 开机按键判定
2、电机停转去掉反接刹车改自由滑行,避免电流冲击触发 LVD 复位;
3、关机直接 power_set_soft_poweroff,跳过耳机 SDK 优雅关机流程,按键关机从十几秒压到瞬间掉电
2026-08-25 20:05:59 +08:00
wuchuyuan 5e5f921a3a 添加音频智能语音功能配置,不添加待机功耗降不下去,现在LED亮着待机功耗有500多uA,LED灭着待机功耗有280uA,关机功耗8uA 2026-08-25 18:50:28 +08:00
wuchuyuan 5252471aca 优化程序架构 2026-08-25 14:59:39 +08:00
wuchuyuan d5ec6ecde0 功耗减低到900uA,还有优化空间,还要陈杰明那边支持一下 2026-08-25 11:16:54 +08:00
wuchuyuan e0f5da6f39 把静态库换成源码方便调试 2026-08-25 10:20:14 +08:00
wuchuyuan 0e6a93c12d 基本功能已完成,还差功耗和架构优化 2026-08-24 18:03:39 +08:00
wuchuyuan 81bd2f724d 生成了代码仓库 2026-08-21 18:41:42 +08:00
20 changed files with 265 additions and 189 deletions
+1 -1
View File
@@ -735,7 +735,7 @@ struct port_wakeup port0 = {
}; };
#if BOARD_CHG_ENABLE #if BOARD_CHG_ENABLE
/* R18 is not fitted on CBC4, so VBUS never reaches VPWR in softoff. Wake on /* R18 is not fitted on CBC3, so VBUS never reaches VPWR in softoff. Wake on
* the fitted ME4054 CHG_ON signal instead; it falls when charging starts. */ * the fitted ME4054 CHG_ON signal instead; it falls when charging starts. */
struct port_wakeup board_chg_wakeup_port = { struct port_wakeup board_chg_wakeup_port = {
.pullup_down_enable = ENABLE, .pullup_down_enable = ENABLE,
+2 -2
View File
@@ -89,7 +89,7 @@ void app_function_dp_play_write(uint8_t mode)
/** /**
* @brief DP2 写入钩子:仅记录第 1 字节,真正执行在 app_function_poll * @brief DP2 写入钩子:仅记录第 1 字节,真正执行在 app_function_poll
* @param cmd 0=停止1=上部电机探出,2=下部电机探出 * @param cmd 0=忽略1=原地右转,2=原地左转
* @return 无 * @return 无
*/ */
void app_function_dp_hand_write(uint8_t cmd) void app_function_dp_hand_write(uint8_t cmd)
@@ -341,7 +341,7 @@ static void function_play_mode_timeout(uint16_t dt)
} }
/** /**
* @brief DP2 手动:只看第 1 字节。0=空闲,1=上部探出,2=下部探出 * @brief DP2 手动:只看第 1 字节。0=空闲,1=顺时针,2=逆时针,3=停
* @return 无 * @return 无
*/ */
static void function_hand_poll(void) static void function_hand_poll(void)
+4 -4
View File
@@ -23,20 +23,20 @@
*/ */
void app_function_init(void); void app_function_init(void);
/** CBC4 DP0 写入:排队到业务节拍统一执行。 */ /** CBC3 DP0 写入:排队到业务节拍统一执行。 */
void app_function_dp_power_write(uint8_t enable); void app_function_dp_power_write(uint8_t enable);
/** CBC4 DP1 写入:支持重复下发当前模式时停止。 */ /** CBC3 DP1 写入:支持重复下发当前模式时停止。 */
void app_function_dp_play_write(uint8_t mode); void app_function_dp_play_write(uint8_t mode);
/** /**
* @brief DP2 写入钩子:仅记录第 1 字节,真正执行在 app_function_poll * @brief DP2 写入钩子:仅记录第 1 字节,真正执行在 app_function_poll
* @param cmd 0=停止1=上部电机探出,2=下部电机探出 * @param cmd 0=忽略1=原地右转,2=原地左转
* @return 无 * @return 无
*/ */
void app_function_dp_hand_write(uint8_t cmd); void app_function_dp_hand_write(uint8_t cmd);
/** CBC4 DP6 震动开机开关。 */ /** CBC3 DP6 震动开机开关。 */
void app_function_set_shake_wake(uint8_t enable); void app_function_set_shake_wake(uint8_t enable);
/** 勿扰时段是否正在生效;生效时屏蔽震动开机。 */ /** 勿扰时段是否正在生效;生效时屏蔽震动开机。 */
+1 -1
View File
@@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* @file app_led.c * @file app_led.c
* @brief CBC4 灯效适配:充电红与待机绿可同时亮,不再 if-else 互斥 * @brief CBC2 灯效适配:充电红与待机绿可同时亮,不再 if-else 互斥
* @author cyWu <1917507415@qq.com> * @author cyWu <1917507415@qq.com>
* @date 2026.08.25 * @date 2026.08.25
* @version V2.0.0 * @version V2.0.0
+1 -1
View File
@@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* @file app_led.h * @file app_led.h
* @brief CBC4 灯效:红绿独立通道,充电红与待机绿可同时亮 * @brief CBC2 灯效:红绿独立通道,充电红与待机绿可同时亮
* @author cyWu <1917507415@qq.com> * @author cyWu <1917507415@qq.com>
* @date 2026.08.25 * @date 2026.08.25
* @version V2.0.0 * @version V2.0.0
+1 -1
View File
@@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* @file key_manager.c * @file key_manager.c
* @brief CBC4 按键:读 PB1,短按/长按交给 usr_jb_main * @brief CBC2 按键:读 PB1,短按/长按交给 usr_jb_main
* @author cyWu <1917507415@qq.com> * @author cyWu <1917507415@qq.com>
* @date 2026.08.25 * @date 2026.08.25
* @version V1.0.0 * @version V1.0.0
+1 -1
View File
@@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* @file key_manager.h * @file key_manager.h
* @brief CBC4 单按键:短按切模式,长按 3s 关机;开机 3s/5s 不走本库 * @brief CBC2 单按键:短按切模式,长按 3s 关机;开机 3s/5s 不走本库
* @author cyWu <1917507415@qq.com> * @author cyWu <1917507415@qq.com>
* @date 2026.08.25 * @date 2026.08.25
* @version V1.0.0 * @version V1.0.0
+2 -2
View File
@@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* @file led_manager.c * @file led_manager.c
* @brief CBC4 灯事件:充电红与待机绿走不同通道,可同时亮 * @brief CBC2 灯事件:充电红与待机绿走不同通道,可同时亮
* @author cyWu <1917507415@qq.com> * @author cyWu <1917507415@qq.com>
* @date 2026.08.27 * @date 2026.08.27
* @version V1.1.0 * @version V1.1.0
@@ -157,7 +157,7 @@ static uint8_t led_boot_reject_handler(LED_Config_t *led_config)
} }
/** /**
* @brief 注册回调并装载 CBC4 事件表(GPIO 已在 bsp_hw_init * @brief 注册回调并装载 CBC2 事件表(GPIO 已在 bsp_hw_init
* @return 无 * @return 无
*/ */
void user_led_init(void) void user_led_init(void)
+2 -2
View File
@@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* @file led_manager.h * @file led_manager.h
* @brief CBC4 红绿 LED 通道与事件表 * @brief CBC2 红绿 LED 通道与事件表
* @author cyWu <1917507415@qq.com> * @author cyWu <1917507415@qq.com>
* @date 2026.08.25 * @date 2026.08.25
* @version V1.0.0 * @version V1.0.0
@@ -20,7 +20,7 @@ typedef enum {
} LedChannel_t; } LedChannel_t;
/** /**
* @brief 注册 GPIO 回调并装载 CBC4 事件表 * @brief 注册 GPIO 回调并装载 CBC2 事件表
* @return 无 * @return 无
*/ */
void user_led_init(void); void user_led_init(void);
+1 -1
View File
@@ -1,6 +1,6 @@
/* ================================================================ /* ================================================================
* jb_product.c — 用户层实现(请填补空白处) * jb_product.c — 用户层实现(请填补空白处)
* 设备: 弹力魔盒 | 生成时间: 2026-08-18 16:24:47 * 设备: 猫猫捕猎罩 | 生成时间: 2026-08-18 16:24:47
* *
* ══ 开发流程 ══ * ══ 开发流程 ══
* 1. 实现硬件抽象: jbGetTimerCount(定时器由 SOC SDK 提供) * 1. 实现硬件抽象: jbGetTimerCount(定时器由 SOC SDK 提供)
+1 -1
View File
@@ -1,6 +1,6 @@
/* ================================================================ /* ================================================================
* jb_product.h — 用户层头文件(自动生成) * jb_product.h — 用户层头文件(自动生成)
* 设备: 弹力魔盒 | 生成时间: 2026-08-18 16:24:47 * 设备: 猫猫捕猎罩 | 生成时间: 2026-08-18 16:24:47
* *
* 声明用户需实现的函数。数据结构定义见 jb_protocol.h * 声明用户需实现的函数。数据结构定义见 jb_protocol.h
* ================================================================ * ================================================================
+1 -1
View File
@@ -1,6 +1,6 @@
/* ================================================================ /* ================================================================
* jb_protocol.c — 见宝 IOT 协议实现(自动生成) * jb_protocol.c — 见宝 IOT 协议实现(自动生成)
* 设备: 弹力魔盒 | 生成时间: 2026-08-18 16:24:47 * 设备: 猫猫捕猎罩 | 生成时间: 2026-08-18 16:24:47
* ================================================================ * ================================================================
*/ */
+1 -1
View File
@@ -1,6 +1,6 @@
/* ================================================================ /* ================================================================
* jb_protocol.h — 见宝 IOT 协议层(自动生成) * jb_protocol.h — 见宝 IOT 协议层(自动生成)
* 设备: 弹力魔盒 | DP 数: 10 | Bitmap: 2B * 设备: 猫猫捕猎罩 | DP 数: 10 | Bitmap: 2B
* 协议版本: V1.0 | 生成时间: 2026-08-18 16:24:47 * 协议版本: V1.0 | 生成时间: 2026-08-18 16:24:47
* *
* 帧格式: [55 AA] [LEN_H LEN_L] [CMD] [SN] [payload...] [CKSUM] * 帧格式: [55 AA] [LEN_H LEN_L] [CMD] [SN] [payload...] [CKSUM]
+1 -1
View File
@@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* @file usr_jb_main.c * @file usr_jb_main.c
* @brief CBC4 弹力魔盒业务组合根:只做调用编排,不含具体业务算法 * @brief CBC1 猫猫捕猎罩业务组合根:只做调用编排,不含具体业务算法
* @author cyWu <1917507415@qq.com> * @author cyWu <1917507415@qq.com>
* @date 2026.08.27 * @date 2026.08.27
* @version V2.3.0 * @version V2.3.0
+2 -2
View File
@@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* @file board_pin.h * @file board_pin.h
* @brief CBC4 弹力魔盒板级引脚、电平与时序(换板只改本文件) * @brief CBC1 猫猫捕猎罩板级引脚、电平与时序(换板只改本文件)
* @author cyWu <1917507415@qq.com> * @author cyWu <1917507415@qq.com>
* @date 2026.08.27 * @date 2026.08.27
* @version V1.5.0 * @version V1.5.0
@@ -105,7 +105,7 @@
#define BOARD_MOTOR_REVERSE_MS 1 /**< 换向前先松开,防 H 桥直通 */ #define BOARD_MOTOR_REVERSE_MS 1 /**< 换向前先松开,防 H 桥直通 */
#define BOARD_HAND_PULSE_MS 5000 /**< 手动右转/左转单次最长 5s */ #define BOARD_HAND_PULSE_MS 5000 /**< 手动右转/左转单次最长 5s */
#define BOARD_MOTOR_PWM_HZ 200 /**< 弹力魔盒验证过的 MCPWM 频率(Hz) */ #define BOARD_MOTOR_PWM_HZ 200 /**< 猫猫捕猎罩原项目验证过的 MCPWM 频率(Hz) */
#define BOARD_MOTOR_PWM_DUTY 8000 /**< 占空比 0~10000=0%~100%80% */ #define BOARD_MOTOR_PWM_DUTY 8000 /**< 占空比 0~10000=0%~100%80% */
#define BOARD_MOTOR_PWM_IDLE_CLOSE 1 /**< 1=空闲/轻睡关 MCPWM;0=保持开着,方便对比待机电流 */ #define BOARD_MOTOR_PWM_IDLE_CLOSE 1 /**< 1=空闲/轻睡关 MCPWM;0=保持开着,方便对比待机电流 */
+1 -1
View File
@@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* @file bsp_hw.c * @file bsp_hw.c
* @brief CBC4 板级 GPIO / ADC上下双电机 H 桥、震动、LED、按键、充电检测 * @brief CBC1 板级 GPIO / ADC电机 H 桥、震动、LED、按键、充电检测
* @author cyWu <1917507415@qq.com> * @author cyWu <1917507415@qq.com>
* @date 2026.08.24 * @date 2026.08.24
* @version V1.5.0 * @version V1.5.0
+3 -4
View File
@@ -1,6 +1,6 @@
/****************************************************************************** /******************************************************************************
* @file bsp_hw.h * @file bsp_hw.h
* @brief CBC4 板级硬件:上下双电机 / 震动 / LED / 按键 / 充电 / 电量 * @brief CBC1 板级硬件:电机 / 震动 / LED / 按键 / 充电 / 电量
* @author cyWu <1917507415@qq.com> * @author cyWu <1917507415@qq.com>
* @date 2026.08.25 * @date 2026.08.25
* @version V1.6.0 * @version V1.6.0
@@ -67,8 +67,7 @@ void bsp_led_all_off(void);
/** /**
* @brief 设置电机方向。STOP 时直接切断驱动,自由滑行到停(不做反接刹车) * @brief 设置电机方向。STOP 时直接切断驱动,自由滑行到停(不做反接刹车)
* @note 占空比用 BOARD_MOTOR_PWM_DUTY(手动点动) * @note 占空比用 BOARD_MOTOR_PWM_DUTY(手动点动)
* @param left_dir/right_dir 左右轮方向 * @param dir 收绳 / 放绳 / 停转
* @param left_duty/right_duty 左右轮占空比
* @return 无 * @return 无
*/ */
void bsp_drive_set(BspMotorDir_t left_dir, uint16_t left_duty, void bsp_drive_set(BspMotorDir_t left_dir, uint16_t left_duty,
@@ -78,7 +77,7 @@ void bsp_drive_set(BspMotorDir_t left_dir, uint16_t left_duty,
void bsp_drive_stop(void); void bsp_drive_stop(void);
/** /**
* @brief 兼容旧调用;弹力魔盒每个动作一次性更新上下电机四路 PWM * @brief 兼容旧调用;猫猫捕猎罩每个动作更新左轮对应的两路 PWM
* @return 无 * @return 无
*/ */
void bsp_motor_switch_tick(void); void bsp_motor_switch_tick(void);
@@ -0,0 +1 @@
3DBA0ACD41A68B534365C721F7B23619914B4106E1024B5592A0A49D1DD417152E4DCF18
+62
View File
@@ -0,0 +1,62 @@
# SOC 代码生成模板 — 分支索引
本仓库按 **「厂商-型号」** 组织分支,每个分支是一套完整的 SOC 工程模板。
远程仓库:[soc-codegen-template](https://git.jianbao-tech.com/pets-device/soc-codegen-template)
---
## 分支列表
| 分支 | 厂商 | 型号 | 平台 | 默认能力 | 状态 |
|------|------|------|------|----------|------|
| [`JieLi-JL7016`](https://git.jianbao-tech.com/pets-device/soc-codegen-template/src/branch/JieLi-JL7016) | 杰理 JieLi | JL7016 / AC7016C | BR28 | 耳机 SDK + BLE + jb_protocol + OTA | ✅ 可用 |
> 新模板上线后在此表追加一行即可。
---
## 如何获取某 SOC 模板
### 见宝工具箱 / 自动化脚本
```bash
git clone https://git.jianbao-tech.com/pets-device/soc-codegen-template.git
cd soc-codegen-template
git checkout JieLi-JL7016
```
### 仅下载指定分支(浅克隆)
```bash
git clone --branch JieLi-JL7016 --single-branch \
https://git.jianbao-tech.com/pets-device/soc-codegen-template.git jl7016-template
```
---
## 分支命名规范
```
<厂商>-<型号>
```
示例:`JieLi-JL7016``JieLi-AC701N`
- 默认包含耳机应用与 jb_protocol,分支名**不加**多余后缀
- 同一芯片多种工程结构差异过大时,再考虑加后缀:`JieLi-JL7016-dongle`
---
## 新增 SOC 模板(维护者)
1.`main` 拉新分支:`git checkout -b <厂商>-<型号> main`
2. 合入该 SOC 完整工程(apps + cpu + include_lib + tools
3. 更新本文件分支表 + `main/README.md` 快速索引
4. 推送分支并在 Gitea 设为受保护分支(可选)
---
## 各分支 README
每个 SOC 分支根目录有独立的 `README.md`(构建、打包、协议对接说明)。
+89 -75
View File
@@ -13,12 +13,12 @@
"kind": "normal", "kind": "normal",
"type": "bool", "type": "bool",
"len": 1, "len": 1,
"scale": 1, "scale": 1.0,
"dir": "rw", "dir": "rw",
"description": "设备总开关", "description": "设备总开关",
"values": { "values": {
"1": "", "0": "",
"0": "" "1": ""
} }
}, },
{ {
@@ -28,16 +28,16 @@
"kind": "normal", "kind": "normal",
"type": "enum", "type": "enum",
"len": 1, "len": 1,
"scale": 1, "scale": 1.0,
"dir": "rw", "dir": "rw",
"description": "5种玩法按键也可切换并上报", "description": "5种玩法,按键也可切换并上报",
"values": { "values": {
"5": "上下电机随机组合",
"4": "上部慢探、下部随机摇摆",
"0": "停止复位", "0": "停止复位",
"3": "上部间歇、下部均匀摇摆", "1": "随机躲猫猫",
"2": "上部快速往复", "2": "洞口接力跑",
"1": "上部慢速往复" "3": "快闪+快摇组合",
"4": "慢探+随机摇摆",
"5": "终极大乱斗"
} }
}, },
{ {
@@ -47,118 +47,132 @@
"kind": "normal", "kind": "normal",
"type": "enum", "type": "enum",
"len": 1, "len": 1,
"scale": 1, "scale": 1.0,
"dir": "wo", "dir": "wo",
"description": "上部或下部电机单次探出最长5秒", "description": "上部或下部电机单次探出,最长5秒",
"values": { "values": {
"2": "下部探出", "0": "停止",
"1": "上部探出", "1": "上部探出",
"0": "停止" "2": "下部探出"
} }
}, },
{ {
"id": 3, "id": 3,
"display_name": "绳索校准",
"key": "calibration",
"kind": "normal",
"type": "bool",
"len": 1,
"scale": 1.0,
"dir": "wo",
"description": "用来校准绳子位置",
"values": {
"0": "停止校准",
"1": "校准"
}
},
{
"id": 4,
"display_name": "绳索圈数",
"key": "numberturns",
"kind": "normal",
"type": "uint8",
"len": 1,
"scale": 1.0,
"dir": "wo",
"description": "根据不同的绳子设置圈数",
"values": {}
},
{
"id": 5,
"display_name": "低电量报警", "display_name": "低电量报警",
"key": "alm_low_battery", "key": "alm_low_battery",
"kind": "alarm", "kind": "alarm",
"type": "bool", "type": "bool",
"len": 1, "len": 1,
"scale": 1, "scale": 1.0,
"dir": "ro", "dir": "ro",
"description": "低电量告警", "description": "<3.7V上报,1分钟后休眠",
"values": { "values": {
"1": "告警", "0": "正常",
"0": "正常" "1": "电量<20%告警"
}, },
"level": 1 "level": 1
}, },
{ {
"id": 4, "id": 6,
"display_name": "声音开关", "display_name": "电量上报",
"key": "beep_trig",
"kind": "normal",
"type": "bool",
"len": 1,
"scale": 1,
"dir": "rw",
"description": "声音触发开关",
"values": {
"1": "开",
"0": "关"
}
},
{
"id": 5,
"display_name": "电量",
"key": "battery", "key": "battery",
"kind": "normal", "kind": "normal",
"type": "uint8", "type": "uint8",
"len": 1, "len": 1,
"scale": 1, "scale": 1.0,
"dir": "ro", "dir": "ro",
"description": "电量上报", "description": "电量上报",
"values": { "values": {}
}
},
{
"id": 6,
"display_name": "震动开机",
"key": "shake_wake",
"kind": "normal",
"type": "bool",
"len": 1,
"scale": 1,
"dir": "rw",
"description": "震动触发开机",
"values": {
"1": "开",
"0": "关"
}
}, },
{ {
"id": 7, "id": 7,
"display_name": "勿扰模式",
"key": "no_disturb_enable",
"kind": "normal",
"type": "raw",
"len": 13,
"scale": 1,
"dir": "rw",
"description": "APP控制勿扰模式",
"values": {
}
},
{
"id": 8,
"display_name": "充电状态", "display_name": "充电状态",
"key": "charge", "key": "charge",
"kind": "normal", "kind": "normal",
"type": "enum", "type": "enum",
"len": 1, "len": 1,
"scale": 1, "scale": 1.0,
"dir": "ro", "dir": "ro",
"description": "充电状态上报", "description": "充电状态上报",
"values": { "values": {
"2": "未充电",
"1": "充电中", "1": "充电中",
"0": "不支持充电" "2": "充电"
} }
}, },
{
"id": 8,
"display_name": "勿扰模式开关",
"key": "no_disturb_enable",
"kind": "normal",
"type": "raw",
"len": 13,
"scale": 1.0,
"dir": "rw",
"description": "APP控制打开或关闭勿扰模式",
"values": {}
},
{
"id": 9,
"display_name": "预留DP1",
"key": "reserva_dp1",
"kind": "normal",
"type": "uint32",
"len": 4,
"scale": 1.0,
"dir": "rw",
"description": "预留",
"values": {}
},
{ {
"id": 10, "id": 10,
"display_name": "预留DP2",
"key": "reserva_dp2",
"kind": "normal",
"type": "uint32",
"len": 4,
"scale": 1.0,
"dir": "rw",
"description": "预留",
"values": {}
},
{
"id": 11,
"display_name": "预留DP3", "display_name": "预留DP3",
"key": "reserva_dp3", "key": "reserva_dp3",
"kind": "normal", "kind": "normal",
"type": "uint32", "type": "uint32",
"len": 4, "len": 4,
"scale": 1, "scale": 1.0,
"dir": "rw", "dir": "rw",
"description": "预留", "description": "预留",
"values": { "values": {}
}
} }
] ]
} }