#!/usr/bin/python

import sys, os
BASE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), ".."))
sys.path.insert(0, os.path.join(BASE, "lib", "python"))

import hal, emc, time

feed_increment = .01
feed_max = 1.2
sleep_interval = .01
if len(sys.argv) > 1:
    feed_increment = float(sys.argv[1])
if len(sys.argv) > 2:
    feed_max = float(sys.argv[2])
if len(sys.argv) > 3:
    sleep_interval = float(sys.argv[3])

try:
    emc.nmlfile = os.environ['NMLFILE']
except KeyError:
    pass

s = emc.stat()
c = emc.command()

h = hal.component("hal_feedoverride_wheel")
h.newpin("count", hal.HAL_S32, hal.HAL_RD)
h.newpin("enable", hal.HAL_BIT, hal.HAL_RD)
h.ready()

s.poll()
last_count = 0
last_enable = False
blackout = time.time()
feedrate = None

while 1:
    time.sleep(sleep_interval)

    enable = h.enable
    count = h.count
    if enable and not last_enable:
        last_enable = enable
        last_count = count
        continue

    last_enable = enable

    if not h.enable:
        continue
    change = count - last_count
    last_count = count

    if not change: continue

    now = time.time()
    if feedrate is None or now >= blackout:
        s.poll()
        feedrate = s.feedrate
    feedrate += feed_increment * change
    if feedrate > feed_max: feedrate = feed_max
    if feedrate < 0: feedrate = 0
    c.feedrate(feedrate)
    blackout = now + 1


# vim:sw=4:sts=4:et
