modify for ledgerupdate
This commit is contained in:
@@ -57,6 +57,13 @@ extern "C" {
|
|||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
///////////////////////////////lnk20250118̨<38>˱<EFBFBD><CBB1><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5>ڴ<EFBFBD><DAB4>أ<EFBFBD><D8A3><EFBFBD>̬<EFBFBD>ڴ<EFBFBD><DAB4>صķ<D8B5>ʽ<EFBFBD><CABD>ÿ<EFBFBD><C3BF><EFBFBD>ڴ<EFBFBD><DAB4>ط<EFBFBD>һ<EFBFBD><D2BB>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ֺ<EFBFBD><D6BA><EFBFBD>
|
||||||
|
// <20><><EFBFBD>ڴ洢<DAB4>ն<EFBFBD> ID <20>Ͷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ӳ<EFBFBD>
|
||||||
|
std::list<std::pair<std::string, apr_pool_t*> > pool_list;
|
||||||
|
///////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//ZW 2023-10-10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>нṹ
|
//ZW 2023-10-10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>нṹ
|
||||||
class RecallInfo
|
class RecallInfo
|
||||||
{
|
{
|
||||||
@@ -191,6 +198,9 @@ std::string LEDGER_UPDATE_FN = "LedgerUpdate.log";
|
|||||||
|
|
||||||
const int MAX_CPUNO = 10;
|
const int MAX_CPUNO = 10;
|
||||||
|
|
||||||
|
//lnk20250121<32>ն<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
int IED_COUNT = 200; //Ĭ<><C4AC>200
|
||||||
|
|
||||||
//WW 2-23-08-20 add start
|
//WW 2-23-08-20 add start
|
||||||
otl_connect db; //OTL<54><4C><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD> WW 2023-08-20
|
otl_connect db; //OTL<54><4C><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD> WW 2023-08-20
|
||||||
int g_iOTLFlag = 0; //Sql<71>Ƿ<EFBFBD>ִ<EFBFBD>б<EFBFBD>־(0-<2D><>ִ<EFBFBD>У<EFBFBD>1-ִ<><D6B4>) //lnk202410-22<32>滻web<65>ӿں<D3BF><DABA>ر<EFBFBD>
|
int g_iOTLFlag = 0; //Sql<71>Ƿ<EFBFBD>ִ<EFBFBD>б<EFBFBD>־(0-<2D><>ִ<EFBFBD>У<EFBFBD>1-ִ<><D6B4>) //lnk202410-22<32>滻web<65>ӿں<D3BF><DABA>ر<EFBFBD>
|
||||||
@@ -666,6 +676,7 @@ void init_config() {
|
|||||||
std::cout << "Read MONITOR_STATUS:" << MONITOR_STATUS << std::endl;
|
std::cout << "Read MONITOR_STATUS:" << MONITOR_STATUS << std::endl;
|
||||||
ICD_FLAG = settings.value("Ledger/IcdFlag", 0).toString().toStdString();
|
ICD_FLAG = settings.value("Ledger/IcdFlag", 0).toString().toStdString();
|
||||||
std::cout << "Read ICD_FLAG:" << ICD_FLAG << std::endl;
|
std::cout << "Read ICD_FLAG:" << ICD_FLAG << std::endl;
|
||||||
|
IED_COUNT = settings.value("Ledger/IedCount", 0).toInt();
|
||||||
|
|
||||||
//////////////////////////////////////////////////<2F><><EFBFBD><EFBFBD>socket<65><74><EFBFBD><EFBFBD>///////////////////
|
//////////////////////////////////////////////////<2F><><EFBFBD><EFBFBD>socket<65><74><EFBFBD><EFBFBD>///////////////////
|
||||||
SOCKETENABLE = settings.value("Socket/SocketEnable", 0).toInt();
|
SOCKETENABLE = settings.value("Socket/SocketEnable", 0).toInt();
|
||||||
@@ -3849,7 +3860,8 @@ int parse_rpt_log_ini()
|
|||||||
QStringList* log_temp = new QStringList();
|
QStringList* log_temp = new QStringList();
|
||||||
rpt_cfg_strlists.insert(type, rpt_temp);
|
rpt_cfg_strlists.insert(type, rpt_temp);
|
||||||
log_cfg_strlists.insert(type, log_temp);
|
log_cfg_strlists.insert(type, log_temp);
|
||||||
parse_one_rpt_log_ini(ied_usr->dev_flag, rpt_cfg_strlists[type], log_cfg_strlists[type], ied_usr->dev_type);
|
//g_DevFlagû<67><C3BB>ʹ<EFBFBD><CAB9>
|
||||||
|
parse_one_rpt_log_ini(g_DevFlag, rpt_cfg_strlists[type], log_cfg_strlists[type], ied_usr->dev_type);
|
||||||
|
|
||||||
}
|
}
|
||||||
/*if (not_loaded[ied_usr->dev_flag]) {
|
/*if (not_loaded[ied_usr->dev_flag]) {
|
||||||
@@ -12145,10 +12157,12 @@ int parse_device_cfg_web()
|
|||||||
|
|
||||||
std::cout << "terminal_ledger_num:" << count_cfg << std::endl;
|
std::cout << "terminal_ledger_num:" << count_cfg << std::endl;
|
||||||
|
|
||||||
g_node->n_clients = count_cfg; //<2F><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
g_node->n_clients = count_cfg;
|
||||||
g_node->clients = (ied_t**)apr_pcalloc(g_cfg_pool, count_cfg * sizeof(ied_t*));
|
//<2F><><EFBFBD>↑<EFBFBD>ٵ<EFBFBD>ied<65>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>е<EFBFBD><D0B5>ն<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20250121
|
||||||
|
g_node->clients = (ied_t**)apr_pcalloc(g_cfg_pool, IED_COUNT * sizeof(ied_t*));//g_node->clients <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ռ<EFBFBD><D5BC>洢<EFBFBD><E6B4A2> count_cfg <20><> ied_t* <20><><EFBFBD>͵<EFBFBD>ָ<EFBFBD>루<EFBFBD><EBA3A8>һ<EFBFBD><D2BB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>飩<EFBFBD><E9A3A9><EFBFBD>ǣ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룩<EFBFBD><EBA3A9>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
//<2F><>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
for (int k = 0; k < count_cfg; k++)
|
for (int k = 0; k < count_cfg; k++)
|
||||||
g_node->clients[k] = (ied_t*)apr_pcalloc(g_cfg_pool, sizeof(ied_t));
|
g_node->clients[k] = (ied_t*)apr_pcalloc(g_cfg_pool, sizeof(ied_t));//ÿ<><C3BF> g_node->clients[k] ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD>ģ<EFBFBD>ÿ<EFBFBD><C3BF> ied_t <20>ṹ<EFBFBD><E1B9B9>ռ<EFBFBD>õ<EFBFBD><C3B5>ڴ<EFBFBD><DAB4>飩<EFBFBD><E9A3A9><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||||
|
|
||||||
//<2F><>ȡ<EFBFBD>ն<EFBFBD>̨<EFBFBD>˱<EFBFBD><CBB1>滻Ϊweb<65>ӿ<EFBFBD>
|
//<2F><>ȡ<EFBFBD>ն<EFBFBD>̨<EFBFBD>˱<EFBFBD><CBB1>滻Ϊweb<65>ӿ<EFBFBD>
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -12192,21 +12206,24 @@ int parse_device_cfg_web()
|
|||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>
|
||||||
ied = g_node->clients[count_real++];
|
ied = g_node->clients[count_real++];
|
||||||
ied_usr = (ied_usr_t*)apr_pcalloc(g_init_pool, sizeof(ied_usr_t));
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ied<65><64>
|
||||||
|
ied_usr = (ied_usr_t*)apr_pcalloc(g_init_pool, sizeof(ied_usr_t));//<2F>ն<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>initpool<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
||||||
ied->usr_ext = ied_usr;
|
ied->usr_ext = ied_usr;
|
||||||
|
|
||||||
if (ied_usr == NULL)
|
if (ied_usr == NULL)
|
||||||
return APR_ENOMEM;
|
return APR_ENOMEM;
|
||||||
|
|
||||||
ied_usr->last_call_wavelist_time = sGetMsTime() + g_pt61850app->giTime * 1000;
|
ied_usr->last_call_wavelist_time = sGetMsTime() + g_pt61850app->giTime * 1000;
|
||||||
ied_usr->LD_info = (LD_info_t*)apr_pcalloc(g_init_pool, MAX_CPUNO * sizeof(LD_info_t));
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ied<65><64>
|
||||||
|
ied_usr->LD_info = (LD_info_t*)apr_pcalloc(g_init_pool, MAX_CPUNO * sizeof(LD_info_t));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>initpool<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
||||||
|
|
||||||
if (ied_usr->LD_info == NULL)
|
if (ied_usr->LD_info == NULL)
|
||||||
return APR_ENOMEM;
|
return APR_ENOMEM;
|
||||||
|
|
||||||
ied_usr->dev_flag = g_DevFlag;
|
ied_usr->dev_flag = ENABLE;//<2F>ն<EFBFBD><D5B6><EFBFBD>Ч
|
||||||
ied->chncount = 1;
|
ied->chncount = 1;
|
||||||
ied->channel = (channel_t*)apr_pcalloc(g_cfg_pool, sizeof(channel_t) * ied->chncount);
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ied<65><64>
|
||||||
|
ied->channel = (channel_t*)apr_pcalloc(g_cfg_pool, sizeof(channel_t) * ied->chncount);//ͨ<>Žṹ<C5BD><E1B9B9>g_cfg_pool<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ䣺<D5BC>ն˵<D5B6>ip<69>˿ڵ<CBBF>
|
||||||
ied->channel[0].ied = ied;
|
ied->channel[0].ied = ied;
|
||||||
ied->channel[0].status = STATUS_BREAKOFF;
|
ied->channel[0].status = STATUS_BREAKOFF;
|
||||||
ied->cpucount = 0;
|
ied->cpucount = 0;
|
||||||
@@ -12309,7 +12326,8 @@ int parse_device_cfg_web()
|
|||||||
cout << "ied_usr->time:" << ied_usr->time << endl;
|
cout << "ied_usr->time:" << ied_usr->time << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
chnl_usr = (chnl_usr_t*)apr_pcalloc(g_init_pool, sizeof(chnl_usr_t));
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ied<65><64>
|
||||||
|
chnl_usr = (chnl_usr_t*)apr_pcalloc(g_init_pool, sizeof(chnl_usr_t));//<2F><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>Žṹ<C5BD><E1B9B9>g_init_pool<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ䣺<D5BC><E4A3BA>չ<EFBFBD><D5B9>¼һЩ<D2BB><D0A9><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϣ
|
||||||
ied->channel[0].connect = chnl_usr;
|
ied->channel[0].connect = chnl_usr;
|
||||||
chnl_usr->chnl = &(ied->channel[0]);
|
chnl_usr->chnl = &(ied->channel[0]);
|
||||||
chnl_usr->chnl_id = 0;
|
chnl_usr->chnl_id = 0;
|
||||||
@@ -12413,7 +12431,7 @@ int parse_device_cfg_web()
|
|||||||
strcpy(line_info.name, monitor_name);
|
strcpy(line_info.name, monitor_name);
|
||||||
cout << "name:" << line_info.name << endl;
|
cout << "name:" << line_info.name << endl;
|
||||||
|
|
||||||
line_info.read_flag = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
line_info.read_flag = ENABLE; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
||||||
|
|
||||||
//ied = find_ied_from_dev_code(line_info.terminal_code); //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC>ն<EFBFBD><D5B6>ˣ<EFBFBD><CBA3>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>
|
//ied = find_ied_from_dev_code(line_info.terminal_code); //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC>ն<EFBFBD><D5B6>ˣ<EFBFBD><CBA3>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
@@ -12427,10 +12445,11 @@ int parse_device_cfg_web()
|
|||||||
ied_usr = (ied_usr_t*)ied->usr_ext;
|
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] = line_info; //cpunoĬ<6F><C4AC><EFBFBD><EFBFBD>1
|
||||||
ied_usr->LD_info[cpuno - 1].ied = ied;
|
ied_usr->LD_info[cpuno - 1].ied = ied;
|
||||||
apr_snprintf(str, sizeof(str), "PQMonitorPQM%d", cpuno);
|
apr_snprintf(str, sizeof(str), "PQMonitorPQM%d", cpuno);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBC><EFBFBD>תΪPQMonitorPQM+<2B><EFBFBD><DFBC><EFBFBD>
|
||||||
ied_usr->LD_info[cpuno - 1].LD_name = apr_pstrdup(g_init_pool, str);
|
ied_usr->LD_info[cpuno - 1].LD_name = apr_pstrdup(g_init_pool, str);//<2F><> str <20>еĸ<D0B5>ʽ<EFBFBD><CABD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>ڴ<EFBFBD><DAB4><EFBFBD> g_init_pool <20>С<EFBFBD>ied_usr->LD_info[cpuno - 1].LD_name <20>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>LD_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PQMonitorPQM{cpuno} <20><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>
|
||||||
ied_usr->LD_info[cpuno - 1].ht_fcd = apr_hash_make(g_init_pool);
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ied<65><64>
|
||||||
ied_usr->LD_info[cpuno - 1].ht_full_fcda = apr_hash_make(g_init_pool);
|
ied_usr->LD_info[cpuno - 1].ht_fcd = apr_hash_make(g_init_pool); //<2F><><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ֱ<EFBFBD>Ϊ ied_usr->LD_info[cpuno - 1] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>ht_fcd <20><> ht_full_fcda<64><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿յĹ<D5B5>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>apr_hash_make(g_init_pool) <20><><EFBFBD><EFBFBD> g_init_pool <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ռ<EFBFBD>
|
||||||
|
ied_usr->LD_info[cpuno - 1].ht_full_fcda = apr_hash_make(g_init_pool);//<2F><><EFBFBD>ǵ<EFBFBD> key ֵ<><D6B5> value <20>ں<EFBFBD><DABA><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>п<EFBFBD><D0BF>ܻᱻ<DCBB><E1B1BB><EFBFBD><EFBFBD>
|
||||||
ied_usr->LD_info[cpuno - 1].rptcount = 0;
|
ied_usr->LD_info[cpuno - 1].rptcount = 0;
|
||||||
cout << "rptcount:" << ied_usr->LD_info[cpuno - 1].rptcount << endl;
|
cout << "rptcount:" << ied_usr->LD_info[cpuno - 1].rptcount << endl;
|
||||||
|
|
||||||
@@ -12442,171 +12461,7 @@ int parse_device_cfg_web()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
#if 0
|
|
||||||
ied = g_node->clients[count_real++];
|
|
||||||
ied_usr = (ied_usr_t*)apr_pcalloc(g_init_pool, sizeof(ied_usr_t));
|
|
||||||
ied->usr_ext = ied_usr;
|
|
||||||
|
|
||||||
if (ied_usr == NULL)
|
|
||||||
return APR_ENOMEM;
|
|
||||||
|
|
||||||
ied_usr->last_call_wavelist_time = sGetMsTime() + g_pt61850app->giTime * 1000;
|
|
||||||
ied_usr->LD_info = (LD_info_t*)apr_pcalloc(g_init_pool, MAX_CPUNO * sizeof(LD_info_t));
|
|
||||||
|
|
||||||
if (ied_usr->LD_info == NULL)
|
|
||||||
return APR_ENOMEM;
|
|
||||||
|
|
||||||
ied_usr->dev_flag = g_DevFlag;
|
|
||||||
ied->chncount = 1;
|
|
||||||
ied->channel = (channel_t*)apr_pcalloc(g_cfg_pool, sizeof(channel_t) * ied->chncount);
|
|
||||||
ied->channel[0].ied = ied;
|
|
||||||
ied->channel[0].status = STATUS_BREAKOFF;
|
|
||||||
ied->cpucount = 0;
|
|
||||||
|
|
||||||
if (strlen(terminal_id) != 0) {
|
|
||||||
apr_snprintf(ied_usr->terminal_id, sizeof(ied_usr->terminal_id), "%s", terminal_id);//terminal_id
|
|
||||||
cout << "ied_usr->terminal_id:" << ied_usr->terminal_id << endl;
|
|
||||||
}
|
|
||||||
if (terminal_code != NULL) {
|
|
||||||
apr_snprintf(ied_usr->terminal_code, sizeof(ied_usr->terminal_code), "%s", terminal_code);//terminal_code
|
|
||||||
cout << "ied_usr->terminal_code:" << ied_usr->terminal_code << endl;
|
|
||||||
|
|
||||||
}
|
|
||||||
/*<2A><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
||||||
if (org_name != NULL) {
|
|
||||||
apr_snprintf(ied_usr->org_name, sizeof(ied_usr->org_name), "%s", org_name);//org_name
|
|
||||||
cout << "ied_usr->org_name:" << ied_usr->org_name << endl;
|
|
||||||
|
|
||||||
}
|
|
||||||
if (maint_name != NULL) {
|
|
||||||
apr_snprintf(ied_usr->maint_name, sizeof(ied_usr->maint_name), "%s", maint_name);//maint_name
|
|
||||||
cout << "ied_usr->maint_name:" << ied_usr->maint_name << endl;
|
|
||||||
|
|
||||||
}
|
|
||||||
if (station_name != NULL) {
|
|
||||||
apr_snprintf(ied_usr->station_name, sizeof(ied_usr->station_name), "%s", station_name);//station_name
|
|
||||||
cout << "ied_usr->station_name:" << ied_usr->station_name << endl;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if (tmnl_factory != NULL) {
|
|
||||||
apr_snprintf(ied_usr->tmnl_factory, sizeof(ied_usr->tmnl_factory), "%s", tmnl_factory);//tmnl_factory
|
|
||||||
cout << "ied_usr->tmnl_factory:" << ied_usr->tmnl_factory << endl;
|
|
||||||
|
|
||||||
}
|
|
||||||
if (tmnl_status != NULL) {
|
|
||||||
apr_snprintf(ied_usr->tmnl_status, sizeof(ied_usr->tmnl_status), "%s", tmnl_status);//tmnl_status
|
|
||||||
cout << "ied_usr->tmnl_status:" << ied_usr->tmnl_status << endl;
|
|
||||||
}
|
|
||||||
if (dev_type != NULL) {
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
if (dev_series != NULL) {
|
|
||||||
apr_snprintf(ied_usr->dev_series, sizeof(ied_usr->dev_series), "%s", dev_seri);//DEV_Series
|
|
||||||
cout << "defalut dev_series:" << ied_usr->dev_series << endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
apr_snprintf(ied_usr->dev_series, sizeof(ied_usr->dev_series), "%s", "");//DEV_Series
|
|
||||||
cout << "defalut dev_series:" << ied_usr->dev_series << endl;
|
|
||||||
}
|
|
||||||
if (dev_key != NULL) {
|
|
||||||
apr_snprintf(ied_usr->dev_key, sizeof(ied_usr->dev_key), "%s", dev_key);//DEV_Key
|
|
||||||
cout << "defalut dev_key:" << ied_usr->dev_key << endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
apr_snprintf(ied_usr->dev_key, sizeof(ied_usr->dev_key), "%s", "");//DEV_Key
|
|
||||||
cout << "defalut dev_key:" << ied_usr->dev_key << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
//<2F>ϲ<EFBFBD><CFB2><EFBFBD>
|
|
||||||
/* cout << "code" << ied_usr->terminal_code << endl;
|
|
||||||
if (terminal_ext_map.contains(QString::fromUtf8(ied_usr->terminal_code))) {
|
|
||||||
terminal_ext* ext = terminal_ext_map.value(QString::fromUtf8(ied_usr->terminal_code));
|
|
||||||
apr_snprintf(ied_usr->dev_key, sizeof(ied_usr->dev_key), "%s", ext->terminal_key);//DEV_Key
|
|
||||||
cout << "dev_key:" << ied_usr->dev_key << endl;
|
|
||||||
apr_snprintf(ied_usr->dev_series, sizeof(ied_usr->dev_series), "%s", ext->terminal_identify_code);//DEV_Series
|
|
||||||
cout << "dev_series:" << ied_usr->dev_series << endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
apr_snprintf(ied_usr->dev_key, sizeof(ied_usr->dev_key), "%s", "");//DEV_Key
|
|
||||||
cout << "defalut dev_key:" << ied_usr->dev_key << endl;
|
|
||||||
apr_snprintf(ied_usr->dev_series, sizeof(ied_usr->dev_series), "%s", "");//DEV_Series
|
|
||||||
cout << "defalut dev_series:" << ied_usr->dev_series << endl;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
ied->channel[0].channel_type = CHANNEL_TYPE_IPV4;//channel
|
|
||||||
ied->channel[0].addr_str[LONGNAME - 1] = 0;//DEV_IP
|
|
||||||
if (addr_str != NULL) {
|
|
||||||
ied->channel[0].addr = ntohl(inet_addr(addr_str));//DEV_IP
|
|
||||||
strncpy(ied->channel[0].addr_str, addr_str, LONGNAME - 1);//DEV_IP
|
|
||||||
cout << "ied_usr->addr_str:" << ied->channel[0].addr_str << endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ied->channel[0].addr = ntohl(inet_addr("0.0.0.0"));//DEV_IP
|
|
||||||
strncpy(ied->channel[0].addr_str, addr_str, LONGNAME - 1);//DEV_IP
|
|
||||||
cout << "ied_usr->addr_str:" << ied->channel[0].addr_str << endl;
|
|
||||||
}
|
|
||||||
if (port_char != NULL) {
|
|
||||||
int port = 102;
|
|
||||||
if (stringToInt(port_char, &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
|
|
||||||
cout << "ied_usr->port:" << ied->channel[0].port << endl;//DEV_PortID
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
ied->channel[0].port = 102;//DEV_PortID
|
|
||||||
cout << "ied_usr->port:" << port_char << ",<2C>ǺϷ<C7BA><CFB7>˿<EFBFBD>.ʹ<><CAB9>Ĭ<EFBFBD>϶˿<CFB6>:" << ied->channel[0].port << endl;//DEV_PortID
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (timestamp.year != 0) {
|
|
||||||
//// <20><><EFBFBD><EFBFBD>struct tm<74><6D><EFBFBD><EFBFBD>
|
|
||||||
struct tm timeinfo;
|
|
||||||
timeinfo.tm_year = timestamp.year - 1900; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȥ1900
|
|
||||||
timeinfo.tm_mon = timestamp.month - 1; // <20>·<EFBFBD><C2B7><EFBFBD>Ҫ<EFBFBD><D2AA>ȥ1
|
|
||||||
timeinfo.tm_mday = timestamp.day;
|
|
||||||
timeinfo.tm_hour = timestamp.hour;
|
|
||||||
timeinfo.tm_min = timestamp.minute;
|
|
||||||
timeinfo.tm_sec = timestamp.second;
|
|
||||||
time_t time = std::mktime(&timeinfo);
|
|
||||||
ied_usr->time = static_cast<long long>(time);
|
|
||||||
cout << "ied_usr->time:" << ied_usr->time << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
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++;
|
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
std::cout << "value:" << terminal_id <<" "<<terminal_code <<" "<<tmnl_factory <<" "<<dev_series <<" "<<dev_key <<" "<< tmnl_status <<" "<<dev_type <<" "<<addr_str <<" "<<port_char <<" "<< timestamp.year << std::endl;
|
|
||||||
|
|
||||||
}//̨<><CCA8>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
//û<>ж<EFBFBD>ǰ<EFBFBD><C7B0>
|
|
||||||
/*//<2F>滻ǰ<E6BBBB>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD>
|
|
||||||
if (MULTIPLE_NODE_FLAG) {
|
|
||||||
|
|
||||||
codes.push_back("updatefront");
|
|
||||||
|
|
||||||
codes.push_back(std::string(FRONT_IP));
|
|
||||||
codes.push_back(intToString(FRONT_INST));
|
|
||||||
codes.push_back(intToString(count_real));
|
|
||||||
codes.push_back(std::string(PROGRAM_VERSION)); //<2F>Ͷ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>updateһ<65><D2BB><EFBFBD><EFBFBD>д<EFBFBD><D0B4>PROGRAM_VERSION
|
|
||||||
|
|
||||||
parse_device_web_test_front_write(codes);
|
|
||||||
|
|
||||||
codes.clear();
|
|
||||||
|
|
||||||
}
|
|
||||||
//<2F>滻ǰ<E6BBBB>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD>*/
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (count_real < count_cfg)
|
if (count_real < count_cfg)
|
||||||
g_node->n_clients = count_real;
|
g_node->n_clients = count_real;
|
||||||
@@ -13096,7 +12951,7 @@ void OnTimerThread::run()
|
|||||||
pthread_mutex_lock(&mtx);//lnk20250114
|
pthread_mutex_lock(&mtx);//lnk20250114
|
||||||
std::string mp_num_str = "";
|
std::string mp_num_str = "";
|
||||||
mp_num_str.append("connected device count:");
|
mp_num_str.append("connected device count:");
|
||||||
mp_num_str.append(QString::number(FRONT_MP_NUM).toStdString());
|
mp_num_str.append(QString::number(FRONT_MP_NUM).toStdString());//<2F><>¼<EFBFBD><C2BC><EFBFBD>ӵļ<D3B5><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mp_num_str.append(",g_node clients:");
|
mp_num_str.append(",g_node clients:");
|
||||||
mp_num_str.append(QString::number(g_node->n_clients).toStdString());
|
mp_num_str.append(QString::number(g_node->n_clients).toStdString());
|
||||||
|
|
||||||
@@ -14142,7 +13997,7 @@ void SOEFileWeb_test()
|
|||||||
/*<2A><>װC<D7B0>ɵ<EFBFBD><C9B5>õ<EFBFBD>̨<EFBFBD>˸<EFBFBD><CBB8>º<EFBFBD><C2BA><EFBFBD> */////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/*<2A><>װC<D7B0>ɵ<EFBFBD><C9B5>õ<EFBFBD>̨<EFBFBD>˸<EFBFBD><CBB8>º<EFBFBD><C2BA><EFBFBD> */////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
//3-д<><D0B4>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//////////////////////////////
|
//3-д<><D0B4>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//////////////////////////////
|
||||||
int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_index)
|
int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_index,int ied_take)
|
||||||
{
|
{
|
||||||
chnl_usr_t* chnl_usr = NULL;
|
chnl_usr_t* chnl_usr = NULL;
|
||||||
ied_usr_t* ied_usr = NULL;
|
ied_usr_t* ied_usr = NULL;
|
||||||
@@ -14183,8 +14038,10 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
|||||||
apr_snprintf(ied_usr->dev_key, sizeof(ied_usr->dev_key), "%s", ""); // Ĭ<><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
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);
|
printf("ied_usr->dev_key (default): %s\n", ied_usr->dev_key);
|
||||||
}
|
}
|
||||||
ied_usr->dev_idx = terminal_index; // <20><><EFBFBD>µ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ն<EFBFBD><D5B6>ź<EFBFBD>
|
|
||||||
|
ied_usr->dev_idx = terminal_index; //<2F>ն<EFBFBD><D5B6>ź<EFBFBD>
|
||||||
printf("dev_idx: %d\n", ied_usr->dev_idx);
|
printf("dev_idx: %d\n", ied_usr->dev_idx);
|
||||||
|
|
||||||
ied->channel[0].channel_type = CHANNEL_TYPE_IPV4; // channel
|
ied->channel[0].channel_type = CHANNEL_TYPE_IPV4; // channel
|
||||||
ied->channel[0].addr_str[LONGNAME - 1] = 0; // DEV_IP
|
ied->channel[0].addr_str[LONGNAME - 1] = 0; // DEV_IP
|
||||||
if (update[i].addr_str != NULL) {
|
if (update[i].addr_str != NULL) {
|
||||||
@@ -14207,6 +14064,7 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
|||||||
printf("ied_usr->port: %s, <20>ǺϷ<C7BA><CFB7>˿<EFBFBD>. ʹ<><CAB9>Ĭ<EFBFBD>϶˿<CFB6>: %d\n", update[i].port, ied->channel[0].port); // 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) {
|
if (update[i].timestamp != NULL && strlen(update[i].timestamp) > 0) {
|
||||||
// <20><><EFBFBD><EFBFBD>struct tm<74><6D><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>struct tm<74><6D><EFBFBD><EFBFBD>
|
||||||
struct tm timeinfo = {0}; // <20><>ʼ<EFBFBD><CABC>Ϊ0
|
struct tm timeinfo = {0}; // <20><>ʼ<EFBFBD><CABC>Ϊ0
|
||||||
@@ -14235,13 +14093,22 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
chnl_usr = (chnl_usr_t*)apr_pcalloc(g_init_pool, sizeof(chnl_usr_t));
|
|
||||||
ied->channel[0].connect = chnl_usr;
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>пռ<D0BF><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
if(!ied_take){
|
||||||
|
chnl_usr = (chnl_usr_t*)apr_pcalloc(g_init_pool, sizeof(chnl_usr_t));
|
||||||
|
ied->channel[0].connect = chnl_usr;
|
||||||
|
g_pt61850app->chnl_counts++; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
chnl_usr = (chnl_usr_t*)ied->channel[0].connect;
|
||||||
|
}
|
||||||
|
|
||||||
chnl_usr->chnl = &(ied->channel[0]);
|
chnl_usr->chnl = &(ied->channel[0]);
|
||||||
chnl_usr->chnl_id = 0;
|
chnl_usr->chnl_id = 0;
|
||||||
chnl_usr->m_state = CHANNEL_DISCONNECTED;
|
chnl_usr->m_state = CHANNEL_DISCONNECTED;
|
||||||
chnl_usr->m_ClosedMsTime = NEXT_CONNECT_TIME * (-1);
|
chnl_usr->m_ClosedMsTime = NEXT_CONNECT_TIME * (-1);
|
||||||
g_pt61850app->chnl_counts++;
|
|
||||||
// <20><> monitorData <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>뵽 LD_info <20><>
|
// <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 count_real_monitor = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˵ļ<CBB5><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
int j;
|
int j;
|
||||||
@@ -14249,9 +14116,10 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
|||||||
monitor monitor_data = update[i].line[j];
|
monitor monitor_data = update[i].line[j];
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
count_real_monitor++;
|
count_real_monitor++;
|
||||||
// <20><>ʼ<EFBFBD><CABC> LD_info
|
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LD_info<66><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>漰ָ<E6BCB0><D6B8><EFBFBD>IJ<EFBFBD><C4B2>ֶ<EFBFBD>Ϊ<EFBFBD><CEAA>
|
||||||
LD_info_t line_info;
|
LD_info_t line_info;
|
||||||
memset(&line_info, 0, sizeof(line_info));
|
memset(&line_info, 0, sizeof(line_info));
|
||||||
|
|
||||||
char logical_device_seq[64];
|
char logical_device_seq[64];
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
// <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.mp_id, monitor_data.monitor_id, sizeof(line_info.mp_id) - 1);
|
||||||
@@ -14269,6 +14137,7 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
|||||||
printf("logical_device_seq: %d\n", line_info.cpuno);
|
printf("logical_device_seq: %d\n", line_info.cpuno);
|
||||||
}
|
}
|
||||||
line_info.line_id = count_real_monitor; // <20><>¼<EFBFBD>ն<EFBFBD><D5B6>ź<EFBFBD>
|
line_info.line_id = count_real_monitor; // <20><>¼<EFBFBD>ն<EFBFBD><D5B6>ź<EFBFBD>
|
||||||
|
|
||||||
printf("line_id: %d\n", line_info.line_id);
|
printf("line_id: %d\n", line_info.line_id);
|
||||||
printf("mp_id: %s\n", line_info.mp_id);
|
printf("mp_id: %s\n", line_info.mp_id);
|
||||||
printf("terminal_code: %s\n", line_info.terminal_code);
|
printf("terminal_code: %s\n", line_info.terminal_code);
|
||||||
@@ -14276,6 +14145,7 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
|||||||
printf("v_wiring_type: %s\n", line_info.v_wiring_type);
|
printf("v_wiring_type: %s\n", line_info.v_wiring_type);
|
||||||
printf("monitor_status: %s\n", line_info.monitor_status);
|
printf("monitor_status: %s\n", line_info.monitor_status);
|
||||||
printf("name: %s\n", line_info.name);
|
printf("name: %s\n", line_info.name);
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||||
if (update[i].timestamp[0] != '\0') {
|
if (update[i].timestamp[0] != '\0') {
|
||||||
struct tm timeinfo;
|
struct tm timeinfo;
|
||||||
@@ -14313,13 +14183,24 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
|||||||
ied_usr->LD_info[cpuno - 1] = line_info; // cpunoĬ<6F><C4AC><EFBFBD><EFBFBD>1
|
ied_usr->LD_info[cpuno - 1] = line_info; // cpunoĬ<6F><C4AC><EFBFBD><EFBFBD>1
|
||||||
ied_usr->LD_info[cpuno - 1].ied = ied;
|
ied_usr->LD_info[cpuno - 1].ied = ied;
|
||||||
apr_snprintf(str, sizeof(str), "PQMonitorPQM%d", cpuno);
|
apr_snprintf(str, sizeof(str), "PQMonitorPQM%d", cpuno);
|
||||||
ied_usr->LD_info[cpuno - 1].LD_name = apr_pstrdup(g_init_pool, str);
|
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD> LD_name<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||||
ied_usr->LD_info[cpuno - 1].ht_fcd = apr_hash_make(g_init_pool);
|
if (ied_usr->LD_info[cpuno - 1].LD_name == NULL) {
|
||||||
ied_usr->LD_info[cpuno - 1].ht_full_fcda = apr_hash_make(g_init_pool);
|
ied_usr->LD_info[cpuno - 1].LD_name = apr_pstrdup(g_init_pool, str);
|
||||||
|
} else {//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滻<EFBFBD><E6BBBB><EFBFBD><EFBFBD>ԭ<EFBFBD>пռ<D0BF><D5BC>ϸ<EFBFBD><CFB8><EFBFBD>
|
||||||
|
apr_cpystrn(ied_usr->LD_info[cpuno - 1].LD_name, str, sizeof(ied_usr->LD_info[cpuno - 1].LD_name));
|
||||||
|
}
|
||||||
|
|
||||||
|
// <20><><EFBFBD>¹<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬ԭ<E6A3AC><D4AD><EFBFBD><EFBFBD>ied<65>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>˿յĹ<D5B5>ϣ<EFBFBD><CFA3><EFBFBD>Ͳ<EFBFBD><CDB2>ٷ<EFBFBD><D9B7>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>ʱû<CAB1><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
if (ied_usr->LD_info[cpuno - 1].ht_fcd == NULL) {
|
||||||
|
ied_usr->LD_info[cpuno - 1].ht_fcd = apr_hash_make(g_init_pool);
|
||||||
|
}
|
||||||
|
if (ied_usr->LD_info[cpuno - 1].ht_full_fcda == NULL) {
|
||||||
|
ied_usr->LD_info[cpuno - 1].ht_full_fcda = apr_hash_make(g_init_pool);
|
||||||
|
}
|
||||||
ied_usr->LD_info[cpuno - 1].rptcount = 0;
|
ied_usr->LD_info[cpuno - 1].rptcount = 0;
|
||||||
printf("rptcount: %d\n", ied_usr->LD_info[cpuno - 1].rptcount);
|
printf("rptcount: %d\n", ied_usr->LD_info[cpuno - 1].rptcount);
|
||||||
if (cpuno > ied->cpucount) {
|
if (cpuno > ied->cpucount) {
|
||||||
ied->cpucount = cpuno;
|
ied->cpucount = cpuno;//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD>еļ<D0B5><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>࣬û<E0A3AC>б<EFBFBD><D0B1><EFBFBD><EFBFBD>ǵIJ<C7B5><C4B2><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ᱣ֤<E1B1A3><D6A4><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>Щ֮ǰ<D6AE><C7B0>û<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>ǵļ<C7B5><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ied_usr->LD_info[j] = line_info;
|
// ied_usr->LD_info[j] = line_info;
|
||||||
@@ -14411,33 +14292,47 @@ void create_ledger_log(trigger_update_xml_t* ledger_update_xml) {
|
|||||||
log_file.close();
|
log_file.close();
|
||||||
std::cout << "Ledger log has been updated." << std::endl;
|
std::cout << "Ledger log has been updated." << std::endl;
|
||||||
}
|
}
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////̨<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>䲿<EFBFBD>ֹ<EFBFBD><EFBFBD>ܴ<EFBFBD><EFBFBD>룺δʹ<EFBFBD><EFBFBD>
|
||||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ied_usr_t <20>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD>ݵĺ<DDB5><C4BA><EFBFBD>
|
// ɾ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>
|
||||||
void clear_ied_usr(ied_t* ied) {
|
void delete_sub_pool(const char* terminal_id) {
|
||||||
if (ied && ied->usr_ext) { // <20><><EFBFBD><EFBFBD> usr_ext <20>Ƿ<EFBFBD>Ϊ NULL
|
std::list<std::pair<std::string, apr_pool_t*> >::iterator it;
|
||||||
ied_usr_t* ied_usr = (ied_usr_t*)ied->usr_ext;
|
|
||||||
|
for (it = pool_list.begin(); it != pool_list.end(); ++it) {
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ա
|
if (it->first == terminal_id) {
|
||||||
memset(ied_usr->dev_type, 0, sizeof(ied_usr->dev_type));
|
apr_pool_destroy(it->second); // <20><><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>
|
||||||
memset(ied_usr->dev_key, 0, sizeof(ied_usr->dev_key));
|
pool_list.erase(it); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD>
|
||||||
memset(ied_usr->dev_series, 0, sizeof(ied_usr->dev_series));
|
break;
|
||||||
memset(ied_usr->terminal_id, 0, sizeof(ied_usr->terminal_id));
|
}
|
||||||
memset(ied_usr->org_name, 0, sizeof(ied_usr->org_name));
|
|
||||||
memset(ied_usr->maint_name, 0, sizeof(ied_usr->maint_name));
|
|
||||||
memset(ied_usr->station_name, 0, sizeof(ied_usr->station_name));
|
|
||||||
memset(ied_usr->tmnl_factory, 0, sizeof(ied_usr->tmnl_factory));
|
|
||||||
memset(ied_usr->tmnl_status, 0, sizeof(ied_usr->tmnl_status));
|
|
||||||
memset(ied_usr->terminal_code, 0, sizeof(ied_usr->terminal_code));
|
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>͵ij<CDB5>Ա
|
|
||||||
ied_usr->dev_idx = 0;
|
|
||||||
ied_usr->dev_flag = 0;
|
|
||||||
ied_usr->cookie = NULL;
|
|
||||||
ied_usr->last_call_wavelist_time = 0;
|
|
||||||
ied_usr->time = 0;
|
|
||||||
ied_usr->update_flag = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//<2F>Ҷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ӳ<EFBFBD>
|
||||||
|
apr_pool_t* find_sub_pool(const char* terminal_id) {
|
||||||
|
std::list<std::pair<std::string, apr_pool_t*> >::iterator it;
|
||||||
|
|
||||||
|
for (it = pool_list.begin(); it != pool_list.end(); ++it) {
|
||||||
|
if (it->first == terminal_id) {
|
||||||
|
return it->second; // <20>ҵ<EFBFBD><D2B5><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ӳ<EFBFBD>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL; // û<><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ӳ<EFBFBD>
|
||||||
|
}
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ӳز<D3B3><D8B2><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
apr_pool_t* create_sub_pool(apr_pool_t* parent_pool, const char* terminal_id) {
|
||||||
|
apr_pool_t* new_sub_pool = NULL;
|
||||||
|
|
||||||
|
// <20>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ӳ<EFBFBD>
|
||||||
|
apr_pool_create(&new_sub_pool, parent_pool);
|
||||||
|
|
||||||
|
if (new_sub_pool == NULL) {
|
||||||
|
return NULL; // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||||
|
}
|
||||||
|
|
||||||
|
// <20><><EFBFBD>ӳغ<D3B3><D8BA>ն<EFBFBD> ID <20>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
pool_list.push_back(std::make_pair(std::string(terminal_id), new_sub_pool));
|
||||||
|
|
||||||
|
return new_sub_pool;
|
||||||
|
}
|
||||||
/*<2A><>װC<D7B0>ɵ<EFBFBD><C9B5>õ<EFBFBD>̨<EFBFBD>˸<EFBFBD><CBB8>º<EFBFBD><C2BA><EFBFBD> */////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/*<2A><>װC<D7B0>ɵ<EFBFBD><C9B5>õ<EFBFBD>̨<EFBFBD>˸<EFBFBD><CBB8>º<EFBFBD><C2BA><EFBFBD> */////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,9 @@ extern pthread_mutex_t mtx;
|
|||||||
extern apr_pool_t* g_cfg_pool;
|
extern apr_pool_t* g_cfg_pool;
|
||||||
extern apr_pool_t* g_init_pool;
|
extern apr_pool_t* g_init_pool;
|
||||||
|
|
||||||
extern int g_DevFlag;
|
extern int g_DevFlag; //<2F><>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ȡ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD>ʹ<EFBFBD><CAB9>lnk20250121
|
||||||
|
|
||||||
|
extern int IED_COUNT;
|
||||||
|
|
||||||
//lnk20250115end
|
//lnk20250115end
|
||||||
|
|
||||||
@@ -832,50 +834,84 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!new_in_work_found) { //<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD>µ<EFBFBD>̨<EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>
|
if (!new_in_work_found) { //<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD>µ<EFBFBD>̨<EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>а<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
||||||
|
|
||||||
|
int terminal_index;
|
||||||
|
int ied_take = 0; //<2F><>ǰ̨<C7B0><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD>ʹ<EFBFBD>õ<EFBFBD>ied<65>ռ䣿0û<30>У<EFBFBD>1<EFBFBD><31>
|
||||||
//<2F><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD>Ӻͳ<D3BA>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD>Ӻͳ<D3BA>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//1-<2D><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>ڴ<EFBFBD><DAB4>ռ<EFBFBD>//////////////////////////////
|
//1-<2D><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>ڴ<EFBFBD><DAB4>ռ<EFBFBD>//////////////////////////////
|
||||||
//<2F>µ<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (n_clients) <20><>ԭ<EFBFBD>е<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (ԭ<><D4AD><EFBFBD><EFBFBD>Ϊ g_node->n_clients)
|
//<2F>µ<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (n_clients) <20><>ԭ<EFBFBD>е<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (ԭ<><D4AD><EFBFBD><EFBFBD>Ϊ g_node->n_clients)
|
||||||
int new_client_count = g_node->n_clients + 1; // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD>̨<EFBFBD><CCA8>
|
int new_client_count = g_node->n_clients + 1; // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD>̨<EFBFBD><CCA8>
|
||||||
|
|
||||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>ռ䣺ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> clients ָ<><D6B8>һ<EFBFBD><D2BB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
//<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD><EFBFBD>Ƿ<EFBFBD>ԭ<EFBFBD>е<EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾ʹӲ<EFBFBD>ʹ<EFBFBD>ܵ<EFBFBD>ied<EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҿ<EFBFBD><EFBFBD>ÿռ䣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>
|
||||||
ied_t** new_clients = (ied_t**)apr_pcalloc(g_cfg_pool, new_client_count * sizeof(ied_t*));
|
if(new_client_count > IED_COUNT){
|
||||||
|
ied_t *ied_unused = NULL;
|
||||||
|
ied_usr_t* ied_usr_unused = NULL;
|
||||||
|
ied_unused = find_ied_from_terminal_id();
|
||||||
|
if(ied_unused != NULL){
|
||||||
|
ied_usr_unused = (ied_usr_t*)ied_unused->usr_ext;
|
||||||
|
ied = ied_unused; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>iedָ<64><D6B8><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>δʹ<CEB4>õ<EFBFBD>ied<65>ռ<EFBFBD>
|
||||||
|
terminal_index = ied_usr_unused->dev_idx //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ied<65>ı<EFBFBD><C4B1><EFBFBD>
|
||||||
|
|
||||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>ռ<EFBFBD>
|
//<2F><>ӡ<EFBFBD><EFBFBD>ʾ
|
||||||
int k;
|
printf("!!!!!!!!ied index:%d ,terminal_id:%s has been taken!!!!!!!!!!\n",ied_usr_unused->dev_idx,ied_usr_unused->terminal_id);
|
||||||
for (k = 0; k < g_node->n_clients; k++) {
|
|
||||||
new_clients[k] = g_node->clients[k];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>ռ<EFBFBD>
|
//<2F>ն˳<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
||||||
new_clients[g_node->n_clients] = (ied_t*)apr_pcalloc(g_cfg_pool, sizeof(ied_t));
|
ied_usr = (ied_usr_t*)ied->usr_ext;
|
||||||
|
ied_usr->last_call_wavelist_time = sGetMsTime() + g_pt61850app->giTime * 1000;
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
ied_usr->dev_flag = ENABLE;//<2F>ն<EFBFBD><D5B6><EFBFBD>Ч
|
||||||
g_node->clients = new_clients; // <20><> clients ָ<><D6B8><EFBFBD>µ<EFBFBD><C2B5>ڴ<EFBFBD><DAB4>ռ<EFBFBD>
|
|
||||||
g_node->n_clients = new_client_count; // <20><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
//1-<2D><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>ڴ<EFBFBD><DAB4>ռ<EFBFBD>//////////////////////////////
|
|
||||||
|
|
||||||
//2-<2D><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>///////////////////////////////////
|
ied->chncount = 1; //ͨ<>Ŷ˿<C5B6><CBBF><EFBFBD>
|
||||||
ied = g_node->clients[new_client_count - 1];//<EFBFBD>ն<EFBFBD>̨<EFBFBD><EFBFBD>ָ<EFBFBD>붨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һλ
|
ied->channel[0].ied = ied; //ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
||||||
ied_usr = (ied_usr_t*)apr_pcalloc(g_init_pool, sizeof(ied_usr_t));
|
ied->channel[0].status = STATUS_BREAKOFF;//<2F><>ʼ<EFBFBD><CABC>Ϊͨ<CEAA><CDA8><EFBFBD>ж<EFBFBD>
|
||||||
ied->usr_ext = ied_usr;
|
ied->cpucount = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼΪ0<CEAA><30><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8>ʱд<CAB1><D0B4>
|
||||||
if (ied_usr == NULL)
|
|
||||||
return APR_ENOMEM;
|
ied_take = 1;//ied֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD>
|
||||||
ied_usr->last_call_wavelist_time = sGetMsTime() + g_pt61850app->giTime * 1000;
|
|
||||||
ied_usr->LD_info = (LD_info_t*)apr_pcalloc(g_init_pool, MAX_CPUNO * sizeof(LD_info_t));
|
}
|
||||||
if (ied_usr->LD_info == NULL)
|
else{
|
||||||
return APR_ENOMEM;
|
printf("!!!!!!!!!!ledger array is full!!!!!!\n");
|
||||||
ied_usr->dev_flag = g_DevFlag;
|
return;
|
||||||
ied->chncount = 1;
|
}
|
||||||
ied->channel = (channel_t*)apr_pcalloc(g_cfg_pool, sizeof(channel_t) * ied->chncount);
|
|
||||||
ied->channel[0].ied = ied;
|
}
|
||||||
ied->channel[0].status = STATUS_BREAKOFF;
|
else{//<2F><><EFBFBD><EFBFBD>̨<EFBFBD>ʺ<EFBFBD><CABA><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˷<EFBFBD>Χ
|
||||||
ied->cpucount = 0;
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>¼
|
||||||
//2-<2D><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>///////////////////////////////////
|
g_node->clients[new_client_count - 1] = (ied_t*)apr_pcalloc(g_cfg_pool, sizeof(ied_t));
|
||||||
|
|
||||||
|
// <20><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
g_node->n_clients = new_client_count; // <20><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
//1-<2D><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>ڴ<EFBFBD><DAB4>ռ<EFBFBD>//////////////////////////////
|
||||||
|
|
||||||
|
//2-<2D><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>///////////////////////////////////
|
||||||
|
ied = g_node->clients[new_client_count - 1];//<2F>ն<EFBFBD>̨<EFBFBD><CCA8>ָ<EFBFBD>붨<EFBFBD><EBB6A8><EFBFBD><EFBFBD>ied<65><64><EFBFBD>鵱ǰλ<C7B0>õĺ<C3B5>һλ
|
||||||
|
|
||||||
|
terminal_index = new_client_count - 1;//<2F>µ<EFBFBD>̨<EFBFBD><CCA8><EFBFBD>ն<EFBFBD>
|
||||||
|
|
||||||
|
ied_usr = (ied_usr_t*)apr_pcalloc(g_init_pool, sizeof(ied_usr_t));
|
||||||
|
ied->usr_ext = ied_usr;//<2F>ڴ<EFBFBD><DAB4>ҵ<EFBFBD>ied<65><64>
|
||||||
|
if (ied_usr == NULL)
|
||||||
|
return APR_ENOMEM;
|
||||||
|
|
||||||
|
ied_usr->last_call_wavelist_time = sGetMsTime() + g_pt61850app->giTime * 1000;//<2F><>FeProject/<2F>ӹ<EFBFBD><D3B9><EFBFBD>Ŀ¼/etc/pt61850netd_pqfe.xml<6D>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ܲ<EFBFBD>ѯʱ<D1AF><CAB1>
|
||||||
|
|
||||||
|
ied_usr->LD_info = (LD_info_t*)apr_pcalloc(g_init_pool, MAX_CPUNO * sizeof(LD_info_t));//<2F>ڴ<EFBFBD><DAB4>ҵ<EFBFBD>ied<65><64>
|
||||||
|
if (ied_usr->LD_info == NULL)
|
||||||
|
return APR_ENOMEM;
|
||||||
|
|
||||||
|
ied_usr->dev_flag = ENABLE;//<2F>ն<EFBFBD><D5B6><EFBFBD>Ч
|
||||||
|
|
||||||
|
ied->chncount = 1; //ͨ<>Ŷ˿<C5B6><CBBF><EFBFBD>
|
||||||
|
ied->channel = (channel_t*)apr_pcalloc(g_cfg_pool, sizeof(channel_t) * ied->chncount);//<2F>ڴ<EFBFBD><DAB4>ҵ<EFBFBD>ied<65><64>
|
||||||
|
ied->channel[0].ied = ied; //ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
||||||
|
ied->channel[0].status = STATUS_BREAKOFF;//<2F><>ʼ<EFBFBD><CABC>Ϊͨ<CEAA><CDA8><EFBFBD>ж<EFBFBD>
|
||||||
|
ied->cpucount = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼΪ0<CEAA><30><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8>ʱд<CAB1><D0B4>
|
||||||
|
//2-<2D><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>///////////////////////////////////
|
||||||
|
}
|
||||||
|
|
||||||
//3-д<><D0B4>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//////////////////////////////
|
//3-д<><D0B4>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//////////////////////////////
|
||||||
int ret = update_one_terminal_ledger(update,i,ied,g_node->n_clients);
|
int ret = update_one_terminal_ledger(update,i,ied,terminal_index,ied_take);
|
||||||
if(ret){
|
if(ret){
|
||||||
printf("ledger can not be update!!!!!quit process!!!!!\n");
|
printf("ledger can not be update!!!!!quit process!!!!!\n");
|
||||||
return 0;
|
return 0;
|
||||||
@@ -918,7 +954,7 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
|||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////modify
|
//////////////////////////////////////////////////////////////////////////////modify
|
||||||
update = ledger_update_xml->modify_updates; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
|
update = ledger_update_xml->modify_updates; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
|
||||||
update_num = ledger_update_xml->modify_updates_num;
|
update_num = ledger_update_xml->modify_update_num;
|
||||||
printf("modify ledger num:%d\n",update_num);
|
printf("modify 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>
|
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;
|
new_in_work_found = FALSE;
|
||||||
@@ -988,7 +1024,7 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
|||||||
}
|
}
|
||||||
///////////////////////////////////////////////////////////////////////////////delete
|
///////////////////////////////////////////////////////////////////////////////delete
|
||||||
update = ledger_update_xml->delete_updates; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
|
update = ledger_update_xml->delete_updates; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
|
||||||
update_num = ledger_update_xml->delete_updates_num;
|
update_num = ledger_update_xml->delete_update_num;
|
||||||
printf("delete ledger num:%d\n",update_num);
|
printf("delete 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>
|
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;
|
new_in_work_found = FALSE;
|
||||||
@@ -1015,30 +1051,45 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
|||||||
int index_to_remove = 0;
|
int index_to_remove = 0;
|
||||||
ied_t* ied_find = NULL;
|
ied_t* ied_find = NULL;
|
||||||
int iedno;
|
int iedno;
|
||||||
ied_usr_t* ied_usr_find = NULL;
|
ied_usr_t* ied_usr_find = NULL; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ied
|
||||||
ied_usr = (ied_usr_t*)ied->usr_ext;
|
ied_usr = (ied_usr_t*)ied->usr_ext;//Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD>ied
|
||||||
for (iedno = 0; iedno < g_node->n_clients; iedno++) {
|
for (iedno = 0; iedno < g_node->n_clients; iedno++) {
|
||||||
ied_find = g_node->clients[iedno];
|
ied_find = g_node->clients[iedno];
|
||||||
ied_usr_find = (ied_usr_t*)ied_find->usr_ext;
|
ied_usr_find = (ied_usr_t*)ied_find->usr_ext;
|
||||||
if (ied_usr_find && strcmp(ied_usr_find->terminal_id, ied_usr->terminal_id) == 0) {
|
if (ied_usr_find && strcmp(ied_usr_find->terminal_id, ied_usr->terminal_id) == 0) {
|
||||||
index_to_remove = iedno;
|
index_to_remove = iedno;//<2F>ҵ<EFBFBD>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD>ied<65><64>g_node<64>е<EFBFBD>λ<EFBFBD><CEBB>
|
||||||
break; //<2F>ҵ<EFBFBD><D2B5>˳<EFBFBD>
|
break; //<2F>ҵ<EFBFBD><D2B5>˳<EFBFBD>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
clear_ied_usr(ied); //̨<><CCA8><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD> ied <20><><EFBFBD>ڴ<EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD> ied <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
ied_t* ied_to_remove = g_node->clients[index_to_remove];
|
ied_t* ied_to_remove = g_node->clients[index_to_remove];//ָ<><D6B8>g_node<64><65>Ӧ<EFBFBD><D3A6><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
|
||||||
memset(ied_to_remove, 0, sizeof(ied_t));
|
|
||||||
|
|
||||||
// <20>ͷ<EFBFBD> ied_usr <20>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD>ڴ棨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>
|
if(ied_to_remove == ied){//ͨ<><CDA8><EFBFBD>ն<EFBFBD>id<69>ҵ<EFBFBD><D2B5><EFBFBD>iedӦ<64><D3A6>Ҳָ<D2B2><D6B8>g_node<64><65>Ӧ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
printf("this ied is ied_to_remove\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
//<2F>ͷ<EFBFBD>iedͨ<64>ŵ<EFBFBD><C5B5>ڴ<EFBFBD>
|
||||||
|
if (ied_to_remove->channel) {
|
||||||
|
apr_pool_clear(ied_to_remove->channel); // <20>ͷ<EFBFBD> g_cfg_pool <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>е<EFBFBD> channel <20>ڴ<EFBFBD>
|
||||||
|
ied_to_remove->channel = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// <20>ͷ<EFBFBD> ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˽ṹ<CBBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||||
|
if (ied_to_remove->usr_ext->LD_info) {
|
||||||
|
apr_pool_clear(ied_to_remove->usr_ext->LD_info); // <20>ͷ<EFBFBD> g_init_pool <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>е<EFBFBD> LD_info <20>ڴ<EFBFBD>
|
||||||
|
ed_to_remove->usr_ext->LD_info = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// <20>ͷ<EFBFBD> ied̨<64>˽ṹ<CBBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||||
if (ied_to_remove->usr_ext) {
|
if (ied_to_remove->usr_ext) {
|
||||||
apr_pool_clear(g_init_pool); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ͬһ<CDAC><D2BB><EFBFBD>ڴ<EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
apr_pool_clear(ied_to_remove->usr_ext); // <20>ͷ<EFBFBD> g_init_pool <EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD> ied_usr <20>ڴ<EFBFBD>
|
||||||
|
ied_to_remove->usr_ext = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// <20>ƶ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>Ԫ<EFBFBD><D4AA>
|
// <20>ƶ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>Ԫ<EFBFBD><D4AA>
|
||||||
for (int i = index_to_remove; i < g_node->n_clients - 1; i++) {
|
for (i = index_to_remove; i < g_node->n_clients - 1; i++) {
|
||||||
g_node->clients[i] = g_node->clients[i + 1];
|
g_node->clients[i] = g_node->clients[i + 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1046,6 +1097,9 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
|||||||
ied_t** new_clients = (ied_t**)apr_pcalloc(g_cfg_pool, (g_node->n_clients - 1) * sizeof(ied_t*));
|
ied_t** new_clients = (ied_t**)apr_pcalloc(g_cfg_pool, (g_node->n_clients - 1) * sizeof(ied_t*));
|
||||||
memcpy(new_clients, g_node->clients, (g_node->n_clients - 1) * sizeof(ied_t*));
|
memcpy(new_clients, g_node->clients, (g_node->n_clients - 1) * sizeof(ied_t*));
|
||||||
|
|
||||||
|
//<2F>ͷ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
|
||||||
|
apr_pool_clear(g_node->clients);
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
g_node->clients = new_clients;
|
g_node->clients = new_clients;
|
||||||
g_node->n_clients--;
|
g_node->n_clients--;
|
||||||
@@ -1569,7 +1623,7 @@ void CheckNextNotConnectedChannel()
|
|||||||
ST_CHAR serverARName[32];
|
ST_CHAR serverARName[32];
|
||||||
ied_usr_t *ied_usr = (ied_usr_t*)chnl_usr->chnl->ied->usr_ext;
|
ied_usr_t *ied_usr = (ied_usr_t*)chnl_usr->chnl->ied->usr_ext;
|
||||||
apr_snprintf(serverARName,sizeof(serverARName),"%s:%d",chnl_usr->ip_str,chnl_usr->chnl->port);
|
apr_snprintf(serverARName,sizeof(serverARName),"%s:%d",chnl_usr->ip_str,chnl_usr->chnl->port);
|
||||||
if (chnl_usr->chnl->ied->cpucount != NULL && chnl_usr->chnl->ied->cpucount > 0) {//2023-09-26 czy <20><><EFBFBD><EFBFBD>line count<0 <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
if (chnl_usr->chnl->ied->cpucount != NULL && chnl_usr->chnl->ied->cpucount > 0 && ied_usr->dev_flag == ENABLE) {//2023-09-26 czy <20><><EFBFBD><EFBFBD>line count<0 <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>//lnk20250121<32><31><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
ret = mms_connectToServer(ied_usr->dev_key, ied_usr->dev_series, serverARName, &(chnl_usr->net_info), &(chnl_usr->m_reqCtrl));
|
ret = mms_connectToServer(ied_usr->dev_key, ied_usr->dev_series, serverARName, &(chnl_usr->net_info), &(chnl_usr->m_reqCtrl));
|
||||||
if (ret == SD_SUCCESS)
|
if (ret == SD_SUCCESS)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -68,6 +68,10 @@ CHECK_NOTHING CHECK_SYN
|
|||||||
#define DEFAULT_EDIT_FXDAREANO (0x80FE) /**< Ĭ<>ϱ༭<CFB1><E0BCAD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
|
#define DEFAULT_EDIT_FXDAREANO (0x80FE) /**< Ĭ<>ϱ༭<CFB1><E0BCAD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
|
||||||
#define FIXED_AREA_GRP_DOT2_EDIT_AREA (2) /**< <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>-><3E>༭<EFBFBD><E0BCAD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
|
#define FIXED_AREA_GRP_DOT2_EDIT_AREA (2) /**< <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>-><3E>༭<EFBFBD><E0BCAD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
|
||||||
|
|
||||||
|
//lnk<6E><6B><EFBFBD><EFBFBD>ʹ<EFBFBD>ܱ<EFBFBD>־20250121
|
||||||
|
#define ENABLE 1
|
||||||
|
#define UNUSED 0
|
||||||
|
|
||||||
extern unsigned int g_node_id;
|
extern unsigned int g_node_id;
|
||||||
|
|
||||||
typedef struct element_usr_t element_usr_t;
|
typedef struct element_usr_t element_usr_t;
|
||||||
@@ -463,15 +467,15 @@ LD_info_t* find_LD_info_only_from_mp_id(char* mp_id);
|
|||||||
////////////////////////////////lnk20250115
|
////////////////////////////////lnk20250115
|
||||||
int parse_ledger_update_xml(trigger_update_xml_t* trigger_update_xml);
|
int parse_ledger_update_xml(trigger_update_xml_t* trigger_update_xml);
|
||||||
extern const int MAX_CPUNO;
|
extern const int MAX_CPUNO;
|
||||||
extern int stringToInt(const char* str, int* result);
|
int stringToInt(const char* str, int* result);
|
||||||
extern bool isCharPtrEmpty(const char* str);
|
bool isCharPtrEmpty(const char* str);
|
||||||
extern int parse_ledger_update_xml(trigger_update_xml_t* trigger_update_xml);
|
int parse_ledger_update_xml(trigger_update_xml_t* trigger_update_xml);
|
||||||
extern int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_index);
|
int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_index,int ied_take);
|
||||||
extern void print_trigger_update_xml(const trigger_update_xml_t* trigger_update);
|
void print_trigger_update_xml(const trigger_update_xml_t* trigger_update);
|
||||||
extern char* parse_model_cfg_web_one(ied_t* ied);
|
char* parse_model_cfg_web_one(ied_t* ied);
|
||||||
extern void Set_xml_nodeinfo_one(char* dev_type);
|
void Set_xml_nodeinfo_one(char* dev_type);
|
||||||
extern void create_ledger_log(trigger_update_xml_t* ledger_update_xml);
|
void create_ledger_log(trigger_update_xml_t* ledger_update_xml);
|
||||||
extern void clear_ied_usr(ied_t* ied);
|
ied_t* find_ied_from_terminal_id();
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
int parse_3s_xml(trigger_3s_xml_t* trigger_3s_xml);
|
int parse_3s_xml(trigger_3s_xml_t* trigger_3s_xml);
|
||||||
int create_3s_xml(trigger_3s_xml_t* trigger_3s_xml);
|
int create_3s_xml(trigger_3s_xml_t* trigger_3s_xml);
|
||||||
|
|||||||
@@ -308,6 +308,21 @@ ied_t* find_ied_from_terminal_id(char terminal_id[])
|
|||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
//lnk20250121<32>Ҳ<EFBFBD>ʹ<EFBFBD>õ<EFBFBD>ied<65>ռ<EFBFBD>
|
||||||
|
ied_t* find_ied_from_terminal_id()
|
||||||
|
{
|
||||||
|
ied_t* ied_find_unused = NULL;
|
||||||
|
int iedno;
|
||||||
|
ied_usr_t* ied_usr_find_unused = NULL;
|
||||||
|
for (iedno = 0; iedno < g_node->n_clients; iedno++) {
|
||||||
|
ied_find_unused = g_node->clients[iedno];
|
||||||
|
ied_usr_find_unused = (ied_usr_t*)ied_find_unused->usr_ext;
|
||||||
|
if (ied_usr_find_unused && ied_usr_find_unused->dev_flag == UNUSED) {
|
||||||
|
return ied_find_unused;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
LD_info_t* find_LD_info_from_line_id(ied_t* ied, int line_id)
|
LD_info_t* find_LD_info_from_line_id(ied_t* ied, int line_id)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user