⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icta_var.c

📁 ICCP Toolkit 是在 Tru64下开发Tase.2通信协议的开发包
💻 C
📖 第 1 页 / 共 5 页
字号:
    }  if ( (todo == ICTA_SERVER) || (todo == ICTA_BOTH) )    {    printf("Local Server Variable . . . \n");    pstRemote = pstVCC->remoteList;    pstLink = findOutWhichLink(&pstRemote);    if (!pstLink)      {      printf ("Invalid LinkName");      pause_msg("Press a key to continue!\n");      showCurrMenu();      return;      }    pstVar = findOutWhichVar(pstRemote, ICTA_SERVER);    if (pstVar)      {      printf("\nEnter New Value:  ");      dataEntered = strget(buffer);      if (dataEntered)        {        printf("\nEnter Flag Value:  ");        dataEntered = input_hex(flagBuf, 1);        printf("\n");        updateData(pstVar, buffer, flagBuf);	}      }    else      printf("Variable Not Found!\n");    }  pause_msg("\nPress a key to continue!");  showCurrMenu();  }/************************************************************************//* changeVar:   server uses this to indicate a var has changed via	*//*		icVariableChanged.					*//************************************************************************/ST_VOID changeVar (ST_VOID)  {ICTA_REMOTE_INFO *pstRemote;ICTA_VAR_INFO *pstVar;ICTA_LINK_INFO *pstLink;ST_BOOLEAN dataEntered;ST_CHAR buffer[100];icInt status;ST_BOOLEAN bIsServer = SD_FALSE;ST_INT numToChange = 0;  printf("\n\nChange Variable  . . .\n");  pstRemote = pstVCC->remoteList;  while (pstRemote && !bIsServer)    {    bIsServer = pstRemote->bIsServer;    pstRemote = (ICTA_REMOTE_INFO *) list_get_next		((ST_VOID *)pstVCC->remoteList, (ST_VOID *)pstRemote);    }  if (!bIsServer)    {    printf("Server not defined - change variable option not available.\n");    pause_msg("Press a key to continue!\n");    showCurrMenu();    return;    }  printf("\nEnter Remote Name:  ");    dataEntered = strget(buffer);  if (!dataEntered)    {    pause_msg("\nPress a key to continue!");    showCurrMenu();    return;    }  pstRemote = findRemote(ICTA_SERVER, buffer);  if (!pstRemote)    {    printf("\nInvalid Remote Name!!!!!\n\n");    pause_msg("\nPress a key to continue!");    showCurrMenu();    return;    }  pstVar = findOutWhichVar(pstRemote, ICTA_SERVER);  if (!pstVar)    {    printf ("\nEnter number of variables to change:  ");    intget (&numToChange);    if (numToChange > 0)      changeABunch (pstRemote, numToChange);    showCurrMenu();    return;    }  pstLink = pstRemote->linkList;  while (pstLink)    {    status = icVariableChanged(pstVar->varId, pstLink->linkId);    if (status)      {      ICA_Log_Err2("ERROR:  icVariableChanged status = %d %s",                    status, icPerror(status));      ICA_Log_ErrC2("       Link = %s, Var = %s", pstLink->linkName,                    pstVar->varName);      }    pstLink = (ICTA_LINK_INFO *) list_get_next	      ((ST_VOID *)pstRemote->linkList, (ST_VOID *)pstLink);    }  pause_msg("\nPress a key to continue!");  showCurrMenu();  }/************************************************************************//* doDefTypes:  define all configured types				*//************************************************************************/ST_RET doDefTypes(void)  {ICTA_TYPE *pstType;icInt status;ST_RET rtnVal = SD_SUCCESS;  pstType = pstVCC->typeList;  while (pstType)    {    if (!pstType->bTypeDefined)      {      status = icDefineType(pstType->typeName, pstType->tdl,                            &pstType->typeId);      if (status)        {	ICA_Log_Err2("ERROR:  icDefineType status = %d %s",	             status, icPerror(status));	ICA_Log_ErrC2("       TypeName=%s, tdl=%s", pstType->typeName,	              pstType->tdl);	rtnVal = SD_FAILURE;	}      else        pstType->bTypeDefined = icTrue;      }    pstType = (ICTA_TYPE *) list_get_next	      ((ST_VOID *)pstVCC->typeList, (ST_VOID *)pstType);    }  return rtnVal;  }/************************************************************************//* doDefClientVars:  define client variables for all client remotes	*//************************************************************************/ST_RET doDefClientVars(void)  {ICTA_REMOTE_INFO *pstRemote;ICTA_VAR_INFO *pstVar;icInt status;icTypeId theTypeId;ST_RET rtnVal = SD_SUCCESS;  pstRemote = pstVCC->remoteList;  while (pstRemote && pstRemote->bIsClient)    {    pstVar = pstRemote->clientObj->variableList;    while (pstVar && !pstVar->bVarDefined)      {      if (pstVar->bUserType)        theTypeId = pstVar->pstType->typeId;      else        theTypeId = NULL;      if (!pstVar->varPtr)        initializeVar(pstVar);      status = icDefineClientVariable(pstRemote->remoteId,				      pstVar->varName,				      pstVar->varScope,				      pstVar->iccpType,				      theTypeId,				      pstVar->varPtr,				      (icUserData) pstVar,				      &pstVar->varId,				      clientWriteCallBack,				      clientReadCallBack);      if (status)        {	ICA_Log_Err2("ERROR:  icDefineClientVariable status =%d %s",	              status, icPerror(status));	ICA_Log_ErrC1("       Var = %s", pstVar->varName);	rtnVal = SD_FAILURE;	}      else        pstVar->bVarDefined = icTrue;            pstVar = (ICTA_VAR_INFO *) list_get_next	       ((ST_VOID *)pstRemote->clientObj->variableList, (ST_VOID *)pstVar);      }    pstRemote = (ICTA_REMOTE_INFO *) list_get_next		((ST_VOID *)pstVCC->remoteList, (ST_VOID *)pstRemote);    }  return rtnVal;  }/************************************************************************//* doDefServerVars:  define server variables for all server remotes	*//************************************************************************/ST_RET doDefServerVars(void)  {ICTA_REMOTE_INFO *pstRemote;ICTA_VAR_INFO *pstVar;icInt status;icTypeId theTypeId;ST_RET rtnVal = SD_SUCCESS;  pstRemote = pstVCC->remoteList;  while (pstRemote && pstRemote->bIsServer)    {    if (!pstRemote->bRemoteDefined)      {      pstRemote = (ICTA_REMOTE_INFO *) list_get_next		  ((ST_VOID *)pstVCC->remoteList, (ST_VOID *)pstRemote);      continue;      }    pstVar = pstRemote->serverObj->variableList;    while (pstVar && !pstVar->bVarDefined)      {      if (pstVar->bUserType)        theTypeId = pstVar->pstType->typeId;      else        theTypeId = NULL;      if (!pstVar->varPtr)        initializeVar(pstVar);      status = icDefineServerVariable(pstRemote->remoteId,				      pstVar->varName,				      pstVar->varScope,				      pstVar->iccpType,				      theTypeId,				      pstVar->varPtr,				      pstVar->bWriteable,				      (icUserData) pstVar,				      &pstVar->varId,				      serverWriteCallBack,				      serverReadCallBack);      if (status)        {	ICA_Log_Err2("ERROR:  icDefineServerVariable status =%d %s",	              status, icPerror(status));	ICA_Log_ErrC1("       Var = %s", pstVar->varName);	rtnVal = SD_FAILURE;	}      else        pstVar->bVarDefined = icTrue;            pstVar = (ICTA_VAR_INFO *) list_get_next	       ((ST_VOID *)pstRemote->serverObj->variableList, (ST_VOID *)pstVar);      }    pstRemote = (ICTA_REMOTE_INFO *) list_get_next		((ST_VOID *)pstVCC->remoteList, (ST_VOID *)pstRemote);    }  return rtnVal;  }/************************************************************************//* doNewClientVars:  define one client variable				*//************************************************************************/static ST_RET doNewClientVars(ICTA_REMOTE_INFO *pstRemote,                               ICTA_VAR_INFO    *pstVar)  {icInt status;icTypeId theTypeId;ST_RET rtnVal = SD_SUCCESS;  if (pstVar->bUserType)    theTypeId = pstVar->pstType->typeId;  else    theTypeId = NULL;  initializeVar(pstVar);  status = icDefineClientVariable(pstRemote->remoteId,		      		  pstVar->varName,				  pstVar->varScope,				  pstVar->iccpType,				  theTypeId,				  pstVar->varPtr,				  (icUserData) pstVar,				  &pstVar->varId,				  clientWriteCallBack,				  clientReadCallBack);  if (status)    {    ICA_Log_Err2("ERROR:  icDefineClientVariable status =%d %s",	          status, icPerror(status));    ICA_Log_ErrC1("       Var = %s", pstVar->varName);    rtnVal = SD_FAILURE;    }  else    pstVar->bVarDefined = icTrue;        return rtnVal;  }/************************************************************************//* doNewServerVars:  define one server variable				*//************************************************************************/static ST_RET doNewServerVars(ICTA_REMOTE_INFO *pstRemote,                               ICTA_VAR_INFO *pstVar)  {icInt status;icTypeId theTypeId;ST_RET rtnVal = SD_SUCCESS;  if (pstVar->bUserType)    theTypeId = pstVar->pstType->typeId;  else    theTypeId = NULL;  initializeVar(pstVar);  status = icDefineServerVariable(pstRemote->remoteId,				  pstVar->varName,				  pstVar->varScope,				  pstVar->iccpType,				  theTypeId,				  pstVar->varPtr,				  pstVar->bWriteable,				  (icUserData) pstVar,				  &pstVar->varId,				  serverWriteCallBack,				  serverReadCallBack);  if (status)    {    ICA_Log_Err2("ERROR:  icDefineServerVariable status =%d %s",                  status, icPerror(status));    ICA_Log_ErrC1("       Var = %s", pstVar->varName);    rtnVal = SD_FAILURE;    }  else    pstVar->bVarDefined = icTrue;        return rtnVal;  }/************************************************************************//* initializeVar:  allocate space and set to 0				*//************************************************************************/ST_VOID initializeVar(ICTA_VAR_INFO *pstVar)  {icTypeState         	*pstState;icTypeStateQ 	    	*pstStateQ;icTypeStateQTimeTag 	*pstStateQTimeTag;icTypeStateExtended 	*pstStateExt;icTypeDiscrete      	*pstDiscrete;icTypeDiscreteQ	    	*pstDiscreteQ;icTypeDiscreteQTimeTag	*pstDiscreteQTimeTag;icTypeDiscreteQExtended *pstDiscreteQExt;icTypeReal		*pstReal;icTypeRealQ         	*pstRealQ;icTypeRealQTimeTag	*pstRealQTimeTag;icTypeRealExtended  	*pstRealExt;NAMED_TYPE		*pstNamedType;  switch (pstVar->iccpType)    {    case IC_TYPE_STATE:      pstVar->varPtr = (void *) chk_calloc(1, sizeof(icTypeState));      pstState = (icTypeState *) pstVar->varPtr;      *pstState = 0;#ifdef SISCO_THREADS      pstVar->extraPtr = (void *) chk_calloc(1, sizeof(icTypeState));      pstState = (icTypeState *) pstVar->extraPtr;      *pstState = 0;#endif    break;    case IC_TYPE_STATE_Q:      pstVar->varPtr = (void *) chk_calloc(1, sizeof(icTypeStateQ));      pstStateQ = (icTypeStateQ *)pstVar->varPtr;      *pstStateQ = 0;#ifdef SISCO_THREADS      pstVar->extraPtr = (void *) chk_calloc(1, sizeof(icTypeStateQ));      pstStateQ = (icTypeStateQ *)pstVar->extraPtr;      *pstStateQ = 0;#endif    break;    case IC_TYPE_STATE_Q_TIME_TAG:      pstVar->varPtr = (void *) chk_calloc(1, sizeof(icTypeStateQTimeTag));      pstStateQTimeTag = (icTypeStateQTimeTag *)pstVar->varPtr;      pstStateQTimeTag->TimeStamp = time(NULL);      pstStateQTimeTag->Flags = 0;#ifdef SISCO_THREADS      pstVar->extraPtr = (void *) chk_calloc(1, sizeof(icTypeStateQTimeTag));      pstStateQTimeTag = (icTypeStateQTimeTag *)pstVar->extraPtr;      pstStateQTimeTag->TimeStamp = time(NULL);      pstStateQTimeTag->Flags = 0;#endif    break;    case IC_TYPE_STATE_EXTENDED:      pstVar->varPtr = (void *) chk_calloc(1, sizeof(icTypeStateExtended));      pstStateExt = (icTypeStateExtended *)pstVar->varPtr;      pstStateExt->Flags = 0;      pstStateExt->TimeStamp = time(NULL);      pstStateExt->COVCount = 0;#ifdef SISCO_THREADS      pstVar->extraPtr = (void *) chk_calloc(1, sizeof(icTypeStateExtended));      pstStateExt = (icTypeStateExtended *)pstVar->extraPtr;      pstStateExt->Flags = 0;      pstStateExt->TimeStamp = time(NULL);      pstStateExt->COVCount = 0;#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -