- Refactored hdb callbacks
SKIPPED: psi/julcho.c
This commit is contained in:
@ -93,27 +93,47 @@ static int MotorValueCallback(int iEvent, void *eventData, void *userData,
|
||||
return 1;
|
||||
}
|
||||
/*---------------------------------------------------------------------*/
|
||||
static int MotorParSetCallback(void *userData, void *callData,
|
||||
pHdb currentNode, hdbValue v){
|
||||
static hdbCallbackReturn MotorParSetCallback(pHdb currentNode, void *userData,
|
||||
pHdbMessage message){
|
||||
pMotor pMot = (pMotor)userData;
|
||||
SConnection *pCon = (SConnection *)callData;
|
||||
SConnection *pCon = NULL;
|
||||
int status;
|
||||
pHdbDataMessage mm = NULL;
|
||||
|
||||
if((mm = GetHdbSetMessage(message)) == NULL){
|
||||
return hdbContinue;
|
||||
}
|
||||
pCon = mm->callData;
|
||||
|
||||
assert(pMot != NULL && pCon != NULL);
|
||||
status = MotorSetPar(pMot,pCon,currentNode->name, (float)v.v.doubleValue);
|
||||
return status;
|
||||
status = MotorSetPar(pMot,pCon,currentNode->name,
|
||||
(float)mm->v->v.doubleValue);
|
||||
if(status == 1){
|
||||
return hdbContinue;
|
||||
} else {
|
||||
return hdbAbort;
|
||||
}
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
static int MotorParGetCallback(void *userData, void *callData,
|
||||
pHdb currentNode, hdbValue v){
|
||||
static hdbCallbackReturn MotorParGetCallback(pHdb currentNode, void *userData,
|
||||
pHdbMessage message){
|
||||
pMotor pMot = (pMotor)userData;
|
||||
float fVal;
|
||||
int status;
|
||||
|
||||
pHdbDataMessage mm = NULL;
|
||||
|
||||
if((mm = GetHdbGetMessage(message)) == NULL){
|
||||
return hdbContinue;
|
||||
}
|
||||
|
||||
assert(pMot != NULL);
|
||||
status = MotorGetPar(pMot,currentNode->name,&fVal);
|
||||
currentNode->value.v.doubleValue = fVal;
|
||||
return status;
|
||||
if(status == 1){
|
||||
return hdbContinue;
|
||||
} else {
|
||||
return hdbAbort;
|
||||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------*/
|
||||
static pHdb MakeMotParNode(char *name, pMotor pMot){
|
||||
@ -123,16 +143,16 @@ static pHdb MakeMotParNode(char *name, pMotor pMot){
|
||||
|
||||
node = MakeHipadabaNode(name, HIPFLOAT, 1);
|
||||
if(node != NULL) {
|
||||
pCall = MakeHipadabaCallback(MotorParSetCallback,pMot,NULL,-1,NULL);
|
||||
pCall = MakeHipadabaCallback(MotorParSetCallback,pMot,NULL);
|
||||
if(pCall == NULL){
|
||||
return NULL;
|
||||
}
|
||||
AppendHipadabaCallback(node,HCBSET,pCall);
|
||||
pCall = MakeHipadabaCallback(MotorParGetCallback,pMot,NULL,-1,NULL);
|
||||
AppendHipadabaCallback(node,pCall);
|
||||
pCall = MakeHipadabaCallback(MotorParGetCallback,pMot,NULL);
|
||||
if(pCall == NULL){
|
||||
return NULL;
|
||||
}
|
||||
AppendHipadabaCallback(node,HCBREAD,pCall);
|
||||
AppendHipadabaCallback(node,pCall);
|
||||
snprintf(command,1023,"%s %s ", pMot->name, name);
|
||||
SetHdbProperty(node,"sicscommand", command);
|
||||
}
|
||||
@ -289,15 +309,20 @@ static long totalSum(int *data, int length){
|
||||
return result;
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
static int HMDataGetCallback(void *userData, void *callData,
|
||||
pHdb currentNode, hdbValue v){
|
||||
static hdbCallbackReturn HMDataGetCallback(pHdb currentNode, void *userData,
|
||||
pHdbMessage message){
|
||||
pHistMem pHM = (pHistMem)userData;
|
||||
SConnection *pCon = (SConnection *)callData;
|
||||
SConnection *pCon = NULL;
|
||||
long sum1, sum2;
|
||||
pHdbDataMessage mm = NULL;
|
||||
|
||||
if((mm = GetHdbGetMessage(message)) == NULL){
|
||||
return hdbContinue;
|
||||
}
|
||||
pCon = mm->callData;
|
||||
assert(pHM != NULL);
|
||||
if(pCon == NULL){
|
||||
return 0;
|
||||
return hdbAbort;
|
||||
}
|
||||
sum1 = totalSum(currentNode->value.v.intArray, currentNode->value.arrayLength);
|
||||
currentNode->value.arrayLength = GetHistLength(pHM);
|
||||
@ -306,7 +331,7 @@ static int HMDataGetCallback(void *userData, void *callData,
|
||||
if(sum1 != sum2){
|
||||
UpdateHipadabaPar(currentNode,currentNode->value,NULL);
|
||||
}
|
||||
return 1;
|
||||
return hdbContinue;
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
static pHdb MakeHMDataNode(pHistMem pHM, char *name){
|
||||
@ -319,21 +344,27 @@ static pHdb MakeHMDataNode(pHistMem pHM, char *name){
|
||||
return NULL;
|
||||
}
|
||||
node->value.doNotFree = 1;
|
||||
pCall = MakeHipadabaCallback(HMDataGetCallback,pHM,NULL,-1,NULL);
|
||||
pCall = MakeHipadabaCallback(HMDataGetCallback,pHM,NULL);
|
||||
if(pCall == NULL){
|
||||
return NULL;
|
||||
}
|
||||
AppendHipadabaCallback(node,HCBREAD,pCall);
|
||||
AppendHipadabaCallback(node,HCBSET,MakeReadOnlyCallback());
|
||||
AppendHipadabaCallback(node,pCall);
|
||||
AppendHipadabaCallback(node,MakeReadOnlyCallback());
|
||||
|
||||
return node;
|
||||
}
|
||||
/*================ SICS Variable ======================================*/
|
||||
static int SicsVarSetCallback(void *userData, void *callData,
|
||||
pHdb currentNode, hdbValue v){
|
||||
static hdbCallbackReturn SicsVarSetCallback(pHdb currentNode, void *userData,
|
||||
pHdbMessage message){
|
||||
pSicsVariable pVar = (pSicsVariable)userData;
|
||||
SConnection *pCon = (SConnection *)callData;
|
||||
SConnection *pCon = NULL;
|
||||
int userRights = usMugger;
|
||||
pHdbDataMessage mm = NULL;
|
||||
|
||||
if((mm = GetHdbSetMessage(message)) == NULL){
|
||||
return hdbContinue;
|
||||
}
|
||||
pCon = mm->callData;
|
||||
|
||||
assert(pVar != NULL);
|
||||
|
||||
@ -342,16 +373,16 @@ static int SicsVarSetCallback(void *userData, void *callData,
|
||||
}
|
||||
switch(currentNode->value.dataType){
|
||||
case HIPINT:
|
||||
VarSetInt(pVar, v.v.intValue, userRights);
|
||||
VarSetInt(pVar, mm->v->v.intValue, userRights);
|
||||
break;
|
||||
case HIPFLOAT:
|
||||
VarSetFloat(pVar, (float)v.v.doubleValue, userRights);
|
||||
VarSetFloat(pVar, (float)mm->v->v.doubleValue, userRights);
|
||||
break;
|
||||
case HIPTEXT:
|
||||
VarSetText(pVar, v.v.text, userRights);
|
||||
VarSetText(pVar, mm->v->v.text, userRights);
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
return hdbContinue;
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
static int ValueCallback(int iEvent, void *eventData, void *userData,
|
||||
@ -405,13 +436,13 @@ static pHdb MakeSicsVarNode(pSicsVariable pVar, char *name){
|
||||
} else {
|
||||
AddPrivProperty(node,pVar->iAccessCode);
|
||||
}
|
||||
pCall = MakeHipadabaCallback(SicsVarSetCallback,pVar,NULL,-1,NULL);
|
||||
pCall = MakeHipadabaCallback(SicsVarSetCallback,pVar,NULL);
|
||||
if(pCall == NULL){
|
||||
return NULL;
|
||||
}
|
||||
strncpy(comCom.deviceID,name,255);
|
||||
comCom.transID = -77;
|
||||
AppendHipadabaCallback(node,HCBSET,pCall);
|
||||
AppendHipadabaCallback(node,pCall);
|
||||
RegisterCallback(pVar->pCall,comCom, VALUECHANGE, ValueCallback,
|
||||
node,NULL);
|
||||
snprintf(command,1023,"%s ", pVar->name);
|
||||
|
Reference in New Issue
Block a user