Clean up the space/tab mess and trailing whitespace
This commit is contained in:
@ -1,9 +1,9 @@
|
|||||||
/*--------------------------------------------------------------
|
/*--------------------------------------------------------------
|
||||||
This is a driver for the newer Astrium == Dornier chopper
|
This is a driver for the newer Astrium == Dornier chopper
|
||||||
systems which use a TCP/IP server for communication.
|
systems which use a TCP/IP server for communication.
|
||||||
This driver has to take care of some ugliness:
|
This driver has to take care of some ugliness:
|
||||||
- As of december 2005, the communication is in unicode!
|
- As of december 2005, the communication is in unicode!
|
||||||
To go from ASCII to unicode and back one has to
|
To go from ASCII to unicode and back one has to
|
||||||
add a 0x00 before each character or to remove it.
|
add a 0x00 before each character or to remove it.
|
||||||
- The controller is slow in responding and the controller
|
- The controller is slow in responding and the controller
|
||||||
must be watched in the environment monitor. This is taken
|
must be watched in the environment monitor. This is taken
|
||||||
@ -22,7 +22,7 @@
|
|||||||
#include <rs232controller.h>
|
#include <rs232controller.h>
|
||||||
#include <codri.h>
|
#include <codri.h>
|
||||||
#include <stptok.h>
|
#include <stptok.h>
|
||||||
#include <commandlog.h>
|
#include <commandlog.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
/*========================================================================
|
/*========================================================================
|
||||||
Our private data structure
|
Our private data structure
|
||||||
@ -62,7 +62,7 @@ Error codes:
|
|||||||
#define BADVALUE -8310
|
#define BADVALUE -8310
|
||||||
|
|
||||||
extern char *trim(char *str);
|
extern char *trim(char *str);
|
||||||
#define ABS(x) (x < 0 ? -(x) : (x))
|
#define ABS(x) (x < 0 ? -(x) : (x))
|
||||||
|
|
||||||
#define SPEEDTOL 2
|
#define SPEEDTOL 2
|
||||||
#define PHASETOL 0.2
|
#define PHASETOL 0.2
|
||||||
@ -76,15 +76,15 @@ static int asciiToUnicode(char *input, char **output){
|
|||||||
len = strlen(input);
|
len = strlen(input);
|
||||||
result = (char *)malloc(2*len*sizeof(char));
|
result = (char *)malloc(2*len*sizeof(char));
|
||||||
if(result == NULL){
|
if(result == NULL){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
memset(result,0,2*len*sizeof(char));
|
memset(result,0,2*len*sizeof(char));
|
||||||
for(i = 0; i < len; i++){
|
for(i = 0; i < len; i++){
|
||||||
result[i*2] = input[i];
|
result[i*2] = input[i];
|
||||||
}
|
}
|
||||||
*output = result;
|
*output = result;
|
||||||
return 2*len;
|
return 2*len;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/*-------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------*/
|
||||||
#if 0
|
#if 0
|
||||||
@ -96,11 +96,11 @@ static int unicodeToAscii(char *input, int len, char **output){
|
|||||||
|
|
||||||
result = (char *)malloc((alen+1)*sizeof(char));
|
result = (char *)malloc((alen+1)*sizeof(char));
|
||||||
if(result == NULL){
|
if(result == NULL){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
memset(result,0,(alen+1)*sizeof(char));
|
memset(result,0,(alen+1)*sizeof(char));
|
||||||
for(i = 0; i < alen; i++){
|
for(i = 0; i < alen; i++){
|
||||||
result[i] = input[i*2];
|
result[i] = input[i*2];
|
||||||
}
|
}
|
||||||
*output = result;
|
*output = result;
|
||||||
return alen;
|
return alen;
|
||||||
@ -108,7 +108,7 @@ static int unicodeToAscii(char *input, int len, char **output){
|
|||||||
#endif
|
#endif
|
||||||
/*----------------------------------------------------------------*/
|
/*----------------------------------------------------------------*/
|
||||||
static int tcpDoChoSend(pTcpDoCho self, char *command, int choNum,
|
static int tcpDoChoSend(pTcpDoCho self, char *command, int choNum,
|
||||||
char *value){
|
char *value){
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
int sendlen, status;
|
int sendlen, status;
|
||||||
|
|
||||||
@ -117,22 +117,22 @@ static int tcpDoChoSend(pTcpDoCho self, char *command, int choNum,
|
|||||||
*/
|
*/
|
||||||
self->lastError = 0;
|
self->lastError = 0;
|
||||||
if(choNum < 0){
|
if(choNum < 0){
|
||||||
snprintf(buffer,1023,"#SOS#%s \r\n",command);
|
snprintf(buffer,1023,"#SOS#%s \r\n",command);
|
||||||
} else if(value != NULL){
|
} else if(value != NULL){
|
||||||
snprintf(buffer,1023,"#SOS#%s%1.1d: %s\r\n",command, choNum,
|
snprintf(buffer,1023,"#SOS#%s%1.1d: %s\r\n",command, choNum,
|
||||||
value);
|
value);
|
||||||
} else {
|
} else {
|
||||||
snprintf(buffer,1023,"#SOS#%s%1.1d:\r\n",command, choNum);
|
snprintf(buffer,1023,"#SOS#%s%1.1d:\r\n",command, choNum);
|
||||||
}
|
}
|
||||||
sendlen = strlen(buffer);
|
sendlen = strlen(buffer);
|
||||||
if(sendlen == 0){
|
if(sendlen == 0){
|
||||||
self->lastError = BADCONVERSION;
|
self->lastError = BADCONVERSION;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
status = send(self->controller->pSock->sockid,buffer,sendlen,0);
|
status = send(self->controller->pSock->sockid,buffer,sendlen,0);
|
||||||
if(status < 0){
|
if(status < 0){
|
||||||
self->lastError = BADWRITE;
|
self->lastError = BADWRITE;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -147,14 +147,14 @@ static int statusComplete(char *statusMessage){
|
|||||||
*/
|
*/
|
||||||
pPtr = strstr(statusMessage,"TIME");
|
pPtr = strstr(statusMessage,"TIME");
|
||||||
if(pPtr != NULL){
|
if(pPtr != NULL){
|
||||||
pPtr = strstr(pPtr+6,"#");
|
pPtr = strstr(pPtr+6,"#");
|
||||||
if(pPtr != NULL){
|
if(pPtr != NULL){
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------*/
|
/*---------------------------------------------------------------*/
|
||||||
@ -164,7 +164,7 @@ static int readChopperNum(char *entry){
|
|||||||
|
|
||||||
pPtr = strstr(entry,"CH");
|
pPtr = strstr(entry,"CH");
|
||||||
if(pPtr == NULL){
|
if(pPtr == NULL){
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
sscanf(pPtr+3,"%d",&num);
|
sscanf(pPtr+3,"%d",&num);
|
||||||
return num;
|
return num;
|
||||||
@ -194,27 +194,27 @@ static void addEntry(pTcpDoCho self, int choNum, char *entry){
|
|||||||
StringDictAddPair(self->parameters,name,trim(value));
|
StringDictAddPair(self->parameters,name,trim(value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*----------------------------------------------------------------*/
|
/*----------------------------------------------------------------*/
|
||||||
static int parseStatus(pTcpDoCho self, char *statusMessage){
|
static int parseStatus(pTcpDoCho self, char *statusMessage){
|
||||||
int choNum;
|
int choNum;
|
||||||
char entry[80], *pPtr;
|
char entry[80], *pPtr;
|
||||||
|
|
||||||
pPtr = statusMessage;
|
pPtr = statusMessage;
|
||||||
|
|
||||||
/* skip over SOS */
|
/* skip over SOS */
|
||||||
pPtr = stptok(pPtr,entry,79,"#");
|
pPtr = stptok(pPtr,entry,79,"#");
|
||||||
pPtr = stptok(pPtr,entry,79,"#");
|
pPtr = stptok(pPtr,entry,79,"#");
|
||||||
pPtr = stptok(pPtr,entry,79,"#");
|
pPtr = stptok(pPtr,entry,79,"#");
|
||||||
|
|
||||||
choNum = readChopperNum(entry);
|
choNum = readChopperNum(entry);
|
||||||
if(choNum < 0){
|
if(choNum < 0){
|
||||||
self->lastError = BADRESPONSE;
|
self->lastError = BADRESPONSE;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
while((pPtr = stptok(pPtr,entry,79,"#")) != NULL){
|
while((pPtr = stptok(pPtr,entry,79,"#")) != NULL){
|
||||||
addEntry(self,choNum,entry);
|
addEntry(self,choNum,entry);
|
||||||
memset(entry,0,80);
|
memset(entry,0,80);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -229,51 +229,51 @@ static int tcpDoChoReceive(pTcpDoCho self){
|
|||||||
bytesRead = 0;
|
bytesRead = 0;
|
||||||
memset(buffer,0,1024*sizeof(char));
|
memset(buffer,0,1024*sizeof(char));
|
||||||
while(time(NULL) < endTime){
|
while(time(NULL) < endTime){
|
||||||
if(availableRS232(self->controller)){
|
if(availableRS232(self->controller)){
|
||||||
bytesRead += recv(self->controller->pSock->sockid,buffer+bufferStart,
|
bytesRead += recv(self->controller->pSock->sockid,buffer+bufferStart,
|
||||||
1024 - bytesRead,0);
|
1024 - bytesRead,0);
|
||||||
if(bytesRead < 0){
|
if(bytesRead < 0){
|
||||||
self->lastError = BADREAD;
|
self->lastError = BADREAD;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if(strstr(buffer,"State") != NULL){
|
if(strstr(buffer,"State") != NULL){
|
||||||
if(statusComplete(buffer) == 0) {
|
if(statusComplete(buffer) == 0) {
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
status = parseStatus(self,buffer);
|
status = parseStatus(self,buffer);
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(strstr(buffer,"ACCEPT") != NULL){
|
if(strstr(buffer,"ACCEPT") != NULL){
|
||||||
return 1;
|
return 1;
|
||||||
} else if(strstr(buffer,"NCCEPT") != NULL){
|
} else if(strstr(buffer,"NCCEPT") != NULL){
|
||||||
self->lastError = FAILEDCOMMAND;
|
self->lastError = FAILEDCOMMAND;
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
self->lastError = BADRESPONSE;
|
self->lastError = BADRESPONSE;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
SicsWait(1);
|
SicsWait(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self->lastError = TIMEOUT;
|
self->lastError = TIMEOUT;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------*/
|
/*-----------------------------------------------------------------*/
|
||||||
static int tcpDoChoCommand(pTcpDoCho self, char *command, int choNum,
|
static int tcpDoChoCommand(pTcpDoCho self, char *command, int choNum,
|
||||||
char *value){
|
char *value){
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
status = tcpDoChoSend(self,command,choNum,value);
|
status = tcpDoChoSend(self,command,choNum,value);
|
||||||
if(status == 0){
|
if(status == 0){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return tcpDoChoReceive(self);
|
return tcpDoChoReceive(self);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------*/
|
/*---------------------------------------------------------------*/
|
||||||
/* TODO Check for response on authentication
|
/* TODO Check for response on authentication
|
||||||
* authentication succeeded: #SES#Hello
|
* authentication succeeded: #SES#Hello
|
||||||
* authentication failed: #SES#You are not a valid user, try again!
|
* authentication failed: #SES#You are not a valid user, try again!
|
||||||
* Make sure that ch2,3,4 are set to MW on init
|
* Make sure that ch2,3,4 are set to MW on init
|
||||||
*/
|
*/
|
||||||
@ -283,8 +283,8 @@ static int TcpDoChoConnect(pTcpDoCho self){
|
|||||||
|
|
||||||
status = initRS232(self->controller);
|
status = initRS232(self->controller);
|
||||||
if(status != 1){
|
if(status != 1){
|
||||||
self->lastError = status;
|
self->lastError = status;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
setRS232Timeout(self->controller,5);
|
setRS232Timeout(self->controller,5);
|
||||||
|
|
||||||
@ -297,36 +297,36 @@ static int TcpDoChoConnect(pTcpDoCho self){
|
|||||||
snprintf(buffer,255,"user:%s\r\n",self->user);
|
snprintf(buffer,255,"user:%s\r\n",self->user);
|
||||||
sendLen = strlen(buffer);
|
sendLen = strlen(buffer);
|
||||||
if(sendLen == 0){
|
if(sendLen == 0){
|
||||||
self->lastError = BADCONVERSION;
|
self->lastError = BADCONVERSION;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
status = send(self->controller->pSock->sockid,buffer,sendLen,0);
|
status = send(self->controller->pSock->sockid,buffer,sendLen,0);
|
||||||
if(status < 0){
|
if(status < 0){
|
||||||
self->lastError = BADSEND;
|
self->lastError = BADSEND;
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
readLen = 255;
|
|
||||||
readRS232(self->controller,(void *)buffer,&readLen);
|
|
||||||
|
|
||||||
/*
|
|
||||||
password
|
|
||||||
*/
|
|
||||||
snprintf(buffer,255,"password:%s\r\n",self->pword);
|
|
||||||
sendLen = strlen(buffer);
|
|
||||||
if(sendLen == 0){
|
|
||||||
self->lastError = BADCONVERSION;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
status = send(self->controller->pSock->sockid,buffer,sendLen,0);
|
|
||||||
if(status < 0){
|
|
||||||
self->lastError = BADSEND;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
readLen = 255;
|
readLen = 255;
|
||||||
readRS232(self->controller,(void *)buffer,&readLen);
|
readRS232(self->controller,(void *)buffer,&readLen);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TODO: responses should be checked to test for a valid login.
|
password
|
||||||
|
*/
|
||||||
|
snprintf(buffer,255,"password:%s\r\n",self->pword);
|
||||||
|
sendLen = strlen(buffer);
|
||||||
|
if(sendLen == 0){
|
||||||
|
self->lastError = BADCONVERSION;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
status = send(self->controller->pSock->sockid,buffer,sendLen,0);
|
||||||
|
if(status < 0){
|
||||||
|
self->lastError = BADSEND;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
readLen = 255;
|
||||||
|
readRS232(self->controller,(void *)buffer,&readLen);
|
||||||
|
|
||||||
|
/*
|
||||||
|
TODO: responses should be checked to test for a valid login.
|
||||||
I do not know at this time how the controller reacts upon a
|
I do not know at this time how the controller reacts upon a
|
||||||
bad login.
|
bad login.
|
||||||
*/
|
*/
|
||||||
@ -348,32 +348,32 @@ static int TcpChopperTask(void *pData){
|
|||||||
assert(pPriv);
|
assert(pPriv);
|
||||||
|
|
||||||
if(pPriv->stop == 1){
|
if(pPriv->stop == 1){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(time(NULL) > pPriv->nextRefresh){
|
if(time(NULL) > pPriv->nextRefresh){
|
||||||
if(pPriv->lastError != 0){
|
if(pPriv->lastError != 0){
|
||||||
self->GetError(self,&code,buffer,79);
|
self->GetError(self,&code,buffer,79);
|
||||||
snprintf(error,511,"WARNING: chopper tries to fix: %s",buffer);
|
snprintf(error,511,"WARNING: chopper tries to fix: %s",buffer);
|
||||||
WriteToCommandLog("Chopper-task:>>", error);
|
WriteToCommandLog("Chopper-task:>>", error);
|
||||||
status = self->TryFixIt(self,code);
|
status = self->TryFixIt(self,code);
|
||||||
if(status == CHFAIL){
|
if(status == CHFAIL){
|
||||||
pPriv->nextRefresh = time(NULL) + pPriv->iRefreshIntervall;
|
pPriv->nextRefresh = time(NULL) + pPriv->iRefreshIntervall;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
|
||||||
} else {
|
|
||||||
pPriv->busy = 1;
|
|
||||||
for(i = 0; i < pPriv->numChoppers; i++){
|
|
||||||
status = tcpDoChoCommand(pPriv,"STATE ", i+1,NULL);
|
|
||||||
if(status != 1){
|
|
||||||
/*
|
|
||||||
force error correction
|
|
||||||
*/
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
pPriv->nextRefresh = time(NULL) + pPriv->iRefreshIntervall;
|
} else {
|
||||||
pPriv->busy = 0;
|
pPriv->busy = 1;
|
||||||
|
for(i = 0; i < pPriv->numChoppers; i++){
|
||||||
|
status = tcpDoChoCommand(pPriv,"STATE ", i+1,NULL);
|
||||||
|
if(status != 1){
|
||||||
|
/*
|
||||||
|
force error correction
|
||||||
|
*/
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pPriv->nextRefresh = time(NULL) + pPriv->iRefreshIntervall;
|
||||||
|
pPriv->busy = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
@ -388,13 +388,13 @@ static int TcpDoChoKill(pCodri self){
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if(pPriv->controller != NULL){
|
if(pPriv->controller != NULL){
|
||||||
KillRS232(pPriv->controller);
|
KillRS232(pPriv->controller);
|
||||||
}
|
}
|
||||||
if(pPriv->parameters != NULL){
|
if(pPriv->parameters != NULL){
|
||||||
DeleteStringDict(pPriv->parameters);
|
DeleteStringDict(pPriv->parameters);
|
||||||
}
|
}
|
||||||
if(pPriv->config != NULL){
|
if(pPriv->config != NULL){
|
||||||
free(pPriv->config);
|
free(pPriv->config);
|
||||||
}
|
}
|
||||||
free(pPriv);
|
free(pPriv);
|
||||||
return 1;
|
return 1;
|
||||||
@ -411,11 +411,11 @@ static int TcpDoChoConfigure(pCodri pDriv){
|
|||||||
assert(self != NULL);
|
assert(self != NULL);
|
||||||
|
|
||||||
if(self->config != NULL){
|
if(self->config != NULL){
|
||||||
pPtr = self->config;
|
pPtr = self->config;
|
||||||
while( (pPtr = stptok(pPtr,command,79,"\n")) != NULL){
|
while( (pPtr = stptok(pPtr,command,79,"\n")) != NULL){
|
||||||
status = tcpDoChoCommand(self,command,-1,NULL);
|
status = tcpDoChoCommand(self,command,-1,NULL);
|
||||||
if(status != 1){
|
if(status != 1){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -429,32 +429,32 @@ static int TcpDoChoInit(pCodri pDriv){
|
|||||||
assert(pDriv != NULL);
|
assert(pDriv != NULL);
|
||||||
self = (pTcpDoCho)pDriv->pPrivate;
|
self = (pTcpDoCho)pDriv->pPrivate;
|
||||||
assert(self != NULL);
|
assert(self != NULL);
|
||||||
|
|
||||||
self->lastError = 0;
|
self->lastError = 0;
|
||||||
self->stop = 0;
|
self->stop = 0;
|
||||||
self->nextRefresh = 0;
|
self->nextRefresh = 0;
|
||||||
|
|
||||||
status = TcpDoChoConnect(self);
|
status = TcpDoChoConnect(self);
|
||||||
if(status != 1){
|
if(status != 1){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = TcpDoChoConfigure(pDriv);
|
status = TcpDoChoConfigure(pDriv);
|
||||||
if(status != 1){
|
if(status != 1){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
/* start the update task */
|
/* start the update task */
|
||||||
if(self->lTask == 0){
|
if(self->lTask == 0){
|
||||||
self->lTask = TaskRegister(pServ->pTasker,
|
self->lTask = TaskRegister(pServ->pTasker,
|
||||||
TcpChopperTask,
|
TcpChopperTask,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
pDriv,
|
pDriv,
|
||||||
1);
|
1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/*-------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------*/
|
||||||
static void waitForBusy(pTcpDoCho self){
|
static void waitForBusy(pTcpDoCho self){
|
||||||
@ -462,11 +462,11 @@ static void waitForBusy(pTcpDoCho self){
|
|||||||
|
|
||||||
endTime = time(NULL) + 10 *60; /* max 10 min */
|
endTime = time(NULL) + 10 *60; /* max 10 min */
|
||||||
while(time(NULL) < endTime){
|
while(time(NULL) < endTime){
|
||||||
if(self->busy == 1){
|
if(self->busy == 1){
|
||||||
SicsWait(3);
|
SicsWait(3);
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
WriteToCommandLog("Chopper-task>> ","WARNING: timeout on busy flag, flag forced");
|
WriteToCommandLog("Chopper-task>> ","WARNING: timeout on busy flag, flag forced");
|
||||||
self->busy = 0;
|
self->busy = 0;
|
||||||
@ -481,8 +481,8 @@ static int TcpDoChoClose(pCodri pDriv){
|
|||||||
|
|
||||||
self->stop = 1;
|
self->stop = 1;
|
||||||
if(self->controller != NULL){
|
if(self->controller != NULL){
|
||||||
KillRS232(self->controller);
|
KillRS232(self->controller);
|
||||||
self->controller = NULL;
|
self->controller = NULL;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -492,20 +492,20 @@ static int dissectName(char *name, char par[80], int *num){
|
|||||||
|
|
||||||
pPtr = strrchr(name,(int)'_');
|
pPtr = strrchr(name,(int)'_');
|
||||||
if(pPtr == NULL){
|
if(pPtr == NULL){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
memset(par,0,80*sizeof(char));
|
memset(par,0,80*sizeof(char));
|
||||||
strncpy(par,name,pPtr - name);
|
strncpy(par,name,pPtr - name);
|
||||||
if(sscanf(pPtr+1,"%d",num) != 1){
|
if(sscanf(pPtr+1,"%d",num) != 1){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/* Use this to coerce speed and phase for choppers 2 and 3
|
/* Use this to coerce speed and phase for choppers 2 and 3
|
||||||
* into the same coordinate convention as chopper 1.
|
* into the same coordinate convention as chopper 1.
|
||||||
* errno = 0 if successful
|
* errno = 0 if successful
|
||||||
* on failure errorcode is set in lastError
|
* on failure errorcode is set in lastError
|
||||||
*/
|
*/
|
||||||
#if 0
|
#if 0
|
||||||
static int fixDirection(pTcpDoCho self, int choNum, char *value, int value_len) {
|
static int fixDirection(pTcpDoCho self, int choNum, char *value, int value_len) {
|
||||||
double dValue;
|
double dValue;
|
||||||
@ -523,52 +523,52 @@ static int fixDirection(pTcpDoCho self, int choNum, char *value, int value_len)
|
|||||||
#endif
|
#endif
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
static int TcpDoChoSetPar2(pCodri pDriv, char *parname, char *value){
|
static int TcpDoChoSetPar2(pCodri pDriv, char *parname, char *value){
|
||||||
|
|
||||||
pTcpDoCho self = NULL;
|
pTcpDoCho self = NULL;
|
||||||
int status, choNum;
|
int status, choNum;
|
||||||
char par[80], buffer[80], state[80];
|
char par[80], buffer[80], state[80];
|
||||||
|
|
||||||
assert(pDriv != NULL);
|
assert(pDriv != NULL);
|
||||||
self = (pTcpDoCho)pDriv->pPrivate;
|
self = (pTcpDoCho)pDriv->pPrivate;
|
||||||
assert(self != NULL);
|
assert(self != NULL);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
force status requests right after setting something in order
|
force status requests right after setting something in order
|
||||||
to make the stored status represent the new target values
|
to make the stored status represent the new target values
|
||||||
*/
|
*/
|
||||||
if(dissectName(parname,par,&choNum)){
|
if(dissectName(parname,par,&choNum)){
|
||||||
/*
|
/*
|
||||||
check for emergency stop
|
check for emergency stop
|
||||||
*/
|
*/
|
||||||
snprintf(buffer,79,"State_%1.1d",choNum);
|
snprintf(buffer,79,"State_%1.1d",choNum);
|
||||||
memset(state,0,80*sizeof(char));
|
memset(state,0,80*sizeof(char));
|
||||||
StringDictGet(self->parameters,buffer,state,79);
|
StringDictGet(self->parameters,buffer,state,79);
|
||||||
if(strstr(state,"E-Stop") != NULL){
|
if(strstr(state,"E-Stop") != NULL){
|
||||||
self->lastError = ESTOP;
|
self->lastError = ESTOP;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(strcmp(par,"speed") == 0){
|
if(strcmp(par,"speed") == 0){
|
||||||
waitForBusy(self);
|
waitForBusy(self);
|
||||||
status = tcpDoChoCommand(self,"SPEED ",choNum,trim(value));
|
status = tcpDoChoCommand(self,"SPEED ",choNum,trim(value));
|
||||||
tcpDoChoCommand(self,"STATE ",choNum,NULL);
|
tcpDoChoCommand(self,"STATE ",choNum,NULL);
|
||||||
if(status != 1){
|
if(status != 1){
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
} else if(strcmp(par,"phase") == 0){
|
} else if(strcmp(par,"phase") == 0){
|
||||||
waitForBusy(self);
|
waitForBusy(self);
|
||||||
if (errno != 0)
|
if (errno != 0)
|
||||||
return 0;
|
return 0;
|
||||||
status = tcpDoChoCommand(self,"PHASE ",choNum,trim(value));
|
status = tcpDoChoCommand(self,"PHASE ",choNum,trim(value));
|
||||||
tcpDoChoCommand(self,"STATE ",choNum,NULL);
|
tcpDoChoCommand(self,"STATE ",choNum,NULL);
|
||||||
if(status != 1){
|
if(status != 1){
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self->lastError = UNDRIVABLE;
|
self->lastError = UNDRIVABLE;
|
||||||
@ -576,7 +576,7 @@ static int TcpDoChoSetPar2(pCodri pDriv, char *parname, char *value){
|
|||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
static int TcpDoChoHalt(pCodri pDriv){
|
static int TcpDoChoHalt(pCodri pDriv){
|
||||||
|
|
||||||
pTcpDoCho self = NULL;
|
pTcpDoCho self = NULL;
|
||||||
|
|
||||||
assert(pDriv != NULL);
|
assert(pDriv != NULL);
|
||||||
@ -589,7 +589,7 @@ static int TcpDoChoHalt(pCodri pDriv){
|
|||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
static int TcpDoChoSetPar(pCodri pDriv, char *parname, float fValue){
|
static int TcpDoChoSetPar(pCodri pDriv, char *parname, float fValue){
|
||||||
|
|
||||||
pTcpDoCho self = NULL;
|
pTcpDoCho self = NULL;
|
||||||
int choNum;
|
int choNum;
|
||||||
char value[80];
|
char value[80];
|
||||||
@ -601,26 +601,26 @@ static int TcpDoChoSetPar(pCodri pDriv, char *parname, float fValue){
|
|||||||
assert(self != NULL);
|
assert(self != NULL);
|
||||||
|
|
||||||
if(dissectName(parname,par,&choNum)){
|
if(dissectName(parname,par,&choNum)){
|
||||||
if(strcmp(par,"speed") == 0){
|
if(strcmp(par,"speed") == 0){
|
||||||
snprintf(value,79,"%5.1f", fValue);
|
snprintf(value,79,"%5.1f", fValue);
|
||||||
return TcpDoChoSetPar2(pDriv,parname,value);
|
return TcpDoChoSetPar2(pDriv,parname,value);
|
||||||
} else if(strcmp(par,"phase") == 0){
|
} else if(strcmp(par,"phase") == 0){
|
||||||
snprintf(value,79,"%6.2f",fValue);
|
snprintf(value,79,"%6.2f",fValue);
|
||||||
return TcpDoChoSetPar2(pDriv,parname,value);
|
return TcpDoChoSetPar2(pDriv,parname,value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(strcmp(parname,"updateintervall") == 0){
|
if(strcmp(parname,"updateintervall") == 0){
|
||||||
sprintf(value,"%d",(int)fValue);
|
sprintf(value,"%d",(int)fValue);
|
||||||
StringDictUpdate(self->parameters,"updateintervall",value);
|
StringDictUpdate(self->parameters,"updateintervall",value);
|
||||||
self->iRefreshIntervall = (int)fValue;
|
self->iRefreshIntervall = (int)fValue;
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
snprintf(value,79,"%f",fValue);
|
snprintf(value,79,"%f",fValue);
|
||||||
return TcpDoChoSetPar2(pDriv,parname,value);
|
return TcpDoChoSetPar2(pDriv,parname,value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------*/
|
||||||
static int TcpDoChoGetPar(pCodri pDriv, char *parname,
|
static int TcpDoChoGetPar(pCodri pDriv, char *parname,
|
||||||
char *pBuffer, int iBuflen){
|
char *pBuffer, int iBuflen){
|
||||||
pTcpDoCho self = NULL;
|
pTcpDoCho self = NULL;
|
||||||
int status = 0, choNum, i, j, ready;
|
int status = 0, choNum, i, j, ready;
|
||||||
@ -744,12 +744,12 @@ static int TcpDoChoCheckPar(pCodri pDriv, char *parname){
|
|||||||
check for flags first
|
check for flags first
|
||||||
*/
|
*/
|
||||||
if(self->busy){
|
if(self->busy){
|
||||||
return HWBusy;
|
return HWBusy;
|
||||||
}
|
}
|
||||||
if(self->lastError != 0) {
|
if(self->lastError != 0) {
|
||||||
return HWFault;
|
return HWFault;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
updateintervall is always Idle
|
updateintervall is always Idle
|
||||||
*/
|
*/
|
||||||
@ -764,38 +764,38 @@ static int TcpDoChoCheckPar(pCodri pDriv, char *parname){
|
|||||||
memset(state,0,80*sizeof(char));
|
memset(state,0,80*sizeof(char));
|
||||||
StringDictGet(self->parameters,buffer,state,79);
|
StringDictGet(self->parameters,buffer,state,79);
|
||||||
if(strstr(state,"E-Stop") != NULL){
|
if(strstr(state,"E-Stop") != NULL){
|
||||||
self->lastError = HWFault;
|
self->lastError = HWFault;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(par,0,80);
|
memset(par,0,80);
|
||||||
dissectName(parname,par,&choNum);
|
dissectName(parname,par,&choNum);
|
||||||
if(strcmp(par,"speed") == 0){
|
if(strcmp(par,"speed") == 0){
|
||||||
snprintf(buffer,79,"RSPEED_%1.1d", choNum);
|
snprintf(buffer,79,"RSPEED_%1.1d", choNum);
|
||||||
StringDictGet(self->parameters,buffer,csoll,79);
|
StringDictGet(self->parameters,buffer,csoll,79);
|
||||||
sscanf(csoll,"%f",&soll);
|
sscanf(csoll,"%f",&soll);
|
||||||
snprintf(buffer,79,"ASPEED_%1.1d", choNum);
|
snprintf(buffer,79,"ASPEED_%1.1d", choNum);
|
||||||
StringDictGet(self->parameters,buffer,value,79);
|
StringDictGet(self->parameters,buffer,value,79);
|
||||||
sscanf(value,"%f",&val);
|
sscanf(value,"%f",&val);
|
||||||
delta = ABS(soll - val);
|
delta = ABS(soll - val);
|
||||||
if(delta > SPEEDTOL){
|
if(delta > SPEEDTOL){
|
||||||
return HWBusy;
|
return HWBusy;
|
||||||
} else {
|
} else {
|
||||||
return HWIdle;
|
return HWIdle;
|
||||||
}
|
}
|
||||||
} else if(strcmp(par,"phase") == 0){
|
} else if(strcmp(par,"phase") == 0){
|
||||||
snprintf(buffer,79,"RPHASE_%1.1d", choNum);
|
snprintf(buffer,79,"RPHASE_%1.1d", choNum);
|
||||||
StringDictGet(self->parameters,buffer,csoll,79);
|
StringDictGet(self->parameters,buffer,csoll,79);
|
||||||
sscanf(value,"%f",&soll);
|
sscanf(value,"%f",&soll);
|
||||||
snprintf(buffer,79,"APHASE_%1.1d", choNum);
|
snprintf(buffer,79,"APHASE_%1.1d", choNum);
|
||||||
StringDictGet(self->parameters,buffer,value,79);
|
StringDictGet(self->parameters,buffer,value,79);
|
||||||
sscanf(value,"%f",&val);
|
sscanf(value,"%f",&val);
|
||||||
delta = ABS(soll - val);
|
delta = ABS(soll - val);
|
||||||
if(delta > PHASETOL){
|
if(delta > PHASETOL){
|
||||||
return HWBusy;
|
return HWBusy;
|
||||||
} else {
|
} else {
|
||||||
return HWIdle;
|
return HWIdle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self->lastError = BADPAR;
|
self->lastError = BADPAR;
|
||||||
return HWFault;
|
return HWFault;
|
||||||
@ -810,36 +810,36 @@ static int TcpDoChoError(pCodri pDriv, int *iCode, char *pError, int iLen){
|
|||||||
|
|
||||||
*iCode = self->lastError;
|
*iCode = self->lastError;
|
||||||
switch(self->lastError){
|
switch(self->lastError){
|
||||||
case WRONGMODE:
|
case WRONGMODE:
|
||||||
strncpy(pError,"Chopper in wrong mode",iLen);
|
strncpy(pError,"Chopper in wrong mode",iLen);
|
||||||
break;
|
break;
|
||||||
case BADCONVERSION:
|
case BADCONVERSION:
|
||||||
strncpy(pError,"Bad ASCII to unicode conversion",iLen);
|
strncpy(pError,"Bad ASCII to unicode conversion",iLen);
|
||||||
break;
|
break;
|
||||||
case FAILEDCOMMAND:
|
case FAILEDCOMMAND:
|
||||||
strncpy(pError,"Command not accepted",iLen);
|
strncpy(pError,"Command not accepted",iLen);
|
||||||
break;
|
break;
|
||||||
case BADWRITE:
|
case BADWRITE:
|
||||||
strncpy(pError,"Failed to write to chopper controller",iLen);
|
strncpy(pError,"Failed to write to chopper controller",iLen);
|
||||||
break;
|
break;
|
||||||
case BADRESPONSE:
|
case BADRESPONSE:
|
||||||
strncpy(pError,"Chopper controller send invalid command",iLen);
|
strncpy(pError,"Chopper controller send invalid command",iLen);
|
||||||
break;
|
break;
|
||||||
case UNDRIVABLE:
|
case UNDRIVABLE:
|
||||||
strncpy(pError,"Parameter cannot be changed",iLen);
|
strncpy(pError,"Parameter cannot be changed",iLen);
|
||||||
break;
|
break;
|
||||||
case BADPAR:
|
case BADPAR:
|
||||||
strncpy(pError,"No such parameter",iLen);
|
strncpy(pError,"No such parameter",iLen);
|
||||||
break;
|
break;
|
||||||
case BADVALUE:
|
case BADVALUE:
|
||||||
strncpy(pError,"Invalid parameter value",iLen);
|
strncpy(pError,"Invalid parameter value",iLen);
|
||||||
break;
|
break;
|
||||||
case ESTOP:
|
case ESTOP:
|
||||||
strncpy(pError,"Emergency stop is engaged",iLen);
|
strncpy(pError,"Emergency stop is engaged",iLen);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
getRS232Error(self->lastError,pError,iLen);
|
||||||
break;
|
break;
|
||||||
default:
|
|
||||||
getRS232Error(self->lastError,pError,iLen);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -847,8 +847,8 @@ static int TcpDoChoError(pCodri pDriv, int *iCode, char *pError, int iLen){
|
|||||||
static int TcpDoChoFix(pCodri pDriv, int iCode){
|
static int TcpDoChoFix(pCodri pDriv, int iCode){
|
||||||
pTcpDoCho self = NULL;
|
pTcpDoCho self = NULL;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
assert(pDriv != NULL);
|
assert(pDriv != NULL);
|
||||||
self = (pTcpDoCho)pDriv->pPrivate;
|
self = (pTcpDoCho)pDriv->pPrivate;
|
||||||
@ -856,26 +856,26 @@ static int TcpDoChoFix(pCodri pDriv, int iCode){
|
|||||||
|
|
||||||
self->lastError = 0;
|
self->lastError = 0;
|
||||||
switch(iCode){
|
switch(iCode){
|
||||||
case BADCONVERSION:
|
case BADCONVERSION:
|
||||||
case BADRESPONSE:
|
case BADRESPONSE:
|
||||||
return CHREDO;
|
return CHREDO;
|
||||||
break;
|
break;
|
||||||
case WRONGMODE:
|
case WRONGMODE:
|
||||||
case FAILEDCOMMAND:
|
case FAILEDCOMMAND:
|
||||||
case UNDRIVABLE:
|
case UNDRIVABLE:
|
||||||
case BADPAR:
|
case BADPAR:
|
||||||
case ESTOP:
|
case ESTOP:
|
||||||
return CHFAIL;
|
return CHFAIL;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
closeRS232(self->controller);
|
closeRS232(self->controller);
|
||||||
status = TcpDoChoConnect(self);
|
status = TcpDoChoConnect(self);
|
||||||
if(status == 1){
|
if(status == 1){
|
||||||
return CHREDO;
|
return CHREDO;
|
||||||
} else {
|
} else {
|
||||||
return CHFAIL;
|
return CHFAIL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return CHFAIL;
|
return CHFAIL;
|
||||||
}
|
}
|
||||||
@ -888,21 +888,21 @@ pCodri MakeTcpDoChoDriver(char *tclArray, SConnection *pCon){
|
|||||||
int port, i, count;
|
int port, i, count;
|
||||||
Tcl_DString pars;
|
Tcl_DString pars;
|
||||||
char *parnames[] = {"State",
|
char *parnames[] = {"State",
|
||||||
"ASPEED",
|
"ASPEED",
|
||||||
"RSPEED",
|
"RSPEED",
|
||||||
"APHASE",
|
"APHASE",
|
||||||
"RPHASE",
|
"RPHASE",
|
||||||
"AVETO",
|
"AVETO",
|
||||||
"DIR",
|
"DIR",
|
||||||
"MONIT",
|
"MONIT",
|
||||||
"FLOWR",
|
"FLOWR",
|
||||||
"WTEMP",
|
"WTEMP",
|
||||||
"MTEMP",
|
"MTEMP",
|
||||||
"MVIBR",
|
"MVIBR",
|
||||||
"MVACU",
|
"MVACU",
|
||||||
"speed",
|
"speed",
|
||||||
"phase",
|
"phase",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -915,23 +915,23 @@ pCodri MakeTcpDoChoDriver(char *tclArray, SConnection *pCon){
|
|||||||
}
|
}
|
||||||
memset(pNew,0,sizeof(Codri));
|
memset(pNew,0,sizeof(Codri));
|
||||||
memset(self,0,sizeof(TcpDoCho));
|
memset(self,0,sizeof(TcpDoCho));
|
||||||
|
|
||||||
/* port and host name */
|
/* port and host name */
|
||||||
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"port",TCL_GLOBAL_ONLY);
|
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"port",TCL_GLOBAL_ONLY);
|
||||||
if(!pPtr){
|
if(!pPtr){
|
||||||
SCWrite(pCon,"ERROR: port not found in configuration array for TCP Dornier Chopper",
|
SCWrite(pCon,"ERROR: port not found in configuration array for TCP Dornier Chopper",
|
||||||
eError);
|
eError);
|
||||||
free(pNew);
|
free(pNew);
|
||||||
free(self);
|
free(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
sscanf(pPtr,"%d",&port);
|
sscanf(pPtr,"%d",&port);
|
||||||
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"host",TCL_GLOBAL_ONLY);
|
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"host",TCL_GLOBAL_ONLY);
|
||||||
if(!pPtr){
|
if(!pPtr){
|
||||||
SCWrite(pCon,"ERROR: host not found in configuration array for TCP Dornier Chopper",
|
SCWrite(pCon,"ERROR: host not found in configuration array for TCP Dornier Chopper",
|
||||||
eError);
|
eError);
|
||||||
free(pNew);
|
free(pNew);
|
||||||
free(self);
|
free(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
memset(buffer,0,132);
|
memset(buffer,0,132);
|
||||||
@ -941,27 +941,27 @@ pCodri MakeTcpDoChoDriver(char *tclArray, SConnection *pCon){
|
|||||||
/* number of choppers */
|
/* number of choppers */
|
||||||
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"nchopper",TCL_GLOBAL_ONLY);
|
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"nchopper",TCL_GLOBAL_ONLY);
|
||||||
if(!pPtr){
|
if(!pPtr){
|
||||||
SCWrite(pCon,"ERROR: nchopper not found in configuration array for TCP Dornier Chopper",
|
SCWrite(pCon,"ERROR: nchopper not found in configuration array for TCP Dornier Chopper",
|
||||||
eError);
|
eError);
|
||||||
free(pNew);
|
free(pNew);
|
||||||
free(self);
|
free(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
sscanf(pPtr,"%d",&port);
|
sscanf(pPtr,"%d",&port);
|
||||||
if(port < 0 || port > 8){
|
if(port < 0 || port > 8){
|
||||||
SCWrite(pCon,"ERROR: number of choppers not in range 1 - 8",eError);
|
SCWrite(pCon,"ERROR: number of choppers not in range 1 - 8",eError);
|
||||||
free(pNew);
|
free(pNew);
|
||||||
free(self);
|
free(self);
|
||||||
}
|
}
|
||||||
self->numChoppers = port;
|
self->numChoppers = port;
|
||||||
|
|
||||||
/* timeout */
|
/* timeout */
|
||||||
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"timeout",TCL_GLOBAL_ONLY);
|
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"timeout",TCL_GLOBAL_ONLY);
|
||||||
if(!pPtr){
|
if(!pPtr){
|
||||||
SCWrite(pCon,"ERROR: timeout not found in configuration array for TCP Dornier Chopper",
|
SCWrite(pCon,"ERROR: timeout not found in configuration array for TCP Dornier Chopper",
|
||||||
eError);
|
eError);
|
||||||
free(pNew);
|
free(pNew);
|
||||||
free(self);
|
free(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
sscanf(pPtr,"%d",&port);
|
sscanf(pPtr,"%d",&port);
|
||||||
@ -970,19 +970,19 @@ pCodri MakeTcpDoChoDriver(char *tclArray, SConnection *pCon){
|
|||||||
/* username and password */
|
/* username and password */
|
||||||
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"user",TCL_GLOBAL_ONLY);
|
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"user",TCL_GLOBAL_ONLY);
|
||||||
if(!pPtr){
|
if(!pPtr){
|
||||||
SCWrite(pCon,"ERROR: user not found in configuration array for TCP Dornier Chopper",
|
SCWrite(pCon,"ERROR: user not found in configuration array for TCP Dornier Chopper",
|
||||||
eError);
|
eError);
|
||||||
free(pNew);
|
free(pNew);
|
||||||
free(self);
|
free(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
strncpy(self->user,pPtr, 131);
|
strncpy(self->user,pPtr, 131);
|
||||||
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"password",TCL_GLOBAL_ONLY);
|
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"password",TCL_GLOBAL_ONLY);
|
||||||
if(!pPtr){
|
if(!pPtr){
|
||||||
SCWrite(pCon,"ERROR: password not found in configuration array for TCP Dornier Chopper",
|
SCWrite(pCon,"ERROR: password not found in configuration array for TCP Dornier Chopper",
|
||||||
eError);
|
eError);
|
||||||
free(pNew);
|
free(pNew);
|
||||||
free(self);
|
free(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
strncpy(self->pword,pPtr, 131);
|
strncpy(self->pword,pPtr, 131);
|
||||||
@ -992,16 +992,16 @@ pCodri MakeTcpDoChoDriver(char *tclArray, SConnection *pCon){
|
|||||||
*/
|
*/
|
||||||
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"config",TCL_GLOBAL_ONLY);
|
pPtr = Tcl_GetVar2(pServ->pSics->pTcl,tclArray,"config",TCL_GLOBAL_ONLY);
|
||||||
if(pPtr != NULL){
|
if(pPtr != NULL){
|
||||||
self->config = strdup(pPtr);
|
self->config = strdup(pPtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* initialize some more */
|
/* initialize some more */
|
||||||
self->parameters = CreateStringDict();
|
self->parameters = CreateStringDict();
|
||||||
if(self->parameters == NULL || self->controller == NULL){
|
if(self->parameters == NULL || self->controller == NULL){
|
||||||
SCWrite(pCon,"ERROR: out of memory in MakeTcpDoCho",eError);
|
SCWrite(pCon,"ERROR: out of memory in MakeTcpDoCho",eError);
|
||||||
free(pNew);
|
free(pNew);
|
||||||
free(self);
|
free(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
self->iRefreshIntervall = 60;
|
self->iRefreshIntervall = 60;
|
||||||
@ -1025,11 +1025,11 @@ pCodri MakeTcpDoChoDriver(char *tclArray, SConnection *pCon){
|
|||||||
count = 0;
|
count = 0;
|
||||||
Tcl_DStringAppend(&pars,"updateintervall",15);
|
Tcl_DStringAppend(&pars,"updateintervall",15);
|
||||||
while(parnames[count] != NULL){
|
while(parnames[count] != NULL){
|
||||||
for(i = 0; i < self->numChoppers; i++){
|
for(i = 0; i < self->numChoppers; i++){
|
||||||
snprintf(buffer,131,",%s_%1.1d", parnames[count], i + 1);
|
snprintf(buffer,131,",%s_%1.1d", parnames[count], i + 1);
|
||||||
Tcl_DStringAppend(&pars,buffer,strlen(buffer));
|
Tcl_DStringAppend(&pars,buffer,strlen(buffer));
|
||||||
}
|
}
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
pNew->pParList = strdup(Tcl_DStringValue(&pars));
|
pNew->pParList = strdup(Tcl_DStringValue(&pars));
|
||||||
Tcl_DStringFree(&pars);
|
Tcl_DStringFree(&pars);
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
/*--------------------------------------------------------------------------
|
/*--------------------------------------------------------------------------
|
||||||
L A K E S H O R E 3 4 0 D R I V
|
L A K E S H O R E 3 4 0 D R I V
|
||||||
|
|
||||||
This file contains the implementation of a driver for the
|
This file contains the implementation of a driver for the
|
||||||
Lakeshore 340 Temperature controller.
|
Lakeshore 340 Temperature controller.
|
||||||
|
|
||||||
|
|
||||||
Mark Koennecke, Juli 1997
|
Mark Koennecke, Juli 1997
|
||||||
Mark Lesha, January 2006 (based on ITC4 code)
|
Mark Lesha, January 2006 (based on ITC4 code)
|
||||||
|
|
||||||
@ -50,7 +50,7 @@
|
|||||||
|
|
||||||
typedef struct __EVDriver *pEVDriver;
|
typedef struct __EVDriver *pEVDriver;
|
||||||
|
|
||||||
#include <evdriver.i>
|
#include <evdriver.i>
|
||||||
/* Do we need these ?
|
/* Do we need these ?
|
||||||
#include <sics.h>
|
#include <sics.h>
|
||||||
#include <modriv.h>
|
#include <modriv.h>
|
||||||
@ -65,8 +65,8 @@
|
|||||||
|
|
||||||
pEVDriver CreateLAKESHORE340Driver(int argc, char *argv[]);
|
pEVDriver CreateLAKESHORE340Driver(int argc, char *argv[]);
|
||||||
int ConfigLAKESHORE340(pEVDriver self);
|
int ConfigLAKESHORE340(pEVDriver self);
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
pLAKESHORE340 pData;
|
pLAKESHORE340 pData;
|
||||||
@ -85,12 +85,12 @@
|
|||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
int iRet;
|
int iRet;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv)self->pPrivate;
|
pMe = (pLAKESHORE340Driv)self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
|
|
||||||
iRet = LAKESHORE340_Read(&pMe->pData,fPos);
|
iRet = LAKESHORE340_Read(&pMe->pData,fPos);
|
||||||
if(iRet <= 0 )
|
if(iRet <= 0 )
|
||||||
{
|
{
|
||||||
pMe->iLastError = iRet;
|
pMe->iLastError = iRet;
|
||||||
@ -103,13 +103,13 @@
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
static int LAKESHORE340Run(pEVDriver self, float fVal)
|
static int LAKESHORE340Run(pEVDriver self, float fVal)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
int iRet;
|
int iRet;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
@ -126,7 +126,7 @@
|
|||||||
static int LAKESHORE340Error(pEVDriver self, int *iCode, char *error, int iErrLen)
|
static int LAKESHORE340Error(pEVDriver self, int *iCode, char *error, int iErrLen)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv)self->pPrivate;
|
pMe = (pLAKESHORE340Driv)self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
@ -138,7 +138,7 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LAKESHORE340_ErrorTxt(&pMe->pData,pMe->iLastError,error,iErrLen);
|
LAKESHORE340_ErrorTxt(&pMe->pData,pMe->iLastError,error,iErrLen);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -147,7 +147,7 @@
|
|||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
int iRet;
|
int iRet;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
@ -160,13 +160,13 @@
|
|||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
static int LAKESHORE340Init(pEVDriver self)
|
static int LAKESHORE340Init(pEVDriver self)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
int iRet;
|
int iRet;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
@ -183,28 +183,28 @@
|
|||||||
{
|
{
|
||||||
pMe->iLastError = iRet;
|
pMe->iLastError = iRet;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
static int LAKESHORE340Close(pEVDriver self)
|
static int LAKESHORE340Close(pEVDriver self)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
|
|
||||||
LAKESHORE340_Close(&pMe->pData);
|
LAKESHORE340_Close(&pMe->pData);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static int LAKESHORE340Fix(pEVDriver self, int iError)
|
static int LAKESHORE340Fix(pEVDriver self, int iError)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
int iRet;
|
int iRet;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
@ -230,11 +230,11 @@
|
|||||||
if(iRet)
|
if(iRet)
|
||||||
{
|
{
|
||||||
return DEVREDO;
|
return DEVREDO;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return DEVFAULT;
|
return DEVFAULT;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
/* handable protocoll errors */
|
/* handable protocoll errors */
|
||||||
case EL734__BAD_TMO:
|
case EL734__BAD_TMO:
|
||||||
@ -243,19 +243,19 @@
|
|||||||
case -501: /* Bad_COM */
|
case -501: /* Bad_COM */
|
||||||
return DEVREDO;
|
return DEVREDO;
|
||||||
case -504: /* Badly formatted */
|
case -504: /* Badly formatted */
|
||||||
return DEVREDO;
|
return DEVREDO;
|
||||||
default:
|
default:
|
||||||
return DEVFAULT;
|
return DEVFAULT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return DEVFAULT;
|
return DEVFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
/* static int LAKESHORE340Halt(pEVDriver *self)
|
/* static int LAKESHORE340Halt(pEVDriver *self)
|
||||||
{
|
{
|
||||||
assert(self);
|
assert(self);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@ -263,28 +263,28 @@
|
|||||||
void KillLAKESHORE340(void *pData)
|
void KillLAKESHORE340(void *pData)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
|
|
||||||
pMe = (pLAKESHORE340Driv)pData;
|
pMe = (pLAKESHORE340Driv)pData;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
|
|
||||||
if(pMe->pHost)
|
if(pMe->pHost)
|
||||||
{
|
{
|
||||||
free(pMe->pHost);
|
free(pMe->pHost);
|
||||||
}
|
}
|
||||||
free(pMe);
|
free(pMe);
|
||||||
}
|
}
|
||||||
/*------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------*/
|
||||||
pEVDriver CreateLAKESHORE340Driver(int argc, char *argv[])
|
pEVDriver CreateLAKESHORE340Driver(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
pEVDriver pNew = NULL;
|
pEVDriver pNew = NULL;
|
||||||
pLAKESHORE340Driv pSim = NULL;
|
pLAKESHORE340Driv pSim = NULL;
|
||||||
|
|
||||||
/* check for arguments */
|
/* check for arguments */
|
||||||
if(argc < 3)
|
if(argc < 3)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
pNew = CreateEVDriver(argc,argv);
|
pNew = CreateEVDriver(argc,argv);
|
||||||
pSim = (pLAKESHORE340Driv)malloc(sizeof(LAKESHORE340Driv));
|
pSim = (pLAKESHORE340Driv)malloc(sizeof(LAKESHORE340Driv));
|
||||||
memset(pSim,0,sizeof(LAKESHORE340Driv));
|
memset(pSim,0,sizeof(LAKESHORE340Driv));
|
||||||
@ -294,23 +294,23 @@
|
|||||||
}
|
}
|
||||||
pNew->pPrivate = pSim;
|
pNew->pPrivate = pSim;
|
||||||
pNew->KillPrivate = KillLAKESHORE340;
|
pNew->KillPrivate = KillLAKESHORE340;
|
||||||
|
|
||||||
/* initalise pLAKESHORE340Driver */
|
/* initalise pLAKESHORE340Driver */
|
||||||
pSim->iControl = atoi(argv[2]);
|
pSim->iControl = atoi(argv[2]);
|
||||||
pSim->iRead = atoi(argv[1]);
|
pSim->iRead = atoi(argv[1]);
|
||||||
pSim->iLastError = 0;
|
pSim->iLastError = 0;
|
||||||
pSim->iTmo = 10;
|
pSim->iTmo = 10;
|
||||||
|
|
||||||
/* The LAKESHORE340 doesn't require divisors or multipliers
|
/* The LAKESHORE340 doesn't require divisors or multipliers
|
||||||
and they are always forced to 1.0 */
|
and they are always forced to 1.0 */
|
||||||
pSim->fDiv = 1.0;
|
pSim->fDiv = 1.0;
|
||||||
pSim->fMult = 1.0;
|
pSim->fMult = 1.0;
|
||||||
|
|
||||||
pSim->pHost = strdup(argv[0]);
|
pSim->pHost = strdup(argv[0]);
|
||||||
pSim->iPort = 0;
|
pSim->iPort = 0;
|
||||||
pSim->iChannel = 0;
|
pSim->iChannel = 0;
|
||||||
|
|
||||||
|
|
||||||
/* initialise function pointers */
|
/* initialise function pointers */
|
||||||
pNew->SetValue = LAKESHORE340Run;
|
pNew->SetValue = LAKESHORE340Run;
|
||||||
pNew->GetValue = GetLAKESHORE340Pos;
|
pNew->GetValue = GetLAKESHORE340Pos;
|
||||||
@ -319,20 +319,20 @@
|
|||||||
pNew->TryFixIt = LAKESHORE340Fix;
|
pNew->TryFixIt = LAKESHORE340Fix;
|
||||||
pNew->Init = LAKESHORE340Init;
|
pNew->Init = LAKESHORE340Init;
|
||||||
pNew->Close = LAKESHORE340Close;
|
pNew->Close = LAKESHORE340Close;
|
||||||
|
|
||||||
return pNew;
|
return pNew;
|
||||||
}
|
}
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
int ConfigLAKESHORE340(pEVDriver self)
|
int ConfigLAKESHORE340(pEVDriver self)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
int iRet;
|
int iRet;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
|
|
||||||
iRet = LAKESHORE340_Config(&pMe->pData, pMe->iTmo, pMe->iRead,
|
iRet = LAKESHORE340_Config(&pMe->pData, pMe->iTmo, pMe->iRead,
|
||||||
pMe->iControl,pMe->fDiv,pMe->fMult);
|
pMe->iControl,pMe->fDiv,pMe->fMult);
|
||||||
if(iRet < 0)
|
if(iRet < 0)
|
||||||
{
|
{
|
||||||
@ -345,17 +345,17 @@
|
|||||||
int SetSensorLAKESHORE340(pEVDriver self, int iSensor)
|
int SetSensorLAKESHORE340(pEVDriver self, int iSensor)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
|
|
||||||
/* The LAKESHORE340 allows bath temp, external temp and tank temp to be read
|
/* The LAKESHORE340 allows bath temp, external temp and tank temp to be read
|
||||||
so allow iRead=1 to 4 for A,B,C,D respectively. */
|
so allow iRead=1 to 4 for A,B,C,D respectively. */
|
||||||
if( (iSensor < 1) || (iSensor > 4) )
|
if( (iSensor < 1) || (iSensor > 4) )
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
pMe->iRead = iSensor;
|
pMe->iRead = iSensor;
|
||||||
pMe->pData->iRead = iSensor;
|
pMe->pData->iRead = iSensor;
|
||||||
return 1;
|
return 1;
|
||||||
@ -364,17 +364,17 @@
|
|||||||
int SetControlLAKESHORE340(pEVDriver self, int iSensor)
|
int SetControlLAKESHORE340(pEVDriver self, int iSensor)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
|
|
||||||
/* For the LAKESHORE340 allow selection of internal or external control
|
/* For the LAKESHORE340 allow selection of internal or external control
|
||||||
where iControl==1 to 4 for A,B,C,D respectively. */
|
where iControl==1 to 4 for A,B,C,D respectively. */
|
||||||
if( (iSensor < 1) || (iSensor > 4) )
|
if( (iSensor < 1) || (iSensor > 4) )
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
pMe->iControl = iSensor;
|
pMe->iControl = iSensor;
|
||||||
pMe->pData->iControl = iSensor;
|
pMe->pData->iControl = iSensor;
|
||||||
return 1;
|
return 1;
|
||||||
@ -383,7 +383,7 @@
|
|||||||
int SetTMOLAKESHORE340(pEVDriver self, int iSensor)
|
int SetTMOLAKESHORE340(pEVDriver self, int iSensor)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
@ -391,7 +391,7 @@
|
|||||||
if(iSensor < 10)
|
if(iSensor < 10)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
pMe->iTmo = iSensor;
|
pMe->iTmo = iSensor;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -399,7 +399,7 @@
|
|||||||
int GetControlLAKESHORE340(pEVDriver self)
|
int GetControlLAKESHORE340(pEVDriver self)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
@ -410,7 +410,7 @@
|
|||||||
int GetSensorLAKESHORE340(pEVDriver self)
|
int GetSensorLAKESHORE340(pEVDriver self)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
@ -421,7 +421,7 @@
|
|||||||
int GetTMOLAKESHORE340(pEVDriver self)
|
int GetTMOLAKESHORE340(pEVDriver self)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
@ -432,7 +432,7 @@
|
|||||||
float GetDivisorLAKESHORE340(pEVDriver self)
|
float GetDivisorLAKESHORE340(pEVDriver self)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
@ -443,12 +443,12 @@
|
|||||||
int SetDivisorLAKESHORE340(pEVDriver self, float fDiv)
|
int SetDivisorLAKESHORE340(pEVDriver self, float fDiv)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
|
|
||||||
/* The LAKESHORE340 doesn't need divisor, force to 1.0 */
|
/* The LAKESHORE340 doesn't need divisor, force to 1.0 */
|
||||||
pMe->fDiv = 1.0; /* fDiv */;
|
pMe->fDiv = 1.0; /* fDiv */;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -456,7 +456,7 @@
|
|||||||
float GetMultLAKESHORE340(pEVDriver self)
|
float GetMultLAKESHORE340(pEVDriver self)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
@ -467,13 +467,13 @@
|
|||||||
int SetMultLAKESHORE340(pEVDriver self, float fDiv)
|
int SetMultLAKESHORE340(pEVDriver self, float fDiv)
|
||||||
{
|
{
|
||||||
pLAKESHORE340Driv pMe = NULL;
|
pLAKESHORE340Driv pMe = NULL;
|
||||||
|
|
||||||
assert(self);
|
assert(self);
|
||||||
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
pMe = (pLAKESHORE340Driv )self->pPrivate;
|
||||||
assert(pMe);
|
assert(pMe);
|
||||||
|
|
||||||
/* The LAKESHORE340 doesn't need multiplier, force to 1.0 */
|
/* The LAKESHORE340 doesn't need multiplier, force to 1.0 */
|
||||||
pMe->fMult = 1.0; /* fDiv */;
|
pMe->fMult = 1.0; /* fDiv */;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user