新增暂态事件补招功能
This commit is contained in:
@@ -47,6 +47,23 @@ std::string extract_filename(const std::string& path) {
|
||||
return path;
|
||||
}
|
||||
|
||||
//<2F>ļ<EFBFBD>crcУ<63>麯<EFBFBD><E9BAAF>
|
||||
uint16_t crc_16_new(const uint8_t* buf, uint32_t len) {
|
||||
uint16_t crc = 0xffff;
|
||||
for (uint32_t i = 0; i < len; i++) {
|
||||
crc = (uint16_t)(crc ^ buf[i]);
|
||||
for (int j = 0; j < 8; j++) {
|
||||
if (crc & 1) {
|
||||
crc = (uint16_t)((crc >> 1) ^ 0xA001);
|
||||
}
|
||||
else {
|
||||
crc = (uint16_t)(crc >> 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return crc;
|
||||
}
|
||||
|
||||
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void process_received_message(string mac, string id,const char* data, size_t length) {
|
||||
// ʵ<>ʵ<EFBFBD><CAB5><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -73,7 +90,7 @@ void process_received_message(string mac, string id,const char* data, size_t len
|
||||
//װ<>õ<EFBFBD>¼<EFBFBD>ɹ<EFBFBD>
|
||||
ClientManager::instance().set_cloud_status(id, 1); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>õ<EFBFBD>¼״̬Ϊ<CCAC>ѵ<EFBFBD>¼
|
||||
ClientManager::instance().read_devversion_action_to_device(id);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡװ<C8A1>ð汾<C3B0><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD>õ<EFBFBD>¼<EFBFBD><C2BC>ִ<EFBFBD><D6B4>һ<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>ǰ<EFBFBD><C7B0>ȡ<EFBFBD>汾<EFBFBD><E6B1BE>Ϣȷ<CFA2>϶<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ľṹ<C4BD><E1B9B9>
|
||||
|
||||
ClientManager::instance().add_file_menu_action_to_device(id, "/etcc");
|
||||
//ClientManager::instance().set_real_state_count("D002", 1,1);//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱ
|
||||
//ClientManager::instance().add_file_menu_action_to_device("D002","/etc");//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ŀ¼<C4BF><C2BC>ȡ
|
||||
//ClientManager::instance().add_file_download_action_to_device("D002", "/etc/NPQS570_VX_ZJ_2(V103).icd");//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -85,7 +102,24 @@ void process_received_message(string mac, string id,const char* data, size_t len
|
||||
//ClientManager::instance().set_interfixedvalue_action_to_device();װ<><D7B0><EFBFBD><EFBFBD><DEB8>ڲ<EFBFBD><DAB2><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD>ṩ<EFBFBD><E1B9A9>
|
||||
//ClientManager::instance().read_runninginformation_action_to_device(id);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡװ<C8A1><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
|
||||
|
||||
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>: 2025<32><35>9<EFBFBD><39>1<EFBFBD><31> 10:30:45
|
||||
//std::tm start_time = {};
|
||||
//start_time.tm_year = 2025 - 1900; // <20><><EFBFBD>ݴ<EFBFBD>1900<30><30>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
//start_time.tm_mon = 8 - 1; // <20>·ݴ<C2B7>0<EFBFBD><30>ʼ (0=һ<><D2BB>)
|
||||
//start_time.tm_mday = 20;
|
||||
//start_time.tm_hour = 1;
|
||||
//start_time.tm_min = 1;
|
||||
//start_time.tm_sec = 1;
|
||||
|
||||
//// <20><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>ʱ<EFBFBD><CAB1>: 2025<32><35>9<EFBFBD><39>4<EFBFBD><34> 12:15:30
|
||||
//std::tm end_time = {};
|
||||
//end_time.tm_year = 2025 - 1900;
|
||||
//end_time.tm_mon = 8 - 1;
|
||||
//end_time.tm_mday = 25;
|
||||
//end_time.tm_hour = 1;
|
||||
//end_time.tm_min = 1;
|
||||
//end_time.tm_sec = 1;
|
||||
//ClientManager::instance().read_eventlog_action_to_device(id, start_time, end_time,2,1);
|
||||
}
|
||||
if (udata[19] == 0x00) {
|
||||
std::cout << "cloud login: " << mac << " state: fail!" << std::endl;
|
||||
@@ -718,6 +752,7 @@ void process_received_message(string mac, string id,const char* data, size_t len
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
}
|
||||
else {
|
||||
std::cout << "reason code: " << static_cast<int>(udata[8]) << "-" << static_cast<int>(udata[9]) << "-" << static_cast<int>(udata[10]) << "-" << static_cast<int>(udata[11]) << std::endl;
|
||||
// װ<>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣
|
||||
// <20><><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><F3A3ACB5><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EEB9A4><EFBFBD><EFBFBD>
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
@@ -1758,7 +1793,7 @@ void process_received_message(string mac, string id,const char* data, size_t len
|
||||
ClientManager::instance().set_versioninformation(id, versionInfo.CloudProtocolVer);
|
||||
}
|
||||
// <20><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/*std::cout << "Device Version Info (" << mac << "):\n"
|
||||
std::cout << "Device Version Info (" << mac << "):\n"
|
||||
<< " Base Model: " << versionInfo.BaseModel << "\n"
|
||||
<< " Cloud Protocol: " << versionInfo.CloudProtocolVer << "\n"
|
||||
<< " App Version: " << versionInfo.AppVersion << "\n"
|
||||
@@ -1768,7 +1803,7 @@ void process_received_message(string mac, string id,const char* data, size_t len
|
||||
<< " Wave File Types: " << versionInfo.WaveFileTypeCount << "\n"
|
||||
<< " Comm Protocols: 0x" << std::hex << versionInfo.CommProtocols << "\n"
|
||||
<< " Time Sync Methods: 0x" << versionInfo.TimeSyncMethods << "\n"
|
||||
<< " Device Functions: 0x" << versionInfo.DeviceFunctions << std::dec << "\n";*/
|
||||
<< " Device Functions: 0x" << versionInfo.DeviceFunctions << std::dec << "\n";
|
||||
|
||||
//<2F><>ȡװ<C8A1>ð汾<C3B0><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
@@ -1803,6 +1838,234 @@ void process_received_message(string mac, string id,const char* data, size_t len
|
||||
}
|
||||
break;
|
||||
|
||||
case DeviceState::READING_EVENTLOG:
|
||||
//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>־
|
||||
if (udata[8] == static_cast<unsigned char>(MsgResponseType::Response_Read_Event)) {
|
||||
std::cout << "set success" << mac << std::endl;
|
||||
|
||||
std::cout << "reason code: " << static_cast<int>(udata[8]) << "-" << static_cast<int>(udata[9]) << "-" << static_cast<int>(udata[10]) << "-" << static_cast<int>(udata[11]) << std::endl;
|
||||
|
||||
if (parser.RecvData.size() >= 14) {
|
||||
// <20><>ȡ<EFBFBD><C8A1>ǰ֡
|
||||
int current_frame = 0;
|
||||
if (parser.RecvData.size() >= 4) {
|
||||
std::vector<unsigned char> frame_data(parser.RecvData.begin(), parser.RecvData.begin() + 4);
|
||||
std::reverse(frame_data.begin(), frame_data.end()); // <20>ֽڷ<D6BD>ת
|
||||
current_frame = *reinterpret_cast<int*>(frame_data.data());
|
||||
}
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1>֡<EFBFBD><D6A1>
|
||||
int total_frames = 0;
|
||||
if (parser.RecvData.size() >= 8) {
|
||||
std::vector<unsigned char> total_frame_data(parser.RecvData.begin() + 4, parser.RecvData.begin() + 8);
|
||||
std::reverse(total_frame_data.begin(), total_frame_data.end()); // <20>ֽڷ<D6BD>ת
|
||||
total_frames = *reinterpret_cast<int*>(total_frame_data.data());
|
||||
}
|
||||
|
||||
// <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC>ܴ<EFBFBD>С
|
||||
int file_size = 0;
|
||||
if (parser.RecvData.size() >= 12) {
|
||||
std::vector<unsigned char> size_data(parser.RecvData.begin() + 8, parser.RecvData.begin() + 12);
|
||||
std::reverse(size_data.begin(), size_data.end()); // <20>ֽڷ<D6BD>ת
|
||||
file_size = *reinterpret_cast<int*>(size_data.data());
|
||||
}
|
||||
|
||||
// <20><>ȡCRCУ<43><D0A3><EFBFBD><EFBFBD>
|
||||
uint16_t crc = 0;
|
||||
if (parser.RecvData.size() >= 14) {
|
||||
std::vector<unsigned char> crc_data(parser.RecvData.begin() + 12, parser.RecvData.begin() + 14);
|
||||
std::reverse(crc_data.begin(), crc_data.end()); // <20>ֽڷ<D6BD>ת
|
||||
crc = *reinterpret_cast<uint16_t*>(crc_data.data());
|
||||
}
|
||||
|
||||
// <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::vector<unsigned char> file_data;
|
||||
if (parser.RecvData.size() > 14) {
|
||||
file_data.assign(parser.RecvData.begin() + 14, parser.RecvData.end());
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD>棨ʹ<E6A3A8><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>READING_STATS<54><53><EFBFBD><EFBFBD><DFBC><EFBFBD>
|
||||
bool complete = ClientManager::instance().add_eventlog_packet_to_device(
|
||||
id, file_data, current_frame, total_frames
|
||||
);
|
||||
std::cout << "event log:" << current_frame << "/" << total_frames << std::endl;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>֡
|
||||
if (complete) {
|
||||
// 1. <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||
auto packets = ClientManager::instance().get_and_clear_event_packets(id);
|
||||
|
||||
// 2. <20><>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::sort(packets.begin(), packets.end(),
|
||||
[](const ClientContext::StatPacket& a, const ClientContext::StatPacket& b) {
|
||||
return a.packet_index < b.packet_index;
|
||||
});
|
||||
|
||||
// 3. <20><><EFBFBD><EFBFBD>ÿ֡<C3BF><D6A1><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::vector<unsigned char> full_data;
|
||||
|
||||
for (const auto& packet : packets) {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
full_data.insert(full_data.end(),
|
||||
packet.data.begin(),
|
||||
packet.data.end());
|
||||
}
|
||||
|
||||
//ȷ<>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int event_lineid = 0;
|
||||
std::string strScale;//<2F><>ѹ<EFBFBD>ȼ<EFBFBD>
|
||||
int nPTType;//<2F><><EFBFBD>߷<EFBFBD>ʽ
|
||||
float fPT = 1.0f;
|
||||
float fCT = 1.0f;
|
||||
|
||||
if (!ClientManager::instance().get_event_lineid(id, event_lineid)) {
|
||||
//ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>̬<EFBFBD><CCAC><EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ȡ<EFBFBD><C8A1><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EEB9A4><EFBFBD><EFBFBD>
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!ClientManager::instance().get_point_scale_and_pttype(
|
||||
id,
|
||||
event_lineid,
|
||||
strScale,
|
||||
nPTType) || !ClientManager::instance().get_pt_ct_ratio(id, event_lineid, fPT, fCT)) {
|
||||
//ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>PTCT,<2C><>ѹ<EFBFBD>ȼ<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>̬<EFBFBD><CCAC><EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ȡ<EFBFBD><C8A1><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EEB9A4><EFBFBD><EFBFBD>
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
break;
|
||||
}
|
||||
|
||||
// ========== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>full_data<74>е<EFBFBD>NewTaglogbuffer<65><72><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD> ==========
|
||||
std::list<NewTaglogbuffer> eventList;
|
||||
size_t offset = 0;
|
||||
const size_t headSize = sizeof(NewHeadTaglogbuffer);
|
||||
const size_t bodyItemSize = sizeof(NewBodyTaglogbuffer);
|
||||
|
||||
while (offset + headSize <= full_data.size()) {
|
||||
// <20><>ȡͷ<C8A1><CDB7>
|
||||
NewHeadTaglogbuffer head;
|
||||
memcpy(&head, full_data.data() + offset, headSize);
|
||||
head.convertByteOrder(); // ת<><D7AA><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
||||
|
||||
uint32_t logParaNum = head.LogParaNum;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>岿<EFBFBD><E5B2BF><EFBFBD><EFBFBD>full_data<74><61>ռ<EFBFBD>õĿռ䣨<D5BC><E4A3A8><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ䣩
|
||||
size_t bodySpace;
|
||||
if (logParaNum <= 4) {
|
||||
bodySpace = 4 * bodyItemSize;
|
||||
}
|
||||
else {
|
||||
bodySpace = logParaNum * bodyItemSize;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>㹻
|
||||
if (offset + headSize + bodySpace > full_data.size()) {
|
||||
std::cerr << "Insufficient data for event body at offset " << offset << std::endl;
|
||||
break;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
|
||||
NewTaglogbuffer event;
|
||||
event.head = head;
|
||||
event.bodyList.resize(logParaNum);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>岿<EFBFBD><E5B2BF>
|
||||
const uint8_t* bodyData = full_data.data() + offset + headSize;
|
||||
for (uint32_t i = 0; i < logParaNum; ++i) {
|
||||
memcpy(&event.bodyList[i], bodyData, bodyItemSize);
|
||||
event.bodyList[i].convertByteOrder();
|
||||
bodyData += bodyItemSize;
|
||||
}
|
||||
|
||||
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD>һ<EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (event.head.name == event_lineid) {
|
||||
eventList.push_back(event);
|
||||
}
|
||||
|
||||
// <20>ƶ<EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>ÿռ䣨<D5BC><E4A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䣩
|
||||
offset += headSize + bodySpace;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>eventList<73>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><F3A3ACBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>
|
||||
std::cout << "Parsed " << eventList.size() << " events from event log." << std::endl;
|
||||
|
||||
std::list<QVVRRecord> recordlist;
|
||||
for (const auto& event : eventList) {
|
||||
|
||||
QVVRRecord record = DynamicLog_GetQVVRRecordFromLogBuffer(
|
||||
strScale, nPTType, fPT, event);
|
||||
// ʹ<>ü<EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ݣ<EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8>
|
||||
std::cout << "<EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: " << record.nType
|
||||
<< ", <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>: " << record.fPersisstime << "s"
|
||||
<< ", <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: " << record.fMagntitude << " pu"
|
||||
<< ", ʱ<><CAB1><EFBFBD><EFBFBD>: " << record.triggerTimeMs << "ms" << std::endl;
|
||||
|
||||
recordlist.push_back(record);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//<2F><>ʱ<EFBFBD>Ƴ<EFBFBD>CRCУ<43><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//// ========== <20><><EFBFBD><EFBFBD> CRC <20><>֤ ==========
|
||||
//if (!full_data.empty()) {
|
||||
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD> CRC
|
||||
// uint16_t calculated_crc = crc_16_new(full_data.data(), full_data.size());
|
||||
|
||||
// // <20>Ƚϼ<C8BD><CFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CRC <20>ʹӱ<CDB4><D3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1> CRC
|
||||
// if (calculated_crc == crc) {
|
||||
// std::cout << "CRC verification passed for event log data." << std::endl;
|
||||
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// }
|
||||
// else {
|
||||
// std::cerr << "CRC verification failed! Expected: " << crc
|
||||
// << ", Calculated: " << calculated_crc << std::endl;
|
||||
// // <20><><EFBFBD><EFBFBD> CRC У<><D0A3>ʧ<EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
// }
|
||||
//}
|
||||
//else {
|
||||
// //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>
|
||||
// std::cerr << "No data received for event log." << std::endl;
|
||||
//}
|
||||
|
||||
}
|
||||
else {
|
||||
//δ<><CEB4>ȫ<EFBFBD><C8AB>ֱ<EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ȡ<EFBFBD><C8A1><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EEB9A4><EFBFBD><EFBFBD>
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
}
|
||||
else if (udata[8] == static_cast<unsigned char>(MsgResponseType::Response_NewNACK)) {
|
||||
std::cout << "set error" << mac << std::endl;
|
||||
|
||||
std::cout << "reason code: " << static_cast<int>(udata[8]) << "-" << static_cast<int>(udata[9]) << "-" << static_cast<int>(udata[10]) << "-" << static_cast<int>(udata[11]) << std::endl;
|
||||
|
||||
if (udata[10] == static_cast<unsigned char>(0x0c)) {
|
||||
//0x0c<30><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>̬<EFBFBD><CCAC><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD>ڣ<EFBFBD>֪ͨǰ̨<C7B0><CCA8>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬
|
||||
std::cout << "not find event " << mac << std::endl;
|
||||
}
|
||||
else if (udata[10] == static_cast<unsigned char>(0x06)) {
|
||||
//0x0c<30><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨǰ̨<C7B0><CCA8><EFBFBD><EFBFBD><EFBFBD>쳣
|
||||
}
|
||||
else {
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
||||
}
|
||||
// װ<>÷<EFBFBD><C3B7><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>־ʧ<D6BE>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EEB9A4><EFBFBD><EFBFBD>
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
}
|
||||
else {
|
||||
std::cout << "set unknow error" << mac << std::endl;
|
||||
|
||||
std::cout << "reason code: " << static_cast<int>(udata[8]) << "-" << static_cast<int>(udata[9]) << "-" << static_cast<int>(udata[10]) << "-" << static_cast<int>(udata[11]) << std::endl;
|
||||
// װ<>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣
|
||||
// <20><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>־ʧ<D6BE>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EEB9A4><EFBFBD><EFBFBD>
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
}
|
||||
break;
|
||||
|
||||
case DeviceState::CUSTOM_ACTION:
|
||||
// <20>Զ<EFBFBD><D4B6>嶯<EFBFBD><E5B6AF>״̬
|
||||
std::cout << "CUSTOM_ACTION state: Processing custom response from " << mac << std::endl;
|
||||
|
||||
Reference in New Issue
Block a user