summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Radek <chris@timeguy.com>2014-06-10 14:52:54 -0500
committerChris Radek <chris@timeguy.com>2014-06-10 16:51:11 -0500
commitb986a569cf057881a3c5d6e849f61bb074c970de (patch)
tree64202b56bc8d07fefa1926719274d9ac57370b86
parent9b64c076cba701acc14f345f52089fd2ab1295af (diff)
downloadlinuxcnc-b986a569cf057881a3c5d6e849f61bb074c970de.tar.gz
linuxcnc-b986a569cf057881a3c5d6e849f61bb074c970de.zip
Support rapid override "direct" input in halui, for symmetry
-rw-r--r--src/emc/usr_intf/halui.cc36
1 files changed, 23 insertions, 13 deletions
diff --git a/src/emc/usr_intf/halui.cc b/src/emc/usr_intf/halui.cc
index 2e3ff172f..0793e2b95 100644
--- a/src/emc/usr_intf/halui.cc
+++ b/src/emc/usr_intf/halui.cc
@@ -216,6 +216,7 @@ DONE: - rapid-override
halui.rapid-override.scale float // pin for setting the scale on changing the RO
halui.rapid-override.counts s32 //counts from an encoder for example to change RO
halui.rapid-override.count-enable bit // TRUE to modify RO based on counts
+ halui.rapid-override.direct-value bit // TRUE to make override based as a direct (scaled) value rather then counts of increments
halui.rapid-override.increase bit // pin for increasing the RO (+=scale)
halui.rapid-override.decrease bit // pin for decreasing the RO (-=scale)
@@ -931,28 +932,32 @@ int halui_hal_init(void)
retval = halui_export_pin_IN_s32(&(halui_data->fo_counts), "halui.feed-override.counts");
if (retval < 0) return retval;
*halui_data->fo_counts = 0;
- retval = halui_export_pin_IN_s32(&(halui_data->ro_counts), "halui.rapid-override.counts");
- if (retval < 0) return retval;
- *halui_data->ro_counts = 0;
retval = halui_export_pin_IN_bit(&(halui_data->fo_count_enable), "halui.feed-override.count-enable");
if (retval < 0) return retval;
*halui_data->fo_count_enable = 1;
retval = halui_export_pin_IN_bit(&(halui_data->fo_direct_value), "halui.feed-override.direct-value");
if (retval < 0) return retval;
*halui_data->fo_direct_value = 0;
+ retval = halui_export_pin_IN_float(&(halui_data->fo_scale), "halui.feed-override.scale");
+ if (retval < 0) return retval;
+ retval = halui_export_pin_IN_bit(&(halui_data->fo_increase), "halui.feed-override.increase");
+ if (retval < 0) return retval;
+ retval = halui_export_pin_IN_bit(&(halui_data->fo_decrease), "halui.feed-override.decrease");
+ if (retval < 0) return retval;
+
+ retval = halui_export_pin_IN_s32(&(halui_data->ro_counts), "halui.rapid-override.counts");
+ if (retval < 0) return retval;
+ *halui_data->ro_counts = 0;
retval = halui_export_pin_IN_bit(&(halui_data->ro_count_enable), "halui.rapid-override.count-enable");
if (retval < 0) return retval;
*halui_data->ro_count_enable = 1;
- retval = halui_export_pin_IN_float(&(halui_data->fo_scale), "halui.feed-override.scale");
+ retval = halui_export_pin_IN_bit(&(halui_data->ro_direct_value), "halui.rapid-override.direct-value");
if (retval < 0) return retval;
+ *halui_data->ro_direct_value = 0;
retval = halui_export_pin_IN_float(&(halui_data->ro_scale), "halui.rapid-override.scale");
if (retval < 0) return retval;
- retval = halui_export_pin_IN_bit(&(halui_data->fo_increase), "halui.feed-override.increase");
- if (retval < 0) return retval;
retval = halui_export_pin_IN_bit(&(halui_data->ro_increase), "halui.rapid-override.increase");
if (retval < 0) return retval;
- retval = halui_export_pin_IN_bit(&(halui_data->fo_decrease), "halui.feed-override.decrease");
- if (retval < 0) return retval;
retval = halui_export_pin_IN_bit(&(halui_data->ro_decrease), "halui.rapid-override.decrease");
if (retval < 0) return retval;
@@ -1844,11 +1849,16 @@ static void check_hal_changes()
}
//rapid-override stuff
- counts = *halui_data->ro_counts;
- if(counts != old_halui_data.ro_counts) {
- if(*halui_data->ro_count_enable)
- sendRapidOverride( *halui_data->ro_value + (counts - old_halui_data.ro_counts) *
- *halui_data->ro_scale);
+ counts = new_halui_data.ro_counts;
+ if (counts != old_halui_data.ro_counts) {
+ if (new_halui_data.ro_count_enable) {
+ if (new_halui_data.ro_direct_value) {
+ sendRapidOverride(counts * new_halui_data.ro_scale);
+ } else {
+ sendRapidOverride( new_halui_data.ro_value + (counts - old_halui_data.ro_counts) *
+ new_halui_data.ro_scale);
+ }
+ }
old_halui_data.ro_counts = counts;
}