📄 icta_var.c
字号:
} 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 + -