modify for ledgerupdate

This commit is contained in:
lnk
2025-02-10 17:03:15 +08:00
parent 3a37ce9c5b
commit faaef4f166
6 changed files with 185 additions and 28 deletions

View File

@@ -142,6 +142,9 @@ public:
char port[64];
char timestamp[64];
//lnk20250210<31><30><EFBFBD>ӽ<EFBFBD><D3BD>̺<EFBFBD>
char processNo[64];
ledger_monitor line[10];
char count_cfg[64]; //<2F><><EFBFBD><EFBFBD>̨<EFBFBD>˵<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>̨<EFBFBD><CCA8>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -4117,6 +4120,7 @@ void parse_terminal_from_data(trigger_update_xml_t* trigger_update_xml, const st
strcpy(work_terminal.dev_type, extract_value(data, "devType").c_str());
strcpy(work_terminal.dev_key, extract_value(data, "devKey").c_str());
strcpy(work_terminal.dev_series, extract_value(data, "series").c_str());
strcpy(work_terminal.processNo, extract_value(data, "processNo").c_str());
strcpy(work_terminal.addr_str, extract_value(data, "ip").c_str());
strcpy(work_terminal.port, extract_value(data, "port").c_str());
strcpy(work_terminal.timestamp, extract_value(data, "updateTime").c_str());
@@ -11526,6 +11530,7 @@ void printTerminalDevMap(const QMap<QString, terminal_dev*>& terminal_dev_map) {
<< ", Device Type:" << QString(dev->dev_type)
<< ", Device Key:" << QString(dev->dev_key)
<< ", Device Series:" << QString(dev->dev_series)
<< ", Device processNo:" << QString(dev->processNo)
<< ", Address:" << QString(dev->addr_str)
<< ", Port:" << QString(dev->port)
<< ", Timestamp:" << QString(dev->timestamp);
@@ -11636,6 +11641,7 @@ void printLedgerinshell(const ied_usr_t& ied_usr, QIODevice* outputDevice) {
outputDevice->write("|-- dev_type: " + QByteArray(ied_usr.dev_type) + "\n");
outputDevice->write("|-- dev_key: " + QByteArray(ied_usr.dev_key) + "\n");
outputDevice->write("|-- dev_series: " + QByteArray(ied_usr.dev_series) + "\n");
outputDevice->write("|-- dev_processNo: " + QByteArray(ied_usr.processNo) + "\n");
outputDevice->write("|-- dev_flag: " + QByteArray::number(ied_usr.dev_flag) + "\n");
outputDevice->write("|-- last_call_wavelist_time: " + QByteArray::number(ied_usr.last_call_wavelist_time) + "\n");
@@ -11745,6 +11751,28 @@ void ledger(const char* terminal_id, QIODevice* outputDevice) {
}
pthread_mutex_unlock(&mtx);
}
//lnk20250210<31><30>ӡָ<D3A1><D6B8><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>
void value_print(const char *variableName, QTcpSocket *clientSocket) {
char buffer[256]; // <20><><EFBFBD>ڴ洢<DAB4><E6B4A2><EFBFBD><EFBFBD>ֵ<EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>
// <20><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>ֵ
if (strcmp(variableName, "frontindex") == 0) {
sprintf(buffer, "frontindex = %d", g_front_seg_index); // <20><> int ת<><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
clientSocket->write(buffer); // <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>
} else if (strcmp(variableName, "iedcount") == 0) {
sprintf(buffer, "g_node->n_clients = %d, ied config count = %d", IED_COUNT);
clientSocket->write(buffer);
} else if (strcmp(variableName, "frontfun") == 0) {
sprintf(buffer, "frontfun = %s", subdir);
clientSocket->write(buffer);
} else {
clientSocket->write("Unknown variable name\n> ");
}
clientSocket->flush();
}
//////////////////////////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD> JSON <20>ĺ<EFBFBD><C4BA><EFBFBD> <20><>ǰ<EFBFBD>ö<EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
@@ -11854,6 +11882,7 @@ int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>index<65><78><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ӧ<EFBFBD><D3A6>̨<EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>پ<EFBFBD><D9BE>֣<EFBFBD><D6A3><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>̨<EFBFBD>˲<EFBFBD><CBB2>жϽ<D0B6><CFBD>̺<EFBFBD>
#if 0
int base_size = 0;
int remainder = 0;
int start_index = 0;
@@ -11873,6 +11902,9 @@ int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
end_index = data_size;
}
}
#endif
int start_index = 0;
int end_index = data_size;
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Χ<EFBFBD>ڵ<EFBFBD>Ԫ<EFBFBD><D4AA>
for (int i = start_index; i < end_index; ++i) {
@@ -11930,6 +11962,11 @@ int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
if (series && series->type == cJSON_String) strncpy(dev->dev_series, series->valuestring, sizeof(dev->dev_series) - 1);
else strncpy(dev->dev_series, "N/A", sizeof(dev->dev_series) - 1);
//lnk20250210̨<30>˽<EFBFBD><CBBD>̺<EFBFBD>
cJSON* processNo = cJSON_GetObjectItem(item, "processNo"); // processNoתΪ<D7AA>ַ<EFBFBD><D6B7><EFBFBD>
if (processNo && processNo->type == cJSON_Number) snprintf(dev->processNo, sizeof(dev->processNo), "%d", processNo->valueint);
else strncpy(dev->processNo, "N/A", sizeof(dev->processNo) - 1);
cJSON* port = cJSON_GetObjectItem(item, "port"); // port
if (port && port->type == cJSON_String) strncpy(dev->port, port->valuestring, sizeof(dev->port) - 1);
else strncpy(dev->port, "N/A", sizeof(dev->port) - 1);
@@ -11992,10 +12029,16 @@ int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
terminal_dev_map->remove(key);
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> terminal_dev <20><><EFBFBD><EFBFBD>
terminal_dev_map->insert(key, dev);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>Ϊֻ<EFBFBD>н<EFBFBD><EFBFBD>̺<EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>index<EFBFBD><EFBFBD>¼<EFBFBD>뵱ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(atoi(dev->processNo) == g_front_seg_index){//lnk20250210ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout<< "process num match" << std::endl;
terminal_dev_map->insert(key, dev);}//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>Ϊֻ<CEAA>н<EFBFBD><D0BD>̺<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>index<65><78>¼<EFBFBD>뵱ǰ<EBB5B1><C7B0><EFBFBD><EFBFBD>
} else {
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> terminal_dev <20><><EFBFBD><EFBFBD>
terminal_dev_map->insert(key, dev);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>Ϊֻ<EFBFBD>н<EFBFBD><EFBFBD>̺<EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>index<EFBFBD><EFBFBD>¼<EFBFBD>뵱ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(atoi(dev->processNo) == g_front_seg_index){//lnk20250210ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout<< "process num match" << std::endl;
terminal_dev_map->insert(key, dev);}//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>Ϊֻ<CEAA>н<EFBFBD><D0BD>̺<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>index<65><78>¼<EFBFBD>뵱ǰ<EBB5B1><C7B0><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//std::cout << "i = " << i << std::endl;
//std::cout << "terminal_dev_map.size:" << terminal_dev_map->size() << std::endl;
@@ -12186,6 +12229,10 @@ int parse_device_cfg_web()
char dev_series[255];
char addr_str[64];
char port_char[64];
//lnk20250210<31><30><EFBFBD>ӽ<EFBFBD><D3BD>̺<EFBFBD>
char processNo[64];
otl_datetime timestamp;
// <20><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -12208,6 +12255,7 @@ int parse_device_cfg_web()
strncpy(dev_series, value->dev_series, sizeof(dev_series) - 1);
strncpy(addr_str, value->addr_str, sizeof(addr_str) - 1);
strncpy(port_char, value->port, sizeof(port_char) - 1);
strncpy(processNo, value->processNo, sizeof(processNo) - 1);//<2F><><EFBFBD>̺<EFBFBD>
timestamp = parseTimestamp(value->timestamp);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>
@@ -12270,6 +12318,13 @@ int parse_device_cfg_web()
apr_snprintf(ied_usr->dev_type, sizeof(ied_usr->dev_type), "%s", dev_type);//dev_type
cout << "ied_usr->dev_type:" << ied_usr->dev_type << endl;
}
//lnk20250210̨<30>˽<EFBFBD><CBBD>̺<EFBFBD>
if (processNo != NULL) {
apr_snprintf(ied_usr->processNo, sizeof(ied_usr->processNo), "%s", processNo);//processNo
cout << "ied_usr->processNo:" << ied_usr->processNo << endl;
}
if (dev_series != NULL) {
apr_snprintf(ied_usr->dev_series, sizeof(ied_usr->dev_series), "%s", dev_series);//DEV_Series
cout << "defalut dev_series:" << ied_usr->dev_series << endl;
@@ -14454,18 +14509,11 @@ int parse_rpt_log_ini_one(ied_t* ied)
} else {//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BBBB><EFBFBD><EFBFBD>ԭ<EFBFBD>пռ<D0BF><D5BC>ϸ<EFBFBD><CFB8><EFBFBD>
//lnk20250208<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout << "cpuno:" << cpuno << "apr_cpystrn" <<std::endl;
// ȷ<><C8B7>Ŀ<EFBFBD><EFBFBD><EABBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B9BB>
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout << "strlen(str):" << strlen(str) << "strlen(ied_usr->LD_info[cpuno].LD_name)" << strlen(ied_usr->LD_info[cpuno].LD_name) <<std::endl;
if (strlen(str) < strlen(ied_usr->LD_info[cpuno].LD_name)) {
apr_cpystrn(ied_usr->LD_info[cpuno].LD_name, str, 256);
} else {
std::cerr << "Error: target buffer is too small." << std::endl;
// <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
}
apr_cpystrn(ied_usr->LD_info[cpuno].LD_name, str, 256);//apr_palloc ֻ<>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>̶<EFBFBD><CCB6><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><E9A3AC>û<EFBFBD><C3BB><EFBFBD>ṩֱ<E1B9A9>ӵĻ<D3B5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD>֤<EFBFBD><D6A4><EFBFBD>Ŀռ<C4BF><D5BC>Ƿ<EFBFBD><C7B7>ѱ<EFBFBD>ʹ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ֱ<EFBFBD>Ӹ<EFBFBD><D3B8>Ǽ<EFBFBD><C7BC><EFBFBD>
}
delete[] tmp;//Get_IED<45>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬ʹ<E6A3AC>ú<EFBFBD>ɾ<EFBFBD><C9BE>