亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sclproc.c

?? scl解析文件,歡迎大家學(xué)習(xí)共享,解析算法值得學(xué)習(xí)
?? C
?? 第 1 頁 / 共 5 頁
字號:
/************************************************************************/
/* SISCO SOFTWARE MODULE HEADER *****************************************/
/************************************************************************/
/*	(c) Copyright Systems Integration Specialists Company, Inc.,	*/
/*	2004-2005 All Rights Reserved					*/
/*									*/
/* MODULE NAME : sclproc.c						*/
/* PRODUCT(S)  : MMS-EASE-LITE						*/
/*									*/
/* MODULE DESCRIPTION :							*/
/*	Functions to "post-proccess" information parsed from SCL file.	*/
/*									*/
/* GLOBAL FUNCTIONS DEFINED IN THIS MODULE :				*/
/*			scl2_datatype_create_all			*/
/*			scl2_ld_create_all				*/
/*									*/
/* NOTE: FC must be "ST" "MX" "CO" "SP" "SG" "SE" "SV" "CF" "DC" or "EX"*/
/*									*/
/* MODIFICATION LOG :							*/
/*  Date     Who   Rev     Comments					*/
/* --------  ---  ------   -------------------------------------------  */
/* 03/28/07  韓明峰 26     BRCB創(chuàng)建時開始記錄報告       */
/* 01/17/07  韓明峰 25     修改scl2_lcb_create()中日志和掃描控制塊的創(chuàng)建       */
/* 02/27/06  WLH    24     add scl2_svcb_create_all and scl2_svcb_create 
						   tdladd_ms_or_us	*/
/* 02/23/06  WLH    23     delete initial vals for LCB, GCB, SCB		*/
/* 02/23/06  WLH    22     add scl2_gcb_create_all and scl2_gcb_create 
						   tdladd_gcb	*/
/* 02/21/06  WLH    21     add scl2_sgcb_create_all and scl2_sgcb_create 
						   tdladd_sp	*/
/* 02/21/06  WLH    20     scl2_ld_create_all: change report_scanrate arg to startup_cfg 
							in order to contain more infomation*/
/* 07/27/05  JRB    19     Don't set OptFlds len=9 (default=10 is good).*/
/*			   Don't set OptFlds bits bufovfl, entryID for URCB.*/
/* 07/25/05  JRB    18     scl2_ld_create_all: Add brcb_bufsize arg.	*/
/* 07/21/05  JRB    17     Set initial vals for LCB, GCB, SCB.		*/
/* 07/11/05  JRB    16     scl2_ld_create_all: Call			*/
/*			   mvl61850_ctl_lastapplerror_create.		*/
/* 06/27/05  JRB    15     Use mvl_nvl_add (mvlu_rpt_nvl_add is obsolete).*/
/* 05/27/05  JRB    14     Construct NVL name from LN & DataSet name	*/
/*			   as 61850-8-1 requires.			*/
/* 05/25/05  JRB    13     Del all code to generate RCB name & just use	*/
/*			   name configured in SCL file (scl_rcb->name).	*/
/*			   Add errflag so if one call to tdladd_string	*/
/*			   fails, subsequent calls fail too.		*/
/* 05/09/05  JRB    12     Chg leaf write functions for SqNum (in BRCB	*/
/*			   & URCB) to u_no_write_allowed.		*/
/* 04/05/05  MDE    11     Supress invalid log messages			*/
/* 03/18/05  JRB    10     Use mvl_max_dyn when creating domains.	*/
/* 02/15/05  JRB    09     Use new generated scl_ld->domName, not	*/
/*			   scl_ld->inst as domain name.			*/
/*			   Use new generated scl_fcda->domName, not	*/
/*			   scl_fcda->ldInst as domain name.		*/
/*			   Use new scl_ln->varName, generated once,	*/
/*			   instead of generating ln_name repeatedly.	*/
/*			   Compute max_num_var for mvl_dom_add call.	*/
/* 01/19/05  JRB    08     Add scl2_dai_set_value_all & use it to init	*/
/*			    data from DOI/SDI/DAI entries in SCL file.	*/
/*			   Fix len on all strncat calls.		*/
/*			   scl2_rcb_create_all: init ln_name just once.	*/
/*			   Improve some logging.			*/
/* 09/01/04  JRB    07     Map Octet64 to OVstring64 (to match 61850-8-1)*/
/* 08/29/04  JRB    06     Chg Quality type back to BVstring13 because	*/
/*			   final IEC-61850-8-1 changed back.		*/
/* 08/19/04  JRB    05     Init return value in scl2_ld_create_all.	*/
/* 07/19/04  JRB    04     Add tdladd_lg, tdladd_go_or_gs.		*/
/* 07/14/04  JRB    03     Chg Quality type to BVstring14.		*/
/* 07/09/04  JRB    02     scl2_ld_create_all: add reportScanRate arg	*/
/*			   to this and lower level functions.		*/
/* 07/02/04  JRB    01     Initial Revision.				*/
/************************************************************************/
#include "glbtypes.h"
#include "sysincs.h"
#include "scl.h"
#include "sx_log.h"
#include "mvl_defs.h"
#include "mvl_uca.h"
#include "mvl_log.h"
#include "str_util.h"	/* for strn..._safe	protos	*/
#include "sx_arb.h"	/* for sxaText.... proto	*/
#include "sx_arb.h"	/* for sxaText.... proto	*/
#include "logcon.h"
#include "msvcb.h"

