Merge branch 'master-develop' of gitee.com:shenzhen-jiuyilian/ipc into m-develop
This commit is contained in:
		
						commit
						25bc0699ca
					
				| 
						 | 
				
			
			@ -109,6 +109,7 @@
 | 
			
		|||
| 记录仪WiFi密码 | ---- | ---- | ---- |
 | 
			
		||||
| 固件版本 | ---- | ---- | 仅显示 |
 | 
			
		||||
| ---- | ---- | ---- | ---- |
 | 
			
		||||
| 电量 | ---- | ---- | 仅显示 |
 | 
			
		||||
| 工作模式 | 数字 | 0:图片<br>1:图片+视频 | ---- |
 | 
			
		||||
| 连拍|数字 | 1/2/3 | 单位:P |
 | 
			
		||||
| 连拍间隔 | 数字 | 0~60 | 单位:s |
 | 
			
		||||
| 
						 | 
				
			
			@ -134,4 +135,20 @@
 | 
			
		|||
2. 本地相册-“紧急”分类,改为“PIR”;
 | 
			
		||||
3. APP连接设备后,自动录像,改为默认不录像,可手动录像;
 | 
			
		||||
4. APP上的“循环”改成“全部”,“拍照”改成“手动”,“紧急”改成“PIR”,“停车”改成“定时”;
 | 
			
		||||
5. 相机设置需要实现设备自定义设置项功能;
 | 
			
		||||
5. 相机设置需要实现设备自定义设置项功能;
 | 
			
		||||
 | 
			
		||||
## 1.4. 设置界面动态渲染方案设计
 | 
			
		||||
 | 
			
		||||
  为了实现设置参数可自由定制,例如:可随意的增加/减少常见类型的参数设置。
 | 
			
		||||
 | 
			
		||||
### 1.4.1. 常见设置类型
 | 
			
		||||
 | 
			
		||||
| 参数类型 | 数据类型 | 取值说明 | 备注 |
 | 
			
		||||
| ---- | ---- | ---- | ---- |
 | 
			
		||||
| 显示参数 | ---- | 协议自定义 | 仅显示,无法修改 |
 | 
			
		||||
| 开关 | 数字 | 只有0和1<br>0 - 关<br>1 - 开 | 只能设置开/关 |
 | 
			
		||||
| 数字输入框 | 数字(带单位/取值范围) | 协议指定取值范围 | 手动输入 |
 | 
			
		||||
| 任意输入框 | 无限制 | 无限制 | 手动输入任意字符 |
 | 
			
		||||
| 时间 | 时间 | ---- | 设置时间 |
 | 
			
		||||
| 功能 | 功能按钮 | 取消/确定 | 例如:格式化/恢复出厂/重启<br>可通过协议自由定义,协议带显示字符 |
 | 
			
		||||
| 选项 | 数字 | ---- | 协议带选项对应的文字字符 |
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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:如果主控在物理通电后从来没有喂狗,<br>MCU关闭喂狗功能
 | 
			
		||||
end
 | 
			
		||||
CPU ->> MCU:断电关机
 | 
			
		||||
MCU ->> CPU:物理断电
 | 
			
		||||
| 
						 | 
				
			
			@ -212,7 +221,7 @@ note over MCU:休眠后进入正常工作模式:当发生PIR触发时,<br>
 | 
			
		|||
 | 
			
		||||
#### 1.3.3.3. 超时异常启动
 | 
			
		||||
 | 
			
		||||
  CPU单次上电时间都是有限的,在主控未正常发送关机指令时,3min后断电进行异常启动。TEST/产测模式等需要一直开机的场景,主控关闭喂狗功能即可。
 | 
			
		||||
  CPU单次上电时间都是有限的,在主控未正常发送关机指令时,**10min**后断电进行异常启动。TEST/产测模式等需要一直开机的场景,主控关闭喂狗功能即可。
 | 
			
		||||
 | 
			
		||||
```mermaid
 | 
			
		||||
sequenceDiagram
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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");
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -47,6 +47,7 @@ protected:
 | 
			
		|||
    void DeleteMcuAsk(std::shared_ptr<VMcuAsk> &ask);
 | 
			
		||||
    void DeleteAllAsk(void);
 | 
			
		||||
    void TraverseCheckAllAsk(void);
 | 
			
		||||
    void PrintHexadecimalData(const void *buf, const size_t &bufLength, const char *log);
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    std::mutex mMutex;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@
 | 
			
		|||
 | 
			
		||||
| 协议头 | 流水号 | 命令字 | 长度 | 数据段 | 校验码 |
 | 
			
		||||
|----|----|----|----|----|----|
 | 
			
		||||
| 2字节<br>0xFAC1 | 4字节 | 2字节 | 2字节 | - | 2字节 |
 | 
			
		||||
| 2字节<br>0xFAC1 | 4字节 | 2字节 | 2字节<br>协议包总长度 | - | 2字节 |
 | 
			
		||||
 | 
			
		||||
**流水号**
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user