modify for ledgerupdate

This commit is contained in:
lnk
2025-01-21 17:48:37 +08:00
parent 760dffe884
commit 5f5a3be6c9
4 changed files with 239 additions and 271 deletions

View File

@@ -33,7 +33,9 @@ extern pthread_mutex_t mtx;
extern apr_pool_t* g_cfg_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
@@ -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>
//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)
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>
ied_t** new_clients = (ied_t**)apr_pcalloc(g_cfg_pool, new_client_count * sizeof(ied_t*));
//<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>
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>
int k;
for (k = 0; k < g_node->n_clients; k++) {
new_clients[k] = g_node->clients[k];
}
//<2F><>ӡ<EFBFBD><EFBFBD>ʾ
printf("!!!!!!!!ied index:%d ,terminal_id:%s has been taken!!!!!!!!!!\n",ied_usr_unused->dev_idx,ied_usr_unused->terminal_id);
// Ϊ<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));
//<2F>ն˳<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
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>
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>//////////////////////////////
ied_usr->dev_flag = ENABLE;//<2F>ն<EFBFBD><D5B6><EFBFBD>Ч
//2-<2D><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>///////////////////////////////////
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_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;
//2-<2D><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8>///////////////////////////////////
ied->chncount = 1; //ͨ<>Ŷ˿<C5B6><CBBF><EFBFBD>
ied->channel[0].ied = ied; //ͨ<EFBFBD><EFBFBD><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>
ied_take = 1;//ied֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD>
}
else{
printf("!!!!!!!!!!ledger array is full!!!!!!\n");
return;
}
}
else{//<2F><><EFBFBD><EFBFBD>̨<EFBFBD>ʺ<EFBFBD><CABA><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˷<EFBFBD>Χ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>¼
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>//////////////////////////////
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){
printf("ledger can not be update!!!!!quit process!!!!!\n");
return 0;
@@ -918,7 +954,7 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
//////////////////////////////////////////////////////////////////////////////modify
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);
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;
@@ -988,7 +1024,7 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
}
///////////////////////////////////////////////////////////////////////////////delete
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);
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;
@@ -1015,30 +1051,45 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
int index_to_remove = 0;
ied_t* ied_find = NULL;
int iedno;
ied_usr_t* ied_usr_find = NULL;
ied_usr = (ied_usr_t*)ied->usr_ext;
ied_usr_t* ied_usr_find = NULL; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ied
ied_usr = (ied_usr_t*)ied->usr_ext;//Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD>ied
for (iedno = 0; iedno < g_node->n_clients; iedno++) {
ied_find = g_node->clients[iedno];
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) {
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>
}
}
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>
ied_t* ied_to_remove = g_node->clients[index_to_remove];
memset(ied_to_remove, 0, sizeof(ied_t));
// <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];//ָ<><D6B8>g_node<64><65>Ӧ<EFBFBD><D3A6><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
// <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) {
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>
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];
}
@@ -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*));
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>
g_node->clients = new_clients;
g_node->n_clients--;
@@ -1569,7 +1623,7 @@ void CheckNextNotConnectedChannel()
ST_CHAR serverARName[32];
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);
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));
if (ret == SD_SUCCESS)
{