#ifdef DEBUG_SISCO
SD_CONST static ST_CHAR *SD_CONST thisFileName = __FILE__;
#endif

typedef struct
  {
  ST_CHAR *tdlptr;	/* ptr to current pos in TDL buffer	*/
  ST_INT len_avail;	/* num bytes left in TDL buffer		*/
  ST_BOOLEAN errflag;	/* Set when first error detected	*/
			/* CALLER MUST init "errflag=SD_FALSE"	*/
  } TDLADD_CTXT;

/* CRITICAL: this struct must be compatible with TDL "lcb_tdl".	*/
/* If either one changes, the other must change to match.	*/
typedef struct
  {
  ST_UINT8 LogEna;		/* Bool	*/
  ST_CHAR LogRef[66];		/* Vstring65	*/
  ST_CHAR DatSet[66];		/* Vstring65	*/
  MMS_BTIME6 OldEntrTim;	/* Btime6	*/
  MMS_BTIME6 NewEntrTim;	/* Btime6	*/
  ST_UINT8 OldEntr[8];		/* Ostring8	*/
  ST_UINT8 NewEntr[8];		/* Ostring8	*/
  MMS_BSTRING TrgOps;	/* BVstring6 - struct includes 1 byte data. Enough.*/
  ST_UINT32 IntgPd;		/* Ulong	*/
  } MVL61860_LCB_DATA;	/* struct to store data for LCB (IEC Log Control Block)	*/

/* CRITICAL: this struct must be compatible with TDL "gcb_tdl".	*/
/* If either one changes, the other must change to match.	*/
typedef struct
  {
  ST_BOOLEAN GoEna;
  ST_CHAR GoID[66];
  ST_CHAR DatSet[66];
  ST_UINT32 ConfRev;
  ST_BOOLEAN NdsCom;
  struct
    {
    ST_UCHAR Addr[6];
    ST_UINT8 PRIORITY;
    ST_UINT16 VID;
    ST_UINT16 APPID;
    } DstAddress;
  } MVL61850_GCB_DATA;	/* struct to store data for GCB (GOOSE Control Block)	*/

