From b5599a42afb8a2d52c991f1cf43c7f2dd915abaa Mon Sep 17 00:00:00 2001 From: Fancy code <258828110.@qq.com> Date: Mon, 20 May 2024 20:47:43 +0800 Subject: [PATCH] Backup. --- middleware/AppManager/README.md | 19 ++++++++++- middleware/McuManager/README.md | 43 +++++++++++++++---------- middleware/McuManager/src/McuDevice.cpp | 13 ++++++++ middleware/McuManager/src/McuDevice.h | 1 + utils/McuProtocol/README.md | 2 +- 5 files changed, 59 insertions(+), 19 deletions(-) diff --git a/middleware/AppManager/README.md b/middleware/AppManager/README.md index 1fcdf59..a66981a 100644 --- a/middleware/AppManager/README.md +++ b/middleware/AppManager/README.md @@ -109,6 +109,7 @@ | 记录仪WiFi密码 | ---- | ---- | ---- | | 固件版本 | ---- | ---- | 仅显示 | | ---- | ---- | ---- | ---- | +| 电量 | ---- | ---- | 仅显示 | | 工作模式 | 数字 | 0:图片
1:图片+视频 | ---- | | 连拍|数字 | 1/2/3 | 单位:P | | 连拍间隔 | 数字 | 0~60 | 单位:s | @@ -134,4 +135,20 @@ 2. 本地相册-“紧急”分类,改为“PIR”; 3. APP连接设备后,自动录像,改为默认不录像,可手动录像; 4. APP上的“循环”改成“全部”,“拍照”改成“手动”,“紧急”改成“PIR”,“停车”改成“定时”; -5. 相机设置需要实现设备自定义设置项功能; \ No newline at end of file +5. 相机设置需要实现设备自定义设置项功能; + +## 1.4. 设置界面动态渲染方案设计 + +  为了实现设置参数可自由定制,例如:可随意的增加/减少常见类型的参数设置。 + +### 1.4.1. 常见设置类型 + +| 参数类型 | 数据类型 | 取值说明 | 备注 | +| ---- | ---- | ---- | ---- | +| 显示参数 | ---- | 协议自定义 | 仅显示,无法修改 | +| 开关 | 数字 | 只有0和1
0 - 关
1 - 开 | 只能设置开/关 | +| 数字输入框 | 数字(带单位/取值范围) | 协议指定取值范围 | 手动输入 | +| 任意输入框 | 无限制 | 无限制 | 手动输入任意字符 | +| 时间 | 时间 | ---- | 设置时间 | +| 功能 | 功能按钮 | 取消/确定 | 例如:格式化/恢复出厂/重启
可通过协议自由定义,协议带显示字符 | +| 选项 | 数字 | ---- | 协议带选项对应的文字字符 | diff --git a/middleware/McuManager/README.md b/middleware/McuManager/README.md index 81ccc7f..7dd2c61 100644 --- a/middleware/McuManager/README.md +++ b/middleware/McuManager/README.md @@ -6,6 +6,7 @@ | ---- | ---- | ---- | | V1.0 | 2024-5-14 | 首次评审。 | | V1.1 | 2024-5-16 | 完善时序图。 | +| V1.2 | 2024-5-20 | MCU默认关闭喂狗。 | ## 1.1. 基本概念 @@ -179,30 +180,38 @@ end #### 1.3.3.2. 喂狗 -  外置MCU充当硬件狗,在系统异常时断电重启系统。喂狗逻辑和启动模式无关。 +  外置MCU充当硬件狗,在系统异常时断电重启系统。喂狗逻辑和启动模式无关。默认关闭喂狗功能,主控喂狗之后,开启喂狗功能。 + +**注意:物理通电后如果主控从未进行喂狗,MCU喂狗功能一直关闭。** ```mermaid sequenceDiagram participant CPU participant MCU MCU ->> MCU:物理上电 +MCU ->> MCU:默认关闭喂狗功能 MCU ->> CPU:某种启动模式触发物理上电 -loop 默认开启喂狗 - opt 设置喂狗周期 - note over CPU:主控选择性设置喂狗周期 - CPU ->> +MCU:开启狗/设置喂狗周期 - MCU -->> -CPU:回复OK - end - opt 主控喂狗 - note over MCU:喂狗不需要回复 - CPU ->> MCU:喂狗 - end - alt 主控喂狗异常 - MCU ->> CPU:断电重启 - CPU ->> +MCU:查询启动模式 - MCU -->> -CPU:回复喂狗异常启动 - CPU ->> MCU:断电关机 +alt 主控喂狗 + MCU ->> MCU:开启喂狗功能 + loop 喂狗 + opt 设置喂狗周期 + note over CPU:主控选择性设置喂狗周期 + CPU ->> +MCU:开启狗/设置喂狗周期 + MCU -->> -CPU:回复OK + end + opt 主控喂狗 + note over MCU:喂狗不需要回复 + CPU ->> MCU:喂狗 + end + alt 主控喂狗异常 + MCU ->> CPU:断电重启 + CPU ->> +MCU:查询启动模式 + MCU -->> -CPU:回复喂狗异常启动 + CPU ->> MCU:断电关机 + end end +else 主控未喂狗 + note over MCU:如果主控在物理通电后从来没有喂狗,
MCU关闭喂狗功能 end CPU ->> MCU:断电关机 MCU ->> CPU:物理断电 @@ -212,7 +221,7 @@ note over MCU:休眠后进入正常工作模式:当发生PIR触发时,
#### 1.3.3.3. 超时异常启动 -  CPU单次上电时间都是有限的,在主控未正常发送关机指令时,3min后断电进行异常启动。TEST/产测模式等需要一直开机的场景,主控关闭喂狗功能即可。 +  CPU单次上电时间都是有限的,在主控未正常发送关机指令时,**10min**后断电进行异常启动。TEST/产测模式等需要一直开机的场景,主控关闭喂狗功能即可。 ```mermaid sequenceDiagram diff --git a/middleware/McuManager/src/McuDevice.cpp b/middleware/McuManager/src/McuDevice.cpp index ebc5a28..5feb630 100644 --- a/middleware/McuManager/src/McuDevice.cpp +++ b/middleware/McuManager/src/McuDevice.cpp @@ -92,6 +92,7 @@ ssize_t McuDevice::WriteData(const void *buff, const size_t buffLength, std::sha */ mMutex.lock(); length = IUartSend(mUartDevice, buff, buffLength); + PrintHexadecimalData(buff, buffLength, "Mcu urat write:"); mMutex.unlock(); return length; } @@ -105,6 +106,7 @@ ssize_t McuDevice::WriteData(const void *buff, const size_t buffLength, std::sha mMutex.lock(); AddMcuAsk(ask); length = IUartSend(mUartDevice, buff, buffLength); + PrintHexadecimalData(buff, buffLength, "AddMcuAsk, Mcu urat write:"); mMutex.unlock(); if (WRITE_ERROR == length) { LogError("Uart send failed, something wrong happened.\n"); @@ -279,4 +281,15 @@ void McuDevice::TraverseCheckAllAsk(void) return KEEP_THE_ASK; }; mAllAsk.remove_if(ifTimeout); +} +void McuDevice::PrintHexadecimalData(const void *buf, const size_t &bufLength, const char *log) +{ + if (log) { + printf("%s", log); + } + printf(" {0x%02X", *(unsigned char *)buf); + for (size_t i = 1; i < bufLength; i++) { + printf(", 0x%02X", *((unsigned char *)buf + i)); + } + printf("}\n"); } \ No newline at end of file diff --git a/middleware/McuManager/src/McuDevice.h b/middleware/McuManager/src/McuDevice.h index 6a44dc6..1667930 100644 --- a/middleware/McuManager/src/McuDevice.h +++ b/middleware/McuManager/src/McuDevice.h @@ -47,6 +47,7 @@ protected: void DeleteMcuAsk(std::shared_ptr &ask); void DeleteAllAsk(void); void TraverseCheckAllAsk(void); + void PrintHexadecimalData(const void *buf, const size_t &bufLength, const char *log); protected: std::mutex mMutex; diff --git a/utils/McuProtocol/README.md b/utils/McuProtocol/README.md index 9197147..e973787 100644 --- a/utils/McuProtocol/README.md +++ b/utils/McuProtocol/README.md @@ -14,7 +14,7 @@ | 协议头 | 流水号 | 命令字 | 长度 | 数据段 | 校验码 | |----|----|----|----|----|----| -| 2字节
0xFAC1 | 4字节 | 2字节 | 2字节 | - | 2字节 | +| 2字节
0xFAC1 | 4字节 | 2字节 | 2字节
协议包总长度 | - | 2字节 | **流水号**