'\" t
.\" Title: xhc-whb04b-6
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 02/10/2023
.\" Manual: LinuxCNC Documentation
.\" Source: LinuxCNC
.\" Language: English
.\"
.TH "XHC\-WHB04B\-6" "1" "02/10/2023" "LinuxCNC" "LinuxCNC Documentation"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
xhc-whb04b-6 \- Userspace jog dial HAL component for the wireless XHC WHB04B\-6 USB device\&.
.SH "SYNOPSIS"
.sp
xhc\-whb04b\-6 [\-h] | [\-H] [OPTIONS]
.SH "DESCRIPTION"
.sp
The xhc\-whb04b\-6 HAL component supports the XHC WHB04B\-6, a 6\-axis wireless USB pendant\&. It provides a number of push\-buttons, a jogwheel, two rotary buttons for axis and speed / step selection and an ordinary LCD display\&.
.sp
The LCD display, having a very simple firmware interface, indicates the following listed information only\&. No other information, such as custom data, can be printed\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Activated axis (X, Y, Z, A, B or C)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Current axis position of X, Y, Z and separately of A, B, C\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Whether machine (X, Y, Z, A, B or C) or relative (X1, Y1, Z1, A1, B1 or C1) coordinates are displayed\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Step size or velocity depending on the operating mode (MPG or Step or Continuous)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Feedrate override
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Spindle Feedrate override
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Machine state such as reset\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Battery level
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Wireless signal strength
.RE
.sp
The pendant display, its rotary selector switch, and the component pin names use designators x, y, z, a, b and c\&. While this arrangement presumes a machine configured as X, Y, Z, A, B an C, the pins can be assigned independently as required in a HAL configuration\&.
.SH "OPTIONS"
.sp
\fB\-h, \-\-help\fR Prints the synopsis and the most commonly used commands\&.
.sp
\fB\-H\fR Run xhc\-whb04b\-6 in HAL\-mode instead of interactive mode\&. When in HAL mode commands from device will be exposed to HAL\(cqs shred memory\&. Interactive mode is useful for testing device connectivity and debugging\&.
.sp
\fB\-s\fR Lead + jogwheel changes the spindle override speed\&. Each tick will increase/decrease the spindle override\&.
.sp
\fB\-f\fR MPG + jogwheel changes the feed override\&. Each tick will increment/decrement the feed override\&.
.sp
\fB\-B\fR Add 5 mm and 10 mm to Step feedrate output
.sp
\fB\-t\fR Wait with timeout for USB device then proceed, exit otherwise\&. Without \-t the timeout is implicitly infinite\&.
.sp
\fB\-u, \-U\fR Show received data from device\&. With \-U received and transmitted data will be printed\&. Output is prefixed with "usb"\&.
.sp
\fB\-p\fR Show HAL pins and HAL related messages\&. Output is prefixed with "hal"\&.
.sp
\fB\-e\fR Show captured events such as button pressed/released, jog dial, axis rotary button, and feed rotary button event\&. Output is prefixed with "event"\&.
.sp
\fB\-a\fR Enable all logging facilities without explicitly specifying each\&.
.sp
\fB\-c\fR Enable checksum output which is necessary for debugging the checksum generator function\&. Do not rely on this feature since it will be removed once the generator is implemented\&.
.sp
\fB\-n\fR Force being silent and not printing any output except of errors\&. This will also inhibit messages prefixed with "init"\&.
.SH "UDEV"
.sp
The xhc\-whb04b\-6 executable needs permission for reading the pendant\(cqs USB device\&. There may be the need for additional udev rules\&. If so, this file /etc/udev/rules\&.d/99\-xhc\-whb04b\-6\&.rules should be created with the single line ATTR{idProduct}=="eb93", ATTR{idVendor}=="10ce", MODE="0666", OWNER="root", GROUP="plugdev"\&.
.SH "STANDALONE USAGE"
.sp
The xhc\-whb04b\-6 program can be run from the command line without LinuxCNC to test a pendant\&. This standalone mode is used to identify the button codes produced for each button press and debug transmitted USB data\&.
.SS "EXAMPLES"
.PP
xhc\-whb04b\-6 \-ue
.RS 4
Start in userspace mode (simulation) and prints incoming USB data transfer and generated key pressed/released events\&.
.RE
.PP
xhc\-whb04b\-6 \-p
.RS 4
Start in userspace mode (simulation) and prints HAL pin names and events distributed to HAL memory\&.
.RE
.PP
xhc\-whb04b\-6 \-H
.RS 4
Start in HAL mode (Normal mode for real machine use)\&.
.RE
.PP
xhc\-whb04b\-6 \-HsfB
.RS 4
Start in HAL mode + Spindle Override + Feedrate Override + Big step 5/10\ mm)\&.
.RE
.SH "HAL USAGE"
.sp
Use the \-H option to specify HAL mode and other options as required: loadusr \-W xhc\-whb04b\-6 \-HsfB
.SS "Input/Output Signals"
.sp
Note: For each button an output pin is provided even if no functionality is realized with that signal\&. For example, to stop a running program the Stop button pin may be directly connected to halui\&.program\&.stop\&. However, to start/pause/resume a program, the corresponding button toggles besides whb\&.button\&.start\-pause also the ``whb\&.halui\&.program\&.``{run,pause,resume} signals accordingly\&.
.sp
Note: The Spindle+/Spindle\- buttons do manipulate the spindle override\&. The spindle speed is set with the respective combos Fn + Spindle\- and FN + Spindle+\&.
.sp
The following tables list all in\-/output pins and state which signals they are meant to be connected to\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBAxis and Stepgen\fR
.RS 4
.sp
Signals utilized for moving axis\&.
.sp
\fI\fR \&... denotes the axis number, which is of {x, y, z, a, b, c}\&.
.PP
whb\&.halui\&.home\-all (bit,out)
.RS 4
connect to
halui\&.home\-all, driven by M\-Home\&. Pin for requesting all axis to home\&. See also
whb\&.button\&.m\-home\&.
.RE
.PP
whb\&.halui\&.axis\&.__\&.select (bit,out)
.RS 4
connect to
halui\&.axis\&.__\&.select\&. Pin to select axis\&.
.RE
.PP
whb\&.axis\&.__\&.jog\-counts (s32,out)
.RS 4
connect to
axis\&.__\&.jog\-counts\&. The count pin of the jogwheel\&.
.RE
.PP
whb\&.axis\&.__\&.jog\-enable (bit,out)
.RS 4
connect to
axis\&.__\&.jog\-enable\&. If true (and in manual mode), any change to "jog\-counts" will result in motion\&. If false, "jog\-counts" is ignored\&.
.RE
.PP
whb\&.axis\&.__\&.jog\-scale (float,out)
.RS 4
connect to
axis\&.`____\&.jog\-scale`\&. The distance to move for each count on "jog\-counts", in machine units\&.
.RE
.PP
whb\&.axis\&.__\&.jog\-vel\-mode (bit,out)
.RS 4
connect to
axis\&.`____\&.jog\-jog\-vel\-mode`\&. If false the jogwheel operates in position mode\&. The axis will move exactly jog\-scale units for each count, regardless of how long that might take\&. If true, the jogwheel operates in velocity mode \- motion stops when the wheel stops, even if that means the commanded motion is not completed\&.
.RE
.PP
whb\&.halui\&.max\-velocity\&.value (float,in)
.RS 4
connect to
halui\&.max\-velocity\&.value\&. The maximum allowable velocity, in units per second (\fI\fR
is two digit
\fI0\fR\-padded)\&.
.RE
.PP
whb\&.halui\&.feed\-override\&.scale (float,in)
.RS 4
connect to
halui\&.feed\-override\&.scale\&. The scaling for feed override value\&.
.RE
.PP
whb\&.halui\&.axis\&.`____\&.pos\-feedback` (float,in)
.RS 4
connect to
halui\&.axis\&.`____\&.pos\-feedback`\&. Feedback axis position in machine coordinates to be displayed\&.
.RE
.PP
whb\&.halui\&.axis\&.__\&.pos\-relative (float,in)
.RS 4
connect to
halui\&.axis\&.`____\&.pos\-relative`\&. Commanded axis position in relative coordinates to be displayed\&.
.RE
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBMachine\fR
.RS 4
.sp
Signals utilized for toggling machine status\&.
.PP
whb\&.halui\&.machine\&.on (bit,out)
.RS 4
connect to
halui\&.machine\&.on\&. Pin for requesting machine on\&.
.RE
.PP
whb\&.halui\&.machine\&.is\-on (bit,in)
.RS 4
connect to
halui\&.machine\&.is\-on\&. Pin that indicates machine is on\&.
.RE
.PP
whb\&.halui\&.machine\&.off (bit,out)
.RS 4
connect to
halui\&.machine\&.off\&. Pin for requesting machine off\&.
.RE
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBSpindle\fR
.RS 4
.PP
\fBSignals utilized for operating a spindle\&.\fR
.PP
whb\&.halui\&.spindle\&.start (bit,out)
.RS 4
connect to
halui\&.spindle\&.0\&.start\&. Pin to start the spindle\&.
.RE
.PP
whb\&.halui\&.spindle\&.is\-on (bit,in)
.RS 4
connect to
halui\&.spindle\&.0\&.on\&. Pin to indicate spindle is on (either direction)\&.
.RE
.PP
whb\&.halui\&.spindle\&.stop (bit,out)
.RS 4
connect to
halui\&.spindle\&.0\&.stop\&. Pin to stop the spindle\&.
.RE
.PP
whb\&.halui\&.spindle\&.forward (bit,out)
.RS 4
connect to
halui\&.spindle\&.0\&.forward\&. Pin to make the spindle go forward\&.
.RE
.PP
whb\&.halui\&.spindle\&.reverse (bit,out)
.RS 4
connect to
halui\&.spindle\&.0\&.reverse\&. Pin to make the spindle go reverse\&.
.RE
.PP
whb\&.halui\&.spindle\&.decrease (bit,out)
.RS 4
connect to
halui\&.spindle\&.0\&.decrease\&. Pin to decrease the spindle speed\&.
.RE
.PP
whb\&.halui\&.spindle\&.increase (bit,out)
.RS 4
connect to
halui\&.spindle\&.0\&.increase\&. Pin to increase the spindle speed\&.
.RE
.PP
whb\&.halui\&.spindle\-override\&.increase (bit,out)
.RS 4
connect to
halui\&.spindle\&.0\&.override\&.increase\&. Pin for increasing the spindle override by the amount of scale\&.
.RE
.PP
whb\&.halui\&.spindle\-override\&.decrease (bit,out)
.RS 4
connect to
halui\&.spindle\&.0\&.override\&.decrease\&. Pin for decreasing the spindle override by the amount of scale\&.
.RE
.PP
whb\&.halui\&.spindle\-override\&.value (float,in)
.RS 4
connect to
halui\&.spindle\&.0\&.override\&.value\&. The current spindle override value\&.
.RE
.PP
whb\&.halui\&.spindle\-override\&.scale (float,in)
.RS 4
connect to
halui\&.spindle\&.0\&.override\&.scale\&. The current spindle scaling override value\&.
.RE
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBFeed\fR
.RS 4
.sp
Signals utilized for operating spindle and feed override\&. The feed rotary button can serve in
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Continuous move x% from max velocity
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Step move x mm
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
MPG override feed/spindle
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The special position Lead\&.
\fBContinuous:\fR
In this mode jogging is performed at the selected feed rate\&. As long the jogwheel turns, the selected axis moves\&.
\fBStep:\fR
In this mode the machine moves steps * wheel_counts at the currently selected step size and the current set feed rate in machine units\&. If the commanded position is not reached the machine keeps moving even the jogwheel is not turning\&.
\fBLead:\fR
Manipulates the spindle override\&.
\fBMPG:\fR
Manipulates the feedrate override\&.
.RE
.sp
Note: As a consequence of 3 modes from manufacturer, switching the feed rotary button back from Lead revert to MPG mode, MPG mode is default mode at startup\&. Depending on the mode before turning the rotary button, the feed override results in different values\&. In MPG/CON the feed rate will change to 100%, 60%, \&... and so forth\&. In Step mode the feed rate is specified in mm\&.
.PP
whb\&.halui\&.feed\-override\&.value (float,in)
.RS 4
connect to
halui\&.feed\-override\&.value\&. The current feed override value\&.
.RE
.PP
whb\&.halui\&.feed\-override\&.decrease (bit,out)
.RS 4
connect to
halui\&.feed\-override\&.decrease\&. Pin for decreasing the feed override by amount of scale\&.
.RE
.PP
whb\&.halui\&.feed\-override\&.increase (bit,out)
.RS 4
connect to
halui\&.feed\-override\&.increase\&. Pin for increasing the feed override by amount of scale\&.
.RE
.PP
whb\&.halui\&.feed\-override\&.scale (float,out)
.RS 4
connect to
halui\&.feed\-override\&.scale\&. Pin for setting the scale on changing the feed override\&.
.RE
.PP
whb\&.halui\&.max\-velocity\&.value (float,out)
.RS 4
connect to
halui\&.max\-velocity\&.value\&.
.RE
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBProgram\fR
.RS 4
.sp
Signals for operating program and MDI mode\&.
.PP
whb\&.halui\&.program\&.run (bit,out)
.RS 4
connect to
halui\&.program\&.run
in for running a program\&.
.RE
.PP
whb\&.halui\&.program\&.is\-running (bit,in)
.RS 4
connect to
halui\&.program\&.is\-running
in indicating a program is running\&.
.RE
.PP
whb\&.halui\&.program\&.pause (bit,out)
.RS 4
connect to
halui\&.program\&.pause\&. Pin for pausing a program\&.
.RE
.PP
whb\&.halui\&.program\&.is\-paused (bit,in)
.RS 4
connect to
halui\&.program\&.is\-paused\&. Pin indicating a program is pausing\&.
.RE
.PP
whb\&.halui\&.program\&.resume (bit,out)
.RS 4
connect to
halui\&.program\&.resume\&. Pin for resuming a program\&.
.RE
.PP
whb\&.halui\&.program\&.stop (bit,out)
.RS 4
connect to
program\&.stop\&. Pin for stopping a program\&.
.RE
.PP
whb\&.halui\&.program\&.is\-idle (bit,in)
.RS 4
connect to
halui\&.program\&.is\-idle\&. Pin indicating no program is running\&.
.RE
.PP
whb\&.halui\&.mode\&.auto (bit,out)
.RS 4
connect to
halui\&.mode\&.auto\&. Pin for requesting auto mode\&.
.RE
.PP
whb\&.halui\&.mode\&.is\-auto (bit,in)
.RS 4
connect to
halui\&.mode\&.is\-auto\&. Pin for indicating auto mode is on\&.
.RE
.PP
whb\&.halui\&.mode\&.joint (bit,out)
.RS 4
connect to
halui\&.mode\&.joint
Pin for requesting joint by joint mode\&.
.RE
.PP
whb\&.halui\&.mode\&.is\-joint (bit,in)
.RS 4
connect to
halui\&.mode\&.is\-joint\&. Pin indicating joint by joint mode is on\&.
.RE
.PP
whb\&.halui\&.mode\&.manual (bit,out)
.RS 4
connect to
halui\&.mode\&.manual\&. Pin for requesting manual mode\&.
.RE
.PP
whb\&.halui\&.mode\&.is\-manual (bit,in)
.RS 4
connect to
halui\&.mode\&.is\-manual\&. Pin indicating manual mode is on\&.
.RE
.PP
whb\&.halui\&.mode\&.mdi (bit,out)
.RS 4
connect to
halui\&.mode\&.mdi\&. Pin for requesting MDI mode\&.
.RE
.PP
whb\&.halui\&.mode\&.is\-mdi (bit,in)
.RS 4
connect to
halui\&.mode\&.is\-mdi\&. Pin indicating MDI mode is on\&.
.RE
.PP
whb\&.halui\&.mode\&.teleop (bit,out)
.RS 4
connect to
halui\&.mode\&.teleop\&. Pin for requesting axis by axis mode\&.
.RE
.PP
whb\&.halui\&.mode\&.is\-teleop (bit,in)
.RS 4
connect to
halui\&.mode\&.is\-teleop\&. Pin indicating axis by axis mode is on\&.
.RE
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBButtons\fR
.RS 4
.sp
For flexibility reasons each button provides an output pin even if no functionality is realized directly with that signal\&. The Fn button can be combined with each other push\-button\&. This includes also RESET, Stop, Start/Pause, Macro\-10, and Step|Continuous\&. By default the more frequent used orange buttons are executed, whereas blue ones (whb\&.button\&.macro\-\fI\fR) by combining them with Fn (press Fn first then button)\&.
.sp
Button macro needs to be added to your INI and needs to be edited for your own use:
.sp
.if n \{\
.RS 4
.\}
.nf
[HALUI]
MDI_COMMAND=(debug,macro0) # this one is for numbering but not used by pendant (need 1 to 16)
MDI_COMMAND=(debug,macro1)
MDI_COMMAND=(debug,macro2)
MDI_COMMAND=(debug,macro3)
MDI_COMMAND=(debug,macro4)
MDI_COMMAND=(debug,macro5)
MDI_COMMAND=(debug,macro6)
MDI_COMMAND=(debug,macro7)
MDI_COMMAND=(debug,macro8)
MDI_COMMAND=(debug,macro9)
MDI_COMMAND=(debug,macro10)
MDI_COMMAND=(debug,macro11)
MDI_COMMAND=(debug,macro12)
MDI_COMMAND=(debug,macro13)
MDI_COMMAND=(debug,macro14)
MDI_COMMAND=(debug,macro15)
MDI_COMMAND=(debug,macro16)
.fi
.if n \{\
.RE
.\}
.sp
\fB\fI\fR\fR \&... denotes an arbitrary macro number which is of {1, 2, \&..., 16}
.PP
whb\&.button\&.reset (bit,out)
.RS 4
see
whb\&.halui\&.estop\&.{activate,
reset} True one Reset button down, false otherwise\&. For toggling E\-stop use whb\&.halui\&.estop \&.active and \&.reset\&.
.RE
.PP
whb\&.button\&.stop (bit,out)
.RS 4
see
whb\&.halui\&.program\&.stop\&. True on Stop button down, false otherwise\&. For stopping a program use
whb\&.halui\&.program\&.stop\&.
.RE
.PP
whb\&.button\&.start\-pause (bit,out)
.RS 4
see
whb\&.halui\&.program\&.{run,
pause,
resume}\&. True on Start\-Pause button down, false otherwise\&. For toggling start\-pause use `whb\&.halui\&.program\&.run,
\&.pause, and
\&.resume\&.
.RE
.PP
whb\&.button\&.feed\-plus (bit,out)
.RS 4
True on Feed+ button down, false otherwise\&.
.RE
.PP
whb\&.button\&.feed\-minus (bit,out)
.RS 4
True on Feed\- button down, false otherwise\&.
.RE
.PP
whb\&.button\&.spindle\-plus (bit,out)
.RS 4
see
halui\&.spindle\&.0\&.override\&.increase\&. True on Spindle+ button down, false otherwise\&. This button is meant to manipulate the spindle override\&. For increasing the spindle override use
halui\&.spindle\&.0\&.override\&.increase\&.
.RE
.PP
whb\&.button\&.spindle\-minus (bit,out)
.RS 4
see
halui\&.spindle\&.0\&.override\&.decrease\&. True on Spindle\- button down, false otherwise\&. This button is meant to manipulate the spindle override\&. For decreasing the spindle override use
halui\&.spindle\&.0\&.override\&.decrease\&.
.RE
.PP
whb\&.button\&.m\-home (bit,out)
.RS 4
connect to
halui\&.home\-all\&. True on M\-Home button down, false otherwise\&. Requests MDI mode before button pin is set\&. See also
whb\&.halui\&.mode\&.mdi\&.
.RE
.PP
whb\&.button\&.safe\-z (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-`____ True on Safe\-Z button down, false otherwise\&. Requests MDI mode before button pin is set\&. See also `whb\&.halui\&.mode\&.mdi\&.
.RE
.PP
whb\&.button\&.w\-home (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-`____ True on W\-Home button down, false otherwise\&. Requests MDI mode before button pin is set\&. See also `whb\&.halui\&.mode\&.mdi\&.
.RE
.PP
whb\&.button\&.s\-on\-off (bit,out)
.RS 4
see ``whb\&.halui\&.spindle\&.``{``start``, ``stop``} True on S\-ON/OFF button down, false otherwise\&. For toggling spindle on\-off use
halui\&.spindle\&.0\&.start\&. For toggling spindle on\-off use
halui\&.spindle\&.0\&.stop\&.
.RE
.PP
whb\&.button\&.fn (bit,out)
.RS 4
True on Fn button down, false otherwise\&.
.RE
.PP
whb\&.button\&.probe\-z (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-`____ True on Probe\-Z button down, false otherwise\&. Requests MDI mode before button pin is set\&. See also `whb\&.halui\&.mode\&.mdi\&.
.RE
.PP
whb\&.button\&.macro\-1 (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-\fI\fR
True on Macro\-1 button (Fn + Feed+) down, false otherwise\&.
.RE
.PP
whb\&.button\&.macro\-2 (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-\fI\fR
True on Macro\-2 button (Fn + Feed\-) down, false otherwise\&.
.RE
.PP
whb\&.button\&.macro\-3 (bit,out)
.RS 4
see
whb\&.halui\&.spindle\&.increase
True on Macro\-3 button (Fn + Spindle+) down, false otherwise\&. This button is meant to manipulate the spindle speed\&. For decreasing the spindle speed use whb\&.halui\&.spindle\&.increase\&.
.RE
.PP
whb\&.button\&.macro\-4 (bit,out)
.RS 4
see
whb\&.halui\&.spindle\&.decrease
True on Macro\-4 button down (Fn + Spindle\-), false otherwise\&. This button is meant to manipulate the spindle speed\&. For decreasing the spindle speed use
whb\&.halui\&.spindle\&.decrease\&.
.RE
.PP
whb\&.button\&.macro\-5 (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-\fI\fR
True on Macro\-5 button down (Fn + M\-HOME), false otherwise\&.
.RE
.PP
whb\&.button\&.macro\-6 (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-\fI\fR
True on Macro\-6 button down (Fn + Safe\-Z), false otherwise\&.
.RE
.PP
whb\&.button\&.macro\-7 (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-\fI\fR
True on Macro\-7 button down (Fn + W\-HOME), false otherwise\&.
.RE
.PP
whb\&.button\&.macro\-8 (bit,out)
.RS 4
reserved for Spindle Direction True on Macro\-8 button down (Fn + S\-ON/OFF), false otherwise\&.
.RE
.PP
whb\&.button\&.macro\-9 (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-\fI\fR
True on Macro\-9 button down (Fn + Probe\-Z), false otherwise\&.
.RE
.PP
whb\&.button\&.macro\-10 (bit,out)
.RS 4
reserved for toggle DRO Abs/rel\&. True on Macro\-10 button down, false otherwise\&. Switches the display coordinates to relative coordinates\&. On display the axis are denoted then as X1, Y1, Z1, A1, B1 and C1\&. See also
whb\&.halui\&.axis\&.`____\&.pos\-relative`\&.
.RE
.PP
whb\&.button\&.macro\-11 (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-\fI\fR
True on Macro\-11 button down (Fn + RESET), false otherwise\&.
.RE
.PP
whb\&.button\&.macro\-12 (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-\fI\fR
True on Macro\-12 button (Fn + Stop) down, false otherwise\&.
.RE
.PP
whb\&.button\&.macro\-13 (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-\fI\fR
True on Macro\-13 button (Fn + Start/Pause) down, false otherwise\&.
.RE
.PP
whb\&.button\&.macro\-14 (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-\fI\fR
True on Macro\-14 button (Fn + Macro\-10) down, false otherwise\&.
.RE
.PP
whb\&.button\&.macro\-15 (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-\fI\fR
True on Macro\-15 button down (Fn + MPG), false otherwise\&.
.RE
.PP
whb\&.button\&.macro\-16 (bit,out)
.RS 4
connect to
halui\&.mdi\-command\-\fI\fR
True on Macro\-16 button (Fn + Step) down, false otherwise\&.
.RE
.PP
whb\&.button\&.mode\-continuous (bit,out)
.RS 4
True on Continuous mode button down, false otherwise\&.
.RE
.PP
whb\&.button\&.mode\-step (bit,out)
.RS 4
True on Step mode button down, false otherwise\&.
.RE
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBPendant\fR
.RS 4
.PP
whb\&.pendant\&.is\-sleeping (bit,out)
.RS 4
True as long pendant is in sleep mode (usually a few seconds after turned off), false otherwise\&.
.RE
.PP
whb\&.pendant\&.is\-connected (bit,out)
.RS 4
True as long pendant is not in sleep mode (turned on), false otherwise\&.
.RE
.RE
.SH "HAL CONFIGURATION EXAMPLE"
.sp
Exercise caution if using copy and paste of this example code from the online web docs\&. Certain characters are incompatibly encoded by the web site (minus becomes em\-dash)\&. It is safer to copy and paste from https://raw\&.githubusercontent\&.com/LinuxCNC/linuxcnc/2\&.8/src/hal/user_comps/xhc\-whb04b\-6/example\-configuration\&.md\&.
.sp
.if n \{\
.RS 4
.\}
.nf
#
### Hal File xhc_whb04b_6\&.hal Example
#
# ######################################################################
# load pendant components
# ######################################################################
loadusr \-W xhc\-whb04b\-6 \-HsfB
# ######################################################################
# pendant signal configuration
# ######################################################################
# On/Off signals
net machine\&.is\-on halui\&.machine\&.is\-on whb\&.halui\&.machine\&.is\-on
net pdnt\&.machine\&.on whb\&.halui\&.machine\&.on halui\&.machine\&.on
net pdnt\&.machine\&.off whb\&.halui\&.machine\&.off halui\&.machine\&.off
# program related signals
net pdnt\&.program\&.is\-idle whb\&.halui\&.program\&.is\-idle halui\&.program\&.is\-idle
net pdnt\&.program\&.is\-paused whb\&.halui\&.program\&.is\-paused halui\&.program\&.is\-paused
net pdnt\&.program\-is\-running whb\&.halui\&.program\&.is\-running halui\&.program\&.is\-running
net pdnt\&.program\&.resume whb\&.halui\&.program\&.resume halui\&.program\&.resume
net pdnt\&.program\&.pause whb\&.halui\&.program\&.pause halui\&.program\&.pause
net pdnt\&.program\&.run whb\&.halui\&.program\&.run halui\&.program\&.run
net pdnt\&.program\&.stop whb\&.halui\&.program\&.stop halui\&.program\&.stop
# machine mode related signals
net pdnt\&.mode\&.auto whb\&.halui\&.mode\&.auto halui\&.mode\&.auto
net pdnt\&.mode\&.manual whb\&.halui\&.mode\&.manual halui\&.mode\&.manual
net pdnt\&.mode\&.mdi whb\&.halui\&.mode\&.mdi halui\&.mode\&.mdi
net pdnt\&.mode\&.joint whb\&.halui\&.mode\&.joint halui\&.mode\&.joint
net pdnt\&.mode\&.teleop whb\&.halui\&.mode\&.teleop halui\&.mode\&.teleop
net pdnt\&.mode\&.is\-auto halui\&.mode\&.is\-auto whb\&.halui\&.mode\&.is\-auto
net pdnt\&.mode\&.is\-manual halui\&.mode\&.is\-manual whb\&.halui\&.mode\&.is\-manual
net pdnt\&.mode\&.is\-mdi halui\&.mode\&.is\-mdi whb\&.halui\&.mode\&.is\-mdi
net pdnt\&.mode\&.is\-joint halui\&.mode\&.is\-joint whb\&.halui\&.mode\&.is\-joint
net pdnt\&.mode\&.is\-teleop halui\&.mode\&.is\-teleop whb\&.halui\&.mode\&.is\-teleop
# "is\-homed" axis signal for allowing pendant when machine is not homed
net pdnt\&.axis\&.X\&.is\-homed halui\&.joint\&.0\&.is\-homed whb\&.halui\&.joint\&.x\&.is\-homed
net pdnt\&.axis\&.Y\&.is\-homed halui\&.joint\&.1\&.is\-homed whb\&.halui\&.joint\&.y\&.is\-homed
net pdnt\&.axis\&.Z\&.is\-homed halui\&.joint\&.2\&.is\-homed whb\&.halui\&.joint\&.z\&.is\-homed
# "selected axis" signals
net pdnt\&.axis\&.X\&.select whb\&.halui\&.axis\&.x\&.select halui\&.axis\&.x\&.select
net pdnt\&.axis\&.y\&.select whb\&.halui\&.axis\&.y\&.select halui\&.axis\&.y\&.select
net pdnt\&.axis\&.Z\&.select whb\&.halui\&.axis\&.z\&.select halui\&.axis\&.z\&.select
net pdnt\&.axis\&.x\&.jog\-scale whb\&.axis\&.x\&.jog\-scale axis\&.x\&.jog\-scale
net pdnt\&.axis\&.y\&.jog\-scale whb\&.axis\&.y\&.jog\-scale axis\&.y\&.jog\-scale
net pdnt\&.axis\&.z\&.jog\-scale whb\&.axis\&.z\&.jog\-scale axis\&.z\&.jog\-scale
net pdnt\&.axis\&.x\&.jog\-counts whb\&.axis\&.x\&.jog\-counts axis\&.x\&.jog\-counts
net pdnt\&.axis\&.y\&.jog\-counts whb\&.axis\&.y\&.jog\-counts axis\&.y\&.jog\-counts
net pdnt\&.axis\&.z\&.jog\-counts whb\&.axis\&.z\&.jog\-counts axis\&.z\&.jog\-counts
net pdnt\&.axis\&.x\&.jog\-enable whb\&.axis\&.x\&.jog\-enable axis\&.x\&.jog\-enable
net pdnt\&.axis\&.y\&.jog\-enable whb\&.axis\&.y\&.jog\-enable axis\&.y\&.jog\-enable
net pdnt\&.axis\&.z\&.jog\-enable whb\&.axis\&.z\&.jog\-enable axis\&.z\&.jog\-enable
net pdnt\&.axis\&.x\&.jog\-vel\-mode whb\&.axis\&.x\&.jog\-vel\-mode axis\&.x\&.jog\-vel\-mode
net pdnt\&.axis\&.y\&.jog\-vel\-mode whb\&.axis\&.y\&.jog\-vel\-mode axis\&.y\&.jog\-vel\-mode
net pdnt\&.axis\&.z\&.jog\-vel\-mode whb\&.axis\&.z\&.jog\-vel\-mode axis\&.z\&.jog\-vel\-mode
# macro buttons to MDI commands
net pdnt\&.macro\-1 whb\&.button\&.macro\-1 halui\&.mdi\-command\-01 # use MDI command from main\&.ini
net pdnt\&.macro\-2 whb\&.button\&.macro\-2 halui\&.mdi\-command\-02 # use MDI command from main\&.ini or used for Hardcoded lube on/off
net pdnt\&.reserved\&.for\&.spindle+ whb\&.button\&.macro\-3 # Hardcoded for spindle+ whb\&.halui\&.spindle\&.increase
net pdnt\&.reserved\&.for\&.spindle\- whb\&.button\&.macro\-4 # Hardcoded for spindle\- whb\&.halui\&.spindle\&.decrease
net pdnt\&.macro\-5 whb\&.button\&.macro\-5 halui\&.mdi\-command\-05 # use MDI command from main\&.ini
net pdnt\&.macro\-6 whb\&.button\&.macro\-6 halui\&.mdi\-command\-06 # use MDI command from main\&.ini
net pdnt\&.macro\-7 whb\&.button\&.macro\-7 halui\&.mdi\-command\-07 # use MDI command from main\&.ini
net pdnt\&.reserved\&.for\&.spindle\&.dir whb\&.button\&.macro\-8 # Hardcoded for spindle direction inside pendant
net pdnt\&.macro\-9 whb\&.button\&.macro\-9 halui\&.mdi\-command\-09 # use MDI command from main\&.ini
net pdnt\&.reserved\&.for\&.ABS\-REL whb\&.button\&.macro\-10 # Hardcoded for swap Dro Relative/Absolute
net pdnt\&.macro\-14 whb\&.button\&.macro\-14 halui\&.mdi\-command\-14 # use MDI command from main\&.ini
net pdnt\&.reserved\&.for\&.flood whb\&.button\&.macro\-15 # Hardcoded for halui\&.flood on/off
net pdnt\&.reserved\&.for\&.mist whb\&.button\&.macro\-16 # Hardcoded for halui\&.mist on/off
net pdnt\&.macro\&.11 whb\&.button\&.macro\-11 halui\&.mdi\-command\-11 # use MDI command from main\&.ini
net pdnt\&.macro\&.12 whb\&.button\&.macro\-12 halui\&.mdi\-command\-12 # use MDI command from main\&.ini
net pdnt\&.macro\&.13 whb\&.button\&.macro\-13 halui\&.mdi\-command\-13 # use MDI command from main\&.ini
# flood and mist toggle signals
net pdnt\&.flood\&.is\-on whb\&.halui\&.flood\&.is\-on halui\&.flood\&.is\-on #return signal is on or off
net pdnt\&.flood\&.off whb\&.halui\&.flood\&.off halui\&.flood\&.off #reserved whb\&.button\&.macro\-15
net pdnt\&.flood\&.on whb\&.halui\&.flood\&.on halui\&.flood\&.on #reserved whb\&.button\&.macro\-15
net pdnt\&.mist\&.is\-on whb\&.halui\&.mist\&.is\-on halui\&.mist\&.is\-on #return signal is on or off
net pdnt\&.mist\&.off whb\&.halui\&.mist\&.off halui\&.mist\&.off #reserved whb\&.button\&.macro\-16
net pdnt\&.mist\&.on whb\&.halui\&.mist\&.on halui\&.mist\&.on #reserved whb\&.button\&.macro\-16
#net pdnt\&.lube\&.is\-on whb\&.halui\&.lube\&.is\-on halui\&.lube\&.is\-on #return signal is on or off
#net pdnt\&.lube\&.off whb\&.halui\&.lube\&.off halui\&.lube\&.off #reserved whb\&.button\&.macro\-2
#net pdnt\&.lube\&.on whb\&.halui\&.lube\&.on halui\&.lube\&.on #reserved whb\&.button\&.macro\-2
# default function button signals
net pdnt\&.button\&.m\-home whb\&.button\&.m\-home halui\&.home\-all # Homeing use built\-in halui home all
net pdnt\&.button\&.safe\-z whb\&.button\&.safe\-z halui\&.mdi\-command\-03 # Safe\-z use MDI command from main\&.ini
net pdnt\&.button\&.w\-home whb\&.button\&.w\-home halui\&.mdi\-command\-04 # Unpark use MDI command from main\&.ini
net pdnt\&.button\&.probe\-z whb\&.button\&.probe\-z halui\&.mdi\-command\-08 # Probe\-Z use MDI command from main\&.ini
# unused, just exposes pendant internal status or as basic button
#net pdnt\&.mode\-lead whb\&.halui\&.feed\&.selected\-lead
#net pdnt\&.mode\-mpg\-feed whb\&.halui\&.feed\&.selected\-mpg\-feed
#net pdnt\&.mode\-continuous whb\&.halui\&.feed\&.selected\-continuous
#net pdnt\&.mode\-step whb\&.halui\&.feed\&.selected\-step
#net pdnt\&.button\&.mode\-mpg whb\&.button\&.mode\-continuous
#net pdnt\&.button\&.mode\-step whb\&.button\&.mode\-step
#net pdnt\&.button\&.fn whb\&.button\&.fn
#net pdnt\&.button\&.reset whb\&.button\&.reset
#net pdnt\&.button\&.stop whb\&.button\&.stop
#net pdnt\&.button\&.start\-pause whb\&.button\&.start\-pause
#net pdnt\&.button\&.s\-on\-off whb\&.button\&.s\-on\-off
#net pdnt\&.button\&.spindle\-plus whb\&.button\&.spindle\-plus
#net pdnt\&.button\&.spindle\-minus whb\&.button\&.spindle\-minus
#net pdnt\&.button\&.feed\-plus whb\&.button\&.feed\-plus
#net pdnt\&.button\&.feed\-minus whb\&.button\&.feed\-minus
# spindle related signals
net pdnt\&.spindle\&.is\-on whb\&.halui\&.spindle\&.is\-on spindle\&.0\&.on
net pdnt\&.spindle\&.start whb\&.halui\&.spindle\&.start halui\&.spindle\&.0\&.start
net pdnt\&.spindle\&.stop whb\&.halui\&.spindle\&.stop halui\&.spindle\&.0\&.stop
net pdnt\&.spindle\&.forward whb\&.halui\&.spindle\&.forward halui\&.spindle\&.0\&.forward
net pdnt\&.spindle\&.reverse whb\&.halui\&.spindle\&.reverse halui\&.spindle\&.0\&.reverse
net pdnt\&.spindle\&.increase whb\&.halui\&.spindle\&.increase halui\&.spindle\&.0\&.increase # reserved whb\&.button\&.macro\-3
net pdnt\&.spindle\&.decrease whb\&.halui\&.spindle\&.decrease halui\&.spindle\&.0\&.decrease # reserved whb\&.button\&.macro\-4
net pdnt\&.spindle\-speed\-abs whb\&.halui\&.spindle\-speed\-cmd spindle\&.0\&.speed\-out\-abs # speed cmd from motion in rpm absolute
# spindle speed override signals
net pdnt\&.spindle\-override\&.scale whb\&.halui\&.spindle\-override\&.scale halui\&.spindle\&.0\&.override\&.scale # needed for both spindle+/\- and spindleoverride+/\- button
net pdnt\&.spindle\&.override\&.value halui\&.spindle\&.0\&.override\&.value whb\&.halui\&.spindle\-override\&.value # GUI feed rate related signals
net pdnt\&.spindle\&.override\&.increase whb\&.halui\&.spindle\-override\&.increase halui\&.spindle\&.0\&.override\&.increase
net pdnt\&.spindle\&.override\&.decrease whb\&.halui\&.spindle\-override\&.decrease halui\&.spindle\&.0\&.override\&.decrease
# GUI feed rate related signals can be used when program is running moving GUI slider
net pdnt\&.feed\-override\&.scale whb\&.halui\&.feed\-override\&.scale halui\&.feed\-override\&.scale # needed for both FeedOverride+/\- and rotary knob button
net pdnt\&.max\-velocity\&.value whb\&.halui\&.max\-velocity\&.value halui\&.max\-velocity\&.value # needed for Mpg mode : button feed position% * max\-velocity = Mpg feedrate
# take feed override min/max values from/to the GUI
net pdnt\&.feed\-override\&.value halui\&.feed\-override\&.value whb\&.halui\&.feed\-override\&.value # GUI feed rate related signals
net pdnt\&.feed\-override\&.increase whb\&.halui\&.feed\-override\&.increase halui\&.feed\-override\&.increase
net pdnt\&.feed\-override\&.decrease whb\&.halui\&.feed\-override\&.decrease halui\&.feed\-override\&.decrease
# axis position related signals feedback
net pdnt\&.axis\&.x\&.pos\-feedback halui\&.axis\&.x\&.pos\-feedback whb\&.halui\&.axis\&.x\&.pos\-feedback
net pdnt\&.axis\&.y\&.pos\-feedback halui\&.axis\&.y\&.pos\-feedback whb\&.halui\&.axis\&.y\&.pos\-feedback
net pdnt\&.axis\&.z\&.pos\-feedback halui\&.axis\&.z\&.pos\-feedback whb\&.halui\&.axis\&.z\&.pos\-feedback
# axis position related signals relative
net pdnt\&.axis\&.x\&.pos\-relative halui\&.axis\&.x\&.pos\-relative whb\&.halui\&.axis\&.x\&.pos\-relative
net pdnt\&.axis\&.y\&.pos\-relative halui\&.axis\&.y\&.pos\-relative whb\&.halui\&.axis\&.y\&.pos\-relative
net pdnt\&.axis\&.z\&.pos\-relative halui\&.axis\&.z\&.pos\-relative whb\&.halui\&.axis\&.z\&.pos\-relative
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
xhc\-whb04b\-6 developer documentation on GitHub
.SH "NOTES"
.sp
The CRC code function is not disclosed by the manufacturer\&. Thus the CRC value transmitted with each package is not checked yet\&. Feel free to help us enhance the component\&.
.SH "AUTHORS"
.sp
This component was started by Raoul Rubien based on predecessor device component xhc\-hb04\&.cc\&. https://github\&.com/machinekit/machinekit/graphs/contributors gives you a more complete list of contributors\&.
.SH "HISTORY"
.sp
The component was developed accidentally as leisure project\&. The development started with the xhc\-whb04 (4\-axis wireless pendant) implementation as reference\&. 73 & many thanks to the developers who delivered provided an excellent preparatory work!
.SH "COPYRIGHT"
.sp
Copyright \(co 2018 Raoul Rubien (github\&.com/rubienr) Updated for Linuxcnc 2020 by alkabal_free\&.fr\&. This is free software; see the source for copying conditions\&. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&.