/* CRITICAL: this struct must be compatible with TDL "scb_tdl".	*/
/* If either one changes, the other must change to match.	*/
typedef struct
  {
  ST_BOOLEAN GsEna;
  ST_CHAR GsID[66];
  ST_CHAR DNALabels[32][66];
  ST_CHAR UserSTLabels[128][66];
  struct
    {
    ST_CHAR GsID[66];
    MMS_BTIME6 t;
    ST_UINT32 SqNum;
    ST_UINT32 StNum;
    ST_UINT32 TAL;
    ST_UINT32 usec;
    ST_UINT16 PhsID;
    ST_UCHAR DNA[8];
    ST_UCHAR UserST[32];
    } LSentData;
  } MVL61850_SCB_DATA;	/* struct to store data for SCB (GSSE Control Block)	*/

/************************************************************************/
/* Fixed TDL for defining IEC Unbuffered Report Control Block (urcb)	*/
/************************************************************************/
ST_CHAR *urcb_tdl = "{\
(RptID)Vstring65,\
(RptEna)Bool,\
(Resv)Bool,\
(DatSet)Vstring65,\
(ConfRev)Ulong,\
(OptFlds)BVstring10,\
(BufTim)Ulong,\
(SqNum)Ubyte,\
(TrgOps)BString6,\
(IntgPd)Ulong,\
(GI)Bool\
},\n";	/* TDL for IEC Unbuffered Report Control Block	*/

/************************************************************************/
/* Fixed TDL for defining IEC Unbuffered Report Control Block (urcb)	*/
/************************************************************************/
ST_CHAR *brcb_tdl = "{\
(RptID)Vstring65,\
(RptEna)Bool,\
(DatSet)Vstring65,\
(ConfRev)Ulong,\
(OptFlds)BVstring10,\
(BufTim)Ulong,\
(SqNum)Ushort,\
(TrgOps)BString6,\
(IntgPd)Ulong,\
(GI)Bool,\
(PurgeBuf)Bool,\
(EntryID)Ostring8,\
(TimeofEntry)Btime6\
},\n";	/* TDL for IEC Buffered Report Control Block	*/

/************************************************************************/
/* STATIC FUNCTION PROTOTYPES						*/
/* Need prototypes for these static functions because tdladd_da_struct	*/
/* calls tdladd_da_or_bda and vice versa.				*/
/* Other static functions are just defined in the order they are needed	*/
/* so prototypes are not needed.					*/
/************************************************************************/
static ST_RET tdladd_da_struct (
	TDLADD_CTXT *tdl_ctxt,
	SCL_INFO *scl_info,
	ST_CHAR *type_id);
static ST_RET tdladd_da_or_bda (
	TDLADD_CTXT *tdl_ctxt,
	SCL_INFO *scl_info,
	ST_CHAR *name,		/* DA or BDA name	*/
	ST_CHAR *bType,		/* DA or BDA bType	*/
	ST_CHAR *type,		/* DA or BDA type	*/
	ST_UINT count);		/* DA or BDA count	*/

/************************************************************************/
/*			unique_type_name				*/
/* Create unique type name for a LN.					*/
/* NOTE: do not use '$'. This will confuse "mvlu_set_leaf_param".	*/ 
/************************************************************************/
ST_VOID unique_type_name (SCL_LD *scl_ld, SCL_LN *scl_ln,
                          ST_CHAR *type_name, ST_INT type_name_size)
  {	/* Create unique type name for this LN.	*/
  strncpy_safe (type_name, scl_ld->inst, type_name_size-1);	/* domain name	*/
  strncat_safe (type_name, scl_ln->prefix,  type_name_size-1-strlen(type_name));
  strncat_safe (type_name, scl_ln->lnClass, type_name_size-1-strlen(type_name));
  strncat_safe (type_name, scl_ln->inst,    type_name_size-1-strlen(type_name));
  }
