add log4cplus
This commit is contained in:
248
mms/mmscli_rpt.c
248
mms/mmscli_rpt.c
@@ -95,7 +95,7 @@ ST_VOID object_name_clone_destroy(OBJECT_NAME* obj);
|
||||
static ST_ULONG a_get_rem_ip_addr_inline(ST_LONG acse_conn_id, int* nPort);
|
||||
static char* _convert_ip_2_char(unsigned long dwIP);
|
||||
|
||||
#if 1 //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP WW 2023-08-29
|
||||
#if 1 //测试 获取服务器IP WW 2023-08-29
|
||||
static char* _convert_ip_2_char(unsigned long dwIP)
|
||||
{
|
||||
static char buf[64] = { 0 };
|
||||
@@ -293,10 +293,10 @@ RCB_INFO* rcb_info_create(MVL_NET_INFO* net_info, ST_CHAR* domName,
|
||||
+ BSTR_NUMBITS_TO_NUMBYTES(numDsVar); /* rcb_info->rcb_data.Inclusion */
|
||||
|
||||
rcb_info = (RCB_INFO*)chk_calloc(1, extended_size);
|
||||
strcpy(rcb_info->dom_Name, domName); //WW 2023-08-29 <EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
strcpy(rcb_info->rcb_name, rcbName); //WW 2023-08-29 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
strcpy(rcb_info->dom_Name, domName); //WW 2023-08-29 逻辑设备名称
|
||||
strcpy(rcb_info->rcb_name, rcbName); //WW 2023-08-29 报告控制块名称
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
strcpy(rcb_info->ds_Nam, datSetName); //WW 2023-08-29 <EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
strcpy(rcb_info->ds_Nam, datSetName); //WW 2023-08-29 数据集名称
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
echo_msg4("Client RCB info 0x%X created for '%s' in domain '%s'.datasetnam '%s' \n", rcb_info, rcbName, domName, datSetName);
|
||||
@@ -732,11 +732,11 @@ ST_RET rcb_enable(MVL_NET_INFO* netInfo, ST_CHAR* domName,
|
||||
ret = mms_named_var_write(netInfo, varName, DOM_SPEC, domName, rpt_typeids->bstr6, TrgOps, timeOut);
|
||||
if (ret != SD_SUCCESS) {
|
||||
printf("%s Write Error!!!", varName);
|
||||
echo_warn1("Reportע<EFBFBD><EFBFBD> %s Write Error!!!", varName);
|
||||
echo_warn1("Report注册 %s Write Error!!!", varName);
|
||||
}
|
||||
}
|
||||
|
||||
#if 0 /* Add something like this if other options needed. ???????? BufTm <EFBFBD><EFBFBD>??*/
|
||||
#if 0 /* Add something like this if other options needed. ???????? BufTm 等??*/
|
||||
if (ret == SD_SUCCESS)
|
||||
{
|
||||
apr_snprintf(varName, sizeof(varName), "%s$Trgs", rcbName);
|
||||
@@ -841,7 +841,7 @@ ST_VOID u_iec_rpt_ind_data_by_devtype(MVL_VAR_ASSOC** info_va,
|
||||
log_var_data(info_va[va_num], &mms_dec_data);
|
||||
//assert(add_mms_dec_data== (uint32_t)&mms_dec_data);
|
||||
rptinfo = find_rptinfo_from_net_rpt_info_name(net_info, rcb_info);
|
||||
//rptinfo->m_LastDataTime = sGetMsTime();//WW 2023-08-29 ȥ<EFBFBD><EFBFBD>
|
||||
//rptinfo->m_LastDataTime = sGetMsTime();//WW 2023-08-29 去除
|
||||
LD_info = rptinfo->LD_info;
|
||||
chnl_usr = net_info->user_ext;
|
||||
ied = chnl_usr->chnl->ied;
|
||||
@@ -850,7 +850,7 @@ ST_VOID u_iec_rpt_ind_data_by_devtype(MVL_VAR_ASSOC** info_va,
|
||||
not_set_rpt_q_this = TRUE;
|
||||
//g_db_inf_clear_data(RPT_IDX);
|
||||
rptinfo->count++;
|
||||
printf("[BEGIND Process] Received Report From %s:%d %s %s ,va_total = %i ,<EFBFBD><EFBFBD>count = %i<EFBFBD><EFBFBD> \n",
|
||||
printf("[BEGIND Process] Received Report From %s:%d %s %s ,va_total = %i ,【count = %i】 \n",
|
||||
chnl_usr->ip_str, chnl_usr->chnl->port, LD_info->LD_name, rcb_info->RptID, va_total, rptinfo->count);
|
||||
|
||||
//apr_time_t previousTime = apr_time_now();//
|
||||
@@ -980,9 +980,9 @@ ST_VOID u_iec_rpt_ind_data_by_devtype(MVL_VAR_ASSOC** info_va,
|
||||
|
||||
//assert(0);
|
||||
if (LD_info->line_id > 0) {
|
||||
if (strstr(rcb_info->RptID, "QVVR"))//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbQVVR
|
||||
if (strstr(rcb_info->RptID, "QVVR"))//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbQVVR
|
||||
processQVVR_start(LD_info);
|
||||
else if (strstr(rcb_info->RptID, "RDRE"))//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbRDRE
|
||||
else if (strstr(rcb_info->RptID, "RDRE"))//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbRDRE
|
||||
processRDRE_start(LD_info);
|
||||
else {
|
||||
ied_t* ied;
|
||||
@@ -990,7 +990,7 @@ ST_VOID u_iec_rpt_ind_data_by_devtype(MVL_VAR_ASSOC** info_va,
|
||||
|
||||
ied_usr_t* ied_usr = (ied_usr_t*)ied->usr_ext;
|
||||
|
||||
if (rptinfo->flickerflag==1)//CZY 2023-08-17 WW 2022-11-14 ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>һ<EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD> json_block_create_start(LD_info->line_id);
|
||||
if (rptinfo->flickerflag==1)//CZY 2023-08-17 WW 2022-11-14 只有闪变和第一次进入才会初始化 json_block_create_start(LD_info->line_id);
|
||||
json_block_create_start( LD_info->voltage_level, LD_info->mp_id, rptinfo->flickerflag, ied_usr->dev_type, LD_info->line_id);
|
||||
else if(rptinfo->flickerflag == 0) {
|
||||
if (LD_info->rptRecvCheckFlag == 0)
|
||||
@@ -1038,16 +1038,16 @@ ST_VOID u_iec_rpt_ind_data_by_devtype(MVL_VAR_ASSOC** info_va,
|
||||
// cout<<" FULL_FCDA_Name "<< FULL_FCDA_Name <<endl;
|
||||
//printf("\n ----5.12--%d- %s \n", va_num, FULL_FCDA_Name);
|
||||
length_FCDA = strlen(FULL_FCDA_Name);
|
||||
//11 08 beijing <EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q
|
||||
//11 08 beijing 许继装置不处理q
|
||||
if (('$' == FULL_FCDA_Name[length_FCDA - 2]) && ('q' == FULL_FCDA_Name[length_FCDA - 1])) {
|
||||
if (not_set_rpt_q_this) {
|
||||
int flag = Set_q_from_61850rpt(mms_dec_data.data_item[ii].u.data_str);
|
||||
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbQVVR
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbQVVR
|
||||
//need do nothing!
|
||||
not_set_rpt_q_this = FALSE;
|
||||
}
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> LLN0$BR$brcbRDRE
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14修改判断 LLN0$BR$brcbRDRE
|
||||
//need do nothing!
|
||||
not_set_rpt_q_this = FALSE;
|
||||
}
|
||||
@@ -1059,14 +1059,14 @@ ST_VOID u_iec_rpt_ind_data_by_devtype(MVL_VAR_ASSOC** info_va,
|
||||
}
|
||||
else if (('$' == FULL_FCDA_Name[length_FCDA - 2]) && ('t' == FULL_FCDA_Name[length_FCDA - 1])) {
|
||||
if (not_set_rpt_TimeID_this) {
|
||||
apr_time_t t = convert_btime6_to_apr_time(&(mms_dec_data.data_item[ii].u.data_bTime6));//<EFBFBD><EFBFBD>
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbQVVR
|
||||
apr_time_t t = convert_btime6_to_apr_time(&(mms_dec_data.data_item[ii].u.data_bTime6));//微秒
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbQVVR
|
||||
if (strstr(FULL_FCDA_Name, "VarStr$t")) {
|
||||
processQVVR_time(LD_info, t / 1000);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
processQVVR_time(LD_info, t / 1000);//毫秒
|
||||
not_set_rpt_TimeID_this = FALSE;
|
||||
}
|
||||
}
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> LLN0$BR$brcbRDRE
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14修改判断 LLN0$BR$brcbRDRE
|
||||
//need do nothing!
|
||||
not_set_rpt_TimeID_this = FALSE;
|
||||
}
|
||||
@@ -1075,7 +1075,7 @@ ST_VOID u_iec_rpt_ind_data_by_devtype(MVL_VAR_ASSOC** info_va,
|
||||
printf("rcb_info->RptID=%s ,LineId=%d , Timestamp= %lld \n", rcb_info->RptID, LD_info->line_id, t / 1000);
|
||||
not_set_rpt_TimeID_this = FALSE;
|
||||
if (strstr(rcb_info->RptID, "LLN0$RP$urcbRealData")) {
|
||||
//20241223lnk<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն˺Ų<EFBFBD><EFBFBD><EFBFBD>
|
||||
//20241223lnk添加终端号参数
|
||||
ied_usr_t *ied_usr = GET_IEDEXT_ADDR(ied);
|
||||
if (urcbRealDataHasReceived(ied_usr->dev_idx,LD_info, t / 1000))
|
||||
return;
|
||||
@@ -1098,10 +1098,10 @@ ST_VOID u_iec_rpt_ind_data_by_devtype(MVL_VAR_ASSOC** info_va,
|
||||
else if (mms_dec_data.data_item[ii].type == DATA_STR_TYPE)
|
||||
v = strtol(mms_dec_data.data_item[ii].u.data_str, NULL, 2);
|
||||
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbQVVR
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbQVVR
|
||||
processQVVR_data(LD_info, FULL_FCDA_Name, v);
|
||||
}
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbRDRE
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbRDRE
|
||||
processRDRE_data(LD_info, FULL_FCDA_Name, v);
|
||||
}
|
||||
else
|
||||
@@ -1114,34 +1114,34 @@ ST_VOID u_iec_rpt_ind_data_by_devtype(MVL_VAR_ASSOC** info_va,
|
||||
//set_rpt_LineID(LD_info->line_id);
|
||||
//set_line_info(RPT_IDX,LD_info->line_id,LD_info->SubV_Index,LD_info->Dev_Index,LD_info->Sub_Index,LD_info->GD_Index);
|
||||
//write_updatetime_to_db(chnl_usr->chnl->addr);
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbQVVR
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbQVVR
|
||||
processQVVR_end(LD_info);
|
||||
}
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbRDRE
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbRDRE
|
||||
processRDRE_end(LD_info);
|
||||
}
|
||||
else {
|
||||
printf("%d : %d", LD_info->rptRecvFlag, LD_info->rptRecvCheckFlag);
|
||||
//append_db_records(RPT_IDX);
|
||||
if (rptinfo->flickerflag==1)//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
||||
if (rptinfo->flickerflag==1)//CZY 2023-08-17 WW 2022-11-14 增加闪变标志
|
||||
{
|
||||
//ied_usr_t* ied_usr = ied->usr_ext;//CZY 2023-08-17 WW 2022<EFBFBD><EFBFBD>12<EFBFBD><EFBFBD>6<EFBFBD><EFBFBD>14:09:08 <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>ICD֧<44><D6A7>
|
||||
//ied_usr_t* ied_usr = ied->usr_ext;//CZY 2023-08-17 WW 2022年12月6日14:09:08 增加多个ICD支持
|
||||
//int devkind = ied_usr->dev_flag;
|
||||
json_block_create_end(LD_info->v_wiring_type, LD_info->mp_id, rptinfo->flickerflag); //lnk2024-8-16<EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD>
|
||||
json_block_create_end(LD_info->v_wiring_type, LD_info->mp_id, rptinfo->flickerflag); //lnk2024-8-16增加接线类型参数
|
||||
}
|
||||
else if(rptinfo->flickerflag == 0){//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
else if(rptinfo->flickerflag == 0){//CZY 2023-08-17 WW 2022-11-14 增加多个报告判断
|
||||
if (LD_info->rptRecvFlag == LD_info->rptRecvCheckFlag) {
|
||||
//ied_usr_t* ied_usr = ied->usr_ext;//CZY 2023-08-17 WW 2022<EFBFBD><EFBFBD>12<EFBFBD><EFBFBD>6<EFBFBD><EFBFBD>14:09:08 <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>ICD֧<44><D6A7>
|
||||
//ied_usr_t* ied_usr = ied->usr_ext;//CZY 2023-08-17 WW 2022年12月6日14:09:08 增加多个ICD支持
|
||||
//int devkind = ied_usr->dev_flag;
|
||||
json_block_create_end(LD_info->v_wiring_type, LD_info->mp_id, rptinfo->flickerflag); //lnk2024-8-16<EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD>
|
||||
json_block_create_end(LD_info->v_wiring_type, LD_info->mp_id, rptinfo->flickerflag); //lnk2024-8-16增加接线类型参数
|
||||
LD_info->rptRecvCheckFlag = 0;
|
||||
}
|
||||
}
|
||||
else if (rptinfo->flickerflag == 2) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
else if (rptinfo->flickerflag == 2) {//CZY 2023-08-17 WW 2022-11-14 增加多个报告判断
|
||||
if (LD_info->rptPstRecvFlag == LD_info->rptPstRecvCheckFlag) {
|
||||
//ied_usr_t* ied_usr = ied->usr_ext;//CZY 2023-08-17 WW 2022<EFBFBD><EFBFBD>12<EFBFBD><EFBFBD>6<EFBFBD><EFBFBD>14:09:08 <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>ICD֧<44><D6A7>
|
||||
//ied_usr_t* ied_usr = ied->usr_ext;//CZY 2023-08-17 WW 2022年12月6日14:09:08 增加多个ICD支持
|
||||
//int devkind = ied_usr->dev_flag;
|
||||
json_block_create_end(LD_info->v_wiring_type, LD_info->mp_id, rptinfo->flickerflag); //lnk2024-8-16<EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD>
|
||||
json_block_create_end(LD_info->v_wiring_type, LD_info->mp_id, rptinfo->flickerflag); //lnk2024-8-16增加接线类型参数
|
||||
LD_info->rptPstRecvCheckFlag = 0;
|
||||
}
|
||||
}
|
||||
@@ -1151,7 +1151,7 @@ ST_VOID u_iec_rpt_ind_data_by_devtype(MVL_VAR_ASSOC** info_va,
|
||||
echo_err3("Ignore this report due to line_id invalid , Report From %s %s %s !!!",
|
||||
APR_EGENERAL, chnl_usr->ip_str, LD_info->LD_name, rcb_info->RptID);
|
||||
}
|
||||
printf("[END Process] Report From %s:%d %s %s ,va_total = %i ,<EFBFBD><EFBFBD>count = %i<EFBFBD><EFBFBD> \n",
|
||||
printf("[END Process] Report From %s:%d %s %s ,va_total = %i ,【count = %i】 \n",
|
||||
chnl_usr->ip_str, chnl_usr->chnl->port, LD_info->LD_name, rcb_info->RptID, va_total, rptinfo->count);
|
||||
|
||||
//apr_time_t previousTimeend = apr_time_now();//
|
||||
@@ -1171,7 +1171,7 @@ ST_VOID u_iec_rpt_ind_data_by_devtype(MVL_VAR_ASSOC** info_va,
|
||||
}
|
||||
}
|
||||
|
||||
//<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> add on Aug 3 for testing of guangdong CRITICAL
|
||||
//设置响应时间,避免频繁召唤装置名称,导致丢包 add on Aug 3 for testing of guangdong CRITICAL
|
||||
chnl_usr->m_LastPosRespTime = sGetMsTime();
|
||||
|
||||
//assert (va_num==va_total); /* Did we count right? */
|
||||
@@ -1204,7 +1204,7 @@ ST_VOID u_iec_rpt_ind_data(MVL_VAR_ASSOC** info_va,
|
||||
log_var_data(info_va[va_num], &mms_dec_data);
|
||||
//assert(add_mms_dec_data== (uint32_t)&mms_dec_data);
|
||||
rptinfo = find_rptinfo_from_net_rcb_info(net_info, rcb_info);
|
||||
//rptinfo->m_LastDataTime = sGetMsTime();//WW 2023-08-29 ȥ<EFBFBD><EFBFBD>
|
||||
//rptinfo->m_LastDataTime = sGetMsTime();//WW 2023-08-29 去除
|
||||
LD_info = rptinfo->LD_info;
|
||||
chnl_usr = net_info->user_ext;
|
||||
ied = chnl_usr->chnl->ied;
|
||||
@@ -1213,7 +1213,7 @@ ST_VOID u_iec_rpt_ind_data(MVL_VAR_ASSOC** info_va,
|
||||
not_set_rpt_q_this = TRUE;
|
||||
//g_db_inf_clear_data(RPT_IDX);
|
||||
rptinfo->count++;
|
||||
printf("[BEGIND Process] Received Report From %s:%d %s %s ,va_total = %i ,<EFBFBD><EFBFBD>count = %i<EFBFBD><EFBFBD> mp_id=%s\n",
|
||||
printf("[BEGIND Process] Received Report From %s:%d %s %s ,va_total = %i ,【count = %i】 mp_id=%s\n",
|
||||
chnl_usr->ip_str, chnl_usr->chnl->port, LD_info->LD_name, rcb_info->RptID, va_total, rptinfo->count, LD_info->mp_id);
|
||||
|
||||
//apr_time_t previousTime = apr_time_now();//
|
||||
@@ -1342,9 +1342,9 @@ ST_VOID u_iec_rpt_ind_data(MVL_VAR_ASSOC** info_va,
|
||||
// cout<<"pEquipment->m_OMSObject_FULL_FCDA_Map.entries() = "<<pEquipment->m_OMSObject_FULL_FCDA_Map.entries()<<endl
|
||||
//assert(0);
|
||||
if (LD_info->line_id > 0) {
|
||||
if (strstr(rcb_info->RptID, "QVVR"))//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbQVVR
|
||||
processQVVR_start(LD_info);//<EFBFBD><EFBFBD><EFBFBD>͵ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else if (strstr(rcb_info->RptID, "RDRE"))//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbRDRE
|
||||
if (strstr(rcb_info->RptID, "QVVR"))//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbQVVR
|
||||
processQVVR_start(LD_info);//上送的报告里面的监测点号
|
||||
else if (strstr(rcb_info->RptID, "RDRE"))//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbRDRE
|
||||
processRDRE_start(LD_info);
|
||||
else {
|
||||
ied_t* ied;
|
||||
@@ -1352,7 +1352,7 @@ ST_VOID u_iec_rpt_ind_data(MVL_VAR_ASSOC** info_va,
|
||||
ied = find_ied_from_dev_code(LD_info->terminal_code);
|
||||
|
||||
ied_usr_t* ied_usr = (ied_usr_t*)ied->usr_ext;
|
||||
if (rptinfo->flickerflag == 1)//CZY 2023-08-17 WW 2022-11-14 ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>һ<EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD> json_block_create_start(LD_info->line_id);
|
||||
if (rptinfo->flickerflag == 1)//CZY 2023-08-17 WW 2022-11-14 只有闪变和第一次进入才会初始化 json_block_create_start(LD_info->line_id);
|
||||
json_block_create_start(LD_info->voltage_level, LD_info->mp_id, rptinfo->flickerflag, ied_usr->dev_type, LD_info->line_id);
|
||||
else if (rptinfo->flickerflag == 0) {
|
||||
if (LD_info->rptRecvCheckFlag == 0)
|
||||
@@ -1404,7 +1404,7 @@ ST_VOID u_iec_rpt_ind_data(MVL_VAR_ASSOC** info_va,
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (ii = 0; ii < mms_dec_data.item_num; ++ii)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>FCDA
|
||||
for (ii = 0; ii < mms_dec_data.item_num; ++ii)//遍历FCDA
|
||||
{
|
||||
char* FULL_FCDA_Name;
|
||||
int length_FCDA;
|
||||
@@ -1417,16 +1417,16 @@ ST_VOID u_iec_rpt_ind_data(MVL_VAR_ASSOC** info_va,
|
||||
// cout<<" FULL_FCDA_Name "<< FULL_FCDA_Name <<endl;
|
||||
//printf("\n ----5.12--%d- %s \n", va_num, FULL_FCDA_Name);
|
||||
length_FCDA = strlen(FULL_FCDA_Name);
|
||||
//11 08 beijing <EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q
|
||||
//11 08 beijing 许继装置不处理q
|
||||
if (('$' == FULL_FCDA_Name[length_FCDA - 2]) && ('q' == FULL_FCDA_Name[length_FCDA - 1])) {
|
||||
if (not_set_rpt_q_this) {
|
||||
int flag = Set_q_from_61850rpt(mms_dec_data.data_item[ii].u.data_str);
|
||||
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbQVVR
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbQVVR
|
||||
//need do nothing!
|
||||
not_set_rpt_q_this = FALSE;
|
||||
}
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> LLN0$BR$brcbRDRE
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14修改判断 LLN0$BR$brcbRDRE
|
||||
//need do nothing!
|
||||
not_set_rpt_q_this = FALSE;
|
||||
}
|
||||
@@ -1443,17 +1443,17 @@ ST_VOID u_iec_rpt_ind_data(MVL_VAR_ASSOC** info_va,
|
||||
else if (('$' == FULL_FCDA_Name[length_FCDA - 2]) && ('t' == FULL_FCDA_Name[length_FCDA - 1])) {
|
||||
if (not_set_rpt_TimeID_this) {
|
||||
apr_time_t t = convert_btime6_to_apr_time(&(mms_dec_data.data_item[ii].u.data_bTime6));
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbQVVR
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbQVVR
|
||||
if (strstr(FULL_FCDA_Name, "VarStr$t")) {
|
||||
processQVVR_time(LD_info, t / 1000);
|
||||
not_set_rpt_TimeID_this = FALSE;
|
||||
}
|
||||
}
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> LLN0$BR$brcbRDRE
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14修改判断 LLN0$BR$brcbRDRE
|
||||
//need do nothing!
|
||||
not_set_rpt_TimeID_this = FALSE;
|
||||
}
|
||||
else if (strstr(FULL_FCDA_Name, "GGIO")) {//CZY 2023-08-17 WW 2022-11-14<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> LLN0$BR$brcbRDRE
|
||||
else if (strstr(FULL_FCDA_Name, "GGIO")) {//CZY 2023-08-17 WW 2022-11-14修改判断 LLN0$BR$brcbRDRE
|
||||
//need do nothing!
|
||||
not_set_rpt_TimeID_this = FALSE;
|
||||
}
|
||||
@@ -1462,9 +1462,9 @@ ST_VOID u_iec_rpt_ind_data(MVL_VAR_ASSOC** info_va,
|
||||
printf("rcb_info->RptID=%s ,LineId=%d , Timestamp= %lld \n", rcb_info->RptID, LD_info->line_id, t / 1000);
|
||||
not_set_rpt_TimeID_this = FALSE;
|
||||
if (strstr(rcb_info->RptID, "LLN0$RP$urcbRealData")) {
|
||||
//20241223lnk<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն˺Ų<EFBFBD><EFBFBD><EFBFBD>
|
||||
//20241223lnk添加终端号参数
|
||||
ied_usr_t *ied_usr = GET_IEDEXT_ADDR(ied);
|
||||
if (urcbRealDataHasReceived(ied_usr->dev_idx,LD_info, t / 1000))//<EFBFBD>ж<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
|
||||
if (urcbRealDataHasReceived(ied_usr->dev_idx,LD_info, t / 1000))//判断时间重复
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1485,17 +1485,17 @@ ST_VOID u_iec_rpt_ind_data(MVL_VAR_ASSOC** info_va,
|
||||
else if (mms_dec_data.data_item[ii].type == DATA_STR_TYPE)
|
||||
v = strtol(mms_dec_data.data_item[ii].u.data_str, NULL, 2);
|
||||
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbQVVR
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbQVVR
|
||||
processQVVR_data(LD_info, FULL_FCDA_Name, v);
|
||||
}
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbRDRE
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbRDRE
|
||||
processRDRE_data(LD_info, FULL_FCDA_Name, v);
|
||||
}
|
||||
else if (strstr(FULL_FCDA_Name, "GGIO"))
|
||||
{
|
||||
ied_t* ied = LD_info->ied;
|
||||
ied_usr_t* ied_usr = GET_IEDEXT_ADDR(ied);
|
||||
processGGIO_start_data_end(LD_info->mp_id, FULL_FCDA_Name, v, time, ied_usr->dev_type, LD_info->line_id);//GGIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>״<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
processGGIO_start_data_end(LD_info->mp_id, FULL_FCDA_Name, v, time, ied_usr->dev_type, LD_info->line_id);//GGIO数据全套处理流程
|
||||
}
|
||||
else
|
||||
json_block_create_data(LD_info->mp_id, FULL_FCDA_Name, v, rptinfo->flickerflag);
|
||||
@@ -1508,34 +1508,34 @@ ST_VOID u_iec_rpt_ind_data(MVL_VAR_ASSOC** info_va,
|
||||
//set_rpt_LineID(LD_info->line_id);
|
||||
//set_line_info(RPT_IDX,LD_info->line_id,LD_info->SubV_Index,LD_info->Dev_Index,LD_info->Sub_Index,LD_info->GD_Index);
|
||||
//write_updatetime_to_db(chnl_usr->chnl->addr);
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbQVVR
|
||||
if (strstr(rcb_info->RptID, "QVVR")) {//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbQVVR
|
||||
processQVVR_end(LD_info);
|
||||
}
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>LLN0$BR$brcbRDRE
|
||||
else if (strstr(rcb_info->RptID, "RDRE")) {//CZY 2023-08-17 WW 2022-11-14 修改判断LLN0$BR$brcbRDRE
|
||||
processRDRE_end(LD_info);
|
||||
}
|
||||
else {
|
||||
printf("%d : %d", LD_info->rptRecvFlag, LD_info->rptRecvCheckFlag);
|
||||
//append_db_records(RPT_IDX);
|
||||
if (rptinfo->flickerflag == 1)//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
||||
if (rptinfo->flickerflag == 1)//CZY 2023-08-17 WW 2022-11-14 增加闪变标志
|
||||
{
|
||||
//ied_usr_t* ied_usr = ied->usr_ext;//CZY 2023-08-17 WW 2022<EFBFBD><EFBFBD>12<EFBFBD><EFBFBD>6<EFBFBD><EFBFBD>14:09:08 <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>ICD֧<44><D6A7>
|
||||
//ied_usr_t* ied_usr = ied->usr_ext;//CZY 2023-08-17 WW 2022年12月6日14:09:08 增加多个ICD支持
|
||||
//int devkind = ied_usr->dev_flag;
|
||||
json_block_create_end(LD_info->v_wiring_type, LD_info->mp_id, rptinfo->flickerflag);//lnk<EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>
|
||||
json_block_create_end(LD_info->v_wiring_type, LD_info->mp_id, rptinfo->flickerflag);//lnk角形处理
|
||||
}
|
||||
else if (rptinfo->flickerflag == 0) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
else if (rptinfo->flickerflag == 0) {//CZY 2023-08-17 WW 2022-11-14 增加多个报告判断
|
||||
if (LD_info->rptRecvFlag == LD_info->rptRecvCheckFlag) {
|
||||
//ied_usr_t* ied_usr = ied->usr_ext;//CZY 2023-08-17 WW 2022<EFBFBD><EFBFBD>12<EFBFBD><EFBFBD>6<EFBFBD><EFBFBD>14:09:08 <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>ICD֧<44><D6A7>
|
||||
//ied_usr_t* ied_usr = ied->usr_ext;//CZY 2023-08-17 WW 2022年12月6日14:09:08 增加多个ICD支持
|
||||
//int devkind = ied_usr->dev_flag;
|
||||
json_block_create_end(LD_info->v_wiring_type, LD_info->mp_id, rptinfo->flickerflag);//lnk<EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>
|
||||
json_block_create_end(LD_info->v_wiring_type, LD_info->mp_id, rptinfo->flickerflag);//lnk角形处理
|
||||
LD_info->rptRecvCheckFlag = 0;
|
||||
}
|
||||
}
|
||||
else if (rptinfo->flickerflag == 2) {//CZY 2023-08-17 WW 2022-11-14 <EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
else if (rptinfo->flickerflag == 2) {//CZY 2023-08-17 WW 2022-11-14 增加多个报告判断
|
||||
if (LD_info->rptPstRecvFlag == LD_info->rptPstRecvCheckFlag) {
|
||||
//ied_usr_t* ied_usr = ied->usr_ext;//CZY 2023-08-17 WW 2022<EFBFBD><EFBFBD>12<EFBFBD><EFBFBD>6<EFBFBD><EFBFBD>14:09:08 <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>ICD֧<44><D6A7>
|
||||
//ied_usr_t* ied_usr = ied->usr_ext;//CZY 2023-08-17 WW 2022年12月6日14:09:08 增加多个ICD支持
|
||||
//int devkind = ied_usr->dev_flag;
|
||||
json_block_create_end(LD_info->v_wiring_type, LD_info->mp_id, rptinfo->flickerflag);//lnk<EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>
|
||||
json_block_create_end(LD_info->v_wiring_type, LD_info->mp_id, rptinfo->flickerflag);//lnk角形处理
|
||||
LD_info->rptPstRecvCheckFlag = 0;
|
||||
}
|
||||
}
|
||||
@@ -1545,7 +1545,7 @@ ST_VOID u_iec_rpt_ind_data(MVL_VAR_ASSOC** info_va,
|
||||
echo_err3("Ignore this report due to line_id invalid , Report From %s %s %s !!!",
|
||||
APR_EGENERAL, chnl_usr->ip_str, LD_info->LD_name, rcb_info->RptID);
|
||||
}
|
||||
printf("[END Process] Report From %s:%d %s %s ,va_total = %i ,<EFBFBD><EFBFBD>count = %i<EFBFBD><EFBFBD> \n",
|
||||
printf("[END Process] Report From %s:%d %s %s ,va_total = %i ,【count = %i】 \n",
|
||||
chnl_usr->ip_str, chnl_usr->chnl->port, LD_info->LD_name, rcb_info->RptID, va_total, rptinfo->count);
|
||||
|
||||
//apr_time_t previousTimeend = apr_time_now();//
|
||||
@@ -1565,7 +1565,7 @@ ST_VOID u_iec_rpt_ind_data(MVL_VAR_ASSOC** info_va,
|
||||
}
|
||||
}
|
||||
}
|
||||
//<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> add on Aug 3 for testing of guangdong CRITICAL
|
||||
//设置响应时间,避免频繁召唤装置名称,导致丢包 add on Aug 3 for testing of guangdong CRITICAL
|
||||
chnl_usr->m_LastPosRespTime = sGetMsTime();
|
||||
//assert (va_num==va_total); /* Did we count right? */
|
||||
if (va_num != va_total)
|
||||
@@ -1670,58 +1670,58 @@ ST_RET u_iec_rpt_ind_by_devtype(MVL_COMM_EVENT* event)
|
||||
return (SD_FAILURE);
|
||||
}
|
||||
//////////////////
|
||||
//WW 2023-08-29 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱨<EFBFBD><EFBFBD>rcb_info<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int port; //<EFBFBD>˿<EFBFBD>
|
||||
//WW 2023-08-29 增加终端类型与报告rcb_info绑定代码
|
||||
int port; //端口
|
||||
|
||||
RCB_INFO *rcb_info1;
|
||||
ST_CHAR rptID[MVL61850_MAX_RPTID_LEN + 1] = { 0 }; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID 66
|
||||
ST_ULONG a_ip = get_rem_ip_addr_inline(event->net_info->acse_conn_id, &port); //WW 2023-08-29 <EFBFBD><EFBFBD>ȡװ<EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD><EFBFBD>˿ں<EFBFBD>
|
||||
ST_CHAR *p_ip = _convert_ip_2_char(htonl(a_ip)); //WW 2023-08-29 <EFBFBD><EFBFBD>IPתΪ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>192.168.1.238
|
||||
if (gDev_rcb_list.dev_rcb_info_Head == NULL) //ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD>ָ<EFBFBD><EFBFBD> || gDev_rcb_list->rcb_info_list == NULL
|
||||
ST_CHAR rptID[MVL61850_MAX_RPTID_LEN + 1] = { 0 }; //报告ID 66
|
||||
ST_ULONG a_ip = get_rem_ip_addr_inline(event->net_info->acse_conn_id, &port); //WW 2023-08-29 获取装置IP、端口号
|
||||
ST_CHAR *p_ip = _convert_ip_2_char(htonl(a_ip)); //WW 2023-08-29 将IP转为字符串指针 例:192.168.1.238
|
||||
if (gDev_rcb_list.dev_rcb_info_Head == NULL) //全局报告控制块指针 || gDev_rcb_list->rcb_info_list == NULL
|
||||
{
|
||||
//SLOGALWAYS0 ("Received InformationReport. No IEC-61850 or UCA RCB enabled. Ignored.");
|
||||
//LOG_INFO("<EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>棬δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>IEC-61850<EFBFBD><EFBFBD>UCA RCBʹ<EFBFBD>ܡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD> zl 2019-1-23 09:10:39
|
||||
//LOG_INFO("收到报告,未启用IEC-61850或UCA RCB使能。忽略!"); //仅调试使用! zl 2019-1-23 09:10:39
|
||||
return (SD_FAILURE);
|
||||
}
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>IP<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>棡2019-12-24 17:27:29
|
||||
//װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>------------------------------------------------------------------------------------------------------------------------------
|
||||
Dev_RCB_INFO *dev_rcb = NULL;//װ<EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹָ<EFBFBD><EFBFBD>
|
||||
Dev_IP_Port_INFO *dev_info = NULL; //װ<EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD><EFBFBD>˿ںŽṹָ<EFBFBD><EFBFBD>
|
||||
ST_BOOLEAN bFindIpPort = 0; //<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD>䵽װ<EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD><EFBFBD>˿ں<EFBFBD>
|
||||
for (dev_rcb = gDev_rcb_list.dev_rcb_info_Head; dev_rcb != NULL; dev_rcb = (Dev_RCB_INFO *)list_get_next(gDev_rcb_list.dev_rcb_info_Head, dev_rcb)) //<EFBFBD>ٱ<EFBFBD><EFBFBD><EFBFBD> ȫ<><C8AB>װ<EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>
|
||||
//逻辑:根据装置IP、端口号,先找到装置类型,再匹配报告信息,再解析报告!2019-12-24 17:27:29
|
||||
//装置类型查找判断------------------------------------------------------------------------------------------------------------------------------
|
||||
Dev_RCB_INFO *dev_rcb = NULL;//装置报告结构指针
|
||||
Dev_IP_Port_INFO *dev_info = NULL; //装置IP、端口号结构指针
|
||||
ST_BOOLEAN bFindIpPort = 0; //是否在链表中匹配到装置IP、端口号
|
||||
for (dev_rcb = gDev_rcb_list.dev_rcb_info_Head; dev_rcb != NULL; dev_rcb = (Dev_RCB_INFO *)list_get_next(gDev_rcb_list.dev_rcb_info_Head, dev_rcb)) //①遍历 全局装置报告控制块链表
|
||||
{
|
||||
//LOG_INFO("(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD>gDev_rcb_list<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, dev_type_name= %s", dev_rcb->dev_type_name); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD> zl 2019-12-24 00:16:31
|
||||
//װ<EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD><EFBFBD>˿ںŲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>-------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
for (dev_info = dev_rcb->dev_ip_port_list; dev_info != NULL; dev_info = (Dev_IP_Port_INFO *)list_get_next(dev_rcb->dev_ip_port_list, dev_info)) //<EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD> ȫ<><C8AB>װ<EFBFBD><D7B0>IP<49><50><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
|
||||
//LOG_INFO("(报告解析)遍历gDev_rcb_list链表, dev_type_name= %s", dev_rcb->dev_type_name); //仅调试使用! zl 2019-12-24 00:16:31
|
||||
//装置IP、端口号查找判断-------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
for (dev_info = dev_rcb->dev_ip_port_list; dev_info != NULL; dev_info = (Dev_IP_Port_INFO *)list_get_next(dev_rcb->dev_ip_port_list, dev_info)) //②遍历 全局装置IP、端口链表
|
||||
{
|
||||
//LOG_INFO("(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD>dev_ip_port_list<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, dev_type_name= %s, ip= %s, port= %d", dev_rcb->dev_type_name, dev_info->IP, dev_info->Port); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD> zl 2019-12-24 00:16:31
|
||||
if ((strcmp(dev_info->IP, p_ip) == 0) && (dev_info->Port == port)) //ƥ<EFBFBD><EFBFBD> װ<><D7B0>IP && <EFBFBD>˿ں<EFBFBD>
|
||||
//LOG_INFO("(报告解析)遍历dev_ip_port_list链表, dev_type_name= %s, ip= %s, port= %d", dev_rcb->dev_type_name, dev_info->IP, dev_info->Port); //仅调试使用! zl 2019-12-24 00:16:31
|
||||
if ((strcmp(dev_info->IP, p_ip) == 0) && (dev_info->Port == port)) //匹配 装置IP && 端口号
|
||||
{
|
||||
bFindIpPort = 1; //<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>װ<EFBFBD><EFBFBD>IP && <EFBFBD>˿ں<EFBFBD>
|
||||
//LOG_INFO("(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)ƥ<>䵽װ<E4B5BD><D7B0>dev_type_name= %s, IP= %s<EFBFBD><EFBFBD>Port= %d", dev_rcb->dev_type_name, dev_info->IP, dev_info->Port); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD> zl 2019-12-24 00:23:55
|
||||
//strcpy(dev_rcb->dev_type_name, dev_rcb->dev_type_name); //ƥ<EFBFBD><EFBFBD> װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bFindIpPort = 1; //查找到装置IP && 端口号
|
||||
//LOG_INFO("(报告解析)匹配到装置dev_type_name= %s, IP= %s,Port= %d", dev_rcb->dev_type_name, dev_info->IP, dev_info->Port); //仅调试使用! zl 2019-12-24 00:23:55
|
||||
//strcpy(dev_rcb->dev_type_name, dev_rcb->dev_type_name); //匹配 装置类型
|
||||
break;
|
||||
}
|
||||
} //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> װ<><D7B0>IP<49><50><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if (bFindIpPort) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD>䵽װ<EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD><EFBFBD>˿ں<EFBFBD>
|
||||
} //遍历 装置IP、端口链表 结束
|
||||
if (bFindIpPort) //在链表中匹配到装置IP、端口号
|
||||
break;
|
||||
} //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȫ<><C8AB>װ<EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
} //遍历 全局装置报告控制块链表 结束
|
||||
|
||||
if (!bFindIpPort) //δ<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>װ<EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
||||
if (!bFindIpPort) //未查找到装置IP、端口
|
||||
{
|
||||
//LOG_INFO("(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)dev_type_name= %sδƥ<EFBFBD>䵽IP= %s<EFBFBD><EFBFBD>Port= %d<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>goto CLEANUP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", dev_rcb->dev_type_name, p_ip, port); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD> zl 2019-12-24 00:23:55
|
||||
//LOG_INFO("(报告解析)dev_type_name= %s未匹配到IP= %s,Port= %d的装置类型,goto CLEANUP跳出!", dev_rcb->dev_type_name, p_ip, port); //仅调试使用! zl 2019-12-24 00:23:55
|
||||
retcode = SD_FAILURE;
|
||||
goto END; //<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD> CLEANUP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>retcode<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
goto END; //跳转至 CLEANUP,即:返回retcode结束
|
||||
}
|
||||
|
||||
rcb_info = dev_rcb->rcb_info_list; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>ƥ<EFBFBD>䱨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
rcb_info = dev_rcb->rcb_info_list; //根据装置类型,匹配报告控制块信息
|
||||
//WW 2023-08-29 end
|
||||
//////////////////////////////
|
||||
|
||||
|
||||
/* Get "all_rcb_info" from "user_info". User must set "user_info" when conn established.*/
|
||||
//////////////////////
|
||||
//WW 2023-08-29ע<EFBFBD><EFBFBD>
|
||||
//WW 2023-08-29注释
|
||||
//all_rcb_info = (ALL_RCB_INFO*)event->net_info->user_info;
|
||||
|
||||
///* Check "all_rcb_info" to see if any RCB has been enabled. */
|
||||
@@ -1742,11 +1742,11 @@ ST_RET u_iec_rpt_ind_by_devtype(MVL_COMM_EVENT* event)
|
||||
sizeof(MVL_VAR_ASSOC*));
|
||||
|
||||
//////////////////
|
||||
//WW 2023-08-29 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱨<EFBFBD><EFBFBD>rcb_info<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
rcb_info = dev_rcb->rcb_info_list; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>ƥ<EFBFBD>䱨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
//WW 2023-08-29 增加终端类型与报告rcb_info绑定代码
|
||||
rcb_info = dev_rcb->rcb_info_list; //根据装置类型,匹配报告控制块信息
|
||||
va_num = 0;
|
||||
info_va[va_num++] = rcb_info->rcb_var.RptID;
|
||||
//LOG_INFO("va_num = %d", va_num); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD> zl 2019-1-23 09:10:39
|
||||
//LOG_INFO("va_num = %d", va_num); //仅调试使用! zl 2019-1-23 09:10:39
|
||||
|
||||
all_rcb_info = (ALL_RCB_INFO*)chk_calloc(1, sizeof(ALL_RCB_INFO));
|
||||
all_rcb_info->rpt_typeids = &g_rpt_typeids;
|
||||
@@ -1754,32 +1754,32 @@ ST_RET u_iec_rpt_ind_by_devtype(MVL_COMM_EVENT* event)
|
||||
event->net_info->user_info = all_rcb_info;
|
||||
rcb_info = all_rcb_info->rcb_info_list;
|
||||
rcb_info->rcb_data.RptID[0] = '\0'; /* start with empty string */
|
||||
mvl_info_data_to_local(event, va_num, info_va); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>ʽ
|
||||
mvl_info_data_to_local(event, va_num, info_va); //将报告数据转换为本地格式
|
||||
/* NOTE: decoded RptID is now in "rcb_info->rcb_data.RptID". Save it.*/
|
||||
strcpy(saveRptID, rcb_info->rcb_data.RptID); //װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><EFBFBD><EFBFBD>ID <20><><EFBFBD><EFBFBD>PQM2/LLN0$BR$brcbStatisticData01
|
||||
//LOG_INFO("װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><EFBFBD><EFBFBD>saveRptID<EFBFBD><EFBFBD>%s", saveRptID); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD> zl 2019-1-23 09:10:39
|
||||
strcpy(saveRptID, rcb_info->rcb_data.RptID); //装置上送报告ID 例:PQM2/LLN0$BR$brcbStatisticData01
|
||||
//LOG_INFO("装置上送报告saveRptID:%s", saveRptID); //仅调试使用! zl 2019-1-23 09:10:39
|
||||
chk_free(all_rcb_info);
|
||||
event->net_info->user_info = NULL;
|
||||
/* Search list of "rcb_info" to find one with matching RptID. If not found, rcb_info will be == NULL. */
|
||||
//װ<EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>-----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
for (rcb_info = dev_rcb->rcb_info_list; rcb_info != NULL; rcb_info = (RCB_INFO *)list_get_next(dev_rcb->rcb_info_list, rcb_info)) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȫ<>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>
|
||||
//装置报告控制块查找判断-----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
for (rcb_info = dev_rcb->rcb_info_list; rcb_info != NULL; rcb_info = (RCB_INFO *)list_get_next(dev_rcb->rcb_info_list, rcb_info)) //遍历 全局报告控制块链表
|
||||
{
|
||||
//LOG_INFO("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RptID<EFBFBD><EFBFBD>%s<><73>saveRptID<EFBFBD><EFBFBD>%s", rcb_info->RptID, saveRptID); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD> zl 2019-1-23 09:10:39
|
||||
//LOG_INFO("遍历报告控制块链表RptID:%s,saveRptID:%s", rcb_info->RptID, saveRptID); //仅调试使用! zl 2019-1-23 09:10:39
|
||||
if (strcmp(rcb_info->RptID, saveRptID) == 0)
|
||||
break; /* rcb_info now points to right structure */
|
||||
}
|
||||
|
||||
if (!rcb_info) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD>ָ<EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD>
|
||||
if (!rcb_info) //报告控制块指针为空!
|
||||
{
|
||||
//SLOGALWAYS1 ("RptID '%s' not recognized on this connection. Received report ignored.", saveRptID);
|
||||
//LOG_INFO("(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>RptID= '%s'<EFBFBD><EFBFBD>goto CLEANUP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", saveRptID); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD> zl 2019-12-23 15:09:36
|
||||
//LOG_INFO("(报告解析)报告控制块链表查找不到RptID= '%s',goto CLEANUP跳出!", saveRptID); //仅调试使用! zl 2019-12-23 15:09:36
|
||||
retcode = SD_FAILURE;
|
||||
goto CLEANUP; //<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD> CLEANUP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>retcode<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
goto CLEANUP; //跳转至 CLEANUP,即:返回retcode结束
|
||||
}
|
||||
//WW 2023-08-29 end
|
||||
//////////////////////////////
|
||||
//////////////////////
|
||||
//WW 2023-08-29ע<EFBFBD><EFBFBD>
|
||||
//WW 2023-08-29注释
|
||||
///* Must decode the RptID first to find the correct RCB_INFO. Could decode into
|
||||
//* any "vstring65" variable. We just use the RptID variable from the first
|
||||
//* rcb_info on the list.
|
||||
@@ -1842,15 +1842,15 @@ ST_RET u_iec_rpt_ind_by_devtype(MVL_COMM_EVENT* event)
|
||||
log_var_to_data(rcb_info->rcb_var.DatSetNa, rptID);
|
||||
//for (rcb_info1 = all_rcb_info->rcb_info_list;
|
||||
// rcb_info1 != NULL;
|
||||
// rcb_info1 = (RCB_INFO *) list_get_next (all_rcb_info->rcb_info_list, rcb_info1)) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> װ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>
|
||||
// rcb_info1 = (RCB_INFO *) list_get_next (all_rcb_info->rcb_info_list, rcb_info1)) //遍历 装置报告控制块链表
|
||||
for (rcb_info1 = dev_rcb->rcb_info_list;
|
||||
rcb_info1 != NULL;
|
||||
rcb_info1 = (RCB_INFO *)list_get_next(dev_rcb->rcb_info_list, rcb_info1)) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>
|
||||
rcb_info1 = (RCB_INFO *)list_get_next(dev_rcb->rcb_info_list, rcb_info1)) //遍历 报告控制块链表
|
||||
{
|
||||
if (strcmp(rcb_info1->ds_Nam, rptID) == 0) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ψһ<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>
|
||||
if (strcmp(rcb_info1->ds_Nam, rptID) == 0) //报告ID,作为不同报告间的唯一标识符
|
||||
{
|
||||
//SLOGALWAYS3 ("Num of var received in RPT (%d) does not match expected (%d)dateSet=%s ", va_total, va_num,rptID);
|
||||
//LOG_INFO("(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>RptID= '%s'<EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>rptID= %s<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С(%d)<29><>Ԥ<EFBFBD>ڴ<EFBFBD>С(%d)<29><>ƥ<EFBFBD>䣬brak<61><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", saveRptID, rptID, va_total, va_num); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD> zl 2019-12-23 15:09:30
|
||||
//LOG_INFO("(报告解析)接收报告RptID= '%s'数据集rptID= %s,大小(%d)与预期大小(%d)不匹配,brak跳出!", saveRptID, rptID, va_total, va_num); //仅调试使用! zl 2019-12-23 15:09:30
|
||||
rcb_info = rcb_info1;
|
||||
break;
|
||||
}
|
||||
@@ -2044,7 +2044,7 @@ ST_RET u_iec_rpt_ind(MVL_COMM_EVENT* event)
|
||||
info_va[va_num++] = rcb_info->rcb_var.TimeOfEntry;
|
||||
if ((retcode = check_va_count_too_big(va_num, va_total)) == SD_FAILURE) goto CLEANUP;
|
||||
|
||||
//WW 2024-09-02 <EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>
|
||||
//WW 2024-09-02 数据集名称确认
|
||||
if (BSTR_BIT_GET(OptFldsData, OPTFLD_BITNUM_DATSETNAME))
|
||||
info_va[va_num++] = rcb_info->rcb_var.DatSetNa;
|
||||
|
||||
@@ -2053,19 +2053,19 @@ ST_RET u_iec_rpt_ind(MVL_COMM_EVENT* event)
|
||||
|
||||
if (BSTR_BIT_GET(OptFldsData, OPTFLD_BITNUM_DATSETNAME))
|
||||
{
|
||||
//info_va[va_num++] = rcb_info->rcb_var.DatSetNa; //WW 2024-09-02 ע<EFBFBD><EFBFBD>
|
||||
//info_va[va_num++] = rcb_info->rcb_var.DatSetNa; //WW 2024-09-02 注释
|
||||
///////////////////
|
||||
//WW 2023-08-29
|
||||
log_var_to_data(rcb_info->rcb_var.DatSetNa, saveRptID);
|
||||
for (rcb_info1 = all_rcb_info->rcb_info_list;
|
||||
rcb_info1 != NULL;
|
||||
rcb_info1 = (RCB_INFO*)list_get_next(all_rcb_info->rcb_info_list, rcb_info1)) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>
|
||||
rcb_info1 = (RCB_INFO*)list_get_next(all_rcb_info->rcb_info_list, rcb_info1)) //遍历 报告控制块链表
|
||||
{
|
||||
if (strcmp(rcb_info1->ds_Nam, saveRptID) == 0) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ψһ<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>
|
||||
if (strcmp(rcb_info1->ds_Nam, saveRptID) == 0) //报告ID,作为不同报告间的唯一标识符
|
||||
{
|
||||
printf("ds_name '%s' ! Recive name %s WWTest \n", rcb_info1->ds_Nam, saveRptID);
|
||||
//SLOGALWAYS3 ("Num of var received in RPT (%d) does not match expected (%d)dateSet=%s ", va_total, va_num,rptID);
|
||||
//LOG_INFO("(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>RptID= '%s'<EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>rptID= %s<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С(%d)<29><>Ԥ<EFBFBD>ڴ<EFBFBD>С(%d)<29><>ƥ<EFBFBD>䣬brak<61><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", saveRptID, rptID, va_total, va_num); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD> zl 2019-12-23 15:09:30
|
||||
//LOG_INFO("(报告解析)接收报告RptID= '%s'数据集rptID= %s,大小(%d)与预期大小(%d)不匹配,brak跳出!", saveRptID, rptID, va_total, va_num); //仅调试使用! zl 2019-12-23 15:09:30
|
||||
rcb_info = rcb_info1;
|
||||
break;
|
||||
}
|
||||
@@ -2152,7 +2152,7 @@ ST_RET u_iec_rpt_ind(MVL_COMM_EVENT* event)
|
||||
/* Perform 3rd decode (everything). */
|
||||
mvl_info_data_to_local(event, va_num, info_va);
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD>洦<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20250114
|
||||
//报告处理加锁lnk20250114
|
||||
//pthread_mutex_lock(&mtx); printf("rpt hold lock !!!!!!!!!!!");
|
||||
u_iec_rpt_ind_data(info_va, OptFldsData, InclusionData, rcb_info, va_total, event->net_info);
|
||||
//pthread_mutex_unlock(&mtx); printf("rpt free lock !!!!!!!!!!!");
|
||||
@@ -2164,7 +2164,7 @@ CLEANUP:
|
||||
return (retcode);
|
||||
}
|
||||
/************************************************************************/
|
||||
//61850<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//61850报告解析为本地数据
|
||||
/************************************************************************/
|
||||
void log_var_to_data(MVL_VAR_ASSOC *var, char *pdata)
|
||||
{
|
||||
@@ -2200,7 +2200,7 @@ static ST_RET myLocToTextBs(ST_UCHAR* pSrc, RUNTIME_TYPE* rt, ST_CHAR* text)
|
||||
ST_CHAR* destBuf;
|
||||
ST_UCHAR mask;
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//调试用
|
||||
//printf("pSrc[0]: 0x%X, pSrc[1]: 0x%X, text: %s\n", pSrc[0], pSrc[1], text);
|
||||
|
||||
//printf("%s text_len %d %d pSrc %d %d \n", text, strlen(text), rt->u.p.el_len, pSrc[0], pSrc[1]);
|
||||
@@ -2245,7 +2245,7 @@ static ST_RET myLocToTextBs(ST_UCHAR* pSrc, RUNTIME_TYPE* rt, ST_CHAR* text)
|
||||
}
|
||||
destBuf[i] = 0;
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//调试用
|
||||
//printf("pSrc[0]: 0x%X, pSrc[1]: 0x%X, text: %s\n", pSrc[0], pSrc[1], text);
|
||||
|
||||
return (SD_SUCCESS);
|
||||
@@ -2313,7 +2313,7 @@ ST_RET my_asn1_convert_utc_to_btod(MMS_UTC_TIME* utc, MMS_BTOD* btod)
|
||||
btod->day = (long)(utc->secs - tJan84) / SECONDS_PER_DAY; /* num of days since 1/1/1984 */
|
||||
btod->ms = (long)((utc->secs - tJan84) % SECONDS_PER_DAY) * 1000; /* num milliseconds since midnight */
|
||||
/* NOTE: use 0x01000000 (2**24) in fraction computations. */
|
||||
// Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 28.9999Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>29ms
|
||||
// 要四舍五入到毫秒数,比如 28.9999应该是29ms
|
||||
btod->ms += (ST_INT32)(0.5 + (ST_DOUBLE)utc->fraction * 1000.0 / (ST_DOUBLE)0x01000000);
|
||||
/* add the milliseconds left in a sec */
|
||||
btod->form = MMS_BTOD6;
|
||||
@@ -2458,7 +2458,7 @@ void my_local_to_data(ST_CHAR* datptr, SD_CONST RUNTIME_TYPE* rt_head,
|
||||
break;
|
||||
|
||||
case RT_BIT_STRING:
|
||||
myLocToTextBs((ST_UCHAR*)datptr, rt_ptr, tmpBuf);//<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> '1' <EFBFBD><EFBFBD> '0' <EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>
|
||||
myLocToTextBs((ST_UCHAR*)datptr, rt_ptr, tmpBuf);//将存储在内存中的比特串转换为对应的文本字符串(由字符 '1' 和 '0' 组成)
|
||||
strcpy(data->data_item[valid_item_num].comp_name, (const char*)attr_str);
|
||||
data->data_item[valid_item_num].size = abs(rt_ptr->u.p.el_len);
|
||||
data->data_item[valid_item_num].type = DATA_STR_TYPE;
|
||||
@@ -2503,7 +2503,7 @@ void my_local_to_data(ST_CHAR* datptr, SD_CONST RUNTIME_TYPE* rt_head,
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
echo_warn1("δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RT_INTEGER<EFBFBD><EFBFBD>RT_BCD <EFBFBD><EFBFBD><EFBFBD><EFBFBD> size = %i \n", rt_ptr->u.p.el_len);
|
||||
echo_warn1("未处理的RT_INTEGER或RT_BCD 整数 size = %i \n", rt_ptr->u.p.el_len);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -2542,7 +2542,7 @@ void my_local_to_data(ST_CHAR* datptr, SD_CONST RUNTIME_TYPE* rt_head,
|
||||
break;
|
||||
#endif /* INT64_SUPPORT */
|
||||
default:
|
||||
echo_warn1("δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> size = %i \n", rt_ptr->u.p.el_len);
|
||||
echo_warn1("未处理的 无符号整数 size = %i \n", rt_ptr->u.p.el_len);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user