diff --git a/motorApp/ImsSrc/drvIM483SM.cc b/motorApp/ImsSrc/drvIM483SM.cc index 71ab8edb..9a1535e4 100644 --- a/motorApp/ImsSrc/drvIM483SM.cc +++ b/motorApp/ImsSrc/drvIM483SM.cc @@ -3,9 +3,9 @@ FILENAME... drvIM483SM.cc USAGE... Motor record driver level support for Intelligent Motion Systems, Inc. IM483(I/IE). -Version: $Revision: 1.11 $ -Modified By: $Author: rivers $ -Last Modified: $Date: 2004-08-17 21:28:30 $ +Version: $Revision: 1.12 $ +Modified By: $Author: sluiter $ +Last Modified: $Date: 2004-09-20 21:05:39 $ */ /***************************************************************** @@ -34,6 +34,7 @@ of this distribution. * .04 03/07/03 rls R3.14 conversion. * .05 02/03/04 rls Eliminate erroneous "Motor motion timeout ERROR". * .06 07/01/04 rls Converted from MPF to asyn. + * .07 09/20/04 rls support for 32axes/controller. */ /* @@ -88,9 +89,9 @@ int IM483SM_num_cards = 0; /*----------------functions-----------------*/ static int recv_mess(int, char *, int); -static RTN_STATUS send_mess(int card, char const *com, char c); -static int set_status(int card, int signal); -static long report(int level); +static RTN_STATUS send_mess(int, char const *, char *); +static int set_status(int, int); +static long report(int); static long init(); static int motor_init(); static void query_done(int, int, struct mess_node *); @@ -373,7 +374,7 @@ exit: /* send a message to the IM483SM board */ /* send_mess() */ /*****************************************************/ -static RTN_STATUS send_mess(int card, char const *com, char inchar) +static RTN_STATUS send_mess(int card, char const *com, char *name) { char local_buff[MAX_MSG_SIZE]; struct IM483controller *cntrl; @@ -395,9 +396,9 @@ static RTN_STATUS send_mess(int card, char const *com, char inchar) return(ERROR); } - if (inchar != (char) NULL) + if (name != NULL) { - errlogPrintf("drvIM483SM.c:send_mess() - invalid argument = %c\n", inchar); + errlogPrintf("drvIM483SM.c:send_mess() - invalid argument = %s\n", name); return(ERROR); } @@ -405,9 +406,6 @@ static RTN_STATUS send_mess(int card, char const *com, char inchar) strcpy(local_buff, com); strcat(local_buff, "\r"); - if (inchar != (char) NULL) - local_buff[0] = inchar; /* put in axis */ - Debug(2, "send_mess(): message = %s\n", local_buff); cntrl = (struct IM483controller *) motor_state[card]->DevicePrivate; diff --git a/motorApp/ImsSrc/drvMDrive.cc b/motorApp/ImsSrc/drvMDrive.cc index 55d47461..cecc06eb 100644 --- a/motorApp/ImsSrc/drvMDrive.cc +++ b/motorApp/ImsSrc/drvMDrive.cc @@ -3,9 +3,9 @@ FILENAME... drvMDrive.cc USAGE... Motor record driver level support for Intelligent Motion Systems, Inc. MDrive series; M17, M23, M34. -Version: $Revision: 1.12 $ -Modified By: $Author: rivers $ -Last Modified: $Date: 2004-08-17 21:28:30 $ +Version: $Revision: 1.13 $ +Modified By: $Author: sluiter $ +Last Modified: $Date: 2004-09-20 21:10:34 $ */ /* @@ -41,6 +41,8 @@ Last Modified: $Date: 2004-08-17 21:28:30 $ * Kevin Peterson's eat_garbage() function. Added support * for encoder detection via "ident". * .04 07/01/04 rls Converted from MPF to asyn. + * .05 09/20/04 rls - support for 32axes/controller. + * - remove '?' command string padding. */ /* @@ -79,7 +81,7 @@ DESIGN LIMITATIONS... /* --- Local data. --- */ int MDrive_num_cards = 0; -static char MDrive_axis[8] = {'1', '2', '3', '4', '5', '6', '7', '8'}; +static char *MDrive_axis[] = {"1", "2", "3", "4", "5", "6", "7", "8"}; /* Local data required for every driver; see "motordrvComCode.h" */ #include "motordrvComCode.h" @@ -87,9 +89,9 @@ static char MDrive_axis[8] = {'1', '2', '3', '4', '5', '6', '7', '8'}; /*----------------functions-----------------*/ static int eat_garbage(int, char *, int); static int recv_mess(int, char *, int); -static RTN_STATUS send_mess(int card, char const *com, char c); -static int set_status(int card, int signal); -static long report(int level); +static RTN_STATUS send_mess(int, char const *, char *); +static int set_status(int, int); +static long report(int); static long init(); static int motor_init(); static void query_done(int, int, struct mess_node *); @@ -265,7 +267,7 @@ static int set_status(int card, int signal) nodeptr = motor_info->motor_motion; status.All = motor_info->status.All; - send_mess(card, "?PR MV", MDrive_axis[signal]); + send_mess(card, "PR MV", MDrive_axis[signal]); eat_garbage(card, buff, 1); rtn_state = recv_mess(card, buff, 1); if (rtn_state > 0) @@ -301,7 +303,7 @@ static int set_status(int card, int signal) * Skip to substring for this motor, convert to double */ - send_mess(card, "?PR P", MDrive_axis[signal]); + send_mess(card, "PR P", MDrive_axis[signal]); eat_garbage(card, buff, 1); recv_mess(card, buff, 1); @@ -324,7 +326,7 @@ static int set_status(int card, int signal) plusdir = (status.Bits.RA_DIRECTION) ? true : false; - send_mess(card, "?PR IN", MDrive_axis[signal]); + send_mess(card, "PR IN", MDrive_axis[signal]); eat_garbage(card, buff, 1); recv_mess(card, buff, 1); inputs.All = atoi(buff); @@ -362,7 +364,7 @@ static int set_status(int card, int signal) motor_info->encoder_position = 0; else { - send_mess(card, "?PR C2", MDrive_axis[signal]); + send_mess(card, "PR C2", MDrive_axis[signal]); eat_garbage(card, buff, 1); recv_mess(card, buff, 1); motorData = atof(buff); @@ -401,7 +403,7 @@ exit: /* send a message to the MDrive board */ /* send_mess() */ /*****************************************************/ -static RTN_STATUS send_mess(int card, char const *com, char inchar) +static RTN_STATUS send_mess(int card, char const *com, char *name) { char local_buff[MAX_MSG_SIZE]; struct IM483controller *cntrl; @@ -424,11 +426,15 @@ static RTN_STATUS send_mess(int card, char const *com, char inchar) } /* Make a local copy of the string and add the command line terminator. */ - strcpy(local_buff, com); - strcat(local_buff, "\n"); + if (name != NULL) + { + strcpy(local_buff, name); /* put in axis */ + strcat(local_buff, com); + } + else + strcpy(local_buff, com); - if (inchar != (char) NULL) - local_buff[0] = inchar; /* put in axis */ + strcat(local_buff, "\n"); Debug(2, "send_mess(): message = %s\n", local_buff); @@ -625,7 +631,7 @@ static int motor_init() /* Try 3 times to connect to controller. */ do { - send_mess(card_index, "?PR VR", MDrive_axis[total_axis]); + send_mess(card_index, "PR VR", MDrive_axis[total_axis]); eat_garbage(card_index, buff, 1); status = recv_mess(card_index, buff, 1); retry++; diff --git a/motorApp/MXmotorSrc/drvMXmotor.cc b/motorApp/MXmotorSrc/drvMXmotor.cc index 393e02c5..9ee4cd70 100644 --- a/motorApp/MXmotorSrc/drvMXmotor.cc +++ b/motorApp/MXmotorSrc/drvMXmotor.cc @@ -2,9 +2,9 @@ FILENAME... drvMXmotor.cc USAGE... Motor record driver level support for MX device driver. -Version: $Revision: 1.5 $ +Version: $Revision: 1.6 $ Modified By: $Author: sluiter $ -Last Modified: $Date: 2003-10-28 16:32:11 $ +Last Modified: $Date: 2004-09-20 21:10:56 $ */ /* @@ -60,7 +60,7 @@ static long report(int level); static long init(); static void query_done(int, int, struct mess_node *); static int set_status(int card, int signal); -static RTN_STATUS send_mess(int card, char const *com, char c); +static RTN_STATUS send_mess(int, char const *, char *); static int recv_mess(int, char *, int); static int motor_init(); @@ -310,7 +310,7 @@ static int set_status(int card, int signal) return(rtn_state); } -static RTN_STATUS send_mess(int card, char const *com, char inchar) +static RTN_STATUS send_mess(int card, char const *com, char *name) { struct controller *brdptr; struct MXcontroller *cntrl; diff --git a/motorApp/MclennanSrc/drvPM304.cc b/motorApp/MclennanSrc/drvPM304.cc index f03dcdf9..9b286507 100644 --- a/motorApp/MclennanSrc/drvPM304.cc +++ b/motorApp/MclennanSrc/drvPM304.cc @@ -27,6 +27,7 @@ * .09 02/03/04 rls Eliminate erroneous "Motor motion timeout ERROR". * .10 04/20/04 mlr Convert from MPF to ASYN * .11 07/16/04 rls removed unused Setup() argument. + * .12 09/20/04 rls support for 32axes/controller. */ @@ -85,7 +86,7 @@ int PM304_num_cards = 0; /*----------------functions-----------------*/ STATIC int recv_mess(int card, char *buff, int len); -STATIC RTN_STATUS send_mess(int card, const char *com, char c); +STATIC RTN_STATUS send_mess(int, const char *, char *); STATIC int send_recv_mess(int card, const char *out, char *in); STATIC void start_status(int card); STATIC int set_status(int card, int signal); @@ -116,7 +117,8 @@ struct driver_table PM304_access = set_status, query_done, start_status, - &initialized + &initialized, + NULL }; struct @@ -340,7 +342,7 @@ STATIC int set_status(int card, int signal) /* ring buffer */ /* send_mess() */ /*****************************************************/ -STATIC RTN_STATUS send_mess(int card, const char *com, char c) +STATIC RTN_STATUS send_mess(int card, const char *com, char *name) { char *p, *tok_save; char buff[BUFF_SIZE]; diff --git a/motorApp/MicosSrc/drvMicos.cc b/motorApp/MicosSrc/drvMicos.cc index 44d4f1ec..f3be07e2 100644 --- a/motorApp/MicosSrc/drvMicos.cc +++ b/motorApp/MicosSrc/drvMicos.cc @@ -12,6 +12,7 @@ * .02 02-12-2004 rls Copied from drvMicos.c. Upgraded from R3.14.x * .03 02-17-2004 rls Removed Debug calls to tickGet(). * .04 07-12-2004 rls Converted from MPF to asyn. + * .05 09-20-2004 rls support for 32axes/controller. */ @@ -64,10 +65,10 @@ volatile int Micos_num_axis = 0; /*----------------functions-----------------*/ static int recv_mess(int, char *, int); -static RTN_STATUS send_mess(int card, const char *com, char c); -static void start_status(int card); -static int set_status(int card, int signal); -static long report(int level); +static RTN_STATUS send_mess(int, const char *, char *); +static void start_status(int); +static int set_status(int, int); +static long report(int); static long init(); static int motor_init(); static void query_done(int, int, struct mess_node *); @@ -94,7 +95,8 @@ struct driver_table Micos_access = set_status, query_done, start_status, - &initialized + &initialized, + NULL }; struct @@ -290,7 +292,7 @@ static int set_status(int card, int signal) /* send a message to the Micos board */ /* send_mess() */ /*****************************************************/ -static RTN_STATUS send_mess(int card, const char *com, char c) +static RTN_STATUS send_mess(int card, const char *com, char *name) { char buff[BUFF_SIZE]; struct MicosController *cntrl; diff --git a/motorApp/MicroMoSrc/drvMVP2001.cc b/motorApp/MicroMoSrc/drvMVP2001.cc index c203d128..679fb46e 100644 --- a/motorApp/MicroMoSrc/drvMVP2001.cc +++ b/motorApp/MicroMoSrc/drvMVP2001.cc @@ -3,9 +3,9 @@ FILENAME... drvMVP2001.cc USAGE... Motor record driver level support for MicroMo MVP 2001 B02 (Linear, RS-485). -Version: $Revision: 1.4 $ -Modified By: $Author: rivers $ -Last Modified: $Date: 2004-08-17 21:29:31 $ +Version: $Revision: 1.5 $ +Modified By: $Author: sluiter $ +Last Modified: $Date: 2004-09-20 21:14:14 $ */ /* @@ -145,9 +145,9 @@ int MVP2001_num_cards = 0; /*----------------functions-----------------*/ static int recv_mess(int, char *, int); -static RTN_STATUS send_mess(int card, char const *com, char c); -static int set_status(int card, int signal); -static long report(int level); +static RTN_STATUS send_mess(int, char const *, char *); +static int set_status(int, int); +static long report(int); static long init(); static int motor_init(); static void query_done(int, int, struct mess_node *); @@ -439,7 +439,7 @@ exit: /* send a message to the MVP2001 board */ /* send_mess() */ /*****************************************************/ -static RTN_STATUS send_mess(int card, char const *com, char inchar) +static RTN_STATUS send_mess(int card, char const *com, char *name) { char local_buff[MAX_MSG_SIZE]; struct MVPcontroller *cntrl; @@ -465,9 +465,6 @@ static RTN_STATUS send_mess(int card, char const *com, char inchar) strcpy(local_buff, com); strcat(local_buff, "\r"); - if (inchar != (char) NULL) - local_buff[0] = inchar; /* put in axis */ - Debug(2, "send_mess(): message = %s\n", local_buff); cntrl = (struct MVPcontroller *) motor_state[card]->DevicePrivate;