Cleaned up ANSTO code to merge with sinqdev.sics
This is our new RELEASE-4_0 branch which was taken from ansto/93d9a7c Conflicts: .gitignore SICSmain.c asynnet.c confvirtualmot.c counter.c devexec.c drive.c event.h exebuf.c exeman.c histmem.c interface.h motor.c motorlist.c motorsec.c multicounter.c napi.c napi.h napi4.c network.c nwatch.c nxscript.c nxxml.c nxxml.h ofac.c reflist.c scan.c sicshipadaba.c sicsobj.c site_ansto/docs/Copyright.txt site_ansto/instrument/lyrebird/config/tasmad/sicscommon/nxsupport.tcl site_ansto/instrument/lyrebird/config/tasmad/taspub_sics/tasscript.tcl statusfile.c tasdrive.c tasub.c tasub.h tasublib.c tasublib.h
This commit is contained in:
@@ -30,23 +30,23 @@
|
||||
#include "sicsdata.h"
|
||||
#include "HistMem.i"
|
||||
|
||||
#define PRIVNAM "privilege"
|
||||
#define PRIVNAM "priv"
|
||||
/*==================== support code ====================================*/
|
||||
static void AddPrivProperty(pHdb node, int priv)
|
||||
{
|
||||
char pPriv[80];
|
||||
switch (priv) {
|
||||
case usInternal:
|
||||
strcpy(pPriv, "READ_ONLY");
|
||||
strcpy(pPriv, "internal");
|
||||
break;
|
||||
case usMugger:
|
||||
strcpy(pPriv, "MANAGER");
|
||||
strcpy(pPriv, "manager");
|
||||
break;
|
||||
case usUser:
|
||||
strcpy(pPriv, "USER");
|
||||
strcpy(pPriv, "user");
|
||||
break;
|
||||
case usSpy:
|
||||
strcpy(pPriv, "SPY");
|
||||
strcpy(pPriv, "spy");
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
@@ -315,7 +315,7 @@ static pHdb CreateMotorAdapter(char *name, pMotor pMot)
|
||||
DeleteHipadabaNode(result, NULL);
|
||||
return NULL;
|
||||
}
|
||||
result->protected = 1;
|
||||
result->iprotected = 1;
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -468,7 +468,7 @@ static pHdb MakeSicsVarNode(pSicsVariable pVar, char *name)
|
||||
pHdbCallback pCall = NULL;
|
||||
commandContext comCom;
|
||||
int type;
|
||||
hdbValue v;
|
||||
char command[1024];
|
||||
|
||||
switch (pVar->eType) {
|
||||
case veInt:
|
||||
@@ -496,20 +496,10 @@ static pHdb MakeSicsVarNode(pSicsVariable pVar, char *name)
|
||||
}
|
||||
AppendHipadabaCallback(node, pCall);
|
||||
RegisterCallback(pVar->pCall, VALUECHANGE, ValueCallback, node, NULL);
|
||||
switch (pVar->eType) {
|
||||
case veInt:
|
||||
v = MakeHdbInt(pVar->iVal);
|
||||
break;
|
||||
case veFloat:
|
||||
v = MakeHdbFloat((double) pVar->fVal);
|
||||
break;
|
||||
case veText:
|
||||
v = MakeHdbText(pVar->text);
|
||||
break;
|
||||
}
|
||||
UpdateHipadabaPar(node, v, NULL);
|
||||
snprintf(command, 1023, "%s ", pVar->name);
|
||||
SetHdbProperty(node, "sicscommand", command);
|
||||
|
||||
node->protected = 1;
|
||||
node->iprotected = 1;
|
||||
return node;
|
||||
}
|
||||
|
||||
@@ -920,10 +910,13 @@ int HdbSubSample(SConnection * pCon, SicsInterp * pSics, void *pData,
|
||||
{
|
||||
pHistMem pHM = NULL;
|
||||
pHdb node = NULL;
|
||||
int bank = 0, length = -1, status;
|
||||
int bank = 0, length = -1, status, i;
|
||||
HistInt *data = NULL;
|
||||
char *pPtr = NULL;
|
||||
char error[132];
|
||||
hdbValue v;
|
||||
HMdata hdata;
|
||||
pHdb hmnode = NULL;
|
||||
|
||||
if (argc < 4) {
|
||||
SCWrite(pCon,
|
||||
@@ -938,23 +931,61 @@ int HdbSubSample(SConnection * pCon, SicsInterp * pSics, void *pData,
|
||||
pPtr++;
|
||||
sscanf(pPtr, "%d", &bank);
|
||||
}
|
||||
pHM = (pHistMem) FindCommandData(pSics, argv[1], "HistMem");
|
||||
node = FindHdbNode(NULL, argv[2], pCon);
|
||||
if (pHM == NULL || node == NULL) {
|
||||
SCWrite(pCon, "ERROR: either histogram memory or node not found!",
|
||||
eError);
|
||||
if (node == NULL) {
|
||||
SCWrite(pCon, "ERROR: node not found!",
|
||||
eError);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (pHM->pDriv->SubSample == NULL) {
|
||||
SCWrite(pCon, "ERROR: hm does not support subsampling", eError);
|
||||
return 0;
|
||||
}
|
||||
data = pHM->pDriv->SubSample(pHM->pDriv, pCon, bank, argv[3]);
|
||||
if (data == NULL) {
|
||||
SCWrite(pCon, "ERROR: sub sampling failed", eError);
|
||||
/*
|
||||
old HM
|
||||
*/
|
||||
pHM = (pHistMem) FindCommandData(pSics, argv[1], "HistMem");
|
||||
if(pHM != NULL){
|
||||
|
||||
if (pHM->pDriv->SubSample == NULL) {
|
||||
SCWrite(pCon, "ERROR: hm does not support subsampling", eError);
|
||||
return 0;
|
||||
}
|
||||
data = pHM->pDriv->SubSample(pHM->pDriv, pCon, bank, argv[3]);
|
||||
if (data == NULL) {
|
||||
SCWrite(pCon, "ERROR: sub sampling failed", eError);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
/*
|
||||
new HM
|
||||
*/
|
||||
pHM = (pHistMem) FindCommandData(pSics, argv[1], "HistMemSec");
|
||||
if(pHM != NULL){
|
||||
memset(&hdata,0,sizeof(HMdata));
|
||||
hmnode = GetHipadabaNode(pHM->pDes->parNode,"dim");
|
||||
if(hmnode == NULL){
|
||||
SCWrite(pCon,"ERROR: dim node not found",eError);
|
||||
return 0;
|
||||
}
|
||||
hdata.rank = hmnode->value.arrayLength;
|
||||
for(i = 0; i < hdata.rank; i++){
|
||||
hdata.iDim[i] = hmnode->value.v.intArray[i];
|
||||
}
|
||||
hmnode = GetHipadabaNode(pHM->pDes->parNode,"data");
|
||||
if(hmnode == NULL){
|
||||
SCWrite(pCon,"ERROR: data node not found",eError);
|
||||
return 0;
|
||||
}
|
||||
hdata.localBuffer = hmnode->value.v.intArray;
|
||||
data = subSample(&hdata, argv[3], error, sizeof(error));
|
||||
if(data == NULL){
|
||||
SCPrintf(pCon,eError,"ERROR: %s while processing %s with %s",
|
||||
error, argv[1], argv[3]);
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
SCPrintf(pCon,eError,"ERROR: hm %s not found", argv[1]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
v.dataType = HIPINTVARAR;
|
||||
v.arrayLength = data[0];
|
||||
|
||||
Reference in New Issue
Block a user