All pastes #238375 Raw Edit

Something

public text v1 · immutable
#238375 ·published 2006-11-04 23:26 UTC
rendered paste body
? M4x.diff
? m4x.diff
? hal/utils/comp.py
Index: config.h.in
===================================================================
RCS file: /cvs/emc2/src/config.h.in,v
retrieving revision 1.11
diff -u -p -r1.11 config.h.in
--- config.h.in	23 Oct 2006 14:54:10 -0000	1.11
+++ config.h.in	4 Nov 2006 23:26:00 -0000
@@ -29,7 +29,7 @@
 
 /* Assorted defines used through out the source code. */
 #define ACTIVE_G_CODES 13
-#define ACTIVE_M_CODES 7
+#define ACTIVE_M_CODES 9
 #define ACTIVE_SETTINGS 3
 
 #define MM_PER_INCH 25.4
Index: emc/motion/command.c
===================================================================
RCS file: /cvs/emc2/src/emc/motion/command.c,v
retrieving revision 1.70
diff -u -p -r1.70 command.c
--- emc/motion/command.c	17 Oct 2006 19:28:07 -0000	1.70
+++ emc/motion/command.c	4 Nov 2006 23:26:01 -0000
@@ -957,13 +957,28 @@ check_stuff ( "before command_handler()"
 	    emcmotStatus->qVscale = emcmotCommand->scale;
 	    break;
 
-	case EMCMOT_FEED_OVERRIDE:
+	case EMCMOT_FO_ENABLE:
 	    /* enable/disable overriding speed */
 	    /* can happen at any time */
-	    rtapi_print_msg(RTAPI_MSG_DBG, "FEED_OVERRIDE");
+	    if ( emcmotCommand->mode != 0 ) {
+		rtapi_print_msg(RTAPI_MSG_DBG, "FEED OVERRIDE: ON");
+            } else {
+		rtapi_print_msg(RTAPI_MSG_DBG, "FEED OVERRIDE: OFF");
+	    }
 	    emcmotStatus->fo_mode = emcmotCommand->mode; //0 means no override is possible
 	    break;
 
+	case EMCMOT_FH_ENABLE:
+	    /* enable/disable feed hold */
+	    /* can happen at any time */
+	    if ( emcmotCommand->mode != 0 ) {
+		rtapi_print_msg(RTAPI_MSG_DBG, "FEED HOLD: ENABLED");
+            } else {
+		rtapi_print_msg(RTAPI_MSG_DBG, "FEED HOLD: DISABLED");
+	    }
+	    /*FIXME : JMK does something usefull here with emcmotCommand->mode; //0 means feed_hold is not taken into consideration*/
+	    break;
+
 	case EMCMOT_SPINDLE_SCALE:
 	    /* override spindle speed */
 	    /* can happen at any time */
@@ -974,15 +989,19 @@ check_stuff ( "before command_handler()"
 	    emcmotStatus->spindle_scale = emcmotCommand->scale;
 	    break;
 
-	case EMCMOT_SPINDLE_OVERRIDE:
+	case EMCMOT_SO_ENABLE:
 	    /* enable/disable overriding spindle speed */
 	    /* can happen at any time */
-	    rtapi_print_msg(RTAPI_MSG_DBG, "SPINDLE_OVERRIDE");
+	    if ( emcmotCommand->mode != 0 ) {
+		rtapi_print_msg(RTAPI_MSG_DBG, "SPINDLE OVERRIDE: ON");
+            } else {
+		rtapi_print_msg(RTAPI_MSG_DBG, "SPINDLE OVERRIDE: OFF");
+	    }
 	    emcmotStatus->so_mode = emcmotCommand->mode; //0 means no override is possible
 	    break;
 
 
-	case EMCMOT_ADAPTIVE_FEED:
+	case EMCMOT_AF_ENABLE:
 	    /* enable/disable adaptive feedrate override from HAL pin */
 	    /* can happen at any time */
 	    if ( emcmotCommand->flags != 0 ) {
Index: emc/motion/motion.h
===================================================================
RCS file: /cvs/emc2/src/emc/motion/motion.h,v
retrieving revision 1.67
diff -u -p -r1.67 motion.h
--- emc/motion/motion.h	29 Oct 2006 23:53:35 -0000	1.67
+++ emc/motion/motion.h	4 Nov 2006 23:26:02 -0000
@@ -117,10 +117,11 @@ extern "C" {
 	EMCMOT_TELEOP,		/* set mode to teleop */
 
 	EMCMOT_SCALE,		/* scale the speed */
-	EMCMOT_FEED_OVERRIDE,	/* enable scaling the speed (M48/M49) */
+	EMCMOT_FO_ENABLE,	/* enable/disable scaling the speed (M48/M49) */
+	EMCMOT_FH_ENABLE,	/* enable/disable feed_hold */
 	EMCMOT_SPINDLE_SCALE,	/* scale the spindle speed */
-	EMCMOT_SPINDLE_OVERRIDE,	/* enable scaling the spindle speed (M48/M49) */
-	EMCMOT_ADAPTIVE_FEED,	/* enable/disable adaptive feedrate */
+	EMCMOT_SO_ENABLE,	/* enable/disable scaling the spindle speed (M48/M49) */
+	EMCMOT_AF_ENABLE,	/* enable/disable adaptive feedrate */
 	EMCMOT_OVERRIDE_LIMITS,	/* temporarily ignore limits until jog done */
 
 	EMCMOT_HOME,		/* home an axis */
Index: emc/nml_intf/canon.hh
===================================================================
RCS file: /cvs/emc2/src/emc/nml_intf/canon.hh,v
retrieving revision 1.15
diff -u -p -r1.15 canon.hh
--- emc/nml_intf/canon.hh	24 Oct 2006 20:04:34 -0000	1.15
+++ emc/nml_intf/canon.hh	4 Nov 2006 23:26:03 -0000
@@ -329,9 +329,6 @@ translation commands. */
 extern void START_SPEED_FEED_SYNCH(double spindlesync);
 extern void STOP_SPEED_FEED_SYNCH();
 
-/* used for EDM adaptive moves with motion internal feed override (0..1) */
-extern void START_ADAPTIVE_FEED();
-extern void STOP_ADAPTIVE_FEED();
 
 /* Machining Functions */
 
@@ -506,10 +503,23 @@ logged, the comment command is printed o
 which is the value of comment_text. This serves to allow formal
 comments at specific locations in programs or command files. */
 
+/* used for EDM adaptive moves with motion internal feed override (0..1) */
+extern void DISABLE_ADAPTIVE_FEED();
+extern void ENABLE_ADAPTIVE_FEED();
+
+/* used to deactivate user control of feed override */
 extern void DISABLE_FEED_OVERRIDE();
 extern void ENABLE_FEED_OVERRIDE();
+
+/* used to deactivate user control of spindle speed override */
 extern void DISABLE_SPEED_OVERRIDE();
 extern void ENABLE_SPEED_OVERRIDE();
+
+/* used to deactivate user control of feed hold */
+extern void DISABLE_FEED_HOLD();
+extern void ENABLE_FEED_HOLD();
+
+
 extern void FLOOD_OFF();
 /* Turn flood coolant off. */
 extern void FLOOD_ON();
Index: emc/nml_intf/emc.cc
===================================================================
RCS file: /cvs/emc2/src/emc/nml_intf/emc.cc,v
retrieving revision 1.30
diff -u -p -r1.30 emc.cc
--- emc/nml_intf/emc.cc	24 Oct 2006 20:04:34 -0000	1.30
+++ emc/nml_intf/emc.cc	4 Nov 2006 23:26:06 -0000
@@ -474,11 +474,14 @@ int emcFormat(NMLTYPE type, void *buffer
     case EMC_TRAJ_SET_SPINDLE_SCALE_TYPE:
 	((EMC_TRAJ_SET_SPINDLE_SCALE *) buffer)->update(cms);
 	break;
-    case EMC_TRAJ_SET_FEED_OVERRIDE_TYPE:
-	((EMC_TRAJ_SET_FEED_OVERRIDE *) buffer)->update(cms);
+    case EMC_TRAJ_SET_FO_ENABLE_TYPE:
+	((EMC_TRAJ_SET_FO_ENABLE *) buffer)->update(cms);
 	break;
-    case EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE:
-	((EMC_TRAJ_SET_SPINDLE_OVERRIDE *) buffer)->update(cms);
+    case EMC_TRAJ_SET_SO_ENABLE_TYPE:
+	((EMC_TRAJ_SET_SO_ENABLE *) buffer)->update(cms);
+	break;
+    case EMC_TRAJ_SET_FH_ENABLE_TYPE:
+	((EMC_TRAJ_SET_FH_ENABLE *) buffer)->update(cms);
 	break;
     case EMC_TRAJ_SET_TELEOP_ENABLE_TYPE:
 	((EMC_TRAJ_SET_TELEOP_ENABLE *) buffer)->update(cms);
@@ -801,10 +804,12 @@ const char *emc_symbol_lookup(long type)
 	return "EMC_TRAJ_SET_SCALE";
     case EMC_TRAJ_SET_SPINDLE_SCALE_TYPE:
 	return "EMC_TRAJ_SET_SPINDLE_SCALE";
-    case EMC_TRAJ_SET_FEED_OVERRIDE_TYPE:
-	return "EMC_TRAJ_SET_FEED_OVERRIDE";
-    case EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE:
-	return "EMC_TRAJ_SET_SPINDLE_OVERRIDE";
+    case EMC_TRAJ_SET_FO_ENABLE_TYPE:
+	return "EMC_TRAJ_SET_FO_ENABLE";
+    case EMC_TRAJ_SET_SO_ENABLE_TYPE:
+	return "EMC_TRAJ_SET_SO_ENABLE";
+    case EMC_TRAJ_SET_FH_ENABLE_TYPE:
+	return "EMC_TRAJ_SET_FH_ENABLE";
     case EMC_TRAJ_SET_TELEOP_ENABLE_TYPE:
 	return "EMC_TRAJ_SET_TELEOP_ENABLE";
     case EMC_TRAJ_SET_TELEOP_VECTOR_TYPE:
@@ -2015,11 +2020,11 @@ void EMC_TRAJ_SET_SPINDLE_SCALE::update(
 }
 
 /*
-*	NML/CMS Update function for EMC_TRAJ_SET_FEED_OVERRIDE
+*	NML/CMS Update function for EMC_TRAJ_SET_FO_ENABLE
 *	Automatically generated by Alex Joni :)
 *	on Tue Oct 17 00:14:16 GMT+3 2006
 */
-void EMC_TRAJ_SET_FEED_OVERRIDE::update(CMS * cms)
+void EMC_TRAJ_SET_FO_ENABLE::update(CMS * cms)
 {
 
     EMC_TRAJ_CMD_MSG::update(cms);
@@ -2032,7 +2037,20 @@ void EMC_TRAJ_SET_FEED_OVERRIDE::update(
 *	Automatically generated by Alex Joni :)
 *	on Tue Oct 17 00:14:16 GMT+3 2006
 */
-void EMC_TRAJ_SET_SPINDLE_OVERRIDE::update(CMS * cms)
+void EMC_TRAJ_SET_SO_ENABLE::update(CMS * cms)
+{
+
+    EMC_TRAJ_CMD_MSG::update(cms);
+    cms->update(mode);
+
+}
+
+/*
+*	NML/CMS Update function for EMC_TRAJ_SET_FH_ENABLE
+*	Automatically generated by Alex Joni :)
+*	on Sat Nov 04 11:42:16 GMT+2 2006
+*/
+void EMC_TRAJ_SET_FH_ENABLE::update(CMS * cms)
 {
 
     EMC_TRAJ_CMD_MSG::update(cms);
@@ -2040,6 +2058,7 @@ void EMC_TRAJ_SET_SPINDLE_OVERRIDE::upda
 
 }
 
+
 /*
 *	NML/CMS Update function for EMC_IO_ABORT
 *	Automatically generated by NML CodeGen Java Applet.
Index: emc/nml_intf/emc.hh
===================================================================
RCS file: /cvs/emc2/src/emc/nml_intf/emc.hh,v
retrieving revision 1.43
diff -u -p -r1.43 emc.hh
--- emc/nml_intf/emc.hh	24 Oct 2006 20:04:34 -0000	1.43
+++ emc/nml_intf/emc.hh	4 Nov 2006 23:26:09 -0000
@@ -123,8 +123,9 @@
 #define EMC_TRAJ_SET_TELEOP_VECTOR_TYPE              ((NMLTYPE) 231)
 #define EMC_TRAJ_SET_SPINDLESYNC_TYPE                ((NMLTYPE) 232)
 #define EMC_TRAJ_SET_SPINDLE_SCALE_TYPE              ((NMLTYPE) 233)
-#define EMC_TRAJ_SET_FEED_OVERRIDE_TYPE              ((NMLTYPE) 234)
-#define EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE           ((NMLTYPE) 235)
+#define EMC_TRAJ_SET_FO_ENABLE_TYPE              ((NMLTYPE) 234)
+#define EMC_TRAJ_SET_SO_ENABLE_TYPE           ((NMLTYPE) 235)
+#define EMC_TRAJ_SET_FH_ENABLE_TYPE         ((NMLTYPE) 236)
 
 #define EMC_TRAJ_STAT_TYPE                           ((NMLTYPE) 299)
 
@@ -415,10 +416,11 @@ extern int emcTrajSetAcceleration(double
 extern int emcTrajSetMaxVelocity(double vel);
 extern int emcTrajSetMaxAcceleration(double acc);
 extern int emcTrajSetScale(double scale);
-extern int emcTrajSetFeedOverride(unsigned char mode);
+extern int emcTrajSetFOEnable(unsigned char mode);   //feed override enable
+extern int emcTrajSetFHEnable(unsigned char mode);   //feed hold enable
 extern int emcTrajSetSpindleScale(double scale);
-extern int emcTrajSetSpindleOverride(unsigned char mode);
-extern int emcTrajSetAdaptiveFeed(unsigned char enable);
+extern int emcTrajSetSOEnable(unsigned char mode);   //spindle speed override enable
+extern int emcTrajSetAFEnable(unsigned char enable); //adaptive feed enable
 extern int emcTrajSetMotionId(int id);
 extern double emcTrajGetLinearUnits();
 extern double emcTrajGetAngularUnits();
@@ -1273,10 +1275,10 @@ class EMC_TRAJ_SET_SPINDLE_SCALE:public 
     double scale;
 };
 
-class EMC_TRAJ_SET_FEED_OVERRIDE:public EMC_TRAJ_CMD_MSG {
+class EMC_TRAJ_SET_FO_ENABLE:public EMC_TRAJ_CMD_MSG {
   public:
-    EMC_TRAJ_SET_FEED_OVERRIDE():EMC_TRAJ_CMD_MSG(EMC_TRAJ_SET_FEED_OVERRIDE_TYPE,
-					  sizeof(EMC_TRAJ_SET_FEED_OVERRIDE)) {
+    EMC_TRAJ_SET_FO_ENABLE():EMC_TRAJ_CMD_MSG(EMC_TRAJ_SET_FO_ENABLE_TYPE,
+					  sizeof(EMC_TRAJ_SET_FO_ENABLE)) {
     };
 
     // For internal NML/CMS use only.
@@ -1285,10 +1287,10 @@ class EMC_TRAJ_SET_FEED_OVERRIDE:public 
     unsigned char mode; //mode=0, override off (will work with 100% FO), mode != 0, override on, user can change FO
 };
 
-class EMC_TRAJ_SET_SPINDLE_OVERRIDE:public EMC_TRAJ_CMD_MSG {
+class EMC_TRAJ_SET_SO_ENABLE:public EMC_TRAJ_CMD_MSG {
   public:
-    EMC_TRAJ_SET_SPINDLE_OVERRIDE():EMC_TRAJ_CMD_MSG(EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE,
-					  sizeof(EMC_TRAJ_SET_SPINDLE_OVERRIDE)) {
+    EMC_TRAJ_SET_SO_ENABLE():EMC_TRAJ_CMD_MSG(EMC_TRAJ_SET_SO_ENABLE_TYPE,
+					  sizeof(EMC_TRAJ_SET_SO_ENABLE)) {
     };
 
     // For internal NML/CMS use only.
@@ -1297,6 +1299,17 @@ class EMC_TRAJ_SET_SPINDLE_OVERRIDE:publ
     unsigned char mode; //mode=0, override off (will work with 100% SO), mode != 0, override on, user can change SO
 };
 
+class EMC_TRAJ_SET_FH_ENABLE:public EMC_TRAJ_CMD_MSG {
+  public:
+    EMC_TRAJ_SET_FH_ENABLE():EMC_TRAJ_CMD_MSG(EMC_TRAJ_SET_FH_ENABLE_TYPE,
+					  sizeof(EMC_TRAJ_SET_FH_ENABLE)) {
+    };
+
+    // For internal NML/CMS use only.
+    void update(CMS * cms);
+
+    unsigned char mode; //mode=0, override off (feedhold is disabled), mode != 0, override on, user can use feedhold
+};
 
 class EMC_TRAJ_SET_MOTION_ID:public EMC_TRAJ_CMD_MSG {
   public:
Index: emc/rs274ngc/gcodemodule.cc
===================================================================
RCS file: /cvs/emc2/src/emc/rs274ngc/gcodemodule.cc,v
retrieving revision 1.7
diff -u -p -r1.7 gcodemodule.cc
--- emc/rs274ngc/gcodemodule.cc	31 Oct 2006 03:32:23 -0000	1.7
+++ emc/rs274ngc/gcodemodule.cc	4 Nov 2006 23:26:09 -0000
@@ -422,8 +422,8 @@ int GET_EXTERNAL_MIST() { return 0; }
 CANON_PLANE GET_EXTERNAL_PLANE() { return 1; }
 double GET_EXTERNAL_SPEED() { return 0; }
 int GET_EXTERNAL_TOOL_MAX() { return CANON_TOOL_MAX; }
-void STOP_ADAPTIVE_FEED() {} 
-void START_ADAPTIVE_FEED() {} 
+void DISABLE_ADAPTIVE_FEED() {} 
+void ENABLE_ADAPTIVE_FEED() {} 
 
 bool PyFloat_CheckAndError(const char *func, PyObject *p)  {
     if(PyFloat_Check(p)) return true;
Index: emc/rs274ngc/interp_array.cc
===================================================================
RCS file: /cvs/emc2/src/emc/rs274ngc/interp_array.cc,v
retrieving revision 1.9
diff -u -p -r1.9 interp_array.cc
--- emc/rs274ngc/interp_array.cc	31 Jul 2006 02:59:33 -0000	1.9
+++ emc/rs274ngc/interp_array.cc	4 Nov 2006 23:26:10 -0000
@@ -68,7 +68,6 @@ group  8 = {g43,g49}       - tool length
 group 10 = {g98,g99}       - return mode in canned cycles
 group 12 = {g54,g55,g56,g57,g58,g59,g59.1,g59.2,g59.3} - coordinate system
 group 13 = {g61,g61.1,g64} - control mode (path following)
-group 14 = {g50,g51}       - adaptive feed enable/disable
 
 */
 // This stops indent from reformatting the following code.
@@ -99,7 +98,7 @@ const int Interp::_gees[] = {
 /* 440 */  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /* 460 */  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /* 480 */  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 8,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-/* 500 */  14,-1,-1,-1,-1,-1,-1,-1,-1,-1,14,-1,-1,-1,-1,-1,-1,-1,-1,-1,
+/* 500 */  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /* 520 */  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /* 540 */  12,-1,-1,-1,-1,-1,-1,-1,-1,-1,12,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /* 560 */  12,-1,-1,-1,-1,-1,-1,-1,-1,-1,12,-1,-1,-1,-1,-1,-1,-1,-1,-1,
@@ -138,31 +137,35 @@ group 5 = {m62,m63,m64,m65}  - turn I/O 
 group 6 = {m6}               - tool change
 group 7 = {m3,m4,m5}         - spindle turning
 group 8 = {m7,m8,m9}         - coolant
-group 9 = {m48,m49}          - feed and speed override switch bypass
+group 9 = {m48,m49,          - feed and speed override switch bypass
+           m50,              - feed override switch bypass           P1 to turn on, P0 to turn off
+	   m51,              - spindle speed override switch bypass  P1 to turn on, P0 to turn off
+	   m52,              - adaptive feed override switch bypass  P1 to turn on, P0 to turn off
+	   m53}              - feedstop override switch bypass       P1 to turn on, P0 to turn off
 group 10 = {m100..m199}      - user-defined
 */
 
 const int Interp::_ems[] = {
-   4,  4,  4,  7,  7,  7,  6,  8,  8,  8,
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-   4, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,  9,  9,
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-   4, -1,  5,  5,  5,  5, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-   10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-   10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-   10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-   10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-   10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-   10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-   10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-   10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-   10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-   10, 10, 10, 10, 10, 10, 10, 10, 10, 10};
+   4,  4,  4,  7,  7,  7,  6,  8,  8,  8,  //  9
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  // 19
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  // 29
+   4, -1, -1, -1, -1, -1, -1, -1, -1, -1,  // 39
+  -1, -1, -1, -1, -1, -1, -1, -1,  9,  9,  // 49
+   9,  9,  9,  9, -1, -1, -1, -1, -1, -1,  // 59
+   4, -1,  5,  5,  5,  5, -1, -1, -1, -1,  // 69
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  // 79
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  // 89
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  // 99
+   10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //109
+   10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //119
+   10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //129
+   10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //139
+   10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //149
+   10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //159
+   10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //169
+   10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //179
+   10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //189
+   10, 10, 10, 10, 10, 10, 10, 10, 10, 10};//199
 
 /*
 
Index: emc/rs274ngc/interp_check.cc
===================================================================
RCS file: /cvs/emc2/src/emc/rs274ngc/interp_check.cc,v
retrieving revision 1.9
diff -u -p -r1.9 interp_check.cc
--- emc/rs274ngc/interp_check.cc	3 Aug 2006 19:17:07 -0000	1.9
+++ emc/rs274ngc/interp_check.cc	4 Nov 2006 23:26:11 -0000
@@ -299,6 +299,10 @@ int Interp::check_other_codes(block_poin
          (block->m_modes[5] != 63) &&
          (block->m_modes[5] != 64) &&
          (block->m_modes[5] != 65) &&
+         (block->m_modes[9] != 50) &&
+         (block->m_modes[9] != 51) &&
+         (block->m_modes[9] != 52) &&
+         (block->m_modes[9] != 53) &&
          (block->user_m != 1) &&
          (motion != G_82) && (motion != G_86) &&
          (motion != G_88) && (motion != G_89) && (motion != G_76)),
Index: emc/rs274ngc/interp_convert.cc
===================================================================
RCS file: /cvs/emc2/src/emc/rs274ngc/interp_convert.cc,v
retrieving revision 1.45
diff -u -p -r1.45 interp_convert.cc
--- emc/rs274ngc/interp_convert.cc	3 Nov 2006 17:04:40 -0000	1.45
+++ emc/rs274ngc/interp_convert.cc	4 Nov 2006 23:26:15 -0000
@@ -924,34 +924,6 @@ int Interp::convert_control_mode(int g_c
   return INTERP_OK;
 }
 
-/* 
-
-Called by: convert_g.
-
-For G50 & G51, the canon functions START_ADAPTIVE_FEED() and
-STOP_ADAPTIVE_FEED() are called. These enable a second feed override
-control based on an external input (this second override goes from
-0 to 1 and corresponds to 0..100%). It gets multiplied with the
-user feed override.  This is useful for EDM machines for example.
-
-*/
-
-int Interp::convert_adaptive_mode(int g_code, setup_pointer settings)
-{
-    static char name[] = "convert_adaptive_mode";
-
-    if(g_code == G_50) {
-        START_ADAPTIVE_FEED();
-	settings->adaptive_feed=1;
-    } else if (g_code == G_51) {
-        STOP_ADAPTIVE_FEED();
-	settings->adaptive_feed=0;
-    } else
-        ERM(NCE_BUG_CODE_NOT_G50_OR_G51);
-
-    return INTERP_OK;
-}
-
 /****************************************************************************/
 
 /*! convert_coordinate_system
@@ -1493,9 +1465,6 @@ int Interp::convert_g(block_pointer bloc
   if (block->g_modes[13] != -1) {
     CHP(convert_control_mode(block->g_modes[13], block->p_number, settings));
   }
-  if (block->g_modes[14] != -1) {
-    CHP(convert_adaptive_mode(block->g_modes[14], settings));
-  }
   if (block->g_modes[3] != -1) {
     CHP(convert_distance_mode(block->g_modes[3], settings));
   }
@@ -1774,6 +1743,47 @@ int Interp::convert_m(block_pointer bloc
     settings->feed_override = OFF;
     settings->speed_override = OFF;
   }
+
+  if (block->m_modes[9] == 50) {
+    if (block->p_number != 0) {
+	ENABLE_FEED_OVERRIDE();
+	settings->feed_override = ON;
+    } else {
+	DISABLE_FEED_OVERRIDE();
+	settings->feed_override = OFF;
+    }
+  }
+
+  if (block->m_modes[9] == 51) {
+    if (block->p_number != 0) {
+	ENABLE_SPEED_OVERRIDE();
+	settings->speed_override = ON;
+    } else {
+	DISABLE_SPEED_OVERRIDE();
+	settings->speed_override = OFF;
+    }
+  }
+  
+  if (block->m_modes[9] == 52) {
+    if (block->p_number != 0) {
+	ENABLE_ADAPTIVE_FEED();
+	settings->adaptive_feed = ON;
+    } else {
+	DISABLE_ADAPTIVE_FEED();
+	settings->adaptive_feed = OFF;
+    }
+  }
+  
+  if (block->m_modes[9] == 53) {
+    if (block->p_number != 0) {
+	ENABLE_FEED_HOLD();
+	settings->feed_hold = ON;
+    } else {
+	DISABLE_FEED_HOLD();
+	settings->feed_hold = OFF;
+    }
+  }
+
   /* user-defined M codes */
   if (block->m_modes[10] != -1) {
     int index = block->m_modes[10];
Index: emc/rs274ngc/interp_internal.hh
===================================================================
RCS file: /cvs/emc2/src/emc/rs274ngc/interp_internal.hh,v
retrieving revision 1.16
diff -u -p -r1.16 interp_internal.hh
--- emc/rs274ngc/interp_internal.hh	24 Oct 2006 20:04:35 -0000	1.16
+++ emc/rs274ngc/interp_internal.hh	4 Nov 2006 23:26:15 -0000
@@ -376,7 +376,8 @@ typedef struct setup_struct
   context sub_context[INTERP_SUB_ROUTINE_LEVELS];
   int oword_labels;
   offset oword_offset[INTERP_OWORD_LABELS];
-  int adaptive_feed;                // adaptive feed is enabled
+  ON_OFF adaptive_feed;              // adaptive feed is enabled
+  ON_OFF feed_hold;                  // feed hold is enabled
 }
 setup;
 
Index: emc/rs274ngc/interp_write.cc
===================================================================
RCS file: /cvs/emc2/src/emc/rs274ngc/interp_write.cc,v
retrieving revision 1.9
diff -u -p -r1.9 interp_write.cc
--- emc/rs274ngc/interp_write.cc	25 Jun 2006 19:23:52 -0000	1.9
+++ emc/rs274ngc/interp_write.cc	4 Nov 2006 23:26:15 -0000
@@ -98,7 +98,6 @@ int Interp::write_g_codes(block_pointer 
   gez[11] =
     (settings->control_mode == CANON_CONTINUOUS) ? G_64 :
     (settings->control_mode == CANON_EXACT_PATH) ? G_61 : G_61_1;
-  gez[12] = (settings->adaptive_feed != 0) ? G_50 : G_51;
 
   return INTERP_OK;
 }
@@ -137,8 +136,18 @@ int Interp::write_m_codes(block_pointer 
     (settings->mist == ON) ? 7 : (settings->flood == ON) ? -1 : 9;
   emz[5] =                      /* 5 flood       */
     (settings->flood == ON) ? 8 : -1;
-  emz[6] =                      /* 6 overrides   */
-    (settings->feed_override == ON) ? 48 : 49;
+  if (settings->feed_override == ON) {
+    if (settings->speed_override == ON) emz[6] =  48;
+    else emz[6] = 50;
+  } else if (settings->speed_override == ON) {
+    emz[6] = 51;
+  } else emz[6] = 49;
+  
+  emz[7] =                      /* 7 overrides   */
+    (settings->adaptive_feed == ON) ? 52 : -1;
+
+  emz[8] =                      /* 8 overrides   */
+    (settings->feed_hold == ON) ? 53 : -1;
 
   return INTERP_OK;
 }
Index: emc/rs274ngc/rs274ngc_errors.cc
===================================================================
RCS file: /cvs/emc2/src/emc/rs274ngc/rs274ngc_errors.cc,v
retrieving revision 1.17
diff -u -p -r1.17 rs274ngc_errors.cc
--- emc/rs274ngc/rs274ngc_errors.cc	31 Jul 2006 02:59:34 -0000	1.17
+++ emc/rs274ngc/rs274ngc_errors.cc	4 Nov 2006 23:26:16 -0000
@@ -241,14 +241,13 @@ char * _rs274ngc_errors[] = {
 /* 213 */ _("Return outside of subroutine"), // convert control functions
 /* 214 */ _("File not open"), // control back to
 /* 215 */ _("Need tool prepared -Txx- for toolchange"), // if M6 is issued without Txx
-/* 216 */ _("Bug code not g50 or g51"), // convert_adaptive_mode
-/* 217 */ _("Cannot change planes with cutter radius compensation on"),
-/* 218 */ _("Cutter radius compensation allowed only in XY, XZ planes"),
+/* 216 */ _("Cannot change planes with cutter radius compensation on"),
+/* 217 */ _("Cutter radius compensation allowed only in XY, XZ planes"),
 
-/* 219 */ _("P word missing with G76"),
-/* 220 */ _("I J or K words missing with G76"),
-/* 221 */ _("Cannot move rotary axes with G76"),
+/* 218 */ _("P word missing with G76"),
+/* 219 */ _("I J or K words missing with G76"),
+/* 220 */ _("Cannot move rotary axes with G76"),
 
-/* 222 */ _("Unknown error"), // dummy
+/* 221 */ _("Unknown error"), // dummy
 _("The End")};
 // *INDENT-ON*
Index: emc/rs274ngc/rs274ngc_pre.cc
===================================================================
RCS file: /cvs/emc2/src/emc/rs274ngc/rs274ngc_pre.cc,v
retrieving revision 1.29
diff -u -p -r1.29 rs274ngc_pre.cc
--- emc/rs274ngc/rs274ngc_pre.cc	3 Jul 2006 20:03:12 -0000	1.29
+++ emc/rs274ngc/rs274ngc_pre.cc	4 Nov 2006 23:26:17 -0000
@@ -381,6 +381,8 @@ int Interp::init()
 //_setup.tool_table set in Interp::synch
   _setup.tool_table_index = 1;
 //_setup.traverse_rate set in Interp::synch
+  _setup.adaptive_feed = 0;
+  _setup.feed_hold = ON; //enable feed hold
 
   write_g_codes((block_pointer) NULL, &_setup);
   write_m_codes((block_pointer) NULL, &_setup);
@@ -391,7 +393,6 @@ int Interp::init()
   _setup.defining_sub = 0;
   _setup.skipping_o = 0;
   _setup.oword_labels = 0;
-  _setup.adaptive_feed = 0;
 
   // Synch rest of settings to external world
   synch();
Index: emc/rs274ngc/rs274ngc_return.hh
===================================================================
RCS file: /cvs/emc2/src/emc/rs274ngc/rs274ngc_return.hh,v
retrieving revision 1.16
diff -u -p -r1.16 rs274ngc_return.hh
--- emc/rs274ngc/rs274ngc_return.hh	31 Jul 2006 02:59:34 -0000	1.16
+++ emc/rs274ngc/rs274ngc_return.hh	4 Nov 2006 23:26:18 -0000
@@ -232,14 +232,13 @@
 #define NCE_RETURN_OUTSIDE_OF_SUBROUTINE 213
 #define NCE_FILE_NOT_OPEN 214
 #define NCE_TXX_MISSING_FOR_M6 215
-#define NCE_BUG_CODE_NOT_G50_OR_G51 216
-#define NCE_CANNOT_CHANGE_PLANES_WITH_CUTTER_RADIUS_COMP_ON 217
-#define NCE_RADIUS_COMP_ONLY_IN_XY_OR_XZ 218
+#define NCE_CANNOT_CHANGE_PLANES_WITH_CUTTER_RADIUS_COMP_ON 216
+#define NCE_RADIUS_COMP_ONLY_IN_XY_OR_XZ 217
 
-#define NCE_P_WORD_MISSING_WITH_G76 219
-#define NCE_I_J_OR_K_WORDS_MISSING_WITH_G76 220
-#define NCE_CANNOT_MOVE_ROTARY_AXES_WITH_G76 221
+#define NCE_P_WORD_MISSING_WITH_G76 218
+#define NCE_I_J_OR_K_WORDS_MISSING_WITH_G76 219
+#define NCE_CANNOT_MOVE_ROTARY_AXES_WITH_G76 220
 
-#define RS274NGC_MAX_ERROR 222
+#define RS274NGC_MAX_ERROR 221
 
 #endif /* RS274NGC_RETURN_H */
Index: emc/task/emccanon.cc
===================================================================
RCS file: /cvs/emc2/src/emc/task/emccanon.cc,v
retrieving revision 1.71
diff -u -p -r1.71 emccanon.cc
--- emc/task/emccanon.cc	24 Oct 2006 20:04:36 -0000	1.71
+++ emc/task/emccanon.cc	4 Nov 2006 23:26:20 -0000
@@ -745,21 +745,6 @@ void STOP_CUTTER_RADIUS_COMPENSATION()
     // nothing need be done here
 }
 
-void START_ADAPTIVE_FEED()
-{
-    flush_segments();
-    EMC_MOTION_ADAPTIVE emcmotAdaptiveMsg;
-    emcmotAdaptiveMsg.status = 1;
-    interp_list.append(emcmotAdaptiveMsg);
-}
-
-void STOP_ADAPTIVE_FEED()
-{
-    flush_segments();
-    EMC_MOTION_ADAPTIVE emcmotAdaptiveMsg;
-    emcmotAdaptiveMsg.status = 0;
-    interp_list.append(emcmotAdaptiveMsg);
-}
 
 
 void START_SPEED_FEED_SYNCH(double sync)
@@ -1343,35 +1328,69 @@ void COMMENT(char *comment)
 // refers to feed rate
 void DISABLE_FEED_OVERRIDE()
 {
-    EMC_TRAJ_SET_FEED_OVERRIDE set_feed_override_msg;
+    EMC_TRAJ_SET_FO_ENABLE set_fo_enable_msg;
+    
+    set_fo_enable_msg.mode = 0;
+    interp_list.append(set_fo_enable_msg);
+}
+
+void ENABLE_FEED_OVERRIDE()
+{
+    EMC_TRAJ_SET_FO_ENABLE set_fo_enable_msg;
     
-    set_feed_override_msg.mode = 0;
-    interp_list.append(set_feed_override_msg);
+    set_fo_enable_msg.mode = 1;
+    interp_list.append(set_fo_enable_msg);
+}
+
+//refers to adaptive feed override (HAL input, usefull for EDM for example)
+void DISABLE_ADAPTIVE_FEED()
+{
+    flush_segments();
+    EMC_MOTION_ADAPTIVE emcmotAdaptiveMsg;
+    emcmotAdaptiveMsg.status = 0;
+    interp_list.append(emcmotAdaptiveMsg);
+}
+
+void ENABLE_ADAPTIVE_FEED()
+{
+    flush_segments();
+    EMC_MOTION_ADAPTIVE emcmotAdaptiveMsg;
+    emcmotAdaptiveMsg.status = 1;
+    interp_list.append(emcmotAdaptiveMsg);
 }
 
 //refers to spindle speed
 void DISABLE_SPEED_OVERRIDE()
 {
-    EMC_TRAJ_SET_SPINDLE_OVERRIDE set_spindle_override_msg;
+    EMC_TRAJ_SET_SO_ENABLE set_so_enable_msg;
     
-    set_spindle_override_msg.mode = 0;
-    interp_list.append(set_spindle_override_msg);
+    set_so_enable_msg.mode = 0;
+    interp_list.append(set_so_enable_msg);
 }
 
-void ENABLE_FEED_OVERRIDE()
+
+void ENABLE_SPEED_OVERRIDE()
 {
-    EMC_TRAJ_SET_FEED_OVERRIDE set_feed_override_msg;
+    EMC_TRAJ_SET_SO_ENABLE set_so_enable_msg;
     
-    set_feed_override_msg.mode = 1;
-    interp_list.append(set_feed_override_msg);
+    set_so_enable_msg.mode = 1;
+    interp_list.append(set_so_enable_msg);
 }
 
-void ENABLE_SPEED_OVERRIDE()
+void ENABLE_FEED_HOLD()
+{
+    EMC_TRAJ_SET_FH_ENABLE set_feed_hold_msg;
+    
+    set_feed_hold_msg.mode = 1;
+    interp_list.append(set_feed_hold_msg);
+}
+
+void DISABLE_FEED_HOLD()
 {
-    EMC_TRAJ_SET_SPINDLE_OVERRIDE set_spindle_override_msg;
+    EMC_TRAJ_SET_FH_ENABLE set_feed_hold_msg;
     
-    set_spindle_override_msg.mode = 1;
-    interp_list.append(set_spindle_override_msg);
+    set_feed_hold_msg.mode = 0;
+    interp_list.append(set_feed_hold_msg);
 }
 
 void FLOOD_OFF()
Index: emc/task/emctaskmain.cc
===================================================================
RCS file: /cvs/emc2/src/emc/task/emctaskmain.cc,v
retrieving revision 1.75
diff -u -p -r1.75 emctaskmain.cc
--- emc/task/emctaskmain.cc	24 Oct 2006 20:04:36 -0000	1.75
+++ emc/task/emctaskmain.cc	4 Nov 2006 23:26:22 -0000
@@ -317,9 +317,7 @@ static EMC_AXIS_LOAD_COMP *axis_load_com
 //static EMC_AXIS_SET_STEP_PARAMS *set_step_params_msg;
 
 static EMC_TRAJ_SET_SCALE *emcTrajSetScaleMsg;
-static EMC_TRAJ_SET_FEED_OVERRIDE *emcTrajSetFeedOverrideMsg;
 static EMC_TRAJ_SET_SPINDLE_SCALE *emcTrajSetSpindleScaleMsg;
-static EMC_TRAJ_SET_SPINDLE_OVERRIDE *emcTrajSetSpindleOverrideMsg;
 static EMC_TRAJ_SET_VELOCITY *emcTrajSetVelocityMsg;
 static EMC_TRAJ_SET_ACCELERATION *emcTrajSetAccelerationMsg;
 static EMC_TRAJ_LINEAR_MOVE *emcTrajLinearMoveMsg;
@@ -532,8 +530,9 @@ static int emcTaskPlan(void)
 	    case EMC_AXIS_SET_STEP_PARAMS_TYPE:
 	    case EMC_TRAJ_SET_SCALE_TYPE:
 	    case EMC_TRAJ_SET_SPINDLE_SCALE_TYPE:
-	    case EMC_TRAJ_SET_FEED_OVERRIDE_TYPE:
-	    case EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE:
+	    case EMC_TRAJ_SET_FO_ENABLE_TYPE:
+	    case EMC_TRAJ_SET_FH_ENABLE_TYPE:
+	    case EMC_TRAJ_SET_SO_ENABLE_TYPE:
 	    case EMC_TRAJ_SET_VELOCITY_TYPE:
 	    case EMC_TRAJ_SET_ACCELERATION_TYPE:
 	    case EMC_TASK_INIT_TYPE:
@@ -635,8 +634,9 @@ static int emcTaskPlan(void)
 	    case EMC_TRAJ_ABORT_TYPE:
 	    case EMC_TRAJ_SET_SCALE_TYPE:
 	    case EMC_TRAJ_SET_SPINDLE_SCALE_TYPE:
-	    case EMC_TRAJ_SET_FEED_OVERRIDE_TYPE:
-	    case EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE:
+	    case EMC_TRAJ_SET_FO_ENABLE_TYPE:
+	    case EMC_TRAJ_SET_FH_ENABLE_TYPE:
+	    case EMC_TRAJ_SET_SO_ENABLE_TYPE:
 	    case EMC_SPINDLE_ON_TYPE:
 	    case EMC_SPINDLE_OFF_TYPE:
 	    case EMC_SPINDLE_BRAKE_RELEASE_TYPE:
@@ -725,8 +725,9 @@ static int emcTaskPlan(void)
 		case EMC_TRAJ_ABORT_TYPE:
 		case EMC_TRAJ_SET_SCALE_TYPE:
 		case EMC_TRAJ_SET_SPINDLE_SCALE_TYPE:
-		case EMC_TRAJ_SET_FEED_OVERRIDE_TYPE:
-		case EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE:
+		case EMC_TRAJ_SET_FO_ENABLE_TYPE:
+	        case EMC_TRAJ_SET_FH_ENABLE_TYPE:
+		case EMC_TRAJ_SET_SO_ENABLE_TYPE:
 		case EMC_SPINDLE_ON_TYPE:
 		case EMC_SPINDLE_OFF_TYPE:
 		case EMC_SPINDLE_BRAKE_RELEASE_TYPE:
@@ -818,8 +819,9 @@ static int emcTaskPlan(void)
 		case EMC_TRAJ_ABORT_TYPE:
 		case EMC_TRAJ_SET_SCALE_TYPE:
 		case EMC_TRAJ_SET_SPINDLE_SCALE_TYPE:
-		case EMC_TRAJ_SET_FEED_OVERRIDE_TYPE:
-		case EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE:
+		case EMC_TRAJ_SET_FO_ENABLE_TYPE:
+		case EMC_TRAJ_SET_FH_ENABLE_TYPE:
+		case EMC_TRAJ_SET_SO_ENABLE_TYPE:
 		case EMC_SPINDLE_INCREASE_TYPE:
 		case EMC_SPINDLE_DECREASE_TYPE:
 		case EMC_SPINDLE_CONSTANT_TYPE:
@@ -1006,8 +1008,9 @@ interpret_again:
 		case EMC_TRAJ_ABORT_TYPE:
 		case EMC_TRAJ_SET_SCALE_TYPE:
 		case EMC_TRAJ_SET_SPINDLE_SCALE_TYPE:
-		case EMC_TRAJ_SET_FEED_OVERRIDE_TYPE:
-		case EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE:
+		case EMC_TRAJ_SET_FO_ENABLE_TYPE:
+	        case EMC_TRAJ_SET_FH_ENABLE_TYPE:
+		case EMC_TRAJ_SET_SO_ENABLE_TYPE:
 		case EMC_SPINDLE_ON_TYPE:
 		case EMC_SPINDLE_OFF_TYPE:
 		case EMC_SPINDLE_BRAKE_RELEASE_TYPE:
@@ -1080,8 +1083,9 @@ interpret_again:
 		case EMC_TRAJ_ABORT_TYPE:
 		case EMC_TRAJ_SET_SCALE_TYPE:
 		case EMC_TRAJ_SET_SPINDLE_SCALE_TYPE:
-		case EMC_TRAJ_SET_FEED_OVERRIDE_TYPE:
-		case EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE:
+		case EMC_TRAJ_SET_FO_ENABLE_TYPE:
+	        case EMC_TRAJ_SET_FH_ENABLE_TYPE:
+		case EMC_TRAJ_SET_SO_ENABLE_TYPE:
 		case EMC_SPINDLE_INCREASE_TYPE:
 		case EMC_SPINDLE_DECREASE_TYPE:
 		case EMC_SPINDLE_CONSTANT_TYPE:
@@ -1173,8 +1177,9 @@ interpret_again:
 	    case EMC_AXIS_SET_STEP_PARAMS_TYPE:
 	    case EMC_TRAJ_SET_SCALE_TYPE:
 	    case EMC_TRAJ_SET_SPINDLE_SCALE_TYPE:
-	    case EMC_TRAJ_SET_FEED_OVERRIDE_TYPE:
-	    case EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE:
+	    case EMC_TRAJ_SET_FO_ENABLE_TYPE:
+	    case EMC_TRAJ_SET_FH_ENABLE_TYPE:
+	    case EMC_TRAJ_SET_SO_ENABLE_TYPE:
 	    case EMC_SPINDLE_ON_TYPE:
 	    case EMC_SPINDLE_OFF_TYPE:
 	    case EMC_SPINDLE_BRAKE_RELEASE_TYPE:
@@ -1278,8 +1283,9 @@ static int emcTaskCheckPreconditions(NML
     case EMC_TRAJ_SET_ACCELERATION_TYPE:
     case EMC_TRAJ_SET_TERM_COND_TYPE:
     case EMC_TRAJ_SET_SPINDLESYNC_TYPE:
-    case EMC_TRAJ_SET_FEED_OVERRIDE_TYPE:
-    case EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE:
+    case EMC_TRAJ_SET_FO_ENABLE_TYPE:
+    case EMC_TRAJ_SET_FH_ENABLE_TYPE:
+    case EMC_TRAJ_SET_SO_ENABLE_TYPE:
 	return EMC_TASK_EXEC_WAITING_FOR_IO;
 	break;
 
@@ -1529,14 +1535,16 @@ static int emcTaskIssueCommand(NMLmsg * 
 	retval = emcTrajSetSpindleScale(emcTrajSetSpindleScaleMsg->scale);
 	break;
 
-    case EMC_TRAJ_SET_FEED_OVERRIDE_TYPE:
-	emcTrajSetFeedOverrideMsg = (EMC_TRAJ_SET_FEED_OVERRIDE *) cmd;
-	retval = emcTrajSetFeedOverride(emcTrajSetFeedOverrideMsg->mode);
+    case EMC_TRAJ_SET_FO_ENABLE_TYPE:
+	retval = emcTrajSetFOEnable(((EMC_TRAJ_SET_FO_ENABLE *) cmd)->mode);  // feed override enable/disable
 	break;
 
-    case EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE:
-	emcTrajSetSpindleOverrideMsg = (EMC_TRAJ_SET_SPINDLE_OVERRIDE *) cmd;
-	retval = emcTrajSetSpindleOverride(emcTrajSetSpindleOverrideMsg->mode);
+    case EMC_TRAJ_SET_FH_ENABLE_TYPE:
+	retval = emcTrajSetFHEnable(((EMC_TRAJ_SET_FH_ENABLE *) cmd)->mode); //feed hold enable/disable
+	break;
+
+    case EMC_TRAJ_SET_SO_ENABLE_TYPE:
+	retval = emcTrajSetSOEnable(((EMC_TRAJ_SET_SO_ENABLE *) cmd)->mode); //spindle speed override enable/disable
 	break;
 
     case EMC_TRAJ_SET_VELOCITY_TYPE:
@@ -1652,7 +1660,7 @@ static int emcTaskIssueCommand(NMLmsg * 
 	break;
 
     case EMC_MOTION_ADAPTIVE_TYPE:
-	retval = emcTrajSetAdaptiveFeed(((EMC_MOTION_ADAPTIVE *) cmd)->status);
+	retval = emcTrajSetAFEnable(((EMC_MOTION_ADAPTIVE *) cmd)->status);
 	break;
 
     case EMC_SET_DEBUG_TYPE:
@@ -2027,8 +2035,9 @@ static int emcTaskCheckPostconditions(NM
     case EMC_TRAJ_CLEAR_PROBE_TRIPPED_FLAG_TYPE:
     case EMC_TRAJ_SET_TELEOP_ENABLE_TYPE:
     case EMC_TRAJ_SET_TELEOP_VECTOR_TYPE:
-    case EMC_TRAJ_SET_FEED_OVERRIDE_TYPE:
-    case EMC_TRAJ_SET_SPINDLE_OVERRIDE_TYPE:
+    case EMC_TRAJ_SET_FO_ENABLE_TYPE:
+    case EMC_TRAJ_SET_FH_ENABLE_TYPE:
+    case EMC_TRAJ_SET_SO_ENABLE_TYPE:
 	return EMC_TASK_EXEC_DONE;
 	break;
 
Index: emc/task/taskintf.cc
===================================================================
RCS file: /cvs/emc2/src/emc/task/taskintf.cc,v
retrieving revision 1.57
diff -u -p -r1.57 taskintf.cc
--- emc/task/taskintf.cc	16 Oct 2006 22:23:09 -0000	1.57
+++ emc/task/taskintf.cc	4 Nov 2006 23:26:23 -0000
@@ -776,25 +776,33 @@ int emcTrajSetSpindleScale(double scale)
     return usrmotWriteEmcmotCommand(&emcmotCommand);
 }
 
-int emcTrajSetFeedOverride(unsigned char mode)
+int emcTrajSetFOEnable(unsigned char mode)
 {
-    emcmotCommand.command = EMCMOT_FEED_OVERRIDE;
+    emcmotCommand.command = EMCMOT_FO_ENABLE;
     emcmotCommand.mode = mode;
 
     return usrmotWriteEmcmotCommand(&emcmotCommand);
 }
 
-int emcTrajSetSpindleOverride(unsigned char mode)
+int emcTrajSetFHEnable(unsigned char mode)
 {
-    emcmotCommand.command = EMCMOT_SPINDLE_OVERRIDE;
+    emcmotCommand.command = EMCMOT_FH_ENABLE;
     emcmotCommand.mode = mode;
 
     return usrmotWriteEmcmotCommand(&emcmotCommand);
 }
 
-int emcTrajSetAdaptiveFeed(unsigned char enable)
+int emcTrajSetSOEnable(unsigned char mode)
 {
-    emcmotCommand.command = EMCMOT_ADAPTIVE_FEED;
+    emcmotCommand.command = EMCMOT_SO_ENABLE;
+    emcmotCommand.mode = mode;
+
+    return usrmotWriteEmcmotCommand(&emcmotCommand);
+}
+
+int emcTrajSetAFEnable(unsigned char enable)
+{
+    emcmotCommand.command = EMCMOT_AF_ENABLE;
 
     if ( enable ) {
 	emcmotCommand.flags = 1;