Design files.

This commit is contained in:
fancy 2023-12-12 08:34:21 -08:00
parent 5d06d53ace
commit 3ab940b725

View File

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