modify for ledgerupdate
This commit is contained in:
@@ -14207,11 +14207,11 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
}
|
||||
line_info.line_id = count_real_monitor; // <20><>¼<EFBFBD>ն<EFBFBD><D5B6>ź<EFBFBD>
|
||||
printf("line_id: %d\n", line_info.line_id);
|
||||
printf("mp_id: %d\n", line_info.mp_id);
|
||||
printf("mp_id: %s\n", line_info.mp_id);
|
||||
printf("terminal_code: %s\n", line_info.terminal_code);
|
||||
printf("voltage_level: %d\n", line_info.voltage_level);
|
||||
printf("v_wiring_type: %d\n", line_info.v_wiring_type);
|
||||
printf("monitor_status: %d\n", line_info.monitor_status);
|
||||
printf("voltage_level: %s\n", line_info.voltage_level);
|
||||
printf("v_wiring_type: %s\n", line_info.v_wiring_type);
|
||||
printf("monitor_status: %s\n", line_info.monitor_status);
|
||||
printf("name: %s\n", line_info.name);
|
||||
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
if (update[i].timestamp[0] != '\0') {
|
||||
|
||||
@@ -46,6 +46,7 @@ extern std::string intToString(int number);
|
||||
int StringToInt(const std::string& str);
|
||||
extern pthread_mutex_t mtx;//lnk20250115
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#include "../mms/rdb_client.h"
|
||||
@@ -59,6 +60,7 @@ extern "C" {
|
||||
extern int comtrade_remain_file_num;
|
||||
extern node_t* g_node; //lnk20241223
|
||||
extern LD_info_t* find_LD_info_only_from_mp_id(char* mp_id);//lnk20241223
|
||||
extern void print_terminal(const terminal* tmnl);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -1126,14 +1128,16 @@ std::string prepare_update(const std::string& code_str, const terminal& json_dat
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> modify <20><> add <20><>ǩ
|
||||
if (code_str == "ledger_modify") {
|
||||
indentLevel--;
|
||||
add_indent(xmlStream, indentLevel);
|
||||
xmlStream << "</modify>" << std::endl;
|
||||
indentLevel--;
|
||||
|
||||
}
|
||||
else {
|
||||
indentLevel--;
|
||||
add_indent(xmlStream, indentLevel);
|
||||
xmlStream << "</add>" << std::endl;
|
||||
indentLevel--;
|
||||
|
||||
}
|
||||
|
||||
} else if (code_str == "delete_terminal") {
|
||||
@@ -1350,16 +1354,18 @@ void parse_control(const std::string& json_str, const std::string& output_dir) {
|
||||
else
|
||||
std::strncpy(monitor_data.status, "N/A", sizeof(monitor_data.status) - 1);
|
||||
|
||||
cJSON* lineNo = cJSON_GetObjectItem(item, "lineNo"); // logical_device_seq
|
||||
cJSON* lineNo = cJSON_GetObjectItem(monitor_item, "lineNo"); // logical_device_seq
|
||||
if (lineNo && lineNo->type == cJSON_String)
|
||||
|
||||
std::strncpy(monitor_data.logical_device_seq, lineNo->valuestring, sizeof(monitor_data.logical_device_seq) - 1);
|
||||
else
|
||||
else
|
||||
std::strncpy(monitor_data.logical_device_seq, "N/A", sizeof(monitor_data.logical_device_seq) - 1);
|
||||
|
||||
cJSON* ptType = cJSON_GetObjectItem(item, "ptType"); // terminal_connect
|
||||
cJSON* ptType = cJSON_GetObjectItem(monitor_item, "ptType"); // terminal_connect
|
||||
if (ptType && ptType->type == cJSON_String)
|
||||
|
||||
std::strncpy(monitor_data.terminal_connect, ptType->valuestring, sizeof(monitor_data.terminal_connect) - 1);
|
||||
else
|
||||
else
|
||||
std::strncpy(monitor_data.terminal_connect, "N/A", sizeof(monitor_data.terminal_connect) - 1);
|
||||
|
||||
std::strncpy(monitor_data.timestamp, json_data.timestamp, sizeof(monitor_data.timestamp) - 1);
|
||||
@@ -1370,6 +1376,8 @@ void parse_control(const std::string& json_str, const std::string& output_dir) {
|
||||
}
|
||||
}
|
||||
|
||||
print_terminal(&json_data);
|
||||
|
||||
// <><D7BC> XML <20><><EFBFBD>ݲ<EFBFBD>д<EFBFBD><D0B4><EFBFBD>ļ<EFBFBD>
|
||||
std::string xmlContent = prepare_update(code_str, json_data);
|
||||
if (xmlContent != "") {
|
||||
|
||||
@@ -807,30 +807,31 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
||||
printf("add ledger num:%d\n",update_num);
|
||||
for (i=0; i<update_num; i++){ //<2F>鿴<EFBFBD><E9BFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8>
|
||||
new_in_work_found = FALSE;
|
||||
printf(" ledger of %s\n",update[i].terminal_id);
|
||||
ied = find_ied_from_terminal_id(update[i].terminal_id); //ͨ<><CDA8><EFBFBD>ļ<EFBFBD><C4BC>е<EFBFBD><D0B5>ն˺<D5B6><CBBA>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>豸
|
||||
if (ied){
|
||||
printf("find ied by terminal_id, terminal already exsist\n");
|
||||
new_in_work_found = TRUE; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD>е<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
||||
if(update[i].terminal_id != NULL){
|
||||
printf(" ledger of %s\n",update[i].terminal_id);
|
||||
ied = find_ied_from_terminal_id(update[i].terminal_id); //ͨ<><CDA8><EFBFBD>ļ<EFBFBD><C4BC>е<EFBFBD><D0B5>ն˺<D5B6><CBBA>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>豸
|
||||
if (ied){
|
||||
printf("find ied by terminal_id, terminal already exsist\n");
|
||||
new_in_work_found = TRUE; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD>е<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ǰ<EFBFBD>ն˴<D5B6> new_updates <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD> modify_updates <20><><EFBFBD><EFBFBD>
|
||||
if (ledger_update_xml->modify_update_num < MAX_UPDATEA_NUM) {
|
||||
// <20><><EFBFBD>ӵ<EFBFBD> modify_updates <20><><EFBFBD><EFBFBD>
|
||||
ledger_update_xml->modify_updates[ledger_update_xml->modify_update_num] = update[i];
|
||||
ledger_update_xml->modify_update_num++; // <20><><EFBFBD><EFBFBD> modify <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ǰ<EFBFBD>ն˴<D5B6> new_updates <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD> modify_updates <20><><EFBFBD><EFBFBD>
|
||||
if (ledger_update_xml->modify_update_num < MAX_UPDATEA_NUM) {
|
||||
// <20><><EFBFBD>ӵ<EFBFBD> modify_updates <20><><EFBFBD><EFBFBD>
|
||||
ledger_update_xml->modify_updates[ledger_update_xml->modify_update_num] = update[i];
|
||||
ledger_update_xml->modify_update_num++; // <20><><EFBFBD><EFBFBD> modify <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>նˣ<D5B6><CBA3><EFBFBD> new_updates <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD>
|
||||
for (j = i; j < ledger_update_xml->new_update_num - 1; j++) {
|
||||
ledger_update_xml->new_updates[j] = ledger_update_xml->new_updates[j + 1]; // <20><>ǰ<EFBFBD>ƶ<EFBFBD>Ԫ<EFBFBD><D4AA>
|
||||
}
|
||||
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>նˣ<D5B6><CBA3><EFBFBD> new_updates <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD>
|
||||
for (j = i; j < ledger_update_xml->new_update_num - 1; j++) {
|
||||
ledger_update_xml->new_updates[j] = ledger_update_xml->new_updates[j + 1]; // <20><>ǰ<EFBFBD>ƶ<EFBFBD>Ԫ<EFBFBD><D4AA>
|
||||
}
|
||||
|
||||
ledger_update_xml->new_update_num--; // <20><><EFBFBD><EFBFBD> new_update_num<75><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ԫ<EFBFBD><D4AA>
|
||||
i--; // <20><><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĵ<D0B5>ǰԪ<C7B0>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
} else {
|
||||
fprintf(stderr, "Exceeded MAX_UPDATEA_NUM limit for modify_updates!\n");
|
||||
}
|
||||
|
||||
}
|
||||
ledger_update_xml->new_update_num--; // <20><><EFBFBD><EFBFBD> new_update_num<75><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ԫ<EFBFBD><D4AA>
|
||||
continue;
|
||||
} else {
|
||||
fprintf(stderr, "Exceeded MAX_UPDATEA_NUM limit for modify_updates!\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!new_in_work_found) { //<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD>µ<EFBFBD>̨<EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8>
|
||||
|
||||
@@ -876,215 +877,6 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
||||
|
||||
//3-д<><D0B4>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//////////////////////////////
|
||||
int ret = update_one_terminal_ledger(update,i,ied,g_node->n_clients);
|
||||
#if 0
|
||||
// <20><> update[i] <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>뵽 ied_usr <20><>
|
||||
if (strlen(update[i].terminal_id) != 0) {
|
||||
apr_snprintf(ied_usr->terminal_id, sizeof(ied_usr->terminal_id), "%s", update[i].terminal_id);
|
||||
printf("ied_usr->terminal_id: %s\n", ied_usr->terminal_id);
|
||||
}
|
||||
|
||||
if (update[i].terminal_code != NULL) {
|
||||
apr_snprintf(ied_usr->terminal_code, sizeof(ied_usr->terminal_code), "%s", update[i].terminal_code);
|
||||
printf("ied_usr->terminal_code: %s\n", ied_usr->terminal_code);
|
||||
}
|
||||
|
||||
if (update[i].tmnl_factory != NULL) {
|
||||
apr_snprintf(ied_usr->tmnl_factory, sizeof(ied_usr->tmnl_factory), "%s", update[i].tmnl_factory);
|
||||
printf("ied_usr->tmnl_factory: %s\n", ied_usr->tmnl_factory);
|
||||
}
|
||||
|
||||
if (update[i].tmnl_status != NULL) {
|
||||
apr_snprintf(ied_usr->tmnl_status, sizeof(ied_usr->tmnl_status), "%s", update[i].tmnl_status);
|
||||
printf("ied_usr->tmnl_status: %s\n", ied_usr->tmnl_status);
|
||||
}
|
||||
|
||||
if (update[i].dev_type != NULL) {
|
||||
apr_snprintf(ied_usr->dev_type, sizeof(ied_usr->dev_type), "%s", update[i].dev_type);
|
||||
printf("ied_usr->dev_type: %s\n", ied_usr->dev_type);
|
||||
}
|
||||
|
||||
if (update[i].dev_series != NULL) {
|
||||
apr_snprintf(ied_usr->dev_series, sizeof(ied_usr->dev_series), "%s", update[i].dev_series);
|
||||
printf("ied_usr->dev_series: %s\n", ied_usr->dev_series);
|
||||
} else {
|
||||
apr_snprintf(ied_usr->dev_series, sizeof(ied_usr->dev_series), "%s", ""); // Ĭ<><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
printf("ied_usr->dev_series (default): %s\n", ied_usr->dev_series);
|
||||
}
|
||||
|
||||
if (update[i].dev_key != NULL) {
|
||||
apr_snprintf(ied_usr->dev_key, sizeof(ied_usr->dev_key), "%s", update[i].dev_key);
|
||||
printf("ied_usr->dev_key: %s\n", ied_usr->dev_key);
|
||||
} else {
|
||||
apr_snprintf(ied_usr->dev_key, sizeof(ied_usr->dev_key), "%s", ""); // Ĭ<><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
printf("ied_usr->dev_key (default): %s\n", ied_usr->dev_key);
|
||||
}
|
||||
|
||||
ied_usr->dev_idx = new_client_count; // <20><><EFBFBD>µ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ն<EFBFBD><D5B6>ź<EFBFBD>
|
||||
printf("dev_idx: %d\n", ied_usr->dev_idx);
|
||||
|
||||
ied->channel[0].channel_type = CHANNEL_TYPE_IPV4; // channel
|
||||
ied->channel[0].addr_str[LONGNAME - 1] = 0; // DEV_IP
|
||||
if (update[i].addr_str != NULL) {
|
||||
ied->channel[0].addr = ntohl(inet_addr(update[i].addr_str)); // DEV_IP
|
||||
strncpy(ied->channel[0].addr_str, update[i].addr_str, LONGNAME - 1); // DEV_IP
|
||||
printf("ied_usr->addr_str: %s\n", ied->channel[0].addr_str);
|
||||
} else {
|
||||
ied->channel[0].addr = ntohl(inet_addr("0.0.0.0")); // DEV_IP
|
||||
strncpy(ied->channel[0].addr_str, update[i].addr_str, LONGNAME - 1); // DEV_IP
|
||||
printf("ied_usr->addr_str: %s\n", ied->channel[0].addr_str);
|
||||
}
|
||||
|
||||
if (update[i].port != NULL) {
|
||||
int port = 102;
|
||||
if (stringToInt(update[i].port, &port)) {
|
||||
// ת<><D7AA><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>portStrȫΪ<C8AB><CEAA><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ת<EFBFBD><D7AA>Ϊint<6E><74><EFBFBD>͵<EFBFBD>port
|
||||
ied->channel[0].port = port; // DEV_PortID
|
||||
printf("ied_usr->port: %d\n", ied->channel[0].port); // DEV_PortID
|
||||
} else {
|
||||
ied->channel[0].port = 102; // DEV_PortID
|
||||
printf("ied_usr->port: %s, <20>ǺϷ<C7BA><CFB7>˿<EFBFBD>. ʹ<><CAB9>Ĭ<EFBFBD>϶˿<CFB6>: %d\n", update[i].port, ied->channel[0].port); // DEV_PortID
|
||||
}
|
||||
}
|
||||
|
||||
if (update[i].timestamp != NULL && strlen(update[i].timestamp) > 0) {
|
||||
// <20><><EFBFBD><EFBFBD>struct tm<74><6D><EFBFBD><EFBFBD>
|
||||
struct tm timeinfo = {0}; // <20><>ʼ<EFBFBD><CABC>Ϊ0
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽΪ "YYYY-MM-DD HH:MM:SS"
|
||||
// ʹ<><CAB9>sscanf<6E><66><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ֶ<EFBFBD>
|
||||
if (sscanf(update[i].timestamp, "%4d-%2d-%2d %2d:%2d:%2d",
|
||||
&timeinfo.tm_year, &timeinfo.tm_mon, &timeinfo.tm_mday,
|
||||
&timeinfo.tm_hour, &timeinfo.tm_min, &timeinfo.tm_sec) == 6) {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>1900<30><30>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
timeinfo.tm_year -= 1900;
|
||||
// <20>·ݴ<C2B7>0<EFBFBD><30>ʼ<EFBFBD><CABC><EFBFBD>㣬<EFBFBD><E3A3AC>ȥ1
|
||||
timeinfo.tm_mon -= 1;
|
||||
// <20><>tm_isdst<73><74><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ-1<><31><EFBFBD><EFBFBD>mktime<6D>Զ<EFBFBD><D4B6>ж<EFBFBD>
|
||||
timeinfo.tm_isdst = -1;
|
||||
|
||||
// ʹ<><CAB9>mktime<6D><65>struct tmת<6D><D7AA>Ϊtime_t
|
||||
time_t raw_time = mktime(&timeinfo);
|
||||
|
||||
// <20>ж<EFBFBD>mktime<6D>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD>
|
||||
if (raw_time != -1) {
|
||||
ied_usr->time = (long long)raw_time;
|
||||
printf("ied_usr->time: %lld\n", ied_usr->time);
|
||||
} else {
|
||||
printf("Error: mktime failed.\n");
|
||||
}
|
||||
} else {
|
||||
printf("Error: sscanf failed. Invalid timestamp format.\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
chnl_usr = (chnl_usr_t*)apr_pcalloc(g_init_pool, sizeof(chnl_usr_t));
|
||||
ied->channel[0].connect = chnl_usr;
|
||||
chnl_usr->chnl = &(ied->channel[0]);
|
||||
chnl_usr->chnl_id = 0;
|
||||
chnl_usr->m_state = CHANNEL_DISCONNECTED;
|
||||
chnl_usr->m_ClosedMsTime = NEXT_CONNECT_TIME * (-1);
|
||||
g_pt61850app->chnl_counts++;
|
||||
|
||||
// <20><> monitorData <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>뵽 LD_info <20><>
|
||||
int count_real_monitor = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˵ļ<CBB5><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
int j;
|
||||
for (j = 0; j < 10 && update[i].line[j].monitor_id[0] != '\0'; ++j) {
|
||||
monitor monitor_data = update[i].line[j];
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
count_real_monitor++;
|
||||
|
||||
// <20><>ʼ<EFBFBD><CABC> LD_info
|
||||
LD_info_t line_info;
|
||||
memset(&line_info, 0, sizeof(line_info));
|
||||
|
||||
char logical_device_seq[64];
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
strncpy(line_info.mp_id, monitor_data.monitor_id, sizeof(line_info.mp_id) - 1);
|
||||
strncpy(line_info.name, monitor_data.monitor_name, sizeof(line_info.name) - 1);
|
||||
strncpy(line_info.voltage_level, monitor_data.voltage_level, sizeof(line_info.voltage_level) - 1);
|
||||
strncpy(line_info.v_wiring_type, monitor_data.terminal_connect, sizeof(line_info.v_wiring_type) - 1);
|
||||
strncpy(line_info.monitor_status, monitor_data.status, sizeof(line_info.monitor_status) - 1);
|
||||
strncpy(line_info.terminal_code, monitor_data.terminal_code, sizeof(line_info.terminal_code) - 1);
|
||||
|
||||
strncpy(logical_device_seq, monitor_data.logical_device_seq, sizeof(logical_device_seq) - 1);
|
||||
if (isCharPtrEmpty(logical_device_seq)) {
|
||||
line_info.cpuno = 1; // Ĭ<>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>1
|
||||
printf("logical_device_seq: is null, set cpuno: %d\n", line_info.cpuno);
|
||||
} else {
|
||||
line_info.cpuno = atoi(logical_device_seq);
|
||||
printf("logical_device_seq: %d\n", line_info.cpuno);
|
||||
}
|
||||
|
||||
line_info.line_id = count_real_monitor; // <20><>¼<EFBFBD>ն<EFBFBD><D5B6>ź<EFBFBD>
|
||||
|
||||
printf("line_id: %d\n", line_info.line_id);
|
||||
printf("mp_id: %d\n", line_info.mp_id);
|
||||
printf("terminal_code: %s\n", line_info.terminal_code);
|
||||
printf("voltage_level: %d\n", line_info.voltage_level);
|
||||
printf("v_wiring_type: %d\n", line_info.v_wiring_type);
|
||||
printf("monitor_status: %d\n", line_info.monitor_status);
|
||||
printf("name: %s\n", line_info.name);
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
if (update[i].timestamp[0] != '\0') {
|
||||
struct tm timeinfo;
|
||||
char timestamp[64];
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>update[i].timestamp<6D><70>ʽΪ "YYYY-MM-DD HH:MM:SS"
|
||||
// <20><><EFBFBD>磺"2023-01-14 12:34:56"
|
||||
sscanf(update[i].timestamp, "%4d-%2d-%2d %2d:%2d:%2d",
|
||||
&timeinfo.tm_year, &timeinfo.tm_mon, &timeinfo.tm_mday,
|
||||
&timeinfo.tm_hour, &timeinfo.tm_min, &timeinfo.tm_sec);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>1900<30>꿪ʼ<EABFAA><CABC><EFBFBD><EFBFBD>
|
||||
timeinfo.tm_year -= 1900;
|
||||
// <20>·ݴ<C2B7>0<EFBFBD><30>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>1
|
||||
timeinfo.tm_mon -= 1;
|
||||
// <20><>tm_isdst<73><74><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ-1<><31><EFBFBD><EFBFBD>mktime<6D>Զ<EFBFBD><D4B6>ж<EFBFBD>
|
||||
timeinfo.tm_isdst = -1;
|
||||
|
||||
// ʹ<><CAB9>mktime<6D><65>struct tmת<6D><D7AA>Ϊtime_t
|
||||
time_t raw_time = mktime(&timeinfo);
|
||||
|
||||
// <20>ж<EFBFBD>mktime<6D>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD>
|
||||
if (raw_time != -1) {
|
||||
line_info.time = (long long)raw_time;
|
||||
printf("time: %lld\n", line_info.time);
|
||||
} else {
|
||||
printf("Error: mktime failed.\n");
|
||||
}
|
||||
}
|
||||
|
||||
line_info.read_flag = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> LD_info
|
||||
if (ied && ied->usr_ext && line_info.cpuno && ((int)line_info.cpuno < 10)) {
|
||||
char str[256];
|
||||
byte_t cpuno = line_info.cpuno;
|
||||
printf("cpuno: %d\n", line_info.cpuno);
|
||||
printf("index cpuno: %d\n", cpuno - 1);
|
||||
ied_usr = (ied_usr_t*)ied->usr_ext;
|
||||
ied_usr->LD_info[cpuno - 1] = line_info; // cpunoĬ<6F><C4AC><EFBFBD><EFBFBD>1
|
||||
ied_usr->LD_info[cpuno - 1].ied = ied;
|
||||
apr_snprintf(str, sizeof(str), "PQMonitorPQM%d", cpuno);
|
||||
ied_usr->LD_info[cpuno - 1].LD_name = apr_pstrdup(g_init_pool, str);
|
||||
ied_usr->LD_info[cpuno - 1].ht_fcd = apr_hash_make(g_init_pool);
|
||||
ied_usr->LD_info[cpuno - 1].ht_full_fcda = apr_hash_make(g_init_pool);
|
||||
ied_usr->LD_info[cpuno - 1].rptcount = 0;
|
||||
printf("rptcount: %d\n", ied_usr->LD_info[cpuno - 1].rptcount);
|
||||
if (cpuno > ied->cpucount) {
|
||||
ied->cpucount = cpuno;
|
||||
}
|
||||
}
|
||||
// ied_usr->LD_info[j] = line_info;
|
||||
printf("Monitor Info [ID: %s, Name: %s] saved in LD_info\n", line_info.mp_id, line_info.name);
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
//3-д<><D0B4>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>///////////////////////////////////
|
||||
|
||||
@@ -1224,7 +1016,9 @@ void check_ledger_update()//lnk20250113
|
||||
|
||||
trigger_update_xml_t trigger_ledger_update_xml; //̨<>˸<EFBFBD><CBB8><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ṹ
|
||||
|
||||
printf("begin ledger update...\n");
|
||||
printf("check ledger update...\n");
|
||||
|
||||
last_check_3s_config_time = now; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
|
||||
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>նˣ<D5B6><CBA3><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ļ<EFBFBD>
|
||||
while (APR_SUCCESS==parse_ledger_update_xml(&trigger_ledger_update_xml)){ //<2F><><EFBFBD><EFBFBD>̨<EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD>ļ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><D0BF>Ը<EFBFBD><D4B8>»<EFBFBD><C2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˵<EFBFBD>
|
||||
|
||||
Reference in New Issue
Block a user