/************************************************************************/
/*			scl_find_dotype					*/
/************************************************************************/
static SCL_DOTYPE *scl_find_dotype (
	SCL_INFO *scl_info,	/* main struct where all SCL info stored*/
	ST_CHAR *type_id)
  {
SCL_DOTYPE *scl_dotype;

  for (scl_dotype = (SCL_DOTYPE *) list_find_last ((DBL_LNK *) scl_info->doTypeHead);
       scl_dotype != NULL;
       scl_dotype = (SCL_DOTYPE *) list_find_prev ((DBL_LNK *) scl_info->doTypeHead, (DBL_LNK *) scl_dotype))
    {
    if (strcmp (scl_dotype->id, type_id) ==0)
      return (scl_dotype);
    }
  return (NULL);	/* match not found	*/
  }
/************************************************************************/
/*			scl_find_datype					*/
/************************************************************************/
static SCL_DATYPE *scl_find_datype (
	SCL_INFO *scl_info,	/* main struct where all SCL info stored*/
	ST_CHAR *type_id)
  {
SCL_DATYPE *scl_datype;

  for (scl_datype = (SCL_DATYPE *) list_find_last ((DBL_LNK *) scl_info->daTypeHead);
       scl_datype != NULL;
       scl_datype = (SCL_DATYPE *) list_find_prev ((DBL_LNK *) scl_info->daTypeHead, (DBL_LNK *) scl_datype))
    {
    if (strcmp (scl_datype->id, type_id) ==0)
      return (scl_datype);
    }
  return (NULL);	/* match not found	*/
  }
/************************************************************************/
/************************************************************************/
static SCL_DATASET *scl_find_dataset (
	SCL_LN *scl_ln,
	ST_CHAR *dataset_name)
  {
SCL_DATASET *scl_dataset;

  for (scl_dataset = (SCL_DATASET *) list_find_last ((DBL_LNK *) scl_ln->datasetHead);
       scl_dataset != NULL;
       scl_dataset = (SCL_DATASET *) list_find_prev ((DBL_LNK *) scl_ln->datasetHead, (DBL_LNK *) scl_dataset))
    {
    if (strcmp (scl_dataset->name, dataset_name) ==0)
      return (scl_dataset);
    }
  return (NULL);	/* match not found	*/
  }
/************************************************************************/
/*			btype_to_raw_tdl					*/
/************************************************************************/
static ST_CHAR *btype_to_raw_tdl (ST_CHAR *btype)
  {
  if (strcmp (btype, "BOOLEAN") == 0)
    return ("Bool");
  if (strcmp (btype, "INT8") == 0)
    return ("Byte");
  if (strcmp (btype, "INT16") == 0)
    return ("Short");
  if (strcmp (btype, "INT32") == 0)
    return ("Long");
  if (strcmp (btype, "INT8U") == 0)
    return ("Ubyte");
  if (strcmp (btype, "INT16U") == 0)
    return ("Ushort");
  if (strcmp (btype, "INT32U") == 0)
    return ("Ulong");
  if (strcmp (btype, "FLOAT32") == 0)
    return ("Float");
  if (strcmp (btype, "FLOAT64") == 0)
    return ("Double");
  if (strcmp (btype, "Dbpos") == 0)
    return ("Bstring2");
  if (strcmp (btype, "Tcmd") == 0)
    return ("Bstring2");
  if (strcmp (btype, "Quality") == 0)
    return ("BVstring13");
  if (strcmp (btype, "Timestamp") == 0)
    return ("Utctime");
  if (strcmp (btype, "VisString32") == 0)    
    return ("Vstring32");
  if (strcmp (btype, "VisString64") == 0)
    return ("Vstring64");
  if (strcmp (btype, "VisString255") == 0)
    return ("Vstring255");
  if (strcmp (btype, "Octet64") == 0)
    return ("OVstring64");	/* 61850-8-1 says all octet strings are variable length*/
  if (strcmp (btype, "EntryTime") == 0)
    return ("Btime6");
  if (strcmp (btype, "Unicode255") == 0)
    return ("UTF8Vstring255");
  return (NULL);	/* ERROR: Btype not recognized	*/
  }
