blob: 5ebc1d97b3a4f8a90899899ce3291577e859a0c1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
|
#!/bin/sh
# the next line restarts using emcsh \
exec $LINUXCNC_EMCSH "$0" "$@"
###############################################################
# Description: emcdebug.tcl
# This file sets debug levesl from tkemc.
#
# Derived from a work by Fred Proctor & Will Shackleford
# Author:
# License: GPL Version 2
#
# Copyright (c) 2005-2009 All rights reserved.
###############################################################
#
# Sets value of EMC_DEBUG, so you can turn on/off what you want dumped
# Needs emcsh to run-- this is sourced by tkemc, but it can be run
# standalone. Make sure directory containing emcsh is in your path,
# or edit the exec line above with the path to emcsh.
#
###############################################################
source [file join [file dirname [info script]] .. linuxcnc.tcl]
eval emc_init $argv
# check if any emc commands exist, and quit if not
if {! [string length [info commands emc_plat]]} {
error "emcdebug needs to run from \"emcsh\""
}
proc distributeDebug {} {
global debug_invalid
global debug_config
global debug_defaults
global debug_versions
global debug_task_issue
global debug_io_points
global debug_nml
global debug_motion_time
global debug_interp
global debug_rcs
global debug_traj
global debug_interp_list
# get the debug level from the EMC
set emc_debug_level [emc_debug]
# set the initial check boxes to correspond to current debug settings
set debug_invalid [expr $emc_debug_level % 2]
set emc_debug_level [expr $emc_debug_level >> 1]
set debug_config [expr $emc_debug_level % 2]
set emc_debug_level [expr $emc_debug_level >> 1]
set debug_defaults [expr $emc_debug_level % 2]
set emc_debug_level [expr $emc_debug_level >> 1]
set debug_versions [expr $emc_debug_level % 2]
set emc_debug_level [expr $emc_debug_level >> 1]
set debug_task_issue [expr $emc_debug_level % 2]
set emc_debug_level [expr $emc_debug_level >> 1]
set debug_io_points [expr $emc_debug_level % 2]
set emc_debug_level [expr $emc_debug_level >> 1]
set debug_nml [expr $emc_debug_level % 2]
set emc_debug_level [expr $emc_debug_level >> 1]
set debug_motion_time [expr $emc_debug_level % 2]
set emc_debug_level [expr $emc_debug_level >> 1]
set debug_interp [expr $emc_debug_level % 2]
set emc_debug_level [expr $emc_debug_level >> 1]
set debug_rcs [expr $emc_debug_level % 2]
set emc_debug_level [expr $emc_debug_level >> 1]
set debug_traj [expr $emc_debug_level % 2]
set emc_debug_level [expr $emc_debug_level >> 1]
set debug_interp_list [expr $emc_debug_level % 2]
}
proc collectDebug {} {
global debug_invalid
global debug_config
global debug_defaults
global debug_versions
global debug_task_issue
global debug_io_points
global debug_nml
global debug_motion_time
global debug_interp
global debug_rcs
global debug_traj
global debug_interp_list
set emc_debug_level $debug_interp_list
set emc_debug_level [expr $emc_debug_level << 1]
set emc_debug_level [expr $emc_debug_level + $debug_traj]
set emc_debug_level [expr $emc_debug_level << 1]
set emc_debug_level [expr $emc_debug_level + $debug_rcs]
set emc_debug_level [expr $emc_debug_level << 1]
set emc_debug_level [expr $emc_debug_level + $debug_interp]
set emc_debug_level [expr $emc_debug_level << 1]
set emc_debug_level [expr $emc_debug_level + $debug_motion_time]
set emc_debug_level [expr $emc_debug_level << 1]
set emc_debug_level [expr $emc_debug_level + $debug_nml]
set emc_debug_level [expr $emc_debug_level << 1]
set emc_debug_level [expr $emc_debug_level + $debug_io_points]
set emc_debug_level [expr $emc_debug_level << 1]
set emc_debug_level [expr $emc_debug_level + $debug_task_issue]
set emc_debug_level [expr $emc_debug_level << 1]
set emc_debug_level [expr $emc_debug_level + $debug_versions]
set emc_debug_level [expr $emc_debug_level << 1]
set emc_debug_level [expr $emc_debug_level + $debug_defaults]
set emc_debug_level [expr $emc_debug_level << 1]
set emc_debug_level [expr $emc_debug_level + $debug_config]
set emc_debug_level [expr $emc_debug_level << 1]
set emc_debug_level [expr $emc_debug_level + $debug_invalid]
emc_debug $emc_debug_level
}
proc popdownDebug {w} {
destroy $w
if {$w == "."} {
exit
}
}
proc popupDebug {{w .debugwindow}} {
global debug_invalid
global debug_config
global debug_defaults
global debug_versions
global debug_task_issue
global debug_io_points
global debug_nml
global debug_motion_time
global debug_interp
global debug_rcs
global debug_traj
global debug_interp_list
# trap "." as window name, and erase it, so that widgets
# don't begin with two dots. We'll refer to the passed-in
# name "w" here; in code following this setup we'll use the
# modified name "lw"
if {$w == "."} {
# we're running standalone
set lw ""
wm title $w [msgcat::mc "LinuxCNC Debug"]
} else {
# we were sourced into tkemc, and run as a popup
set lw $w
if {[winfo exists $w]} {
wm deiconify $w
raise $w
focus $w
return
}
toplevel $w
wm title $w [msgcat::mc "LinuxCNC Debug"]
}
# use "lw" as name of top level from now on
# set the debug variables so that they're initially checked properly
distributeDebug
checkbutton $lw.b1 -text [msgcat::mc "Invalid INI file entries"] -variable debug_invalid -relief flat
checkbutton $lw.b2 -text [msgcat::mc "Configuration information"] -variable debug_config -relief flat
checkbutton $lw.b3 -text [msgcat::mc "Use of defaults"] -variable debug_defaults -relief flat
checkbutton $lw.b4 -text [msgcat::mc "Version information"] -variable debug_versions -relief flat
checkbutton $lw.b5 -text [msgcat::mc "Command issuing"] -variable debug_task_issue -relief flat
checkbutton $lw.b6 -text [msgcat::mc "IO points"] -variable debug_io_points -relief flat
checkbutton $lw.b7 -text [msgcat::mc "NML"] -variable debug_nml -relief flat
checkbutton $lw.b8 -text [msgcat::mc "Motion time"] -variable debug_motion_time -relief flat
checkbutton $lw.b9 -text [msgcat::mc "Interpreter"] -variable debug_interp -relief flat
checkbutton $lw.b10 -text [msgcat::mc "RCS"] -variable debug_rcs -relief flat
checkbutton $lw.b11 -text [msgcat::mc "Trajectory level"] -variable debug_traj -relief flat
checkbutton $lw.b12 -text [msgcat::mc "Interpreter list"] -variable debug_interp_list -relief flat
pack $lw.b1 $lw.b2 $lw.b3 $lw.b4 $lw.b5 $lw.b6 $lw.b7 $lw.b8 $lw.b9 $lw.b10 $lw.b11 $lw.b12 -side top -pady 2 -anchor w
frame $lw.buttons
button $lw.buttons.ok -text OK -default active -command "collectDebug; popdownDebug $w"
button $lw.buttons.cancel -text Cancel -command "popdownDebug $w"
pack $lw.buttons -side bottom -fill x -pady 2m
pack $lw.buttons.ok $lw.buttons.cancel -side left -expand 1
bind $w <Return> "emc_debug [collectDebug] ; popdownDebug $w"
}
# if we're not running inside tkemc, then pop us up in root window
if {! [info exists tkemc]} {
popupDebug .
}
|