diff --git a/doc/design.md b/doc/design.md index b024e8b..c175b9a 100644 --- a/doc/design.md +++ b/doc/design.md @@ -365,11 +365,47 @@ end 3. 通信协议不暴露,内部处理基于协议的数据解析 / 组包; 4. 通信协议支持多态拓展,通信协议独立成库; -##### 1.4.3.2.5. IPC配置库 +##### 1.4.3.2.5. MCU协议模块 + +   负责对MCU协议进行封包/解包,负责协议的多态替换。 + +###### 1.4.3.2.5.1. 协议格式 + +| 协议头 | 命令字 | 长度 | 数据段 | 校验位 | 协议尾 | +|----|----|----|----|----|----| +| 2字节
0xFAC1 | 2字节 | 2字节 | - | - | 2字节
0xFAC9 | + +###### 1.4.3.2.5.2. 协议内容 + +**基本描述** +1. 大于等于0x8000的命令字由CPU发给MCU; +2. 小于0x8000的命令字由MCU发给CPU; +3. 问答型协议只有按位最高位相反,其它位相等,例如:0x8101与0x0101是一问一答的协议; + +| 命令字 | CPU | MCU | 数据段 | 协议解析 | 备注 | +|----|----|----|----|----|----| +| 0x8101 | ask | - | - | 获取启动模式 | - | +| 0x0101 | - | reply | Data[0]:启动模式
0x01:PIR启动
0x02:TEST启动
0x03:连拍启动
0x04:PIR延时启动 | 回复启动模式 | - | +| 0x8102 | ask | - | - | 断电关机 | - | +| 0x8103 | ask | - | - | 喂狗 | - | +| 0x8104 | ask | - | Data[0]:Hour
0-23
Data[1]:Min
0-59
Data[2]:Sec
0-59 | 开启狗/设置喂狗周期 | - | +| 0x0104 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 开启狗/设置喂狗周期回复 | - | +| 0x8105 | ask | - | - | 关闭狗 | - | +| 0x0105 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 关闭狗回复 | - | +| 0x8106 | ask | - | Data[0]:Hour
0-23
Data[1]:Min
0-59
Data[2]:Sec
0-59 | 设置间隔启动时间 | - | +| 0x0106 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置间隔启动时间回复 | - | +| 0x8107 | ask | - | Data[0]:Year
Data[1]:Mon
1-12
Data[2]:Day
0-31
Data[3]:Hour
0-23
Data[4]:Min
0-59
Data[5]:Sec
0-59 | 设置日期和时间 | - | +| 0x0107 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置日期和时间回复 | - | +| 0x8108 | ask | - | Data[0]:灵敏度
0-9 | 设置PIR灵敏度 | - | +| 0x0108 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置PIR灵敏度回复 | - | +| 0x8109 | ask | - | Data[0]:Hour
0-23
Data[1]:Min
0-59
Data[2]:Sec
0-59 | 设置连拍间隔 | - | +| 0x0108 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置连拍间隔回复 | - | + +##### 1.4.3.2.6. IPC配置库    负责管理IPC产品相关的配置数据。 -###### 1.4.3.2.5.1. IPC配置库设计模式 +###### 1.4.3.2.6.1. IPC配置库设计模式    使用多态单例设计模式,对外提供C语言接口,内部不局限使用C或者C++。 @@ -382,7 +418,7 @@ end 5. 使用枚举方式管理IPC配置数据定义,当使用纯16进制保存数据时,可不链接utils工具里面的配置库,直接保存16进制数据到文件系统即可; 6. 应用程序全局唯一可以操作IPC配置文件的库,保证配置文件正确读写; -###### 1.4.3.2.5.2. IPC配置库类图 +###### 1.4.3.2.6.2. IPC配置库类图 ```mermaid classDiagram i_ipc_config <.. ipc_config:实现 @@ -392,7 +428,7 @@ classDiagram config_manager --> libconfig开源库:依赖 ``` -###### 1.4.3.2.5.3. 关键业务时序图 +###### 1.4.3.2.6.3. 关键业务时序图    **时序图会忽略抽象接口直接使用实例接口表示。** @@ -476,35 +512,35 @@ ipc_config -->> -User:return ``` -##### 1.4.3.2.6. 高级配置库 +##### 1.4.3.2.7. 高级配置库    对配置库的二级封装,提供更便捷的功能服务,例如:可以监控文件的修改事件 / 可以直接捕获某个配置文件或者数据的操作对象。 -###### 1.4.3.2.6.1. 高级配置库设计 +###### 1.4.3.2.7.1. 高级配置库设计    对外暴露C++接口,使用多态单例设计模式。 -##### 1.4.3.2.7. 状态机管理 +##### 1.4.3.2.8. 状态机管理    提供实现状态机管理机制C++接口,使用鸿蒙状态机开源源码进行改造封装。 -###### 1.4.3.2.7.1. 状态机管理设计模式 +###### 1.4.3.2.8.1. 状态机管理设计模式    使用多态单例设计模式,暂定使用鸿蒙状态机开源代码改造实现,后续可替换其它源码或者自研代码。 -##### 1.4.3.2.8. 文件数据库 +##### 1.4.3.2.9. 文件数据库    文件数据库负责管理设备的媒体资源(图片 / 视频等)。 -###### 1.4.3.2.8.1. 文件数据设计模式 +###### 1.4.3.2.9.1. 文件数据设计模式    使用混合多态单例模式开发。 -###### 1.4.3.2.8.2. 开源库选型 +###### 1.4.3.2.9.2. 开源库选型    sqlite3开源库,编译成工具类库提供给文件数据库使用。 -###### 1.4.3.2.8.3. 基本功能和业务需求 +###### 1.4.3.2.9.3. 基本功能和业务需求 1. 对媒体资源文件的增删改查处理; 2. 记录媒体资源文件的生成时间,任务(是否发送);