Files
MyOwnEtherCATDevice/linuxcnc/sim.gmoccapy.lathe_configs/hallib/util_lib.tcl
2024-01-06 20:54:15 +01:00

63 lines
1.8 KiB
Tcl
Executable File

# util_lib.tcl -- utilities
set ::util_lib_quiet 0
# ::tp is the namespace for [HAL]TWOPASS processing
# quiet irrelevant messages in pass0
if { [namespace exists ::tp] \
&& ([::tp::passnumber] == 0) } { set ::util_lib_quiet 1 }
proc show_context {} {
if { $::util_lib_quiet } { return }
set pname show_context
puts "$pname: argv0=$::argv0"
puts "$pname: argv=$::argv"
foreach arg $::argv {
puts "$pname: arg=$arg"
}
puts "$pname: INI_FILE_NAME=$::env(INI_FILE_NAME)"
} ;# show_context
proc show_ini {} {
if { $::util_lib_quiet } { return }
set vars [uplevel #0 {info vars}]
set exclude_list {TP auto_index tcl_platform env}
foreach v $vars {
if { [lsearch $exclude_list $v] >= 0 } {continue}
set vg ::$v
if [array exists $vg] {
parray $vg
}
}
} ;# show_ini_info
proc show_env {} {
parray ::env
} ;# show_env
proc joint_number_for_axis {axis_letter} {
# For JOINTS_AXES:
# Apply rule for known kins with KINEMATICS_IDENTITY
set kinematics [lindex $::env(KINS_KINEMATICS) 0]
set coordinates $::env(TRAJ_COORDINATES)
if {[ string first " " $coordinates] < 0} {
set coordinates [split $coordinates ""]
}
set coordinates [string toupper $coordinates]
set axis_letter [string toupper $axis_letter]
# rules for known kinematics types
switch $kinematics {
trivkins {set joint_number [lsearch $coordinates $axis_letter]}
default {return -code error \
"joint_number_for_axis: <$axis_letter> unavailable for kinematics:\
<$::env(KINS_KINEMATICS)>"
}
}
#puts stderr "kins=$kinematics coords=$coordinates a=$axis_letter j=$joint_number"
if { $joint_number < 0} {
return -code error \
"joint_number_for_axis <$axis_letter> not in $::env(TRAJ_COORDINATES)"
}
return $joint_number
} ;# joint_number_for_axis