r3812 | jgn | 2012-11-16 14:19:49 +1100 (Fri, 16 Nov 2012) | 1 line
This commit is contained in:

committed by
Douglas Clowes

parent
ff6c252e39
commit
6b8ec1e2f3
@ -54,9 +54,12 @@ static int buildStandardCommandPart(TCLDriv *pDriv, char *command,
|
||||
if(status != 1) {
|
||||
return 0;
|
||||
}
|
||||
snprintf(tclCommand,commandLen,"%s %s ", tclFunc, pDriv->motName);
|
||||
//snprintf(tclCommand,commandLen,"%s %s ", tclFunc, pDriv->motName);
|
||||
snprintf(tclCommand,commandLen,"%s", tclFunc);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
static int GetTclPos(void *self, float *fPos){
|
||||
TCLDriv *pDriv;
|
||||
@ -280,9 +283,6 @@ static int TclSetPar(void *self, SConnection *pCon, char *name, float newValue){
|
||||
int status;
|
||||
const char *result = NULL;
|
||||
|
||||
char tclCommand[1024];
|
||||
char tclCommandPara[1024];
|
||||
|
||||
TCLDriv *pDriv = (TCLDriv *) self;
|
||||
|
||||
assert(self);
|
||||
@ -301,27 +301,36 @@ static int TclSetPar(void *self, SConnection *pCon, char *name, float newValue){
|
||||
strncpy(pDriv->long_name, &newValue, 255);
|
||||
return 1;
|
||||
} else {
|
||||
char *tclCommand = (char *)calloc(1024, sizeof(char));
|
||||
if (StringDictExists(pDriv->mappings, name)) {
|
||||
if (!buildStandardCommandPart(pDriv, name, tclCommand, 1023)){
|
||||
pDriv->errorCode = FUNCNOTFOUND;
|
||||
return HWFault;
|
||||
free(tclCommand);
|
||||
return HWFault;
|
||||
}
|
||||
sscanf(tclCommandPara, "%s %f", tclCommand, &newValue);
|
||||
char *tclCommandPara = (char *)calloc(1024, sizeof(char));
|
||||
sprintf(tclCommandPara, "%s %f", tclCommand, newValue);
|
||||
status = Tcl_Eval(pServ->pSics->pTcl,tclCommandPara);
|
||||
result = Tcl_GetStringResult(pServ->pSics->pTcl);
|
||||
if (result == NULL){
|
||||
pDriv->errorCode = NOTCLRESULT;
|
||||
return HWFault;
|
||||
free(tclCommand);
|
||||
free(tclCommandPara);;
|
||||
return HWFault;
|
||||
}
|
||||
if (status != TCL_OK){
|
||||
pDriv->errorCode = TCLERROR;
|
||||
strncpy(pDriv->tclError,result,1023);
|
||||
return HWFault;
|
||||
free(tclCommand);
|
||||
free(tclCommandPara);;
|
||||
return HWFault;
|
||||
}
|
||||
free(tclCommand);
|
||||
free(tclCommandPara);;
|
||||
return OKOK;
|
||||
} else {
|
||||
pDriv->errorCode = PARANOTFOUND;
|
||||
return HWFault;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return OKOK;
|
||||
@ -332,9 +341,7 @@ static int TclListPar(void *self, char *motorname, SConnection *pCon) {
|
||||
|
||||
SDE sVal;
|
||||
int iRet;
|
||||
|
||||
char pBueffel[512];
|
||||
|
||||
char *funcText[] = {"getpos",
|
||||
"run",
|
||||
"status",
|
||||
@ -342,7 +349,6 @@ static int TclListPar(void *self, char *motorname, SConnection *pCon) {
|
||||
"geterror",
|
||||
"fixit",
|
||||
NULL};
|
||||
|
||||
TCLDriv *pDriv = (TCLDriv *)self;
|
||||
|
||||
iRet = LLDnodePtr2First(pDriv->mappings->iList);
|
||||
@ -368,7 +374,6 @@ static int TclListPar(void *self, char *motorname, SConnection *pCon) {
|
||||
int TclGetPar(void *self, char *name, float *value) {
|
||||
|
||||
int status;
|
||||
char tclCommand[1024];
|
||||
const char *result = NULL;
|
||||
|
||||
TCLDriv *pDriv = (TCLDriv *) self;
|
||||
@ -385,27 +390,33 @@ int TclGetPar(void *self, char *name, float *value) {
|
||||
*value = (float)pDriv->fLower;
|
||||
return OKOK;
|
||||
} else {
|
||||
char *tclCommand = (char *)calloc(1024, sizeof(char));
|
||||
if (StringDictExists(pDriv->mappings, name)) {
|
||||
if(!buildStandardCommandPart(pDriv, name, tclCommand, 1023)){
|
||||
pDriv->errorCode = FUNCNOTFOUND;
|
||||
return HWFault;
|
||||
free(tclCommand);
|
||||
return HWFault;
|
||||
}
|
||||
status = Tcl_Eval(pServ->pSics->pTcl,tclCommand);
|
||||
result = Tcl_GetStringResult(pServ->pSics->pTcl);
|
||||
if(result == NULL){
|
||||
pDriv->errorCode = NOTCLRESULT;
|
||||
return HWFault;
|
||||
free(tclCommand);
|
||||
return HWFault;
|
||||
}
|
||||
if(status != TCL_OK){
|
||||
pDriv->errorCode = TCLERROR;
|
||||
strncpy(pDriv->tclError,result,1023);
|
||||
return HWFault;
|
||||
free(tclCommand);
|
||||
return HWFault;
|
||||
}
|
||||
sscanf(result,"%f", value);
|
||||
free(tclCommand);
|
||||
return OKOK;
|
||||
} else {
|
||||
pDriv->errorCode = PARANOTFOUND;
|
||||
return HWFault;
|
||||
pDriv->errorCode = PARANOTFOUND;
|
||||
free(tclCommand);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return OKOK;
|
||||
|
Reference in New Issue
Block a user