Changes for new asynOctetSyncIO API

This commit is contained in:
MarkRivers
2004-09-28 23:53:28 +00:00
parent 5796e00bad
commit 26a0f48b62
6 changed files with 85 additions and 75 deletions
+11 -9
View File
@@ -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);
}
+16 -16
View File
@@ -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
+16 -14
View File
@@ -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);
}
+16 -14
View File
@@ -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);
}
+13 -11
View File
@@ -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);
}
+13 -11
View File
@@ -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);
}