diff --git a/diffscan.c b/diffscan.c index 1ab4254f..7f6a57b4 100644 --- a/diffscan.c +++ b/diffscan.c @@ -123,6 +123,31 @@ int DiffScanWrapper(SConnection * pCon, SicsInterp * pSics, void *pData, return status; } + if (strcasecmp(argv[1], "sicsvar") == 0) { + if (argc > 2) { + if (strcasecmp(argv[2], "none") == 0) { + self->sicsvar = NULL; + return 1; + } else { + self->sicsvar = FindVariable(pServ->pSics, argv[2]); + if (self->sicsvar == NULL) { + SCPrintf(pCon, eError, "Cannot find SICS Variable: %s\n", argv[2]); + return 0; + } + else if (self->sicsvar->eType != veText) { + SCPrintf(pCon, eError, "SICS Variable\t be TEXT not %s\n", + self->sicsvar->eType == veInt ? "INT" : + self->sicsvar->eType == veFloat ? "FLOAT" : "unknown"); + self->sicsvar = NULL; + return 0; + } + } + return 1; + } else { + SCPrintf(pCon, eValue, "sicsvar = %s\n", self->sicsvar ? self->sicsvar->name : "none"); + return 1; + } + } /* if we end here we are treating variables */ @@ -376,6 +401,8 @@ static int DiffScanTask(void *pData) self->scanObject->iCounts - 1, fPos, countValue, rawCount, rawMon, data->fTime); SCWrite(self->scanObject->pCon, pBueffel, eLog); + if (self->sicsvar != NULL && self->sicsvar->eType == veText) + VarSetText(self->sicsvar, pBueffel, usInternal); InvokeCallBack(self->scanObject->pCall, SCANPOINT, self->scanObject); traceSys("diffscan","RUN: pos, count, rawcount, rawmon: %f, %d, %d, %d", fPos, countValue, rawCount, rawMon); diff --git a/diffscan.h b/diffscan.h index 652344f1..fcc50cdd 100644 --- a/diffscan.h +++ b/diffscan.h @@ -12,6 +12,7 @@ #include "obpar.h" #include "scan.h" #include "scan.i" +#include "sicsvar.h" typedef struct { pObjectDescriptor pDes; @@ -23,6 +24,7 @@ typedef struct { int skipCount; pScanData scanObject; double last_report_time; + pSicsVariable sicsvar; } DiffScan, *pDiffScan; /*==================================================================*/