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

This commit is contained in:
Jing Chen
2012-11-16 14:19:49 +11:00
committed by Douglas Clowes
parent ff6c252e39
commit 6b8ec1e2f3

View File

@ -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;