@@ -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 \t inited " , 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> ///////////////////////////////////