# General section -------------------------------------------------------------
[EMC]
VERSION = 1.1
MACHINE =               gmoccapy tool sensor
DEBUG =               0x00080000
#DEBUG =               0x7FFFFFFF

# for details see nc_files/subroutines/maco_instructions.txt
#[MACROS]
MACRO = i_am_lost
MACRO = halo_world
MACRO = jog_around
MACRO = increment xinc yinc
MACRO = go_to_position X-pos Y-pos Z-pos

# Sections for display options ------------------------------------------------
[DISPLAY]
DISPLAY = gmoccapy
# We do explicit give an preference file here, because otherwise 
# the sim may not work on other computers. That is also the reason
# we use the prefix para, so it will not be ignored from git
PREFERENCE_FILE_PATH = gmoccapy_tool_sensor.para

EMBED_TAB_NAME = tool sensor
EMBED_TAB_LOCATION = box_right
EMBED_TAB_COMMAND = gladevcp -x {XID} -H tool_sensor.hal tool_sensor.glade

# Cycle time, in milliseconds, that display will sleep between polls
CYCLE_TIME =            100

# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE =     1.5
MAX_SPINDLE_OVERRIDE =  1.2
MIN_SPINDLE_OVERRIDE = .5

DEFAULT_SPINDLE_SPEED = 450

# Prefix to be used
PROGRAM_PREFIX = ../../../nc_files/

# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5

# list of selectable jog increments
INCREMENTS = 1.0 mm, 0.1 mm, 0.01 mm, 0.001 mm

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python3

# Task controller section -----------------------------------------------------
[RS274NGC]
RS274NGC_STARTUP_CODE = G17 G21 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9
PARAMETER_FILE = sim.var
SUBROUTINE_PATH = macros

# optional features - a bit mask to selectively turn on experimental/dubious features
# see 
# RETAIN_G43           0x00000001
# OWORD_N_ARGS         0x00000002
# INI_VARS             0x00000004
# HAL_PIN_VARS         0x00000008
# NO_DOWNCASE_OWORD    0x00000010
# turn on all optional features

# turn on optional features in this case just INI reading 
FEATURES=12

ON_ABORT_COMMAND=O <on_abort> call 

# parameters exposed by change_prolog/evaluated by change_epilog:
#    #<tool_in_spindle>
#    #<selected_tool>
#    #<current_pocket>
#    #<selected_pocket>
REMAP=M6  modalgroup=6 prolog=change_prolog ngc=change epilog=change_epilog

REMAP=M61  modalgroup=6 prolog=settool_prolog ngc=settool_g43 epilog=settool_epilog

# accessible in interp as #<_[section]name>
# start of tool length touchoff probe
[EMCMOT]
EMCMOT =              motmod
COMM_TIMEOUT =          1.0
BASE_PERIOD  =          100000
SERVO_PERIOD =          1000000

# Hardware Abstraction Layer section --------------------------------------------------
[TASK]
TASK =                  milltask
CYCLE_TIME =            0.001

# Part program interpreter section --------------------------------------------
[HAL]
HALFILE = core_sim.hal
HALFILE = spindle_sim.hal
HALFILE = simulated_home.hal

# Single file that is executed after the GUI has started.
POSTGUI_HALFILE = gmoccapy_postgui.hal

HALUI = halui

# Trajectory planner section --------------------------------------------------
[HALUI]
#No Content

[TRAJ]
COORDINATES = X Y Z 
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 9.0
MAX_LINEAR_VELOCITY = 234
POSITION_FILE = position.txt
#NO_FORCE_HOMING = 1

[EMCIO]
# tool table file
TOOL_TABLE = tool.tbl

[KINS]
KINEMATICS = trivkins coordinates=xyz
JOINTS = 3

[AXIS_X]
MIN_LIMIT = 0
MAX_LIMIT = 150.0
MAX_VELOCITY = 15.0
MAX_ACCELERATION = 500.0

[JOINT_0]
TYPE = LINEAR
MAX_VELOCITY = 15.0
MAX_ACCELERATION = 500.0
STEPGEN_MAXACCEL = 750.5
SCALE = 266.6666
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = 0
MAX_LIMIT = 150.0
HOME_OFFSET = 0.0
HOME = 10.000
HOME_SEARCH_VEL = 30
HOME_LATCH_VEL = 10
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1

[AXIS_Y]
MIN_LIMIT = 0
MAX_LIMIT = 110.0
MAX_VELOCITY = 15.0
MAX_ACCELERATION = 500.0

[JOINT_1]
TYPE = LINEAR
MAX_VELOCITY = 15.0
MAX_ACCELERATION = 500.0
STEPGEN_MAXACCEL = 750.5
SCALE = 266.6666
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = 0
MAX_LIMIT = 110.0
HOME_OFFSET = 0.0
HOME = 10.000
HOME_SEARCH_VEL = 30
HOME_LATCH_VEL = 10
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1

[AXIS_Z]
MIN_LIMIT = -100.0
MAX_LIMIT = 0
MAX_VELOCITY = 15.0
MAX_ACCELERATION = 500.0

[JOINT_2]
TYPE = LINEAR
MAX_VELOCITY = 15.0
MAX_ACCELERATION = 500.0
STEPGEN_MAXACCEL = 750.5
SCALE = 266.6666
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -100.0
MAX_LIMIT = 0
HOME_OFFSET = 0.0
HOME = -10.000
HOME_SEARCH_VEL = 30
HOME_LATCH_VEL = 10
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0

# section for main IO controller parameters -----------------------------------
[TOOLSENSOR]
X = 10
Y = 10  
Z = -20
# abort change if no toolsensor contact after this probe distance
MAXPROBE =  -20

# this is not named TOOL_CHANGE_POSITION  on purpose - canon uses it and will
# interfere
[CHANGE_POSITION]
X = 10
Y = 10
Z = -2

# the Python plugins serves interpreter and task
[PYTHON]
PATH_PREPEND = python
TOPLEVEL = python/toplevel.py
LOG_LEVEL = 8

# Motion control section ------------------------------------------------------
