config design.
This commit is contained in:
parent
feba1578fa
commit
c2830a4e87
112
doc/design.md
112
doc/design.md
|
@ -151,15 +151,94 @@ libLogAbstract.a -->> -User:return
|
|||
5. 使用枚举方式管理IPC配置数据定义,当使用纯16进制保存数据时,可不链接utils工具里面的配置库,直接保存16进制数据到文件系统即可;
|
||||
6. 应用程序全局唯一可以操作IPC配置文件的库,保证配置文件正确读写;
|
||||
|
||||
###### IPC配置库类图
|
||||
###### 1.4.2.2.5.2. IPC配置库类图
|
||||
```mermaid
|
||||
classDiagram
|
||||
i_ipc_config <.. ipc_config:实现
|
||||
ipc_config --> i_config_manager:依赖
|
||||
ipc_config --> IHal:依赖
|
||||
i_config_manager <.. config_manager:实现
|
||||
config_manager --> libconfig开源库:依赖
|
||||
```
|
||||
|
||||
###### 1.4.2.2.5.3. 关键业务时序图
|
||||
|
||||
   **时序图会忽略抽象接口直接使用实例接口表示。**
|
||||
|
||||
* IPC配置库初始化 / 解初始化
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User
|
||||
participant ipc_config
|
||||
participant i_config
|
||||
participant IHal
|
||||
User ->> +ipc_config:初始化
|
||||
ipc_config ->> +IHal:获取文件系统路径
|
||||
IHal -->> -ipc_config:return
|
||||
ipc_config ->> +i_config:打开配置文件
|
||||
i_config -->> -ipc_config:return
|
||||
alt 打开成功
|
||||
loop 读取所有数据到IPC数据结构体
|
||||
ipc_config ->> +i_config:读取一个数据到IPC数据结构体
|
||||
i_config -->> -ipc_config:return
|
||||
opt 读取失败
|
||||
ipc_config ->> ipc_config:生成默认数据
|
||||
ipc_config ->> +i_config:设置默认数据
|
||||
i_config ->> -ipc_config:return
|
||||
end
|
||||
end
|
||||
ipc_config ->> +i_config:关闭配置文件
|
||||
i_config -->> -ipc_config:return
|
||||
else 打开失败
|
||||
ipc_config ->> ipc_config:生产默认数据
|
||||
ipc_config ->> +i_config:创建配置文件
|
||||
i_config -->> -ipc_config:return
|
||||
ipc_config ->> +i_config:设置默认数据
|
||||
i_config -->> -ipc_config:return
|
||||
ipc_config ->> +i_config:关闭配置文件
|
||||
i_config -->> -ipc_config:return
|
||||
end
|
||||
ipc_config -->> -User:return
|
||||
User ->> +ipc_config:解初始化
|
||||
ipc_config ->> ipc_config:释放内存中的数据
|
||||
ipc_config -->> -User:return
|
||||
```
|
||||
|
||||
* 读 / 写(修改)数据
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User
|
||||
participant ipc_config
|
||||
User ->> +ipc_config:读取数据
|
||||
ipc_config ->> ipc_config:返回内存保存的数据
|
||||
ipc_config -->> -User:return
|
||||
User ->> +ipc_config:修改数据
|
||||
ipc_config ->> ipc_config:修改内存保存的数据
|
||||
ipc_config -->> -User:return
|
||||
```
|
||||
|
||||
* 保存数据
|
||||
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User
|
||||
participant ipc_config
|
||||
participant i_config
|
||||
User ->> +ipc_config:保存
|
||||
ipc_config ->> +i_config:打开配置文件
|
||||
i_config -->> -ipc_config:return
|
||||
ipc_config ->> +i_config:同步数据
|
||||
i_config -->> -ipc_config:return
|
||||
ipc_config ->> +i_config:保存配置文件
|
||||
i_config -->> -ipc_config:return
|
||||
ipc_config ->> +i_config:关闭配置文件
|
||||
i_config -->> -ipc_config:return
|
||||
ipc_config -->> -User:return
|
||||
```
|
||||
|
||||
|
||||
##### 1.4.2.2.6. 高级配置库
|
||||
|
||||
   对配置库的二级封装,提供更便捷的功能服务,例如:可以监控文件的修改事件 / 可以直接捕获某个配置文件或者数据的操作对象。
|
||||
|
@ -214,11 +293,11 @@ classDiagram
|
|||
|
||||
   使用普通的C语言接口封装即可,通过使用gcc编译参数在Linux x86系统中满足打桩需求,在交叉编译(担心工具链兼容问题)测试程序中无法对系统标准接口进行打桩。
|
||||
|
||||
##### 1.4.2.4.5. 配置库
|
||||
##### 1.4.2.4.5. 通用配置库
|
||||
|
||||
###### 1.4.2.4.5.1. 配置库概述
|
||||
###### 1.4.2.4.5.1. 通用配置库概述
|
||||
|
||||
   配置库负责管理软件配置参数,对配置数据进行设置 / 获取 / 存储 / 备份 / 升级等功能;
|
||||
   配置库负责管理软件配置参数,对配置数据进行设置 / 获取 / 存储 / 备份 / 升级等功能;通用配置库不限制使用场景,是一个通用的配置文件管理库。
|
||||
|
||||
###### 1.4.2.4.5.2. 配置库设计模式
|
||||
|
||||
|
@ -232,13 +311,28 @@ classDiagram
|
|||
|
||||
###### 1.4.2.4.5.3. 开源库
|
||||
|
||||
使用libconfig作为文件操作的开源库,实现文件和数据的读 / 写。
|
||||
两种方案:
|
||||
1. 使用libconfig作为文件操作的开源库,实现文件和数据的读 / 写。
|
||||
2. 使用sqlite3作为文件操作的开源库,作为数据库文件处理。
|
||||
|
||||
###### 1.4.2.4.5.4. 备份机制
|
||||
###### 1.4.2.4.5.4. 通用配置库类图
|
||||
   多态单例设计模式,main线程静态链接多态库。
|
||||
```mermaid
|
||||
classDiagram
|
||||
i_config_manager <.. config_manager:实现
|
||||
config_manager --> libconfig开源库:依赖
|
||||
i_config_manager <.. sqlite_manager:实现
|
||||
sqlite_manager --> sqlite3数据库:依赖
|
||||
```
|
||||
|
||||
###### 1.4.2.4.5.5. 备份机制
|
||||
|
||||
   备份数据用于数据异常时可还原旧数据。
|
||||
|
||||
###### 1.4.2.4.5.5. 升级机制
|
||||
方案选择:
|
||||
1. 出厂默认配置文件为只读文件,在数据破坏时还原;
|
||||
|
||||
###### 1.4.2.4.5.6. 升级机制
|
||||
|
||||
   程序升级后配置数据发生增 / 删时如何兼容和还原。
|
||||
|
||||
|
@ -256,8 +350,8 @@ https://gitee.com/RT-Thread-Mirror/TinyFrame
|
|||
|
||||
   负责MCU通信协议的组包 / 拆包 / 事件转换。
|
||||
|
||||
###### MCU协议库设计模式
|
||||
###### 1.4.2.4.7.1. MCU协议库设计模式
|
||||
|
||||
   基于C语言的多态单例设计模式。
|
||||
|
||||
###### 1.4.2.4.7.1. 协议数据结构
|
||||
###### 1.4.2.4.7.2. 协议数据结构
|
Loading…
Reference in New Issue
Block a user