modify for ledgerupdate
This commit is contained in:
@@ -79,7 +79,8 @@ extern int recall_daily;
|
||||
extern char* UDS_UPLOAD_URL;
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
//lnk20250122start
|
||||
#if 0
|
||||
apr_status_t init_rem_dib_table()
|
||||
{
|
||||
int pos = 0;
|
||||
@@ -110,7 +111,40 @@ apr_status_t init_rem_dib_table()
|
||||
}
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
apr_status_t init_rem_dib_table()
|
||||
{
|
||||
int pos = 0;
|
||||
int iedno,chnl_no;
|
||||
ied_t *ied;
|
||||
struct in_addr ip;
|
||||
chnl_usr_t *chnl_usr;
|
||||
|
||||
set_rem_dib_table_size( IED_COUNT );//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
g_pt61850app->chnl_usr = apr_pcalloc( g_init_pool,IED_COUNT*sizeof(chnl_usr_t*) );
|
||||
printf( "set_rem_dib_table_size %d \n",IED_COUNT );
|
||||
|
||||
for(iedno=0 ; iedno<g_node->n_clients; iedno++) {
|
||||
ied = g_node->clients[iedno];
|
||||
for(chnl_no=0 ; chnl_no<ied->chncount; chnl_no++) {
|
||||
chnl_usr = ied->channel[chnl_no].connect;
|
||||
g_pt61850app->chnl_usr[pos] = chnl_usr;
|
||||
ip.s_addr = htonl(ied->channel[chnl_no].addr);
|
||||
strcpy(chnl_usr->ip_str,inet_ntoa(ip));
|
||||
printf( " add_rem_dib_table %s:%d \n",chnl_usr->ip_str ,ied->channel[chnl_no].port );
|
||||
add_rem_dib_table (pos++,chnl_usr->ip_str,ied->channel[chnl_no].port );
|
||||
{
|
||||
char comm_str[256];
|
||||
memset(comm_str,0,256);
|
||||
apr_snprintf(comm_str,sizeof(comm_str),"%16s:%d\t\tinited",chnl_usr->ip_str,ied->channel[chnl_no].port);
|
||||
add_comm_log(comm_str);
|
||||
}
|
||||
}
|
||||
}
|
||||
return APR_SUCCESS;
|
||||
}
|
||||
//lnk20250122end
|
||||
|
||||
void CloseIECReports(chnl_usr_t *chnl_usr)
|
||||
{
|
||||
@@ -844,17 +878,17 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
||||
int new_client_count = g_node->n_clients + 1; // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD>̨<EFBFBD><CCA8>
|
||||
|
||||
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD><CCBA>Ƿ<C7B7>ԭ<EFBFBD>е<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾ʹӲ<CDB4>ʹ<EFBFBD>ܵ<EFBFBD>ied<65>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ҿ<EFBFBD><D2BF>ÿռ䣬<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ܺ<EFBFBD><DCBA>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD>ն<EFBFBD>
|
||||
if(new_client_count > IED_COUNT){
|
||||
if(new_client_count > IED_COUNT){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ied_t *ied_unused = NULL;
|
||||
ied_usr_t* ied_usr_unused = NULL;
|
||||
ied_unused = find_ied_from_terminal_id();
|
||||
ied_unused = find_ied_unused();//<2F><><EFBFBD><EFBFBD>g_node<64>ҵ<EFBFBD><D2B5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ied֮ǰ<D6AE><C7B0>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ䣬ֱ<E4A3AC><D6B1>ռ<EFBFBD><D5BC>
|
||||
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>
|
||||
terminal_index = ied_usr_unused->dev_idx //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ied<65>ı<EFBFBD><C4B1>ţ<EFBFBD><EFBFBD><EFBFBD>g_node<EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>
|
||||
|
||||
//<2F><>ӡ<EFBFBD><D3A1>ʾ
|
||||
printf("!!!!!!!!ied index:%d ,terminal_id:%s has been taken!!!!!!!!!!\n",ied_usr_unused->dev_idx,ied_usr_unused->terminal_id);
|
||||
printf("!!!!!!!!ied index:%d ,origin terminal_id:%s has been taken!!!!!!!!!!\n",ied_usr_unused->dev_idx,ied_usr_unused->terminal_id);
|
||||
|
||||
//<2F>ն˳<D5B6>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
||||
ied_usr = (ied_usr_t*)ied->usr_ext;
|
||||
@@ -863,6 +897,7 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
||||
ied_usr->dev_flag = ENABLE;//<2F>ն<EFBFBD><D5B6><EFBFBD>Ч
|
||||
|
||||
ied->chncount = 1; //ͨ<>Ŷ˿<C5B6><CBBF><EFBFBD>
|
||||
//<2F><><EFBFBD>ٷ<EFBFBD><D9B7><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ռ<EFBFBD>
|
||||
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>
|
||||
@@ -870,13 +905,13 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
||||
ied_take = 1;//ied֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD>
|
||||
|
||||
}
|
||||
else{
|
||||
else{ //<2F><><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ȫ<EFBFBD><C8AB>̨<EFBFBD><CCA8><EFBFBD>ж<EFBFBD>û<EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>ied<65><64>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̿ɹҵ<C9B9>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD>
|
||||
printf("!!!!!!!!!!ledger array is full!!!!!!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
else{//<2F><><EFBFBD><EFBFBD>̨<EFBFBD>ʺ<EFBFBD><CABA><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˷<EFBFBD>Χ
|
||||
}//<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>趨<EFBFBD><E8B6A8>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else{
|
||||
// <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));
|
||||
|
||||
@@ -942,18 +977,18 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
||||
//4-<2D><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>ļ<EFBFBD>///////////////////////////////////
|
||||
|
||||
//5-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>//////////////////////////////
|
||||
|
||||
parse_rpt_log_ini_one(ied);
|
||||
//5-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>///////////////////////////////////
|
||||
|
||||
//6-init_rem_dib_table//////////////////////////////
|
||||
|
||||
init_rem_dib_table_one(ied)
|
||||
//6-init_rem_dib_table///////////////////////////////////
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////modify
|
||||
update = ledger_update_xml->modify_updates; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD>
|
||||
update = ledger_update_xml->modify_updates; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD>
|
||||
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>
|
||||
@@ -1008,7 +1043,7 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
||||
//4-<2D><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>ļ<EFBFBD>///////////////////////////////////
|
||||
|
||||
//5-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>//////////////////////////////
|
||||
|
||||
|
||||
//5-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>///////////////////////////////////
|
||||
|
||||
//6-init_rem_dib_table//////////////////////////////
|
||||
@@ -1070,39 +1105,7 @@ void process_ledger_update(trigger_update_xml_t *ledger_update_xml)
|
||||
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(ied_to_remove->usr_ext); // <20>ͷ<EFBFBD> g_init_pool <20>ڴ<EFBFBD><DAB4><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 (i = index_to_remove; i < g_node->n_clients - 1; i++) {
|
||||
g_node->clients[i] = g_node->clients[i + 1];
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>Ե<EFBFBD><D4B5><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С
|
||||
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--;
|
||||
|
||||
//3-ɾ<><C9BE>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>///////////////////////////////////
|
||||
|
||||
|
||||
Reference in New Issue
Block a user