Improve Protocol handle code.
This commit is contained in:
parent
8a79fe352c
commit
f1747df345
|
@ -634,12 +634,13 @@ unsigned short calculate_check_sum(const unsigned char* pData, unsigned short le
|
||||||
**基本描述**
|
**基本描述**
|
||||||
1. 大于等于0x8000的命令字由CPU发给MCU;
|
1. 大于等于0x8000的命令字由CPU发给MCU;
|
||||||
2. 小于0x8000的命令字由MCU发给CPU;
|
2. 小于0x8000的命令字由MCU发给CPU;
|
||||||
3. 问答型协议只有按位最高位相反,其它位相等,例如:0x8101与0x0101是一问一答的协议;
|
3. 大于0x0801而小于0xC101的命令由CPU主动发送给MCU,大于等于0xC101的命令由CPU回复发送给MCU;
|
||||||
|
4. 问答型协议只有按位最高位相反,其它位相等,例如:0x8101与0x0101是一问一答的协议;
|
||||||
|
|
||||||
| 命令字 | CPU | MCU | 数据段 | 协议解析 | 备注 |
|
| 命令字 | CPU | MCU | 数据段 | 协议解析 | 备注 |
|
||||||
|----|----|----|----|----|----|
|
|----|----|----|----|----|----|
|
||||||
| 0x8101 | ask | - | - | 获取启动模式 | - |
|
| 0x8101 | ask | - | - | 获取启动模式 | - |
|
||||||
| 0x0101 | - | reply | Data[0]:启动模式<br>0x01:PIR启动<br>0x02:TEST启动<br>0x03:连拍启动<br>0x04:PIR延时启动 | 回复启动模式 | - |
|
| 0x0101 | - | reply/ask | Data[0]:启动模式<br>0x01:PIR启动<br>0x02:TEST启动<br>0x03:连拍启动<br>0x04:PIR延时启动<br>0x05:定时(间隔一定时间)启动 | 回复启动模式 | - |
|
||||||
| 0x8102 | ask | - | - | 断电关机 | - |
|
| 0x8102 | ask | - | - | 断电关机 | - |
|
||||||
| 0x8103 | 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 | 开启狗/设置喂狗周期 | - |
|
| 0x8104 | ask | - | Data[0]:Hour<br>0-23<br>Data[1]:Min<br>0-59<br>Data[2]:Sec<br>0-59 | 开启狗/设置喂狗周期 | - |
|
||||||
|
@ -654,6 +655,13 @@ unsigned short calculate_check_sum(const unsigned char* pData, unsigned short le
|
||||||
| 0x0108 | - | reply | Data[0]:结果<br>0x01:成功<br>0x02:失败 | 设置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 | 设置连拍间隔 | - |
|
| 0x8109 | ask | - | Data[0]:Hour<br>0-23<br>Data[1]:Min<br>0-59<br>Data[2]:Sec<br>0-59 | 设置连拍间隔 | - |
|
||||||
| 0x0109 | - | reply | Data[0]:结果<br>0x01:成功<br>0x02:失败 | 设置连拍间隔回复 | - |
|
| 0x0109 | - | reply | Data[0]:结果<br>0x01:成功<br>0x02:失败 | 设置连拍间隔回复 | - |
|
||||||
|
| 0x810A | ask | - | Data[0]:控制模式<br>0-关闭红外灯<br>1-开启红外灯 | 红外灯控制 | - |
|
||||||
|
| 0x010A | - | reply | Data[0]:结果<br>0x01:成功<br>0x02:失败 | 红外灯控制回复 | - |
|
||||||
|
| 0x810B | ask | - | - | 获取光敏值 | - |
|
||||||
|
| 0x010B | - | reply | Data[0]:结果<br>0-100 | 获取光敏值回复 | - |
|
||||||
|
| ====== | === | ====== | ============================ | ==================== | ======= |
|
||||||
|
| 0xC101 | reply | - | Data[0]:结果<br>0x01:成功<br>0x02:失败 | 发送启动模式回复 | - |
|
||||||
|
| 0x4101 | - | ask | Data[0]:启动模式<br>0x01:PIR启动<br>0x02:TEST启动<br>0x03:连拍启动<br>0x04:PIR延时启动<br>0x05:定时(间隔一定时间)启动 | 发送启动模式 | - |
|
||||||
|
|
||||||
##### 1.4.3.2.6. IPC配置库
|
##### 1.4.3.2.6. IPC配置库
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,11 @@ bool CreateMcuManager(void);
|
||||||
bool DestroyMcuManager(void);
|
bool DestroyMcuManager(void);
|
||||||
enum class IpcMission
|
enum class IpcMission
|
||||||
{
|
{
|
||||||
TEST = 0,
|
PIR_TRIGGERED = 0,
|
||||||
|
TEST,
|
||||||
|
CONTINUOUS_SHOOTING,
|
||||||
|
PIR_TRIGGERED_DELAY,
|
||||||
|
REGULAR_START,
|
||||||
END
|
END
|
||||||
};
|
};
|
||||||
enum class ASK_RESULT
|
enum class ASK_RESULT
|
||||||
|
|
|
@ -157,6 +157,11 @@ void ProtocolHandle::AnalyzeProtocolPacket(void)
|
||||||
LogError("CheckoutTheCheckCode failed.\n");
|
LogError("CheckoutTheCheckCode failed.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @brief unsigned int number = packet.mSerialNumber This line of code is for
|
||||||
|
* avoiding errors: runtime error: reference binding to misaligned address xxxx
|
||||||
|
*/
|
||||||
|
mProtocolSerialNumber = packet.mSerialNumber;
|
||||||
LogInfo("AnalyzeProtocolPacket, command = 0x%04X\n", packet.mCommand);
|
LogInfo("AnalyzeProtocolPacket, command = 0x%04X\n", packet.mCommand);
|
||||||
PROTOCOL_COMMAND command = static_cast<PROTOCOL_COMMAND>(packet.mCommand);
|
PROTOCOL_COMMAND command = static_cast<PROTOCOL_COMMAND>(packet.mCommand);
|
||||||
std::map<PROTOCOL_COMMAND, AnalyzePacketFunc>::iterator iter;
|
std::map<PROTOCOL_COMMAND, AnalyzePacketFunc>::iterator iter;
|
||||||
|
@ -174,11 +179,6 @@ unsigned char ProtocolHandle::ReplyOneBytePacketResult(const ProtocolPacket &pac
|
||||||
constexpr unsigned int PROTOCOL_DATA_START_ADDRESS = KEY_HEAD_LENGTH;
|
constexpr unsigned int PROTOCOL_DATA_START_ADDRESS = KEY_HEAD_LENGTH;
|
||||||
unsigned char replyResult = UNKNOWN_RESULT;
|
unsigned char replyResult = UNKNOWN_RESULT;
|
||||||
replyResult = mProtocolData[PROTOCOL_DATA_START_ADDRESS];
|
replyResult = mProtocolData[PROTOCOL_DATA_START_ADDRESS];
|
||||||
/**
|
|
||||||
* @brief unsigned int number = packet.mSerialNumber This line of code is for
|
|
||||||
* avoiding errors: runtime error: reference binding to misaligned address xxxx
|
|
||||||
*/
|
|
||||||
mProtocolSerialNumber = packet.mSerialNumber;
|
|
||||||
LogInfo("reply result = 0x%02X\n", replyResult);
|
LogInfo("reply result = 0x%02X\n", replyResult);
|
||||||
return replyResult;
|
return replyResult;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user