📄 icta_var.c
字号:
break; case IC_TYPE_DISCRETE: pstVar->varPtr = (void *) chk_calloc(1, sizeof(icTypeDiscrete)); pstDiscrete = (icTypeDiscrete *)pstVar->varPtr; *pstDiscrete = 0;#ifdef SISCO_THREADS pstVar->extraPtr = (void *) chk_calloc(1, sizeof(icTypeDiscrete)); pstDiscrete = (icTypeDiscrete *)pstVar->extraPtr; *pstDiscrete = 0;#endif break; case IC_TYPE_DISCRETE_Q: pstVar->varPtr = (void *) chk_calloc(1, sizeof(icTypeDiscreteQ)); pstDiscreteQ = (icTypeDiscreteQ *)pstVar->varPtr; pstDiscreteQ->Flags = 0; pstDiscreteQ->Value = 0;#ifdef SISCO_THREADS pstVar->extraPtr = (void *) chk_calloc(1, sizeof(icTypeDiscreteQ)); pstDiscreteQ = (icTypeDiscreteQ *)pstVar->extraPtr; pstDiscreteQ->Flags = 0; pstDiscreteQ->Value = 0;#endif break; case IC_TYPE_DISCRETE_Q_TIME_TAG: pstVar->varPtr = (void *) chk_calloc(1, sizeof(icTypeDiscreteQTimeTag)); pstDiscreteQTimeTag = (icTypeDiscreteQTimeTag *)pstVar->varPtr; pstDiscreteQTimeTag->Flags = 0; pstDiscreteQTimeTag->Value = 0; pstDiscreteQTimeTag->TimeStamp = time(NULL);#ifdef SISCO_THREADS pstVar->extraPtr = (void *) chk_calloc(1, sizeof(icTypeDiscreteQTimeTag)); pstDiscreteQTimeTag = (icTypeDiscreteQTimeTag *)pstVar->extraPtr; pstDiscreteQTimeTag->Flags = 0; pstDiscreteQTimeTag->Value = 0; pstDiscreteQTimeTag->TimeStamp = time(NULL);#endif break; case IC_TYPE_DISCRETE_Q_EXTENDED: pstVar->varPtr = (void *) chk_calloc(1, sizeof(icTypeDiscreteQExtended)); pstDiscreteQExt = (icTypeDiscreteQExtended *)pstVar->varPtr; pstDiscreteQExt->Flags = 0; pstDiscreteQExt->Value = 0; pstDiscreteQExt->TimeStamp = time(NULL); pstDiscreteQExt->COVCount = 0;#ifdef SISCO_THREADS pstVar->extraPtr = (void *) chk_calloc(1, sizeof(icTypeDiscreteQExtended)); pstDiscreteQExt = (icTypeDiscreteQExtended *)pstVar->extraPtr; pstDiscreteQExt->Flags = 0; pstDiscreteQExt->Value = 0; pstDiscreteQExt->TimeStamp = time(NULL); pstDiscreteQExt->COVCount = 0;#endif break; case IC_TYPE_REAL: pstVar->varPtr = (void *) chk_calloc(1, sizeof(icTypeReal)); pstReal = (icTypeReal *)pstVar->varPtr; *pstReal = (float) 0.0;#ifdef SISCO_THREADS pstVar->extraPtr = (void *) chk_calloc(1, sizeof(icTypeReal)); pstReal = (icTypeReal *)pstVar->extraPtr; *pstReal = (float) 0.0;#endif break; case IC_TYPE_REAL_Q: pstVar->varPtr = (void *) chk_calloc(1, sizeof(icTypeRealQ)); pstRealQ = (icTypeRealQ *)pstVar->varPtr; pstRealQ->Flags = 0; pstRealQ->Value = (float) 0.0;#ifdef SISCO_THREADS pstVar->extraPtr = (void *) chk_calloc(1, sizeof(icTypeRealQ)); pstRealQ = (icTypeRealQ *)pstVar->extraPtr; pstRealQ->Flags = 0; pstRealQ->Value = (float) 0.0;#endif break; case IC_TYPE_REAL_Q_TIME_TAG: pstVar->varPtr = (void *) chk_calloc(1, sizeof(icTypeRealQTimeTag)); pstRealQTimeTag = (icTypeRealQTimeTag *)pstVar->varPtr; pstRealQTimeTag->Flags = 0; pstRealQTimeTag->Value = (float) 0.0; pstRealQTimeTag->TimeStamp = time(NULL);#ifdef SISCO_THREADS pstVar->extraPtr = (void *) chk_calloc(1, sizeof(icTypeRealQTimeTag)); pstRealQTimeTag = (icTypeRealQTimeTag *)pstVar->extraPtr; pstRealQTimeTag->Flags = 0; pstRealQTimeTag->Value = (float) 0.0; pstRealQTimeTag->TimeStamp = time(NULL);#endif break; case IC_TYPE_REAL_EXTENDED: pstVar->varPtr = (void *) chk_calloc(1, sizeof(icTypeRealExtended)); pstRealExt = (icTypeRealExtended *)pstVar->varPtr; pstRealExt->Flags = 0; pstRealExt->Value = (float) 0.0; pstRealExt->TimeStamp = time(NULL); pstRealExt->COVCount = 0;#ifdef SISCO_THREADS pstVar->extraPtr = (void *) chk_calloc(1, sizeof(icTypeRealExtended)); pstRealExt = (icTypeRealExtended *)pstVar->extraPtr; pstRealExt->Flags = 0; pstRealExt->Value = (float) 0.0; pstRealExt->TimeStamp = time(NULL); pstRealExt->COVCount = 0;#endif break; case IC_TYPE_USER_DEFINED: /* find out how much space we need */ pstNamedType = (NAMED_TYPE*)(pstVar->pstType->typeId); pstVar->varPtr = (void *) chk_calloc(1, pstNamedType->blocked_len);#ifdef SISCO_THREADS pstVar->extraPtr = (void *) chk_calloc(1, pstNamedType->blocked_len);#endif break; default: ICA_Log_Err2("Init Variable %s Failed - Invalid Type %d", pstVar->varName, pstVar->iccpType); break; } }/************************************************************************//* updateData: stash newData into pstVar *//* only works for standard data types - not user types *//************************************************************************/static ST_VOID updateData(ICTA_VAR_INFO *pstVar, char *newData, ST_UCHAR *flagData) {icTypeState *pstState;icTypeStateQ *pstStateQ;icTypeStateQTimeTag *pstStateQTimeTag;icTypeStateExtended *pstStateExt;icTypeDiscrete *pstDiscrete;icTypeDiscreteQ *pstDiscreteQ;icTypeDiscreteQTimeTag *pstDiscreteQTimeTag;icTypeDiscreteQExtended *pstDiscreteQExt;icTypeReal *pstReal;icTypeRealQ *pstRealQ;icTypeRealQTimeTag *pstRealQTimeTag;icTypeRealExtended *pstRealExt; if (pstVar->bUserType) { ICA_Log_Err0("Unable to Update Data for variables with user defined types!!!!"); return; } switch (pstVar->iccpType) { case IC_TYPE_STATE: pstState = (icTypeState *)pstVar->varPtr; *pstState = (icTypeState)flagData[0];#ifdef SISCO_THREADS pstState = (icTypeState *)pstVar->extraPtr; *pstState = (icTypeState)flagData[0];#endif break; case IC_TYPE_STATE_Q: pstStateQ = (icTypeStateQ *)pstVar->varPtr; *pstStateQ = flagData[0];#ifdef SISCO_THREADS pstStateQ = (icTypeStateQ *)pstVar->extraPtr; *pstStateQ = flagData[0];#endif break; case IC_TYPE_STATE_Q_TIME_TAG: pstStateQTimeTag = (icTypeStateQTimeTag *)pstVar->varPtr; pstStateQTimeTag->TimeStamp = time(NULL); pstStateQTimeTag->Flags = flagData[0];#ifdef SISCO_THREADS pstStateQTimeTag = (icTypeStateQTimeTag *)pstVar->extraPtr; pstStateQTimeTag->TimeStamp = time(NULL); pstStateQTimeTag->Flags = flagData[0];#endif break; case IC_TYPE_STATE_EXTENDED: pstStateExt = (icTypeStateExtended *)pstVar->varPtr; pstStateExt->Flags = flagData[0]; pstStateExt->TimeStamp = time(NULL); pstStateExt->COVCount++;#ifdef SISCO_THREADS pstStateExt = (icTypeStateExtended *)pstVar->extraPtr; pstStateExt->Flags = flagData[0]; pstStateExt->TimeStamp = time(NULL); pstStateExt->COVCount++;#endif break; case IC_TYPE_DISCRETE: pstDiscrete = (icTypeDiscrete *)pstVar->varPtr; *pstDiscrete = atol(newData);#ifdef SISCO_THREADS pstDiscrete = (icTypeDiscrete *)pstVar->extraPtr; *pstDiscrete = atol(newData);#endif break; case IC_TYPE_DISCRETE_Q: pstDiscreteQ = (icTypeDiscreteQ *)pstVar->varPtr; pstDiscreteQ->Flags = flagData[0]; pstDiscreteQ->Value = atol(newData);#ifdef SISCO_THREADS pstDiscreteQ = (icTypeDiscreteQ *)pstVar->extraPtr; pstDiscreteQ->Flags = flagData[0]; pstDiscreteQ->Value = atol(newData);#endif break; case IC_TYPE_DISCRETE_Q_TIME_TAG: pstDiscreteQTimeTag = (icTypeDiscreteQTimeTag *)pstVar->varPtr; pstDiscreteQTimeTag->Flags = flagData[0]; pstDiscreteQTimeTag->Value = atol(newData); pstDiscreteQTimeTag->TimeStamp = time(NULL);#ifdef SISCO_THREADS pstDiscreteQTimeTag = (icTypeDiscreteQTimeTag *)pstVar->extraPtr; pstDiscreteQTimeTag->Flags = flagData[0]; pstDiscreteQTimeTag->Value = atol(newData); pstDiscreteQTimeTag->TimeStamp = time(NULL);#endif break; case IC_TYPE_DISCRETE_Q_EXTENDED: pstDiscreteQExt = (icTypeDiscreteQExtended *)pstVar->varPtr; pstDiscreteQExt->Flags = flagData[0]; pstDiscreteQExt->Value = atol(newData); pstDiscreteQExt->TimeStamp = time(NULL); pstDiscreteQExt->COVCount++;#ifdef SISCO_THREADS pstDiscreteQExt = (icTypeDiscreteQExtended *)pstVar->extraPtr; pstDiscreteQExt->Flags = flagData[0]; pstDiscreteQExt->Value = atol(newData); pstDiscreteQExt->TimeStamp = time(NULL); pstDiscreteQExt->COVCount++;#endif break; case IC_TYPE_REAL: pstReal = (icTypeReal *)pstVar->varPtr; *pstReal = (float) atof(newData);#ifdef SISCO_THREADS pstReal = (icTypeReal *)pstVar->extraPtr; *pstReal = (float) atof(newData);#endif break; case IC_TYPE_REAL_Q: pstRealQ = (icTypeRealQ *)pstVar->varPtr; pstRealQ->Flags = flagData[0]; pstRealQ->Value = (float) atof(newData);#ifdef SISCO_THREADS pstRealQ = (icTypeRealQ *)pstVar->extraPtr; pstRealQ->Flags = flagData[0]; pstRealQ->Value = (float) atof(newData);#endif break; case IC_TYPE_REAL_Q_TIME_TAG: pstRealQTimeTag = (icTypeRealQTimeTag *)pstVar->varPtr; pstRealQTimeTag->Flags = flagData[0]; pstRealQTimeTag->Value = (float) atof(newData); pstRealQTimeTag->TimeStamp = time(NULL);#ifdef SISCO_THREADS pstRealQTimeTag = (icTypeRealQTimeTag *)pstVar->extraPtr; pstRealQTimeTag->Flags = flagData[0]; pstRealQTimeTag->Value = (float) atof(newData); pstRealQTimeTag->TimeStamp = time(NULL);#endif break; case IC_TYPE_REAL_EXTENDED: pstRealExt = (icTypeRealExtended *)pstVar->varPtr; pstRealExt->Flags = flagData[0]; pstRealExt->Value = (float) atof(newData); pstRealExt->TimeStamp = time(NULL); pstRealExt->COVCount++;#ifdef SISCO_THREADS pstRealExt = (icTypeRealExtended *)pstVar->extraPtr; pstRealExt->Flags = flagData[0]; pstRealExt->Value = (float) atof(newData); pstRealExt->TimeStamp = time(NULL); pstRealExt->COVCount++;#endif break; default: ICA_Log_Err2("Update Variable %s Failed - Invalid Type %d", pstVar->varName, pstVar->iccpType); break; } }/************************************************************************//* incrementVar: only works for standard data types - not user types *//************************************************************************/#ifdef TEST_Y2K#define SECS_PER_DAY 86400#define SECS_PER_YEAR SECS_PER_DAY * 365#define TWO_YEARS SECS_PER_YEAR * 2#else#define TWO_YEARS 0#endifST_VOID incrementVar(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; if (pstVar->bUserType) { ICA_Log_Err0("Unable to Initialize Data for variables with user defined types!!!!"); return; } switch (pstVar->iccpType) { case IC_TYPE_STATE: pstState = (icTypeState *)pstVar->varPtr; incState (pstState);#ifdef SISCO_THREADS pstState = (icTypeState *)pstVar->extraPtr; incState (pstState);#endif break; case IC_TYPE_STATE_Q: pstStateQ = (icTypeStateQ *)pstVar->varPtr; incState (pstStateQ); incStateFlags (pstStateQ);#ifdef SISCO_THREADS pstStateQ = (icTypeStateQ *)pstVar->extraPtr; incState (pstStateQ); incStateFlags (pstStateQ);#endif break; case IC_TYPE_STATE_Q_TIME_TAG: pstStateQTimeTag = (icTypeStateQTimeTag *)pstVar->varPtr; pstStateQTimeTag->TimeStamp = time(NULL) + TWO_YEARS; incState (&pstStateQTimeTag->Flags); incStateFlags (&pstStateQTimeTag->Flags);#ifdef SISCO_THREADS pstStateQTimeTag = (icTypeStateQTimeTag *)pstVar->extraPtr; pstStateQTimeTag->TimeStamp = time(NULL) + TWO_YEARS; incState (&pstStateQTimeTag->Flags); incStateFlags (&pstStateQTimeTag->Flags);#endif break; case IC_TYPE_STATE_EXTENDED: pstStateExt = (icTypeStateExtended *)pstVar->varPtr; incState (&pstStateExt->Flags); incStateFlags (&pstStateExt->Flags); pstStateExt->TimeStamp = time(NULL) + TWO_YEARS; pstStateExt->COVCount++;#ifdef SISCO_THREADS pstStateExt = (icTypeStateExtended *)pstVar->extraPtr; incState (&pstStateExt->Flags); incStateFlags (&pstStateExt->Flags); pstStateExt->TimeStamp = time(NULL) + TWO_YEARS; pstStateExt->COVCount++;#endif break; case IC_TYPE_DISCRETE: pstDiscrete = (icTypeDiscrete *)pstVar->varPtr; *pstDiscrete += 1;#ifdef SISCO_THREADS pstDiscrete = (icTypeDiscrete *)pstVar->extraPtr; *pstDiscrete += 1;#endif break; case IC_TYPE_DISCRETE_Q: pstDiscreteQ = (icTypeDiscreteQ *)pstVar->varPtr; pstDiscreteQ->Flags++; pstDiscreteQ->Value++;#ifdef SISCO_THREADS pstDiscreteQ = (icTypeDiscreteQ *)pstVar->extraPtr; pstDiscreteQ->Flags++; pstDiscreteQ->Value++;#endif break; case IC_TYPE_DISCRETE_Q_TIME_TAG: pstDiscreteQTimeTag = (icTypeDiscreteQTimeTag *)pstVar->varPtr; pstDiscreteQTimeTag->Flags++; pstDiscreteQTimeTag->Value++; pstDiscreteQTimeTag->TimeStamp = time(NULL) + TWO_YEARS;#ifdef SISCO_THREADS pstDiscreteQTimeTag = (icTypeDiscreteQTimeTag *)pstVar->extraPtr; pstDiscreteQTimeTag->Flags++; pstDiscreteQTimeTag->Value++; pstDiscreteQTimeTag->TimeStamp = time(NULL) + TWO_YEARS;#endif break; case IC_TYPE_DISCRETE_Q_EXTENDED: pstDiscreteQExt = (icTypeDiscreteQExtended *)pstVar->varPtr; pstDiscreteQExt->Flags++; pstDiscreteQExt->Value++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -