forked from epics_driver_modules/motorBase
Changes for new asynOctetSyncIO API
This commit is contained in:
@@ -287,6 +287,7 @@ STATIC RTN_STATUS send_mess(int card, const char *com, char *name)
|
||||
{
|
||||
char buff[BUFF_SIZE];
|
||||
struct MCB4Bcontroller *cntrl;
|
||||
int nwrite;
|
||||
|
||||
/* Check that card exists */
|
||||
if (!motor_state[card])
|
||||
@@ -305,7 +306,7 @@ STATIC RTN_STATUS send_mess(int card, const char *com, char *name)
|
||||
Debug(2, "send_mess: sending message to card %d, message=%s\n",\
|
||||
card, buff);
|
||||
|
||||
pasynOctetSyncIO->write(cntrl->pasynUser, buff, strlen(buff), TIMEOUT);
|
||||
pasynOctetSyncIO->write(cntrl->pasynUser, buff, strlen(buff), TIMEOUT, &nwrite);
|
||||
|
||||
return (OK);
|
||||
}
|
||||
@@ -318,7 +319,8 @@ STATIC RTN_STATUS send_mess(int card, const char *com, char *name)
|
||||
STATIC int recv_mess(int card, char *com, int flag)
|
||||
{
|
||||
double timeout;
|
||||
int len=0;
|
||||
int nread=0;
|
||||
asynStatus status;
|
||||
struct MCB4Bcontroller *cntrl;
|
||||
int flush;
|
||||
int eomReason;
|
||||
@@ -341,18 +343,18 @@ STATIC int recv_mess(int card, char *com, int flag)
|
||||
flush = 0;
|
||||
timeout = TIMEOUT;
|
||||
}
|
||||
len = pasynOctetSyncIO->read(cntrl->pasynUser, com, MAX_MSG_SIZE,
|
||||
"\r", 1, flush, timeout, &eomReason);
|
||||
status = pasynOctetSyncIO->read(cntrl->pasynUser, com, MAX_MSG_SIZE,
|
||||
"\r", 1, flush, timeout, &nread, &eomReason);
|
||||
|
||||
/* The response from the MCB4B is terminated with CR. Remove */
|
||||
if (len < 1) com[0] = '\0';
|
||||
else com[len-1] = '\0';
|
||||
if (nread < 1) com[0] = '\0';
|
||||
else com[nread-1] = '\0';
|
||||
|
||||
if (len > 0) {
|
||||
if (nread > 0) {
|
||||
Debug(2, "recv_mess: card %d, message = \"%s\"\n",\
|
||||
card, com);
|
||||
}
|
||||
if (len == 0) {
|
||||
if (nread == 0) {
|
||||
if (flag != FLUSH) {
|
||||
Debug(1, "recv_mess: card %d ERROR: no response\n",\
|
||||
card);
|
||||
@@ -362,7 +364,7 @@ STATIC int recv_mess(int card, char *com, int flag)
|
||||
}
|
||||
}
|
||||
|
||||
return (len);
|
||||
return (nread);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -348,7 +348,7 @@ STATIC RTN_STATUS send_mess(int card, const char *com, char *name)
|
||||
char buff[BUFF_SIZE];
|
||||
char response[BUFF_SIZE];
|
||||
struct PM304controller *cntrl;
|
||||
int eomReason;
|
||||
int nwrite, nread, eomReason;
|
||||
|
||||
/* Check that card exists */
|
||||
if (!motor_state[card])
|
||||
@@ -369,7 +369,7 @@ STATIC RTN_STATUS send_mess(int card, const char *com, char *name)
|
||||
strcat(buff, OUTPUT_TERMINATOR);
|
||||
Debug(2, "send_mess: sending message to card %d, message=%s\n", card, buff);
|
||||
pasynOctetSyncIO->writeRead(cntrl->pasynUser, buff, strlen(buff), response,
|
||||
BUFF_SIZE, INPUT_TERMINATOR, 1, TIMEOUT, &eomReason);
|
||||
BUFF_SIZE, INPUT_TERMINATOR, 1, TIMEOUT, &nwrite, &nread, &eomReason);
|
||||
Debug(2, "send_mess: card %d, response=%s\n", card, response);
|
||||
}
|
||||
|
||||
@@ -389,11 +389,11 @@ STATIC RTN_STATUS send_mess(int card, const char *com, char *name)
|
||||
STATIC int recv_mess(int card, char *com, int flag)
|
||||
{
|
||||
double timeout;
|
||||
int len=0;
|
||||
char *pos;
|
||||
char temp[BUFF_SIZE];
|
||||
int flush;
|
||||
int eomReason;
|
||||
asynStatus status;
|
||||
int nread=0, eomReason;
|
||||
struct PM304controller *cntrl;
|
||||
|
||||
com[0] = '\0';
|
||||
@@ -413,15 +413,15 @@ STATIC int recv_mess(int card, char *com, int flag)
|
||||
flush = 0;
|
||||
timeout = TIMEOUT;
|
||||
}
|
||||
len = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE,
|
||||
INPUT_TERMINATOR, 1, flush, timeout, &eomReason);
|
||||
status = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE,
|
||||
INPUT_TERMINATOR, 1, flush, timeout, &nread, &eomReason);
|
||||
|
||||
/* The response from the PM304 is terminated with CR/LF. Remove these */
|
||||
if (len < 2) com[0] = '\0'; else com[len-2] = '\0';
|
||||
if (len > 0) {
|
||||
if (nread < 2) com[0] = '\0'; else com[nread-2] = '\0';
|
||||
if (nread > 0) {
|
||||
Debug(2, "recv_mess: card %d, flag=%d, message = \"%s\"\n", card, flag, com);
|
||||
}
|
||||
if (len == 0) {
|
||||
if (nread == 0) {
|
||||
if (flag != FLUSH) {
|
||||
Debug(1, "recv_mess: card %d read ERROR: no response\n", card);
|
||||
} else {
|
||||
@@ -458,9 +458,9 @@ STATIC int send_recv_mess(int card, const char *out, char *response)
|
||||
char *p, *tok_save;
|
||||
char buff[BUFF_SIZE];
|
||||
struct PM304controller *cntrl;
|
||||
int len=0;
|
||||
char *pos;
|
||||
int eomReason;
|
||||
asynStatus status;
|
||||
int nwrite, nread=0, eomReason;
|
||||
char temp[BUFF_SIZE];
|
||||
|
||||
response[0] = '\0';
|
||||
@@ -483,17 +483,17 @@ STATIC int send_recv_mess(int card, const char *out, char *response)
|
||||
strcpy(buff, p);
|
||||
strcat(buff, OUTPUT_TERMINATOR);
|
||||
Debug(2, "send_recv_mess: sending message to card %d, message=%s\n", card, buff);
|
||||
len = pasynOctetSyncIO->writeRead(cntrl->pasynUser, buff, strlen(buff),
|
||||
status = pasynOctetSyncIO->writeRead(cntrl->pasynUser, buff, strlen(buff),
|
||||
response, BUFF_SIZE, INPUT_TERMINATOR, 1, TIMEOUT,
|
||||
&eomReason);
|
||||
&nwrite, &nread, &eomReason);
|
||||
}
|
||||
|
||||
/* The response from the PM304 is terminated with CR/LF. Remove these */
|
||||
if (len < 2) response[0] = '\0'; else response[len-2] = '\0';
|
||||
if (len > 0) {
|
||||
if (nread < 2) response[0] = '\0'; else response[nread-2] = '\0';
|
||||
if (nread > 0) {
|
||||
Debug(2, "send_recv_mess: card %d, response = \"%s\"\n", card, response);
|
||||
}
|
||||
if (len == 0) {
|
||||
if (nread == 0) {
|
||||
Debug(1, "send_recv_mess: card %d ERROR: no response\n", card);
|
||||
}
|
||||
/* The PM600 always echoes the command sent to it, before sending the response. It is terminated
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
FILENAME... drvESP300.cc
|
||||
USAGE... Motor record driver level support for Newport ESP300.
|
||||
|
||||
Version: $Revision: 1.14 $
|
||||
Modified By: $Author: sluiter $
|
||||
Last Modified: $Date: 2004-09-21 14:47:01 $
|
||||
Version: $Revision: 1.15 $
|
||||
Modified By: $Author: rivers $
|
||||
Last Modified: $Date: 2004-09-28 23:52:58 $
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -352,6 +352,7 @@ static RTN_STATUS send_mess(int card, char const *com, char *name)
|
||||
struct MMcontroller *cntrl;
|
||||
char local_buff[BUFF_SIZE];
|
||||
int size;
|
||||
int nwrite;
|
||||
|
||||
size = strlen(com);
|
||||
|
||||
@@ -383,7 +384,7 @@ static RTN_STATUS send_mess(int card, char const *com, char *name)
|
||||
cntrl = (struct MMcontroller *) motor_state[card]->DevicePrivate;
|
||||
|
||||
pasynOctetSyncIO->write(cntrl->pasynUser, local_buff, strlen(local_buff),
|
||||
SERIAL_TIMEOUT);
|
||||
SERIAL_TIMEOUT, &nwrite);
|
||||
|
||||
return(OK);
|
||||
}
|
||||
@@ -437,7 +438,8 @@ static int recv_mess(int card, char *com, int flag)
|
||||
struct MMcontroller *cntrl;
|
||||
double timeout = 0.;
|
||||
int flush = 1;
|
||||
int len = 0;
|
||||
int nread = 0;
|
||||
asynStatus status;
|
||||
int eomReason;
|
||||
|
||||
/* Check that card exists */
|
||||
@@ -450,32 +452,32 @@ static int recv_mess(int card, char *com, int flag)
|
||||
flush = 0;
|
||||
timeout = SERIAL_TIMEOUT;
|
||||
}
|
||||
len = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE,
|
||||
"\n", 1, flush, timeout, &eomReason);
|
||||
if (len > 3 && com[0] == 'E')
|
||||
status = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE,
|
||||
"\n", 1, flush, timeout, &nread, &eomReason);
|
||||
if (nread > 3 && com[0] == 'E')
|
||||
{
|
||||
long error;
|
||||
|
||||
error = strtol(&com[1], NULL, 0);
|
||||
if (error >= 35 && error <= 42)
|
||||
len = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE,
|
||||
"\n", 1, flush, timeout, &eomReason);
|
||||
status = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE,
|
||||
"\n", 1, flush, timeout, &nread, &eomReason);
|
||||
}
|
||||
|
||||
if (len <= 0)
|
||||
if ((status != asynSuccess) || (nread <= 0))
|
||||
{
|
||||
com[0] = '\0';
|
||||
len = 0;
|
||||
nread = 0;
|
||||
}
|
||||
else
|
||||
/* ESP300 responses are always terminated with CR/LF combination (see
|
||||
* ESP300 User' Manual Sec. 3.4 NOTE). Strip both CR&LF from buffer
|
||||
* before returning to caller.
|
||||
*/
|
||||
com[len-2] = '\0';
|
||||
com[nread-2] = '\0';
|
||||
|
||||
Debug(2, "recv_mess(): message = \"%s\"\n", com);
|
||||
return(len);
|
||||
return(nread);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
FILENAME... drvMM3000.cc
|
||||
USAGE... Motor record driver level support for Newport MM3000.
|
||||
|
||||
Version: $Revision: 1.13 $
|
||||
Modified By: $Author: sluiter $
|
||||
Last Modified: $Date: 2004-09-21 14:45:38 $
|
||||
Version: $Revision: 1.14 $
|
||||
Modified By: $Author: rivers $
|
||||
Last Modified: $Date: 2004-09-28 23:52:58 $
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -388,6 +388,7 @@ STATIC RTN_STATUS send_mess(int card, char const *com, char *name)
|
||||
struct MMcontroller *cntrl;
|
||||
char local_buff[BUFF_SIZE];
|
||||
int size;
|
||||
int nwrite;
|
||||
|
||||
size = strlen(com);
|
||||
|
||||
@@ -419,7 +420,7 @@ STATIC RTN_STATUS send_mess(int card, char const *com, char *name)
|
||||
cntrl = (struct MMcontroller *) motor_state[card]->DevicePrivate;
|
||||
|
||||
pasynOctetSyncIO->write(cntrl->pasynUser, local_buff, strlen(local_buff),
|
||||
SERIAL_TIMEOUT);
|
||||
SERIAL_TIMEOUT, &nwrite);
|
||||
|
||||
return(OK);
|
||||
}
|
||||
@@ -473,8 +474,9 @@ STATIC int recv_mess(int card, char *com, int flag)
|
||||
struct MMcontroller *cntrl;
|
||||
double timeout = 0.;
|
||||
int flush = 1;
|
||||
int len = 0;
|
||||
int nread = 0;
|
||||
int eomReason;
|
||||
asynStatus status;
|
||||
|
||||
/* Check that card exists */
|
||||
if (!motor_state[card])
|
||||
@@ -486,23 +488,23 @@ STATIC int recv_mess(int card, char *com, int flag)
|
||||
flush = 0;
|
||||
timeout = SERIAL_TIMEOUT;
|
||||
}
|
||||
len = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE, (char *)
|
||||
"\n", 1, flush, timeout, &eomReason);
|
||||
if (len > 3 && com[0] == 'E')
|
||||
status = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE, (char *)
|
||||
"\n", 1, flush, timeout, &nread, &eomReason);
|
||||
if (nread > 3 && com[0] == 'E')
|
||||
{
|
||||
long error;
|
||||
|
||||
error = strtol(&com[1], NULL, 0);
|
||||
if (error >= 35 && error <= 42)
|
||||
len = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE,
|
||||
status = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE,
|
||||
(char *) "\n", 1, flush, timeout,
|
||||
&eomReason);
|
||||
&nread, &eomReason);
|
||||
}
|
||||
|
||||
if (len <= 0)
|
||||
if ((status != asynSuccess) || (nread <= 0))
|
||||
{
|
||||
com[0] = '\0';
|
||||
len = 0;
|
||||
nread = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -510,7 +512,7 @@ STATIC int recv_mess(int card, char *com, int flag)
|
||||
* MM3000 User' Manual Sec. 3.4 NOTE). Strip both CR&LF from buffer
|
||||
* before returning to caller.
|
||||
*/
|
||||
com[len-2] = '\0';
|
||||
com[nread-2] = '\0';
|
||||
/* Test for "system error" response. */
|
||||
if (com[0] == 'E')
|
||||
{
|
||||
@@ -520,7 +522,7 @@ STATIC int recv_mess(int card, char *com, int flag)
|
||||
}
|
||||
|
||||
Debug(2, "recv_mess(): message = \"%s\"\n", com);
|
||||
return (len);
|
||||
return (nread);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
FILENAME... drvMM4000.cc
|
||||
USAGE... Motor record driver level support for Newport MM4000.
|
||||
|
||||
Version: $Revision: 1.13 $
|
||||
Modified By: $Author: sluiter $
|
||||
Last Modified: $Date: 2004-09-21 14:48:33 $
|
||||
Version: $Revision: 1.14 $
|
||||
Modified By: $Author: rivers $
|
||||
Last Modified: $Date: 2004-09-28 23:52:59 $
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -462,6 +462,7 @@ static RTN_STATUS send_mess(int card, char const *com, char *name)
|
||||
struct MMcontroller *cntrl;
|
||||
char local_buff[BUFF_SIZE];
|
||||
int size;
|
||||
int nwrite;
|
||||
|
||||
size = strlen(com);
|
||||
|
||||
@@ -493,7 +494,7 @@ static RTN_STATUS send_mess(int card, char const *com, char *name)
|
||||
cntrl = (struct MMcontroller *) motor_state[card]->DevicePrivate;
|
||||
|
||||
pasynOctetSyncIO->write(cntrl->pasynUser, local_buff, strlen(local_buff),
|
||||
TIMEOUT);
|
||||
TIMEOUT, &nwrite);
|
||||
|
||||
return(OK);
|
||||
}
|
||||
@@ -520,7 +521,8 @@ static int recv_mess(int card, char *com, int flag)
|
||||
struct MMcontroller *cntrl;
|
||||
double timeout = 0.;
|
||||
int flush = 0;
|
||||
int len = 0;
|
||||
int nread = 0;
|
||||
asynStatus status;
|
||||
int eomReason;
|
||||
|
||||
/* Check that card exists */
|
||||
@@ -530,19 +532,19 @@ static int recv_mess(int card, char *com, int flag)
|
||||
cntrl = (struct MMcontroller *) motor_state[card]->DevicePrivate;
|
||||
|
||||
timeout = TIMEOUT;
|
||||
len = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE, (char *) "\r",
|
||||
1, flush, timeout, &eomReason);
|
||||
status = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE, (char *) "\r",
|
||||
1, flush, timeout, &nread, &eomReason);
|
||||
|
||||
if (len <= 0)
|
||||
if ((status != asynSuccess) || (nread <= 0))
|
||||
{
|
||||
com[0] = '\0';
|
||||
len = 0;
|
||||
nread = 0;
|
||||
}
|
||||
else
|
||||
com[len-1] = '\0';
|
||||
com[nread-1] = '\0';
|
||||
|
||||
Debug(2, "recv_mess(): message = \"%s\"\n", com);
|
||||
return(len);
|
||||
return(nread);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
FILENAME... drvPM500.cc
|
||||
USAGE... Motor record driver level support for Newport PM500.
|
||||
|
||||
Version: $Revision: 1.12 $
|
||||
Modified By: $Author: sluiter $
|
||||
Last Modified: $Date: 2004-09-21 14:57:12 $
|
||||
Version: $Revision: 1.13 $
|
||||
Modified By: $Author: rivers $
|
||||
Last Modified: $Date: 2004-09-28 23:52:59 $
|
||||
*/
|
||||
|
||||
/* Device Driver Support routines for PM500 motor controller */
|
||||
@@ -346,6 +346,7 @@ static RTN_STATUS send_mess(int card, char const *com, char *name)
|
||||
struct MMcontroller *cntrl;
|
||||
char local_buff[BUFF_SIZE];
|
||||
int size;
|
||||
int nwrite;
|
||||
|
||||
size = strlen(com);
|
||||
|
||||
@@ -372,7 +373,7 @@ static RTN_STATUS send_mess(int card, char const *com, char *name)
|
||||
cntrl = (struct MMcontroller *) motor_state[card]->DevicePrivate;
|
||||
|
||||
pasynOctetSyncIO->write(cntrl->pasynUser, local_buff, strlen(local_buff),
|
||||
SERIAL_TIMEOUT);
|
||||
SERIAL_TIMEOUT, &nwrite);
|
||||
|
||||
return(OK);
|
||||
}
|
||||
@@ -399,7 +400,8 @@ static int recv_mess(int card, char *com, int flag)
|
||||
struct MMcontroller *cntrl;
|
||||
double timeout = 0.;
|
||||
int flush=1;
|
||||
int len = 0;
|
||||
int nread = 0;
|
||||
asynStatus status;
|
||||
int eomReason;
|
||||
|
||||
/* Check that card exists */
|
||||
@@ -412,24 +414,24 @@ static int recv_mess(int card, char *com, int flag)
|
||||
flush=0;
|
||||
timeout = SERIAL_TIMEOUT;
|
||||
}
|
||||
len = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE, "\r",
|
||||
1, flush, timeout, &eomReason);
|
||||
status = pasynOctetSyncIO->read(cntrl->pasynUser, com, BUFF_SIZE, "\r",
|
||||
1, flush, timeout, &nread, &eomReason);
|
||||
|
||||
if (len <= 0)
|
||||
if ((status != asynSuccess) || (nread <= 0))
|
||||
{
|
||||
com[0] = '\0';
|
||||
len = 0;
|
||||
nread = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
com[len-1] = '\0';
|
||||
com[nread-1] = '\0';
|
||||
/* Test for "system error" response. */
|
||||
if (strncmp(com, "SE", 2) == 0)
|
||||
errlogMessage("recv_mess(): PM500 system error.\n");
|
||||
}
|
||||
|
||||
Debug(2, "recv_mess(): message = \"%s\"\n", com);
|
||||
return(len);
|
||||
return(nread);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user