/************************************************************************/
/*			tdladd_string					*/
/* NOTE: When an error is detected, errflag is set in TDLADD_CTXT.	*/
/*       Then all subsequent calls will fail for this TDLADD_CTXT.	*/
/************************************************************************/
static ST_RET tdladd_string (
	TDLADD_CTXT *tdl_ctxt,
	ST_CHAR *text_to_add)
  {
ST_INT len_added;
  /* If error already detected, just return without logging.	*/
  if (tdl_ctxt->errflag)
    return (SD_FAILURE);

  /* Remove "," before end of array. Is there a better way?	*/
  if (*text_to_add == ']' && *(tdl_ctxt->tdlptr-1) == ',')
    {
    tdl_ctxt->tdlptr -= 1;
    tdl_ctxt->len_avail += 1;
    }
  len_added = strlen (text_to_add);

  if (len_added > tdl_ctxt->len_avail)
    {
    SXLOG_ERR1 ("Not enough room in TDL buffer to add string='%s'", text_to_add);
    tdl_ctxt->errflag = SD_TRUE;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
男人的j进女人的j一区| 亚洲成人自拍一区| 日本高清不卡在线观看| 久久99这里只有精品| 亚洲欧洲另类国产综合| 91精品国产91综合久久蜜臀| 成人av在线看| 九九精品视频在线看| 亚洲国产日韩综合久久精品| 日本一区二区三区四区| 69堂国产成人免费视频| 色综合视频一区二区三区高清| 欧美性大战久久久| 国产成人精品免费在线| 蜜臀a∨国产成人精品| 一区二区欧美国产| 中文久久乱码一区二区| 欧美成人一区二区三区片免费| 欧美影院午夜播放| 色婷婷av一区二区三区gif| 国产不卡在线播放| 精品无码三级在线观看视频| 香蕉av福利精品导航 | 久久午夜色播影院免费高清| 欧美婷婷六月丁香综合色| 波多野结衣在线一区| 国内成人精品2018免费看| 婷婷开心激情综合| 亚洲成人自拍网| 亚洲一区二区三区四区五区黄| 最新成人av在线| 中文字幕精品三区| 国产欧美日韩在线视频| 久久久久久久久久美女| 久久午夜老司机| 久久综合九色欧美综合狠狠| 欧美一区二区成人| 欧美一级在线免费| 欧美大黄免费观看| 日韩精品中文字幕在线不卡尤物 | 国产一区二区三区国产| 老司机一区二区| 免费看欧美美女黄的网站| 美女网站视频久久| 毛片av中文字幕一区二区| 麻豆一区二区三区| 精品午夜久久福利影院| 国产精品一区二区你懂的| 国产丶欧美丶日本不卡视频| 东方欧美亚洲色图在线| 成人av一区二区三区| 不卡区在线中文字幕| 色综合久久久久综合体桃花网| 色婷婷综合久久久久中文一区二区 | 91免费在线看| 91浏览器在线视频| 欧美三级电影在线观看| 884aa四虎影成人精品一区| 884aa四虎影成人精品一区| 欧美videos大乳护士334| 久久综合国产精品| 亚洲欧洲日韩av| 丝袜亚洲精品中文字幕一区| 久久国产精品99久久人人澡| 国产福利一区在线| 一本大道综合伊人精品热热| 欧美精品第一页| 久久一区二区视频| 亚洲日本在线a| 日韩精品视频网站| 丁香激情综合国产| 欧美午夜片在线观看| 日韩精品中文字幕一区| 国产精品久线在线观看| 亚洲一卡二卡三卡四卡无卡久久| 亚洲动漫第一页| 美女网站在线免费欧美精品| 激情综合色综合久久综合| 国产成人精品亚洲午夜麻豆| 国产黄色精品视频| 精品婷婷伊人一区三区三| 欧美狂野另类xxxxoooo| 精品国产成人系列| 欧美激情一区二区三区不卡| 亚洲人成精品久久久久| 天天色天天爱天天射综合| 日本sm残虐另类| 国产在线播放一区二区三区| 99久久久无码国产精品| 欧美日韩视频在线一区二区 | 欧美精品一区二区在线播放| 中文字幕免费不卡| 亚洲国产欧美在线人成| 国产在线乱码一区二区三区| 91农村精品一区二区在线| 91精品国产欧美一区二区18| 日本一区二区三区在线不卡| 亚洲综合激情另类小说区| 激情综合色丁香一区二区| 污片在线观看一区二区| 国产黄人亚洲片| 99久久精品国产毛片| 精品剧情v国产在线观看在线| 国产精品午夜电影| 青椒成人免费视频| 91麻豆蜜桃一区二区三区| 日韩欧美一区二区在线视频| 亚洲欧洲色图综合| 免费精品99久久国产综合精品| 色综合久久中文字幕综合网| 久久综合久久鬼色中文字| 依依成人综合视频| 国产成人在线免费观看| 欧洲日韩一区二区三区| 久久久精品国产免大香伊| 性感美女极品91精品| 成人国产精品免费| 欧美亚州韩日在线看免费版国语版| 欧美精品一区二区精品网| 亚洲午夜在线视频| av不卡免费在线观看| 日韩免费视频一区| 午夜精品久久久久久久久久久| 成人免费观看视频| 欧美成人精品福利| 性做久久久久久免费观看| 91日韩一区二区三区| 国产欧美精品在线观看| 久久福利视频一区二区| 欧美日韩国产免费| 一区二区三区不卡视频 | 国产精品中文有码| 91精品黄色片免费大全| 亚洲精品高清在线观看| 久久99热99| 2023国产精品| 六月丁香婷婷久久| 91精品国产91久久久久久一区二区 | 成人看片黄a免费看在线| 欧美不卡一区二区| 亚洲成人自拍偷拍| 欧美精品亚洲二区| 亚洲风情在线资源站| 在线一区二区三区| 亚洲男人电影天堂| 91麻豆蜜桃一区二区三区| 中文字幕在线一区| 一本色道亚洲精品aⅴ| 中文字幕一区二区日韩精品绯色| 国产麻豆精品theporn| 精品福利视频一区二区三区| 蜜臀av一区二区在线观看| 777色狠狠一区二区三区| 天堂精品中文字幕在线| 欧美一区二区福利在线| 日本成人在线视频网站| 91精品啪在线观看国产60岁| 日韩国产精品91| 欧美第一区第二区| 久久99精品久久久久| 亚洲福利一区二区| 在线成人av影院| 日本成人在线网站| 久久综合久久久久88| 国产很黄免费观看久久| 亚洲精品一二三区| 欧美性一区二区| 日韩黄色一级片| 欧美一级一级性生活免费录像| 麻豆免费看一区二区三区| 日韩欧美的一区二区| 成人涩涩免费视频| 亚洲黄色小视频| 777a∨成人精品桃花网| 激情国产一区二区| 中文字幕乱码一区二区免费| 一本久久a久久免费精品不卡| 日韩在线a电影| 国产午夜精品一区二区三区视频 | 欧美一级免费大片| 国产一区二区在线观看免费| 亚洲欧洲日韩女同| 欧美日韩精品久久久| 久久精品99久久久| 国产喷白浆一区二区三区| 色中色一区二区| 日本vs亚洲vs韩国一区三区 | 亚洲国产欧美日韩另类综合 | 国产成人精品三级| 亚洲欧美日韩精品久久久久| 欧美精品久久久久久久多人混战| 爽好多水快深点欧美视频| 中文字幕乱码日本亚洲一区二区| 欧美在线短视频| 精品一区二区三区av| 亚洲人午夜精品天堂一二香蕉| 91精品久久久久久久99蜜桃| 国产suv一区二区三区88区| 天天做天天摸天天爽国产一区| 久久男人中文字幕资源站|