From 129c92618aebed6c71c36c60be5d6c557b519d8c Mon Sep 17 00:00:00 2001 From: Steffen Moeller Date: Wed, 14 Aug 2024 10:30:51 +0200 Subject: [PATCH] docs: review on man pages asciidoc transition A non-working markup with "*" appears as a pointer in C/C++. Introduced [source,c] and blocks to avoid such extra troublesome trouble. --- debian/control.top.in | 1 + docs/README.adoc | 16 +-- docs/help/asciidoc-markup_es.adoc | 8 +- docs/html/gcode.html | 7 +- docs/man/an-old-fixed.tmac | 2 +- docs/src/common/emc-history.adoc | 6 +- docs/src/drivers/opto22.adoc | 2 +- docs/src/drivers/servo-to-go.adoc | 2 +- docs/src/drivers/vfs11.adoc | 9 +- .../src/getting-started/getting-linuxcnc.adoc | 10 +- .../getting-started/hardware-interface.adoc | 10 +- docs/src/gui/qtvcp-libraries.adoc | 2 +- docs/src/html-images.xslt | 4 +- docs/src/index.tmpl | 7 +- docs/src/integrator/stepper-timing.adoc | 108 +++++++-------- docs/src/ladder/classic-ladder.adoc | 4 +- docs/src/man/man1/5axisgui.1.adoc | 7 +- docs/src/man/man1/elbpcom.1.adoc | 2 +- docs/src/man/man1/gremlin_view.1.adoc | 2 +- docs/src/man/man1/hal-histogram.1.adoc | 2 +- docs/src/man/man1/halcmd_twopass.1.adoc | 2 +- docs/src/man/man1/halreport.1.adoc | 2 +- docs/src/man/man1/halshow.1.adoc | 2 +- docs/src/man/man1/hbmgui.1.adoc | 2 +- docs/src/man/man1/hexagui.1.adoc | 2 +- docs/src/man/man1/image-to-gcode.1.adoc | 5 +- docs/src/man/man1/iocontrol.1.adoc | 2 +- docs/src/man/man1/iov2.1.adoc | 2 +- docs/src/man/man1/latency-test.1.adoc | 2 +- docs/src/man/man1/lineardelta.1.adoc | 2 +- docs/src/man/man1/linuxcnctop.1.adoc | 2 +- docs/src/man/man1/maho600gui.1.adoc | 2 +- docs/src/man/man1/max5gui.1.adoc | 2 +- docs/src/man/man1/mb2hal.1.adoc | 2 +- docs/src/man/man1/melfagui.1.adoc | 2 +- docs/src/man/man1/millturn.1.adoc | 2 +- docs/src/man/man1/modcompile.1.adoc | 2 +- docs/src/man/man1/ngcgui.1.adoc | 2 +- docs/src/man/man1/panelui.1.adoc | 2 +- docs/src/man/man1/pncconf.1.adoc | 2 +- docs/src/man/man1/puma560gui.1.adoc | 2 +- docs/src/man/man1/pumagui.1.adoc | 2 +- docs/src/man/man1/pyngcgui.1.adoc | 2 +- docs/src/man/man1/qtplasmac-materials.1.adoc | 2 +- docs/src/man/man1/qtplasmac_gcode.1.adoc | 2 +- docs/src/man/man1/qtvcp.1.adoc | 2 +- docs/src/man/man1/rotarydelta.1.adoc | 2 +- docs/src/man/man1/scaragui.1.adoc | 2 +- docs/src/man/man1/stepconf.1.adoc | 2 +- docs/src/man/man1/tool_mmap_read.1.adoc | 8 +- docs/src/man/man1/tool_watch.1.adoc | 2 +- docs/src/man/man1/xyzab-tdr-gui.1.adoc | 7 +- docs/src/man/man3/PM_ROTATION_VECTOR.3.adoc | 67 +++++---- docs/src/man/man3/hal.3hal.adoc | 112 ++++++++------- .../man/man3/hal_add_funct_to_thread.3.adoc | 28 ++-- docs/src/man/man3/hal_create_thread.3hal.adoc | 19 ++- docs/src/man/man3/hal_exit.3hal.adoc | 3 +- docs/src/man/man3/hal_export_funct.3.adoc | 29 ++-- docs/src/man/man3/hal_init.3hal.adoc | 15 +- docs/src/man/man3/hal_param_alias.3hal.adoc | 14 +- docs/src/man/man3/hal_param_new.3.adoc | 40 ++---- docs/src/man/man3/hal_parport.3hal.adoc | 40 +++--- docs/src/man/man3/hal_pin_alias.3hal.adoc | 11 +- docs/src/man/man3/hal_pin_new.3.adoc | 57 +++----- docs/src/man/man3/hal_port.3hal.adoc | 33 ++--- .../man/man3/hal_set_constructor.3hal.adoc | 18 +-- docs/src/man/man3/hal_set_lock.3.adoc | 9 +- docs/src/man/man3/hal_signal_new.3.adoc | 12 +- docs/src/man/man3/hal_start_threads.3hal.adoc | 9 +- docs/src/man/man3/hal_stream.3hal.adoc | 131 ++++++------------ docs/src/man/man3/hal_type_t.3.adoc | 17 +-- .../hm2_bspi_set_write_function.3hm2.adoc | 20 ++- .../man/man3/hm2_bspi_setup_chan.3hm2.adoc | 24 ++-- .../man/man3/hm2_bspi_write_chan.3hm2.adoc | 21 +-- docs/src/man/man3/hm2_pktuart.3.adoc | 82 ++++++----- docs/src/man/man3/hm2_pktuart_read.3hm2.adoc | 9 +- docs/src/man/man3/hm2_pktuart_send.3hm2.adoc | 10 +- docs/src/man/man3/hm2_pktuart_setup.3hm2.adoc | 10 +- .../man3/hm2_tram_add_bspi_frame.3hm2.adoc | 10 +- docs/src/man/man3/hm2_uart_read.3hm2.adoc | 17 ++- docs/src/man/man3/hm2_uart_send.3hm2.adoc | 18 ++- docs/src/man/man3/hm2_uart_setup.3hm2.adoc | 74 +++++----- docs/src/man/man3/rtapi.3rtapi.adoc | 62 ++++----- docs/src/man/man3/rtapi_app_exit.3rtapi.adoc | 16 +-- docs/src/man/man3/rtapi_app_main.3rtapi.adoc | 11 +- docs/src/man/man3/rtapi_atomic.3rtapi.adoc | 47 +++---- docs/src/man/man3/rtapi_bool.3rtapi.adoc | 9 +- docs/src/man/man3/rtapi_byteorder.3rtapi.adoc | 19 ++- .../man3/rtapi_clock_set_period.3rtapi.adoc | 33 +++-- docs/src/man/man3/rtapi_delay.3.adoc | 24 ++-- docs/src/man/man3/rtapi_device.3rtapi.adoc | 23 ++- docs/src/man/man3/rtapi_div_u64.3.adoc | 30 ++-- docs/src/man/man3/rtapi_exit.3rtapi.adoc | 17 ++- docs/src/man/man3/rtapi_firmware.3rtapi.adoc | 22 ++- docs/src/man/man3/rtapi_get_msg_level.3.adoc | 18 ++- docs/src/man/man3/rtapi_get_time.3.adoc | 23 +-- docs/src/man/man3/rtapi_gfp.3rtapi.adoc | 8 +- docs/src/man/man3/rtapi_init.3rtapi.adoc | 22 +-- docs/src/man/man3/rtapi_io.3rtapi.adoc | 7 +- docs/src/man/man3/rtapi_is.3rtapi.adoc | 26 ++-- docs/src/man/man3/rtapi_list.3rtapi.adoc | 32 ++--- docs/src/man/man3/rtapi_module_param.3.adoc | 23 ++- docs/src/man/man3/rtapi_mutex.3rtapi.adoc | 24 ++-- .../man/man3/rtapi_open_as_root.3rtapi.adoc | 25 ++-- docs/src/man/man3/rtapi_outb.3.adoc | 17 ++- docs/src/man/man3/rtapi_parport.3rtapi.adoc | 35 ++--- docs/src/man/man3/rtapi_pci.3rtapi.adoc | 8 +- docs/src/man/man3/rtapi_print.3.adoc | 46 +++--- docs/src/man/man3/rtapi_prio.3.adoc | 27 ++-- docs/src/man/man3/rtapi_region.3.adoc | 14 +- docs/src/man/man3/rtapi_shmem.3.adoc | 24 ++-- docs/src/man/man3/rtapi_slab.3rtapi.adoc | 20 +-- docs/src/man/man3/rtapi_snprintf.3.adoc | 11 +- docs/src/man/man3/rtapi_stdint.3rtapi.adoc | 14 +- docs/src/man/man3/rtapi_string.3rtapi.adoc | 24 ++-- docs/src/man/man3/rtapi_strlcpy.3rtapi.adoc | 15 +- docs/src/man/man3/rtapi_task_new.3.adoc | 22 +-- docs/src/man/man3/rtapi_task_pause.3.adoc | 24 ++-- docs/src/man/man3/rtapi_task_self.3rtapi.adoc | 9 +- .../src/man/man3/rtapi_task_start.3rtapi.adoc | 14 +- docs/src/man/man3/rtapi_task_wait.3rtapi.adoc | 9 +- docs/src/man/man3/undocumented.3hal.adoc | 3 +- docs/src/man/man3/undocumented.3rtapi.adoc | 3 +- docs/src/man/man9/classicladder.9.adoc | 4 +- docs/src/man/man9/hm2_eth.9.adoc | 21 ++- docs/src/man/man9/hostmot2.9.adoc | 6 +- docs/src/man/man9/lcd.9.adoc | 2 +- docs/src/man/man9/opto_ac5.9.adoc | 2 +- docs/src/remap/remap.adoc | 4 +- 129 files changed, 1000 insertions(+), 1147 deletions(-) diff --git a/debian/control.top.in b/debian/control.top.in index 327e8d942fc..716a5672678 100644 --- a/debian/control.top.in +++ b/debian/control.top.in @@ -34,6 +34,7 @@ Build-Depends: libusb-1.0-0-dev, libxmu-dev, netcat-traditional | netcat-openbsd | netcat, + netpbm, po4a, procps, psmisc, diff --git a/docs/README.adoc b/docs/README.adoc index 7c0ca19c0cb..8a17f0dcf64 100644 --- a/docs/README.adoc +++ b/docs/README.adoc @@ -5,25 +5,25 @@ == Adding files -The src/Submakefile, src/docs.xml, docs/po4a.cfg and src/index.tmpl +The `src/Submakefile`, `src/docs.xml`, `docs/po4a.cfg` and `src/index.tmpl` files must be updated to add a new document file. The relevant pdf.adoc must be updated to include the new document in the -pdf documentation. e.g. if a new document belongs in the Master -Documentation then an entry is required in src/Master_Documentation.adoc. +pdf documentation. E.g., a new document belonging to the Master +Documentation requires an entry in src/Master_Documentation.adoc. -docs.xml is used to create the "previous" and "next" buttons at the top +`docs.xml` is used to create the "previous" and "next" buttons at the top of each individual HTML document. It should generally match the order of the index.tmpl. -po4a.cfg is used to map source files to translated documentation when -generating translated files using the files in docs/po/. +`po4a.cfg` is used to map source files to translated documentation when +generating translated files using the files in `docs/po/`. == Notes on LinuxCNC documentation The main LinuxCNC Makefile can optionally build the documentation and other files in this directory tree. Use "--enable-build-documentation" -when invoking src/configure, and run "make" from src. +when invoking `src/configure`, and run "make" from src. == Notes about drawings @@ -130,7 +130,7 @@ e.g. vec2web drawing.dxf drawing.png ``` Initial attempts to use vec2web resulted in the graphical parts of the -drawing being converted, but all text was lost. I don't know if vec2web +drawing being converted, but all text was lost. It is not clear if vec2web is worth spending much more time on, however, it _is_ GPLv2, and it includes a library for reading DXF files, which might be worthwhile to the LinuxCNC community. diff --git a/docs/help/asciidoc-markup_es.adoc b/docs/help/asciidoc-markup_es.adoc index d8465320a69..68286887f62 100644 --- a/docs/help/asciidoc-markup_es.adoc +++ b/docs/help/asciidoc-markup_es.adoc @@ -19,7 +19,7 @@ Los atributos típicos autorizados son: doctype, lang, encoding, icons, data-uri, toc, numbered Más información aquí -http://www.methods.co.nz/asciidoc/userguide.html#_introduction +https://www.methods.co.nz/asciidoc/userguide.html#_introduction 8.2 Header = Título del documento (nivel 0) @@ -47,7 +47,7 @@ Solo se mostrará "bombas" en el texto con un subrayado, así que siempre proporcione una leyenda para un enlace. Enlace externo -http://linuxnc.org/someplace[descripcion del link] +https://linuxnc.org/someplace[descripcion del link] = Bloque de comentarios @@ -181,8 +181,8 @@ alternativa es utilizar Open Office Math (o LibreOffice) para crear la imagen matemática y gimp para la captura de pantalla y guardarla en un png. -Compruebe la http://powerman.name/doc/asciidoc[hoja de referencia de asciidoc] -o el http://www.methods.co.nz/asciidoc/userguide.html[manual del usuario] +Compruebe la https://powerman.name/doc/asciidoc[hoja de referencia de asciidoc] +o el https://www.methods.co.nz/asciidoc/userguide.html[manual del usuario] para detalles sobre el formato. // vim: set syntax=asciidoc: diff --git a/docs/html/gcode.html b/docs/html/gcode.html index 882f4b76935..13c17107d05 100644 --- a/docs/html/gcode.html +++ b/docs/html/gcode.html @@ -1,6 +1,5 @@ - + - + LinuxCNC "G-code" Quick Reference @@ -202,7 +201,7 @@ for(var i=0; i. +.\" . . . .\" The file man.local is loaded at the end. Put local additions there. diff --git a/docs/src/common/emc-history.adoc b/docs/src/common/emc-history.adoc index 9c17a5b74cf..d313d0af161 100644 --- a/docs/src/common/emc-history.adoc +++ b/docs/src/common/emc-history.adoc @@ -33,14 +33,14 @@ was pursued with success. Next up was the issue of the expensive intelligent motion control boards. By this time the processing power of a PC was considered great enough to directly take control of the motion routines. A quick search of available hardware resulted in the selection of a -http://www.servotogo.com/[Servo-To-Go] interface board as the first platform +https://www.servotogo.com/[Servo-To-Go] interface board as the first platform for letting the PC directly control the motors. Software for trajectory planning and PID loop control was added to the existing user interface and RS274 interpreter. Matt successfully used this version to upgrade a couple of machines with dead controls and this became the EMC system that first caught the attention of the outside world. Mention of EMC on the rec.crafts.metalworking USENET newsgroup resulted in early adopters -like http://pico-systems.com/motion.html[Jon Elson] building systems +like https://pico-systems.com/motion.html[Jon Elson] building systems to take advantage of EMC. NIST set up a mailing list for people interested in EMC. As time went on, @@ -54,7 +54,7 @@ Ray went on to write a Tcl/Tk program that became the predominant user interface for EMC at the time. For NIST's perspective, see this -http://web.archive.org/web/20120417094958/http://www.isd.mel.nist.gov/documents/shackleford/4191_05.pdf[paper] +https://web.archive.org/web/20120417094958/https://www.isd.mel.nist.gov/documents/shackleford/4191_05.pdf[paper] written by William Shackleford and Frederick Proctor, describing the history of EMC and its transition to open source. diff --git a/docs/src/drivers/opto22.adoc b/docs/src/drivers/opto22.adoc index 1c8a1533cf0..5bff01e9544 100644 --- a/docs/src/drivers/opto22.adoc +++ b/docs/src/drivers/opto22.adoc @@ -25,7 +25,7 @@ an adapter. See the manufacturer's website for more info: -http://www.opto22.com/site/pr_details.aspx?cid=4&item=PCI-AC5 +https://www.opto22.com/site/pr_details.aspx?cid=4&item=PCI-AC5 I would like to thank Opto22 for releasing info in their manual, easing the writing of this driver! diff --git a/docs/src/drivers/servo-to-go.adoc b/docs/src/drivers/servo-to-go.adoc index 945af4fba3c..9b2d269a3cc 100644 --- a/docs/src/drivers/servo-to-go.adoc +++ b/docs/src/drivers/servo-to-go.adoc @@ -15,7 +15,7 @@ by LinuxCNC. It is an ISA card and it exists in different flavors (all supported by this driver). The board includes up to 8 channels of quadrature encoder input, 8 channels of analog input and output, 32 bits digital I/O, an interval timer with interrupt and a watchdog. For more -information see the http://www.servotogo.com/[Servo To Go] web page. +information see the https://www.servotogo.com/[Servo To Go] web page. NOTE: We have had reports that the opamps on the Servo To Go card do not work with newer ATX power supplies that use modern switch diff --git a/docs/src/drivers/vfs11.adoc b/docs/src/drivers/vfs11.adoc index 7919a48bb6a..752b71c0ea1 100644 --- a/docs/src/drivers/vfs11.adoc +++ b/docs/src/drivers/vfs11.adoc @@ -269,9 +269,8 @@ The VF-S11 has an RJ-45 jack for serial communication. Unfortunately, it does not have a standard RS-232 plug and logic levels. The Toshiba-recommended way is: connect the USB001Z USB-to-serial conversion unit to the drive, and plug the USB port into the PC. A cheaper alternative is a homebrew interface ( -http://git.mah.priv.at/gitweb/vfs11-vfd.git/blob_plain/refs/heads/f12-prod:/VFS11-RJ45_e.pdf[hints -from Toshiba support], -http://git.mah.priv.at/gitweb/vfs11-vfd.git/blob_plain/refs/heads/f12-prod:/vfs11-rs232.pdf[circuit diagram]). +https://git.mah.priv.at/gitweb/vfs11-vfd.git/blob_plain/refs/heads/f12-prod:/VFS11-RJ45_e.pdf[hints from Toshiba support], +https://git.mah.priv.at/gitweb/vfs11-vfd.git/blob_plain/refs/heads/f12-prod:/vfs11-rs232.pdf[circuit diagram]). Note: the 24V output from the VFD has no short-circuit protection. @@ -289,11 +288,11 @@ I increased them from 50 to 80. See dump-params.mio for a description of non-standard VF-S11 parameters of my setup. This file is for the -http://git.mah.priv.at/gitweb/modio.git[modio Modbus interactive utility]. +https://git.mah.priv.at/gitweb/modio.git[modio Modbus interactive utility]. == Programming Note -The vfs11_vfd driver uses the http://www.libmodbus.org[libmodbus version 3] library which is more recent than the version 2 code used in +gs2_vfd+. +The vfs11_vfd driver uses the https://www.libmodbus.org[libmodbus version 3] library which is more recent than the version 2 code used in +gs2_vfd+. The Ubuntu +libmodbus5+ and +libmodbus-dev+ packages are only available starting from Ubuntu 12 ('Precise Pengolin'). Moreover, these packages lack support for the MODBUS_RTS_MODE_* flags. diff --git a/docs/src/getting-started/getting-linuxcnc.adoc b/docs/src/getting-started/getting-linuxcnc.adoc index 64eea8d173f..f8ca93169b9 100644 --- a/docs/src/getting-started/getting-linuxcnc.adoc +++ b/docs/src/getting-started/getting-linuxcnc.adoc @@ -67,7 +67,7 @@ sudo apt-get install zsync . Then run this command to download the iso to your computer + ---- -zsync http://www.linuxcnc.org/iso/linuxcnc_2.9.2-amd64.hybrid.iso +zsync https://www.linuxcnc.org/iso/linuxcnc_2.9.2-amd64.hybrid.iso ---- .zsync in Windows @@ -178,7 +178,7 @@ sudo dd if=/linuxcnc_2.9.2-amd64.hybrid.iso of=/dev/rdiskN bs=1m .Writing the image to a DVD in Windows . Download and install Infra Recorder, a free and open source image - burning program: http://infrarecorder.org/ . + burning program: https://infrarecorder.org/ . . Insert a blank CD in the drive and select Do nothing or Cancel if an auto-run dialog pops up. . Open Infra Recorder, and select the 'Actions' menu, then 'Burn image'. @@ -273,9 +273,9 @@ Synaptic Package manager or with apt-get at the command-line. The RTAI kernels are available for download from the linuxcnc.org debian archive. The apt source is: -* Debian Bookworm: `deb http://linuxcnc.org bookworm base` -* Debian Bullseye: `deb http://linuxcnc.org bullseye base` -* Debian Buster: `deb http://linuxcnc.org buster base` +* Debian Bookworm: `deb https://linuxcnc.org bookworm base` +* Debian Bullseye: `deb https://linuxcnc.org bullseye base` +* Debian Buster: `deb https://linuxcnc.org buster base` LinuxCNC and the RTAI kernel are now only available for 64-bit OSes but there are very few surviving systems that can not run a 64-bit OS. diff --git a/docs/src/getting-started/hardware-interface.adoc b/docs/src/getting-started/hardware-interface.adoc index c520f0d84b8..7fd39dc2c9c 100644 --- a/docs/src/getting-started/hardware-interface.adoc +++ b/docs/src/getting-started/hardware-interface.adoc @@ -50,10 +50,10 @@ Realtime (time critical) tasks such as step generation are done in hardware (not === Mesa via Parallel Port Mesa use Field-programmable gate array (FPGA) interfaced via parallel port - e.g. 7i43 -Website: http://mesanet.com/ Store: http://store.mesanet.com/ +Website: https://mesanet.com/ Store: https://store.mesanet.com/ === Pico Systems via Parallel Port -http://pico-systems.com/univstep.html +https://pico-systems.com/univstep.html == Ethernet @@ -62,7 +62,7 @@ Mesa cards with a Field-programmable gate array (FPGA), interfaced to LinuxCNC c Multiple ethernet interface FPGA cards are available, with many expansion cards -Website: http://mesanet.com/ Store: http://store.mesanet.com/ +Website: https://mesanet.com/ Store: https://store.mesanet.com/ === Remora Ethernet Realtime requirements are offloaded onto a controller board. Multiple different controller boards are supported - see https://remora-docs.readthedocs.io[Remora docs]. @@ -125,7 +125,7 @@ Mesa PCI / PCIe cards with a Field-programmable gate array (FPGA). Time critical Multiple daughter / expansion cards are available -Website: http://mesanet.com/ Store: http://store.mesanet.com/ +Website: https://mesanet.com/ Store: https://store.mesanet.com/ == SPI SPI = Serial Peripheral Interface. SPI interfaces can be found on single board computers like Raspberry Pi, or Orange Pi. SPI interface is _not_ generally present on standard computers (AMD/Intel). @@ -144,7 +144,7 @@ Mesa cards with a Field-programmable gate array (FPGA), interfaced to LinuxCNC c Example: 7C80 for Raspberry Pi -Website: http://mesanet.com/ Store: http://store.mesanet.com/ +Website: https://mesanet.com/ Store: https://store.mesanet.com/ == USB diff --git a/docs/src/gui/qtvcp-libraries.adoc b/docs/src/gui/qtvcp-libraries.adoc index aad55f23dd1..3d1c82a6260 100644 --- a/docs/src/gui/qtvcp-libraries.adoc +++ b/docs/src/gui/qtvcp-libraries.adoc @@ -1179,7 +1179,7 @@ It uses https://launchpad.net/onboard[`Onboard`] or https://git.yoctoproject.org //TODO Virtual Keyboard: What about other VKB alternatives like: // * kvkbd https://github.com/KDE/kvkbd -// * Florence http://florence.sourceforge.net/ +// * Florence https://florence.sourceforge.net/ // * Maliit https://maliit.github.io/, https://github.com/maliit/keyboard // which seems to have interesting contextual features. diff --git a/docs/src/html-images.xslt b/docs/src/html-images.xslt index af170676361..54c19f0ac96 100644 --- a/docs/src/html-images.xslt +++ b/docs/src/html-images.xslt @@ -3,8 +3,8 @@ vim: sts=2 sw=2 et --> + xmlns:xsl="https://www.w3.org/1999/XSL/Transform" + xmlns:html="https://www.w3.org/1999/xhtml"> diff --git a/docs/src/index.tmpl b/docs/src/index.tmpl index bea00c8120e..c31b88e1276 100644 --- a/docs/src/index.tmpl +++ b/docs/src/index.tmpl @@ -1,7 +1,6 @@ - - + + LinuxCNC @@ -113,7 +112,7 @@ function setup_page(){

LinuxCNC version @VERSION@ Documentation

-

LinuxCNC Home Page • +

LinuxCNC Home PageWikiForumSource • diff --git a/docs/src/integrator/stepper-timing.adoc b/docs/src/integrator/stepper-timing.adoc index 7f1aaf91d51..3932908babd 100644 --- a/docs/src/integrator/stepper-timing.adoc +++ b/docs/src/integrator/stepper-timing.adoc @@ -29,63 +29,63 @@ nanoseconds (ns) [width="100%",options="header"] |=== |Manufacturer |Model |Step Time |Step Space |Direction Hold |Direction Setup |Steps on |Spec Sheet | -|Chinese Blue Boards |TB6560 CNC Stepper Motor Driver Controller Board |150000 |150000 |150000 |150000 |Falling Edge |http://hyu68.com/cp8.htm | -|Gecko |201 |500 |4000 |20000 |1000 |Falling Edge |http://www.geckodrive.com/support/motor-control-manuals/stepper-drives/g201-rev-16.html | -|Gecko |202 |500 |4500 |20000 |1000 |Falling Edge |http://www.geckodrive.com/support/motor-control-manuals/stepper-drives/g202-rev-15.html | -|Gecko |203v |1000 |2000 |200 |200 |Rising Edge |http://www.geckodrive.com/support/motor-control-manuals/stepper-drives/g203v-rev-7.html | -|Gecko |201x |500 |3000 |20000 |1000 |Falling Edge |http://www.geckodrive.com/support/motor-control-manuals/stepper-drives/g201-rev-16.html | -|Gecko |212 |500 |4000 |20000 |1000 |Falling Edge |http://www.geckodrive.com/support/motor-control-manuals/stepper-drives/g212-rev-15.html | -|Gecko |213v |2000 |1000 |200 |200 |Rising Edge |http://www.geckodrive.com/support/motor-control-manuals/stepper-drives/g213v-rev-7.html | -|Gecko |320 |3500 |500 |200 |200 |Rising Edge |http://www.geckodrive.com/support/motor-control-manuals/dc-servo-drives/g320-rev-7.html | -|Gecko |320x |1000 |2500 |200 |200 |Rising Edge |http://www.geckodrive.com/support/motor-control-manuals/dc-servo-drives/g320x-rev-10.html | -|Granite Devices |VSD-E/XE Evolution |125 |125 |125 |125 |Rising Edge |http://granitedevices.fi/assets/files/vsd-e_160_manual.pdf | -|Granite Devices |VSD-E/XE DualDC |150 |1850 |150 |800 |Rising Edge |http://granitedevices.fi/assets/files/vsd-e_160_dualdc_manual.pdf | -|JVL |SMD41 |500 |500 |2500 |2500 |Rising Edge |http://www.jvl.dk/files/pdf/lb043gb.pdf | -|JVL |SMD42 |500 |500 |2500 |2500 |Rising Edge |http://www.jvl.dk/files/pdf/lb043gb.pdf | -|Linistepper Open Source |RULMS1 |30000 |100000 |4000 |4000 |Rising Edge |http://www.piclist.com/techref/io/stepper/linistep/index.htm | -|Linistepper Open Source |THB6064 |2300 |2300 |4600 |1000 |Rising Edge |http://www.piclist.com/techref/io/stepper/THB6064/index.htm | -|*Motion Control |MSD542 |>1500 |2000 |2000 |2000 |Rising Edge |http://www.motioncontrolproducts.com/c2/uploads/msd542%20datasheet.pdf | -|Parker |OEM750 |200 |300 |0 |200000 |Rising Edge |http://www.compumotor.com/manuals/OEM750/OEM750_Entire_Rev_B.pdf | -|ST |L297 |?|500 |4000 |1000 |Rising Edge |http://www.st.com/stonline/books/pdf/docs/1334.pdf | -|Xylotex |XS-3525/8S-3 |2000 |1000 |200 |200 |Rising Edge |http://www.xylotex.com/XS3525V202.pdf | -|Xylotex |XS-3525/8S-4 |1000 |1000 |200 |200 |Rising Edge |http://www.xylotex.com/XS3525V400.pdf | -|Lin Engineering |Silverpak 17D/DE |20000 |20000 |200 |200 |Rising Edge |http://www.linengineering.com/site/products/pdf/SilverPak17D_DE-manual.pdf | -|Hobbycnc |Pro Chopper Board |2000 |2000 |2000 |2000 |?|http://www.hobbycnc.com/products/hobbycnc-pro-chopper-driver-board-kits/| -|*Routout |2.5amp Stepper Driver |200 |1000 |1000 |?|?|http://www.routoutcnc.com/2-5ampdriver.pdf | -|*Intelligent Motion System |IM483 |1000 |1000 |1000 |1000 |Rising Edge |http://www.imshome.com/im483.html | -|Keling |4030 |5000 |5000 |20000 |20000 |?|http://www.| -|Keling |6852 |1750 |1750 |10000 |10000 |Rising Edge |http://www.kelinginc.net/kL-6852.pdf | +|Chinese Blue Boards |TB6560 CNC Stepper Motor Driver Controller Board |150000 |150000 |150000 |150000 |Falling Edge |https://hyu68.com/cp8.htm | +|Gecko |201 |500 |4000 |20000 |1000 |Falling Edge |https://www.geckodrive.com/support/motor-control-manuals/stepper-drives/g201-rev-16.html | +|Gecko |202 |500 |4500 |20000 |1000 |Falling Edge |https://www.geckodrive.com/support/motor-control-manuals/stepper-drives/g202-rev-15.html | +|Gecko |203v |1000 |2000 |200 |200 |Rising Edge |https://www.geckodrive.com/support/motor-control-manuals/stepper-drives/g203v-rev-7.html | +|Gecko |201x |500 |3000 |20000 |1000 |Falling Edge |https://www.geckodrive.com/support/motor-control-manuals/stepper-drives/g201-rev-16.html | +|Gecko |212 |500 |4000 |20000 |1000 |Falling Edge |https://www.geckodrive.com/support/motor-control-manuals/stepper-drives/g212-rev-15.html | +|Gecko |213v |2000 |1000 |200 |200 |Rising Edge |https://www.geckodrive.com/support/motor-control-manuals/stepper-drives/g213v-rev-7.html | +|Gecko |320 |3500 |500 |200 |200 |Rising Edge |https://www.geckodrive.com/support/motor-control-manuals/dc-servo-drives/g320-rev-7.html | +|Gecko |320x |1000 |2500 |200 |200 |Rising Edge |https://www.geckodrive.com/support/motor-control-manuals/dc-servo-drives/g320x-rev-10.html | +|Granite Devices |VSD-E/XE Evolution |125 |125 |125 |125 |Rising Edge |https://granitedevices.fi/assets/files/vsd-e_160_manual.pdf | +|Granite Devices |VSD-E/XE DualDC |150 |1850 |150 |800 |Rising Edge |https://granitedevices.fi/assets/files/vsd-e_160_dualdc_manual.pdf | +|JVL |SMD41 |500 |500 |2500 |2500 |Rising Edge |https://www.jvl.dk/files/pdf/lb043gb.pdf | +|JVL |SMD42 |500 |500 |2500 |2500 |Rising Edge |https://www.jvl.dk/files/pdf/lb043gb.pdf | +|Linistepper Open Source |RULMS1 |30000 |100000 |4000 |4000 |Rising Edge |https://www.piclist.com/techref/io/stepper/linistep/index.htm | +|Linistepper Open Source |THB6064 |2300 |2300 |4600 |1000 |Rising Edge |https://www.piclist.com/techref/io/stepper/THB6064/index.htm | +|*Motion Control |MSD542 |>1500 |2000 |2000 |2000 |Rising Edge |https://www.motioncontrolproducts.com/c2/uploads/msd542%20datasheet.pdf | +|Parker |OEM750 |200 |300 |0 |200000 |Rising Edge |https://www.compumotor.com/manuals/OEM750/OEM750_Entire_Rev_B.pdf | +|ST |L297 |?|500 |4000 |1000 |Rising Edge |https://www.st.com/stonline/books/pdf/docs/1334.pdf | +|Xylotex |XS-3525/8S-3 |2000 |1000 |200 |200 |Rising Edge |https://www.xylotex.com/XS3525V202.pdf | +|Xylotex |XS-3525/8S-4 |1000 |1000 |200 |200 |Rising Edge |https://www.xylotex.com/XS3525V400.pdf | +|Lin Engineering |Silverpak 17D/DE |20000 |20000 |200 |200 |Rising Edge |https://www.linengineering.com/site/products/pdf/SilverPak17D_DE-manual.pdf | +|Hobbycnc |Pro Chopper Board |2000 |2000 |2000 |2000 |?|https://www.hobbycnc.com/products/hobbycnc-pro-chopper-driver-board-kits/| +|*Routout |2.5amp Stepper Driver |200 |1000 |1000 |?|?|https://www.routoutcnc.com/2-5ampdriver.pdf | +|*Intelligent Motion System |IM483 |1000 |1000 |1000 |1000 |Rising Edge |https://www.imshome.com/im483.html | +|Keling |4030 |5000 |5000 |20000 |20000 |?|https://www.| +|Keling |6852 |1750 |1750 |10000 |10000 |Rising Edge |https://www.kelinginc.net/kL-6852.pdf | |Sherline |8760 |1000 |6000 |24000 |24000 |?|https://www.sherline.com/| -|Burkhard Lewetz |Step3S |6000 |15000 |?|5000 |?|http://www.lewetz.de/download/ibstep3se.pdf | -|Parker Compumotor |Zeta 4 |200 |200 |?(200)|?(200)|Rising Edge |http://www.compumotor.com/manuals/ZETA/ZETA_Rev_A_Entire.pdf | -|www.cncdrive.com |Dugong |1000 |2500 |1000 |1000 |?|http://www.cncdrive.com/content/dugong.htm | -|www.cncdrive.com |DG2S-08020 |1000 |2500 |1000 |1000 |?|http://cncdrive.com/DG2S_08020.html | -|Wantai Motors |DQ542MA |5050 |5050 |500 |500 |?|http://www.wantmotor.com/ProductsView.asp?id=257&pid=82 | -|Leadshine USA |Digital DM422 40V 2.2A |7500 |7500 |20000 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/DM422m.pdf | -|Leadshine USA |Digital DM556 50V 5.6A |2500 |2500 |10000 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/DM556m.pdf | -|Leadshine USA |Digital DM856 80V 7.0A |2500 |2500 |10000 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/DM856m.pdf | -|Leadshine USA |Digital DM870 80V 7.0A |2500 |2500 |10000 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/DM870m.pdf | -|Leadshine USA |Digital DM1182 150VAC 8.2A |2500 |2500 |10000 |5000 |Rising Edge |http://leadshine.com/UploadFile/Down/DM1182m.pdf | -|Leadshine USA |Digital EM402 40V 2.2A |10000 |2500 |10000 |5000 |Rising Edge |http://leadshine.com/UploadFile/Down/EM402d_P.pdf | -|Leadshine USA |Digital EM503 50V 4.2A |2500 |2500 |10000 |5000 |Rising Edge |http://leadshine.com/UploadFile/Down/EM503d_P.pdf | -|Leadshine USA |Digital EM705 70V 7.0A |2500 |2500 |10000 |5000 |Rising Edge |http://leadshine.com/UploadFile/Down/EM705d_P.pdf | -|Leadshine USA |Digital EM806 80V 8.2A |2500 |2500 |10000 |5000 |Rising Edge |http://leadshine.com/UploadFile/Down/EM806d_P.pdf | -|Leadshine USA |Analog M415B 40V 1.5A |1500 |1500 |8000 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/M415Bm.pdf | -|Leadshine USA |Analog M542 50V 4.2A |1500 |1500 |8000 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/M542V2m.pdf | -|Leadshine USA |Analog M752 75V 5.2A |1500 |1500 |8000 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/M752m.pdf | -|Leadshine USA |Analog M880A 80V 7.8A |1500 |1500 |8000 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/M880Am.pdf | -|Leadshine USA |Analog M860H 80VAC 7.2A |1500 |1500 |8000 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/MA860Hm.pdf | -|Leadshine USA |Brushed servo DCS303 30V 15A |2500 |2500 |10000 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/DCS303m.pdf | -|Leadshine USA |Brushed servo DCS810 80V 20A |2500 |2500 |10000 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/DCS810V1m.pdf | -|Leadshine USA |Brushed servo DCS810S 80V 20A |1000 |1000 |7000 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/DCS810Sm.pdf | -|Leadshine USA |Brushless servo ACS306 30V 15A |2500 |2500 |10000 |5000 |Rising Edge |http://leadshine.com/UploadFile/Down/ACS306hm.pdf | -|Leadshine USA |Brushless servo ACS606 60V 15A |850 |850 |6700 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/ACS606m.pdf | -|Leadshine USA |Brushless servo ACS806 80V 20A |850 |850 |6700 |5000 |Rising Edge |http://leadshineusa.com/UploadFile/Down/ACS806m.pdf | +|Burkhard Lewetz |Step3S |6000 |15000 |?|5000 |?|https://www.lewetz.de/download/ibstep3se.pdf | +|Parker Compumotor |Zeta 4 |200 |200 |?(200)|?(200)|Rising Edge |https://www.compumotor.com/manuals/ZETA/ZETA_Rev_A_Entire.pdf | +|www.cncdrive.com |Dugong |1000 |2500 |1000 |1000 |?|https://www.cncdrive.com/content/dugong.htm | +|www.cncdrive.com |DG2S-08020 |1000 |2500 |1000 |1000 |?|https://cncdrive.com/DG2S_08020.html | +|Wantai Motors |DQ542MA |5050 |5050 |500 |500 |?|https://www.wantmotor.com/ProductsView.asp?id=257&pid=82 | +|Leadshine USA |Digital DM422 40V 2.2A |7500 |7500 |20000 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/DM422m.pdf | +|Leadshine USA |Digital DM556 50V 5.6A |2500 |2500 |10000 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/DM556m.pdf | +|Leadshine USA |Digital DM856 80V 7.0A |2500 |2500 |10000 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/DM856m.pdf | +|Leadshine USA |Digital DM870 80V 7.0A |2500 |2500 |10000 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/DM870m.pdf | +|Leadshine USA |Digital DM1182 150VAC 8.2A |2500 |2500 |10000 |5000 |Rising Edge |https://leadshine.com/UploadFile/Down/DM1182m.pdf | +|Leadshine USA |Digital EM402 40V 2.2A |10000 |2500 |10000 |5000 |Rising Edge |https://leadshine.com/UploadFile/Down/EM402d_P.pdf | +|Leadshine USA |Digital EM503 50V 4.2A |2500 |2500 |10000 |5000 |Rising Edge |https://leadshine.com/UploadFile/Down/EM503d_P.pdf | +|Leadshine USA |Digital EM705 70V 7.0A |2500 |2500 |10000 |5000 |Rising Edge |https://leadshine.com/UploadFile/Down/EM705d_P.pdf | +|Leadshine USA |Digital EM806 80V 8.2A |2500 |2500 |10000 |5000 |Rising Edge |https://leadshine.com/UploadFile/Down/EM806d_P.pdf | +|Leadshine USA |Analog M415B 40V 1.5A |1500 |1500 |8000 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/M415Bm.pdf | +|Leadshine USA |Analog M542 50V 4.2A |1500 |1500 |8000 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/M542V2m.pdf | +|Leadshine USA |Analog M752 75V 5.2A |1500 |1500 |8000 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/M752m.pdf | +|Leadshine USA |Analog M880A 80V 7.8A |1500 |1500 |8000 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/M880Am.pdf | +|Leadshine USA |Analog M860H 80VAC 7.2A |1500 |1500 |8000 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/MA860Hm.pdf | +|Leadshine USA |Brushed servo DCS303 30V 15A |2500 |2500 |10000 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/DCS303m.pdf | +|Leadshine USA |Brushed servo DCS810 80V 20A |2500 |2500 |10000 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/DCS810V1m.pdf | +|Leadshine USA |Brushed servo DCS810S 80V 20A |1000 |1000 |7000 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/DCS810Sm.pdf | +|Leadshine USA |Brushless servo ACS306 30V 15A |2500 |2500 |10000 |5000 |Rising Edge |https://leadshine.com/UploadFile/Down/ACS306hm.pdf | +|Leadshine USA |Brushless servo ACS606 60V 15A |850 |850 |6700 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/ACS606m.pdf | +|Leadshine USA |Brushless servo ACS806 80V 20A |850 |850 |6700 |5000 |Rising Edge |https://leadshineusa.com/UploadFile/Down/ACS806m.pdf | |StepperOnline |Digital DM860T v1.0 80VAC/110VDC 7.2A |5000 |5000 |5000 |5000 |Rising Edge |https://www.omc-stepperonline.com/download/DM860T.pdf | |StepperOnline |Digital DM860T v3.0 80VAC/110VDC 7.2A |5000 |5000 |5000 |5000 |Rising Edge |https://www.omc-stepperonline.com/download/DM860T_V3.0.pdf | -|Pololu |A4988 Stepper Motor Driver Carrier |1000 |1000 |200 |200 |Rising Edge |http://www.pololu.com/catalog/product/1182/| -|Pololu |DRV8825 Stepper Motor Driver Carrier |1900 |1900 |650 |650 |Rising Edge |http://www.pololu.com/catalog/product/2132/| -|cnc4you |[[CW5045]]|2000 |8000 |5000 |5000 |Rising Edge |http://cnc4you.co.uk/resources/CW5045.pdf | +|Pololu |A4988 Stepper Motor Driver Carrier |1000 |1000 |200 |200 |Rising Edge |https://www.pololu.com/catalog/product/1182/| +|Pololu |DRV8825 Stepper Motor Driver Carrier |1900 |1900 |650 |650 |Rising Edge |https://www.pololu.com/catalog/product/2132/| +|cnc4you |[[CW5045]]|2000 |8000 |5000 |5000 |Rising Edge |https://cnc4you.co.uk/resources/CW5045.pdf | |=== // vim: set syntax=asciidoc: diff --git a/docs/src/ladder/classic-ladder.adoc b/docs/src/ladder/classic-ladder.adoc index ad860a257cf..a12d3c20e68 100644 --- a/docs/src/ladder/classic-ladder.adoc +++ b/docs/src/ladder/classic-ladder.adoc @@ -735,9 +735,9 @@ Serial: * If no port name for serial is set, TCP/IP mode will be used... * The slave address is the slave address (Modbus/RTU) or the IP address. * The IP address can be followed per the port number to use (xx.xx.xx.xx:pppp) else the port 9502 will be used per default. -* 2 products have been used for tests: a Modbus/TCP one (Adam-6051, https://www.advantech.com) and a serial Modbus/RTU one (http://www.ipac.ws). +* 2 products have been used for tests: a Modbus/TCP one (Adam-6051, https://www.advantech.com) and a serial Modbus/RTU one (https://www.ipac.ws). * See examples: adam-6051 and modbus_rtu_serial. -* Web links: https://www.modbus.org and this interesting one: http://www.iatips.com/modbus.html +* Web links: https://www.modbus.org and this interesting one: https://www.iatips.com/modbus.html * MODBUS TCP SERVER INCLUDED * ClassicLadder has a Modbus/TCP server integrated. Default port is 9502. (the previous standard 502 requires that the application must be launched with root privileges). * List of Modbus functions code supported are: 1, 2, 3, 4, 5, 6, 15 and 16. diff --git a/docs/src/man/man1/5axisgui.1.adoc b/docs/src/man/man1/5axisgui.1.adoc index 39d3359d085..d69dfaa1a03 100644 --- a/docs/src/man/man1/5axisgui.1.adoc +++ b/docs/src/man/man1/5axisgui.1.adoc @@ -8,14 +8,13 @@ *5axisgui* is one of the sample *Vismach* GUIs for LinuxCNC -See the main LinuxCNC documentation for more details. - -http://linuxcnc.org/docs/html/gui/vismach.html - == SEE ALSO linuxcnc(1) +See the main LinuxCNC documentation for more details. +https://linuxcnc.org/docs/html/gui/vismach.html + Much more information about LinuxCNC and HAL is available in the LinuxCNC and HAL User Manuals, found at /usr/share/doc/LinuxCNC/. diff --git a/docs/src/man/man1/elbpcom.1.adoc b/docs/src/man/man1/elbpcom.1.adoc index 45b9e672a16..c583485207e 100644 --- a/docs/src/man/man1/elbpcom.1.adoc +++ b/docs/src/man/man1/elbpcom.1.adoc @@ -89,4 +89,4 @@ but notice its different treatment of byte order. == SEE ALSO mesaflash(1), hostmot2(9), hm2_eth(9), -http://www.mesanet.com[Mesa's documentation for the Anything I/O boards]. +https://www.mesanet.com[Mesa's documentation for the Anything I/O boards]. diff --git a/docs/src/man/man1/gremlin_view.1.adoc b/docs/src/man/man1/gremlin_view.1.adoc index 7e05a04dbd0..3081dd1378c 100644 --- a/docs/src/man/man1/gremlin_view.1.adoc +++ b/docs/src/man/man1/gremlin_view.1.adoc @@ -38,7 +38,7 @@ on_show_limits_clicked == SEE ALSO -linuxcnc(1), http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Gremlin +linuxcnc(1), https://wiki.linuxcnc.org/cgi-bin/wiki.pl?Gremlin Much more information about LinuxCNC and HAL is available in the LinuxCNC and HAL User Manuals, found at /usr/share/doc/LinuxCNC/. diff --git a/docs/src/man/man1/hal-histogram.1.adoc b/docs/src/man/man1/hal-histogram.1.adoc index f4cb6ac2ae7..ada4bfd47c4 100644 --- a/docs/src/man/man1/hal-histogram.1.adoc +++ b/docs/src/man/man1/hal-histogram.1.adoc @@ -12,7 +12,7 @@ hal-histogram - plots the value of a HAL pin as a histogram *hal-histogram* represents the values of a HAL pin graphically. -Details: http://linuxcnc.org/docs/html/hal/tools.html#_hal_histogram +Details: https://linuxcnc.org/docs/html/hal/tools.html#_hal_histogram == SEE ALSO diff --git a/docs/src/man/man1/halcmd_twopass.1.adoc b/docs/src/man/man1/halcmd_twopass.1.adoc index ad42c6f660f..a171cd3b198 100644 --- a/docs/src/man/man1/halcmd_twopass.1.adoc +++ b/docs/src/man/man1/halcmd_twopass.1.adoc @@ -15,7 +15,7 @@ It is of little relevance to normal users and is used internally by the system. == SEE ALSO -linuxcnc(1), http://linuxcnc.org/docs/html/hal/twopass.html +linuxcnc(1), https://linuxcnc.org/docs/html/hal/twopass.html Much more information about LinuxCNC and HAL is available in the LinuxCNC and HAL User Manuals, found at /usr/share/doc/LinuxCNC/. diff --git a/docs/src/man/man1/halreport.1.adoc b/docs/src/man/man1/halreport.1.adoc index 61714262137..9e3581852bd 100644 --- a/docs/src/man/man1/halreport.1.adoc +++ b/docs/src/man/man1/halreport.1.adoc @@ -25,7 +25,7 @@ works for components that: . use names=|count= (.comp components created with halcompile) . have a *single* function -Full docs: http://linuxcnc.org/docs/html/hal/tools.html#_halreport +Full docs: https://linuxcnc.org/docs/html/hal/tools.html#_halreport == SEE ALSO diff --git a/docs/src/man/man1/halshow.1.adoc b/docs/src/man/man1/halshow.1.adoc index cf9b7b82324..787cbf51804 100644 --- a/docs/src/man/man1/halshow.1.adoc +++ b/docs/src/man/man1/halshow.1.adoc @@ -23,7 +23,7 @@ Example: "%.5f" displays a float with 5 digits right of the decimal point *halshow* creates a GUI interface to view and interact with a running HAL session. It is documented in the PDF and HTML docs much more completely than is possible in a manpage: -http://linuxcnc.org/docs/html/hal/halshow.html[] +https://linuxcnc.org/docs/html/hal/halshow.html[] == SEE ALSO diff --git a/docs/src/man/man1/hbmgui.1.adoc b/docs/src/man/man1/hbmgui.1.adoc index bd3feacb654..f6e3bb163be 100644 --- a/docs/src/man/man1/hbmgui.1.adoc +++ b/docs/src/man/man1/hbmgui.1.adoc @@ -10,7 +10,7 @@ hbmgui - Vismach Virtual Machine GUI See the main LinuxCNC documentation for more details. -http://linuxcnc.org/docs/html/gui/vismach.html +https://linuxcnc.org/docs/html/gui/vismach.html == SEE ALSO diff --git a/docs/src/man/man1/hexagui.1.adoc b/docs/src/man/man1/hexagui.1.adoc index aad69cfb235..6a25fbab68e 100644 --- a/docs/src/man/man1/hexagui.1.adoc +++ b/docs/src/man/man1/hexagui.1.adoc @@ -10,7 +10,7 @@ hexagui - Vismach Virtual Machine GUI See the main LinuxCNC documentation for more details. -http://linuxcnc.org/docs/html/gui/vismach.html +https://linuxcnc.org/docs/html/gui/vismach.html == SEE ALSO diff --git a/docs/src/man/man1/image-to-gcode.1.adoc b/docs/src/man/man1/image-to-gcode.1.adoc index d9458564c7b..10c1ee58c86 100644 --- a/docs/src/man/man1/image-to-gcode.1.adoc +++ b/docs/src/man/man1/image-to-gcode.1.adoc @@ -13,13 +13,12 @@ image-to-gcode - converts bitmap images to G-code *image-to-gcode* converts a bitmap image to G-code inteerpreting the brightness of each pixel as a Z-height. -Detailed docs: -http://linuxcnc.org/docs/devel/html/gui/image-to-gcode.html - == SEE ALSO linuxcnc(1) +Detailed docs: https://linuxcnc.org/docs/devel/html/gui/image-to-gcode.html + Much more information about LinuxCNC and HAL is available in the LinuxCNC and HAL User Manuals, found at /usr/share/doc/LinuxCNC/. diff --git a/docs/src/man/man1/iocontrol.1.adoc b/docs/src/man/man1/iocontrol.1.adoc index 529293ea139..16a9ccb3257 100644 --- a/docs/src/man/man1/iocontrol.1.adoc +++ b/docs/src/man/man1/iocontrol.1.adoc @@ -22,7 +22,7 @@ with the toolchanger. Whether *io* or *iov2* is used can be chosen in the [EMCIO] section of the INI file. -See also http://linuxcnc.org/docs/html/config/iov2.html[] +See also https://linuxcnc.org/docs/html/config/iov2.html[] == SEE ALSO diff --git a/docs/src/man/man1/iov2.1.adoc b/docs/src/man/man1/iov2.1.adoc index c185481b4d9..f96d10ec782 100644 --- a/docs/src/man/man1/iov2.1.adoc +++ b/docs/src/man/man1/iov2.1.adoc @@ -86,7 +86,7 @@ Whether *io* or *iov2* is used can be chosen in the [EMCIO] section of the INI f Debugging pin reflecting internal state. See -http://wiki.linuxcnc.org/cgi-bin/wiki.pl?ToolchangerProtocolProposal[] +https://wiki.linuxcnc.org/cgi-bin/wiki.pl?ToolchangerProtocolProposal[] for additional information. == REPORTING BUGS diff --git a/docs/src/man/man1/latency-test.1.adoc b/docs/src/man/man1/latency-test.1.adoc index d89055359ff..bc10495c785 100644 --- a/docs/src/man/man1/latency-test.1.adoc +++ b/docs/src/man/man1/latency-test.1.adoc @@ -18,7 +18,7 @@ Use *latency-test --help* for a description of available options. linuxcnc(1) -http://linuxcnc.org/docs/html/install/latency-test.html +https://linuxcnc.org/docs/html/install/latency-test.html Much more information about LinuxCNC and HAL is available in the LinuxCNC and HAL User Manuals, found at /usr/share/doc/LinuxCNC/. diff --git a/docs/src/man/man1/lineardelta.1.adoc b/docs/src/man/man1/lineardelta.1.adoc index 03d79fb0b3c..f3b0a2c2d80 100644 --- a/docs/src/man/man1/lineardelta.1.adoc +++ b/docs/src/man/man1/lineardelta.1.adoc @@ -15,7 +15,7 @@ simulating a delta robot with linear actuators linuxcnc(1) See the main LinuxCNC documentation for more details. -http://linuxcnc.org/docs/html/gui/vismach.html +https://linuxcnc.org/docs/html/gui/vismach.html == BUGS diff --git a/docs/src/man/man1/linuxcnctop.1.adoc b/docs/src/man/man1/linuxcnctop.1.adoc index 68d3789889d..0eb06c84f10 100644 --- a/docs/src/man/man1/linuxcnctop.1.adoc +++ b/docs/src/man/man1/linuxcnctop.1.adoc @@ -20,7 +20,7 @@ standalone or with other GUIs. linuxcnc(1) -http://linuxcnc.org/docs/html/gui/axis.html +https://linuxcnc.org/docs/html/gui/axis.html Much more information about LinuxCNC and HAL is available in the LinuxCNC and HAL User Manuals, found at /usr/share/doc/LinuxCNC/. diff --git a/docs/src/man/man1/maho600gui.1.adoc b/docs/src/man/man1/maho600gui.1.adoc index 7c73080681d..1af4c6ec235 100644 --- a/docs/src/man/man1/maho600gui.1.adoc +++ b/docs/src/man/man1/maho600gui.1.adoc @@ -11,7 +11,7 @@ simulating a Maho 600 CNC Milling Machine. See the main LinuxCNC documentation for more details. -http://linuxcnc.org/docs/html/gui/vismach.html +https://linuxcnc.org/docs/html/gui/vismach.html == SEE ALSO diff --git a/docs/src/man/man1/max5gui.1.adoc b/docs/src/man/man1/max5gui.1.adoc index 450686159c6..568b78a7cfd 100644 --- a/docs/src/man/man1/max5gui.1.adoc +++ b/docs/src/man/man1/max5gui.1.adoc @@ -11,7 +11,7 @@ max5gui - Vismach Virtual Machine GUI See the main LinuxCNC documentation for more details. -http://linuxcnc.org/docs/html/gui/vismach.html +https://linuxcnc.org/docs/html/gui/vismach.html == SEE ALSO diff --git a/docs/src/man/man1/mb2hal.1.adoc b/docs/src/man/man1/mb2hal.1.adoc index a849faabbca..f98ab2025be 100644 --- a/docs/src/man/man1/mb2hal.1.adoc +++ b/docs/src/man/man1/mb2hal.1.adoc @@ -16,7 +16,7 @@ Custom component name:: MB2HAL is a generic non-realtime HAL component to communicate with one or more Modbus devices. It supports Modbus RTU and Modbus TCP. -See http://linuxcnc.org/docs/html/drivers/mb2hal.html[] for more information. +See https://linuxcnc.org/docs/html/drivers/mb2hal.html[] for more information. == PINS diff --git a/docs/src/man/man1/melfagui.1.adoc b/docs/src/man/man1/melfagui.1.adoc index acd2235177e..a71879d43a7 100644 --- a/docs/src/man/man1/melfagui.1.adoc +++ b/docs/src/man/man1/melfagui.1.adoc @@ -11,7 +11,7 @@ a Mitsubishi serial manipulator See the main LinuxCNC documentation for more details. -http://linuxcnc.org/docs/html/gui/vismach.html +https://linuxcnc.org/docs/html/gui/vismach.html == SEE ALSO diff --git a/docs/src/man/man1/millturn.1.adoc b/docs/src/man/man1/millturn.1.adoc index 68e99d95b0b..430043d8151 100644 --- a/docs/src/man/man1/millturn.1.adoc +++ b/docs/src/man/man1/millturn.1.adoc @@ -11,7 +11,7 @@ simulating a Mill-Turn machine. See the main LinuxCNC documentation for more details. -http://linuxcnc.org/docs/html/gui/vismach.html +https://linuxcnc.org/docs/html/gui/vismach.html == SEE ALSO diff --git a/docs/src/man/man1/modcompile.1.adoc b/docs/src/man/man1/modcompile.1.adoc index 905e517268e..39db8d8189d 100644 --- a/docs/src/man/man1/modcompile.1.adoc +++ b/docs/src/man/man1/modcompile.1.adoc @@ -10,7 +10,7 @@ modcompile - Utility for compiling Modbus drivers See the main LinuxCNC documentation for more details. -http://linuxcnc.org/docs/stable/html/drivers/mesa_modbus.html +https://linuxcnc.org/docs/stable/html/drivers/mesa_modbus.html == SEE ALSO diff --git a/docs/src/man/man1/ngcgui.1.adoc b/docs/src/man/man1/ngcgui.1.adoc index 18a22f0a589..17d0e5d4757 100644 --- a/docs/src/man/man1/ngcgui.1.adoc +++ b/docs/src/man/man1/ngcgui.1.adoc @@ -11,7 +11,7 @@ controller == DESCRIPTION -*ngcgui* details: http://linuxcnc.org/docs/html/gui/ngcgui.html +*ngcgui* details: https://linuxcnc.org/docs/html/gui/ngcgui.html == SEE ALSO diff --git a/docs/src/man/man1/panelui.1.adoc b/docs/src/man/man1/panelui.1.adoc index 3bbdcda7eeb..d7ca52f41d0 100644 --- a/docs/src/man/man1/panelui.1.adoc +++ b/docs/src/man/man1/panelui.1.adoc @@ -17,7 +17,7 @@ Sampler gets it's input from either the MESA 7i73 or sim_matrix_kb component. Panelui is configurable using an INI style text file to define button types, HAL pin types, and/or commands. Full documentation can be found in the HTML or PDF docs: -http://linuxcnc.org/docs/html/gui/panelui.html +https://linuxcnc.org/docs/html/gui/panelui.html == SEE ALSO diff --git a/docs/src/man/man1/pncconf.1.adoc b/docs/src/man/man1/pncconf.1.adoc index 28b2af20000..f982a3fc2ac 100644 --- a/docs/src/man/man1/pncconf.1.adoc +++ b/docs/src/man/man1/pncconf.1.adoc @@ -12,7 +12,7 @@ pncconf - configuration wizard for Mesa cards *pncconf* is used to configure systems that use Mesa cards. -Details: http://linuxcnc.org/docs/html/config/pncconf.html +Details: https://linuxcnc.org/docs/html/config/pncconf.html == SEE ALSO diff --git a/docs/src/man/man1/puma560gui.1.adoc b/docs/src/man/man1/puma560gui.1.adoc index 85bc2f2450b..4c3844d030c 100644 --- a/docs/src/man/man1/puma560gui.1.adoc +++ b/docs/src/man/man1/puma560gui.1.adoc @@ -11,7 +11,7 @@ simulating a Puma 560 robot arm. See the main LinuxCNC documentation for more details. -http://linuxcnc.org/docs/html/gui/vismach.html +https://linuxcnc.org/docs/html/gui/vismach.html == SEE ALSO diff --git a/docs/src/man/man1/pumagui.1.adoc b/docs/src/man/man1/pumagui.1.adoc index 2b08a745f80..2403fa3972a 100644 --- a/docs/src/man/man1/pumagui.1.adoc +++ b/docs/src/man/man1/pumagui.1.adoc @@ -11,7 +11,7 @@ generic Puma style robot arm. See the main LinuxCNC documentation for more details. -http://linuxcnc.org/docs/html/gui/vismach.html +https://linuxcnc.org/docs/html/gui/vismach.html == SEE ALSO diff --git a/docs/src/man/man1/pyngcgui.1.adoc b/docs/src/man/man1/pyngcgui.1.adoc index 0eef4a12e31..d662ab651b3 100644 --- a/docs/src/man/man1/pyngcgui.1.adoc +++ b/docs/src/man/man1/pyngcgui.1.adoc @@ -11,7 +11,7 @@ pyngcgui - Python implementation of NGCGUI == DESCRIPTION *pyngcgui* is an alternative implenentation of NGCGUI: -http://linuxcnc.org/docs/html/gui/ngcgui.html +https://linuxcnc.org/docs/html/gui/ngcgui.html == SEE ALSO diff --git a/docs/src/man/man1/qtplasmac-materials.1.adoc b/docs/src/man/man1/qtplasmac-materials.1.adoc index 4e1512f9245..0d6143d0ee5 100644 --- a/docs/src/man/man1/qtplasmac-materials.1.adoc +++ b/docs/src/man/man1/qtplasmac-materials.1.adoc @@ -20,7 +20,7 @@ tool file. See the QtPlasmaC section of the LinuxCNC Documentation for more information. -http://linuxcnc.org/docs/devel/html/plasma/qtplasmac.html#_material_converter +https://linuxcnc.org/docs/devel/html/plasma/qtplasmac.html#_material_converter == AUTHOR diff --git a/docs/src/man/man1/qtplasmac_gcode.1.adoc b/docs/src/man/man1/qtplasmac_gcode.1.adoc index 98a0b1a84a1..0be6c13c2c5 100644 --- a/docs/src/man/man1/qtplasmac_gcode.1.adoc +++ b/docs/src/man/man1/qtplasmac_gcode.1.adoc @@ -9,7 +9,7 @@ qtplasmac_gcode - Python script shipping with Plasmac, a Plasma cutting system. *qtplasmac_gcode* is used by qtplasmac and is not intended to be used standalone. See the QtPlasmaC section of the LinuxCNC Documentation for more -information. http://linuxcnc.org/docs/devel/html/plasma/qtplasmac.html +information. https://linuxcnc.org/docs/devel/html/plasma/qtplasmac.html == SEE ALSO diff --git a/docs/src/man/man1/qtvcp.1.adoc b/docs/src/man/man1/qtvcp.1.adoc index 21031609ceb..a380593c105 100644 --- a/docs/src/man/man1/qtvcp.1.adoc +++ b/docs/src/man/man1/qtvcp.1.adoc @@ -12,7 +12,7 @@ qtvcp - Qt-based virtual control panels *QtVCP* is a system for creating user interfaces for LinuxCNC. -Full documentation at http://linuxcnc.org/docs/html/gui/qtvcp.html +Full documentation at https://linuxcnc.org/docs/html/gui/qtvcp.html == OPTIONS diff --git a/docs/src/man/man1/rotarydelta.1.adoc b/docs/src/man/man1/rotarydelta.1.adoc index bdc0a10a178..a31e3189e45 100644 --- a/docs/src/man/man1/rotarydelta.1.adoc +++ b/docs/src/man/man1/rotarydelta.1.adoc @@ -10,7 +10,7 @@ rotarydelta - Vismach Virtual Machine GUI simulating a delta robot with rotary actuators See the main LinuxCNC documentation for more details. -http://linuxcnc.org/docs/html/gui/vismach.html +https://linuxcnc.org/docs/html/gui/vismach.html == SEE ALSO diff --git a/docs/src/man/man1/scaragui.1.adoc b/docs/src/man/man1/scaragui.1.adoc index 42d69d1f25c..132f5fb99b8 100644 --- a/docs/src/man/man1/scaragui.1.adoc +++ b/docs/src/man/man1/scaragui.1.adoc @@ -10,7 +10,7 @@ scaragui - Vismach Virtual Machine GUI See the main LinuxCNC documentation for more details. -http://linuxcnc.org/docs/html/gui/vismach.html +https://linuxcnc.org/docs/html/gui/vismach.html == SEE ALSO diff --git a/docs/src/man/man1/stepconf.1.adoc b/docs/src/man/man1/stepconf.1.adoc index 1beaef5a01f..cf4645875cb 100644 --- a/docs/src/man/man1/stepconf.1.adoc +++ b/docs/src/man/man1/stepconf.1.adoc @@ -12,7 +12,7 @@ stepconf - A configuration wizard for parallel-port based machines. *stepconf* aids in the configuration of machines using the parallel port interface. -Detailed docs: http://linuxcnc.org/docs/html/config/stepconf.html +Detailed docs: https://linuxcnc.org/docs/html/config/stepconf.html == SEE ALSO diff --git a/docs/src/man/man1/tool_mmap_read.1.adoc b/docs/src/man/man1/tool_mmap_read.1.adoc index 04f256afb60..8094a2c5f12 100644 --- a/docs/src/man/man1/tool_mmap_read.1.adoc +++ b/docs/src/man/man1/tool_mmap_read.1.adoc @@ -8,13 +8,13 @@ tool_mmap_read - A component of the tool database system (an alternative to the *tool_mmap_read* is not intended to be invoked by the user. -See the Tool Database Interface section of the LinuxCNC Documentation for more information. -http://linuxcnc.org/docs/stable/html/tooldatabase/tooldatabase.html - == SEE ALSO linuxcnc(1)* +See the Tool Database Interface section of the LinuxCNC Documentation for more information at +https://linuxcnc.org/docs/stable/html/tooldatabase/tooldatabase.html. + Much more information about LinuxCNC and HAL is available in the LinuxCNC and HAL User Manuals, found at /usr/share/doc/LinuxCNC/. @@ -28,7 +28,7 @@ This man page written by Andy Pugh, as part of the LinuxCNC project. == REPORTING BUGS -Report bugs at https://github.com/LinuxCNC/linuxcnc/issues +Report bugs at https://github.com/LinuxCNC/linuxcnc/issues. == COPYRIGHT diff --git a/docs/src/man/man1/tool_watch.1.adoc b/docs/src/man/man1/tool_watch.1.adoc index d0d9c3d6ca1..d04558f88ad 100644 --- a/docs/src/man/man1/tool_watch.1.adoc +++ b/docs/src/man/man1/tool_watch.1.adoc @@ -11,7 +11,7 @@ the classic tooltable) See the Tool Database Interface section of the LinuxCNC Documentation for more information. -http://linuxcnc.org/docs/stable/html/tooldatabase/tooldatabase.html +https://linuxcnc.org/docs/stable/html/tooldatabase/tooldatabase.html == SEE ALSO diff --git a/docs/src/man/man1/xyzab-tdr-gui.1.adoc b/docs/src/man/man1/xyzab-tdr-gui.1.adoc index 09d78634ffd..b8b24f06518 100644 --- a/docs/src/man/man1/xyzab-tdr-gui.1.adoc +++ b/docs/src/man/man1/xyzab-tdr-gui.1.adoc @@ -9,14 +9,13 @@ xyzab-tdr-gui - Vismach Virtual Machine GUI *xyzab-tdr-gui* is one of the sample *Vismach* GUIs for LinuxCNC, simulating a dual-rotary machine with switchable kinematics. -See the main LinuxCNC documentation for more details. - -http://linuxcnc.org/docs/html/gui/vismach.html - == SEE ALSO linuxcnc(1)* +See the main LinuxCNC documentation for more details: +https://linuxcnc.org/docs/html/gui/vismach.html + Much more information about LinuxCNC and HAL is available in the LinuxCNC and HAL User Manuals, found at /usr/share/doc/LinuxCNC/. diff --git a/docs/src/man/man3/PM_ROTATION_VECTOR.3.adoc b/docs/src/man/man3/PM_ROTATION_VECTOR.3.adoc index 597c479f41e..dfa01006eb5 100644 --- a/docs/src/man/man3/PM_ROTATION_VECTOR.3.adoc +++ b/docs/src/man/man3/PM_ROTATION_VECTOR.3.adoc @@ -6,54 +6,61 @@ PM_ROTATION_VECTOR - Three-axis cartesian position == SYNTAX -.... +[source,c] +---- #include - struct PM_CARTESIAN; -.... +---- == CONSTRUCTORS -*PM_CARTESIAN()*:: - Construct the point <0,0,0> -*PMCARTESIAN(double _x_*,* double _y_*,* double _z_*)**:: - Construct the point <__x__*,*_y_*,*_z_*>* -*PMCARTESIAN(const PM_CARTESIAN &v)*:: - Construct a copy of the point _v_ +PM_CARTESIAN():: + Construct the point <0,0,0>. +PMCARTESIAN(double _x_, double _y_, double _z_):: + Construct the point (__x__, __y__, __z__). +PMCARTESIAN(const PM_CARTESIAN &v):: + Construct a copy of point __v__. == DATA -*double _x_*,* _y_*,* _z_* +[source,c] +---- +double x, y, z ; +---- == OPERATORS -*operator[](int n);*:: - Return the __n__th component of the vector (x=0, y=1, z=2) -*int operator==(PM_CARTESIAN _v1_*,* PM_CARTESIAN _v2_*)**:: - + +operator[](int _n_);:: + Return the __n__^th^ component of the vector (x=0, y=1, z=2) + + FIXME: Unclear. -*int operator!=(PM_CARTESIAN _v1_*,* PM_CARTESIAN _v2_*)**:: +int operator==(PM_CARTESIAN _v1_, PM_CARTESIAN _v2_):: +int operator!=(PM_CARTESIAN _v1_, PM_CARTESIAN _v2_):: Elementwise equality and inequality operator -*PM_CARTESIAN operator+(PM_CARTESIAN _v1_*,* PM_CARTESIAN__v2__*)**:: - + -*PM_CARTESIAN operator-(PM_CARTESIAN _v1_*,* PM_CARTESIAN__v2__*)**:: +PM_CARTESIAN operator+(PM_CARTESIAN _v1_, PM_CARTESIAN _v2_):: +PM_CARTESIAN operator-(PM_CARTESIAN _v1_, PM_CARTESIAN _v2_):: Addition and subtraction of vectors -*PM_CARTESIAN operator*(double _s_*,* PM_CARTESIAN _v_*)**:: - + -*PM_CARTESIAN operator*(PM_CARTESIAN _v_*,* double _s_*)**:: - Scalar multiplication -*PM_CARTESIAN operator/(PM_CARTESIAN _v_*,* double _s_*)**:: - Scalar multiplication by _1/s_ +PM_CARTESIAN operator*(double _s_, PM_CARTESIAN _v_):: +PM_CARTESIAN operator*(PM_CARTESIAN _v_, double _s_):: + Scalar multiplication of _v_ by _s_. + +PM_CARTESIAN operator/(PM_CARTESIAN _v_, double _s_):: + Scalar multiplication of _v_ by _1/s_ == OTHER FUNCTIONS ON PM_CARTESIAN OBJECTS -*double dot(PM_CARTESIAN _v1_*,* PM_CARTESIAN _v2_*)**:: - + +double dot(PM_CARTESIAN __v~l~__, PM_CARTESIAN __v~2~__):: + Returns the dot product of the two vectors. + Both vectors are required to have the same length, the return value + is the sum of the pairwise products of the vectors' components. -*PM_CARTESIAN cross(PM_CARTESIAN _v1_*,* PM_CARTESIAN _v2_*)**:: - + +PM_CARTESIAN cross(PM_CARTESIAN __v~1~__, PM_CARTESIAN __v~2~__):: + Returns the cross-product of two vectors, which in 3D + yields a vector that is orthogonal to both v~1~ and v~2~. + See https://en.wikipedia.org/wiki/Cross_product . -*PM_CARTESIAN norm(PM_CARTESIAN _v_*)**:: - + +PM_CARTESIAN norm(PM_CARTESIAN _v_):: + FIXME: It just normalizes _v_, right? + diff --git a/docs/src/man/man3/hal.3hal.adoc b/docs/src/man/man3/hal.3hal.adoc index 3db5387599b..c1263f1c098 100644 --- a/docs/src/man/man3/hal.3hal.adoc +++ b/docs/src/man/man3/hal.3hal.adoc @@ -7,67 +7,63 @@ hal - Introduction to the HAL API == DESCRIPTION HAL stands for Hardware Abstraction Layer, and is used by LinuxCNC to -transfer realtime data to and from I/O devices and other low-level -modules. - -*hal.h* defines the API and data structures used by the HAL. This file -is included in both realtime and non-realtime HAL components. HAL uses -the RTPAI real-time interface, and the #define symbols RTAPI and ULAPI -are used to distinguish between realtime and non-realtime code. The API -defined in this file is implemented in hal_lib.c and can be compiled for -linking to either realtime or non-realtime HAL components. - -The HAL is a very modular approach to the low level parts of a motion -control system. The goal of the HAL is to allow a systems integrator to -connect a group of software components together to meet whatever I/O -requirements he (or she) needs. This includes realtime and non-realtime -I/O, as well as basic motor control up to and including a PID position -loop. What these functions have in common is that they all process -signals. In general, a signal is a data item that is updated at regular -intervals. For example, a PID loop gets position command and feedback -signals, and produces a velocity command signal. - -HAL is based on the approach used to design electronic circuits. In -electronics, off-the-shelf components like integrated circuits are -placed on a circuit board and their pins are interconnected to build -whatever overall function is needed. The individual components may be as -simple as an op-amp, or as complex as a digital signal processor. Each -component can be individually tested, to make sure it works as designed. +transfer realtime data to and from I/O devices and other low-level modules. + +*hal.h* defines the API and data structures used by the HAL. +This file is included in both realtime and non-realtime HAL components. +HAL uses the RTPAI real-time interface, and the #define symbols RTAPI and ULAPI +are used to distinguish between realtime and non-realtime code. +The API defined in this file is implemented in hal_lib.c +and can be compiled for linking to either realtime or non-realtime HAL components. + +The HAL is a very modular approach to the low level parts of a motion control system. +The goal of the HAL is to allow a systems integrator to connect a group +of software components together to meet whatever I/O requirements he (or she) needs. +This includes realtime and non-realtime I/O, as well as basic motor control +up to and including a PID position loop. +What these functions have in common is that they all process signals. +In general, a signal is a data item that is updated at regular intervals. +For example, a PID loop gets position command and feedback signals, +and produces a velocity command signal. + +HAL is based on the approach used to design electronic circuits. +In electronics, off-the-shelf components like integrated circuits are placed on a circuit board +and their pins are interconnected to build whatever overall function is needed. +The individual components may be as simple as an op-amp, or as complex as a digital signal processor. +Each component can be individually tested, to make sure it works as designed. After the components are placed in a larger circuit, the signals connecting them can still be monitored for testing and troubleshooting. -Like electronic components, HAL components have pins, and the pins can -be interconnected by signals. - -In the HAL, a _signal_ contains the actual data value that passes from -one pin to another. When a signal is created, space is allocated for the -data value. A _pin_ on the other hand, is a pointer, not a data value. -When a pin is connected to a signal, the pin's pointer is set to point -at the signal's data value. This allows the component to access the -signal with very little run-time overhead. (If a pin is not linked to -any signal, the pointer points to a dummy location, so the realtime code -doesn't have to deal with null pointers or treat unlinked variables as a -special case in any way.) - -There are three approaches to writing a HAL component. Those that do not -require hard realtime performance can be written as a regular -non-realtime process. Components that need hard realtime performance but -have simple configuration and init requirements can be done as a single -realtime component, using either pre-defined init info, or load-time -parameters. Finally, complex components may use both a realtime -component for the realtime part, and a non-realtime process to handle -INI file access, user interface (possibly including GUI features), and -other details. - -HAL uses the RTAPI/ULAPI interface. If RTAPI is #defined, hal_lib.c -generates a realtime-capable library (to be insmoded into the kernel or -linked to a realtime process) that provides the functions for all -realtime components. The same source file compiled with the ULAPI -#define would make a non-realtime library that would be linked to -non-realtime code to make non-realtime executables. The variable lists -and link information are stored in a block of shared memory and -protected with mutexes, so that realtime components and non-realtime -programs can access the data. +Like electronic components, HAL components have pins, +and the pins can be interconnected by signals. + +In the HAL, a _signal_ contains the actual data value that passes from one pin to another. +When a signal is created, space is allocated for the data value. +A _pin_ on the other hand, is a pointer, not a data value. +When a pin is connected to a signal, the pin's pointer is set to point at the signal's data value. +This allows the component to access the signal with very little run-time overhead. +(If a pin is not linked to any signal, the pointer points to a dummy location, +so the realtime code doesn't have to deal with null pointers +or treat unlinked variables as a special case in any way.) + +There are three approaches to writing a HAL component. +Those that do not require hard realtime performance can be written as a regular non-realtime process. +Components that need hard realtime performance but have simple configuration +and init requirements can be done as a single realtime component, +using either pre-defined init info, or load-time parameters. +Finally, complex components may use both a realtime component for the realtime part, +and a non-realtime process to handle INI file access, user interface +(possibly including GUI features), and other details. + +HAL uses the RTAPI/ULAPI interface. +If RTAPI is #defined, hal_lib.c generates a realtime-capable library +(to be insmoded into the kernel or linked to a realtime process) +that provides the functions for all realtime components. +The same source file compiled with the ULAPI #define would make a non-realtime library +that would be linked to non-realtime code to make non-realtime executables. +The variable lists and link information are stored in a block of shared memory +and protected with mutexes, +so that realtime components and non-realtime programs can access the data. == REALTIME CONSIDERATIONS diff --git a/docs/src/man/man3/hal_add_funct_to_thread.3.adoc b/docs/src/man/man3/hal_add_funct_to_thread.3.adoc index f4506c62b7b..4f1fb49e1ae 100644 --- a/docs/src/man/man3/hal_add_funct_to_thread.3.adoc +++ b/docs/src/man/man3/hal_add_funct_to_thread.3.adoc @@ -8,11 +8,11 @@ hal_add_funct_to_thread, hal_del_funct_from_thread - cause a function to be exec == SYNTAX -int hal_add_funct_to_thread(const char *_funct_name_, const char -*_thread_name_, int position) - -int hal_del_funct_from_thread(const char *_funct_name_, const char -*_thread_name_) +[source,c] +---- +int hal_add_funct_to_thread(const char* funct_name, const char* thread_name, int position) +int hal_del_funct_from_thread(const char* funct_name, const char* thread_name) +---- == ARGUMENTS @@ -21,19 +21,18 @@ funct_name:: thread_name:: The name of the thread. position:: - The desired location within the thread. This determines when the - function will run, in relation to other functions in the thread. A - positive number indicates the desired location as measured from the - beginning of the thread, and a negative is measured from the end. So - +1 means this function will become the first one to run, +5 means it + The desired location within the thread. + This determines when the function will run, in relation to other functions in the thread. + A positive number indicates the desired location as measured from the + beginning of the thread, and a negative is measured from the end. + So +1 means this function will become the first one to run, +5 means it will be the fifth one to run, -2 means it will be next to last, and -1 means it will be last. Zero is illegal. == DESCRIPTION -*hal_add_funct_to_thread* adds a function exported by a realtime HAL -component to a realtime thread. This determines how often and in what -order functions are executed. +*hal_add_funct_to_thread* adds a function exported by a realtime HAL component to a realtime thread. +This determines how often and in what order functions are executed. *hal_del_funct_from_thread* removes a function from a thread. @@ -43,8 +42,7 @@ Returns a HAL status code. == REALTIME CONSIDERATIONS -Call only from realtime init code, not from other realtime or -non-realtime code. +Call only from realtime init code, not from other realtime or non-realtime code. == SEE ALSO diff --git a/docs/src/man/man3/hal_create_thread.3hal.adoc b/docs/src/man/man3/hal_create_thread.3hal.adoc index 7a62daed7c4..5f4ee958470 100644 --- a/docs/src/man/man3/hal_create_thread.3hal.adoc +++ b/docs/src/man/man3/hal_create_thread.3hal.adoc @@ -6,20 +6,18 @@ hal_create_thread - Create a HAL thread == SYNTAX -int hal_create_thread(const char *_name_, unsigned long _period_, int -_uses_fp_) +int hal_create_thread(const char* _name_, unsigned long _period_, int _uses_fp_) -int hal_thread_delete(const char *_name_) +int hal_thread_delete(const char* _name_) == ARGUMENTS name:: - The name of the thread + The name of the thread. period:: - The interval, in nanoseconds, between iterations of the thread + The interval, in nanoseconds, between iterations of the thread. uses_fp:: - Must be nonzero if a function which uses floating-point will be - attached to this thread. + Must be nonzero if a function which uses floating-point will be attached to this thread. == DESCRIPTION @@ -28,8 +26,8 @@ or more HAL functions periodically. All thread periods are rounded to integer multiples of the hardware timer period, and the timer period is based on the first thread created. -Threads must be created in order, from the fastest to the slowest. HAL -assigns decreasing priorities to threads that are created later, so +Threads must be created in order, from the fastest to the slowest. +HAL assigns decreasing priorities to threads that are created later, so creating them from fastest to slowest results in rate monotonic priority scheduling. @@ -37,8 +35,7 @@ scheduling. == REALTIME CONSIDERATIONS -Call only from realtime init code, not from other realtime or -non-realtime code. +Call only from realtime init code, not from other realtime or non-realtime code. == RETURN VALUE diff --git a/docs/src/man/man3/hal_exit.3hal.adoc b/docs/src/man/man3/hal_exit.3hal.adoc index 20002d48ddd..88f61a82a7b 100644 --- a/docs/src/man/man3/hal_exit.3hal.adoc +++ b/docs/src/man/man3/hal_exit.3hal.adoc @@ -20,8 +20,7 @@ prior to exit by any module that called *hal_init*. == REALTIME CONSIDERATIONS -Call only from within non-realtime or init/cleanup code, not from -realtime tasks. +Call only from within non-realtime or init/cleanup code, not from realtime tasks. == RETURN VALUE diff --git a/docs/src/man/man3/hal_export_funct.3.adoc b/docs/src/man/man3/hal_export_funct.3.adoc index 5cceee8ab01..7bd79f03a1c 100644 --- a/docs/src/man/man3/hal_export_funct.3.adoc +++ b/docs/src/man/man3/hal_export_funct.3.adoc @@ -8,40 +8,37 @@ hal_export_funct, hal_export_functf - create a realtime function callable from a == SYNTAX -typedef void(*hal_funct_t)(void * _arg_, long _period_) +typedef void(*hal_funct_t)(void* _arg_, long _period_) -int hal_export_funct(const char *_name_, hal_funct_t _funct_, void -*_arg_, int _uses_fp_, int _reentrant_, int _comp_id_) +int hal_export_funct(const char* _name_, hal_funct_t _funct_, void* _arg_, int _uses_fp_, int _reentrant_, int _comp_id_) == ARGUMENTS name:: The name of the function. funct:: - The pointer to the function + The pointer to the function. arg:: - The argument to be passed as the first parameter of _funct_ + The argument to be passed as the first parameter of _funct_. uses_fp:: Nonzero if the function uses floating-point operations, including assignment of floating point values with "=". reentrant:: - If reentrant is non-zero, the function may be preempted and called - again before the first call completes. Otherwise, it may only be added - to one thread. + If reentrant is non-zero, the function may be preempted and called again before the first call completes. + Otherwise, it may only be added to one thread. comp_id:: A HAL component identifier returned by an earlier call to *hal_init*. == DESCRIPTION -*hal_export_funct* makes a realtime function provided by a component -available to the system. A subsequent call to *hal_add_funct_to_thread* -can be used to schedule the execution of the function as needed by the -system. +*hal_export_funct* makes a realtime function provided by a component available to the system. +A subsequent call to *hal_add_funct_to_thread* can be used to schedule the +execution of the function as needed by the system. -When this function is placed on a HAL thread, and HAL threads are -started, _funct_ is called repeatedly with two arguments: _void *arg_ is -the same value that was given to *hal_export_funct*, and _long period_ -is the interval between calls in nanoseconds. +When this function is placed on a HAL thread, and HAL threads are started, +_funct_ is called repeatedly with two arguments: +_void *arg_ is the same value that was given to *hal_export_funct*, +and _long period_ is the interval between calls in nanoseconds. Each call to the function should do a small amount of work and return. diff --git a/docs/src/man/man3/hal_init.3hal.adoc b/docs/src/man/man3/hal_init.3hal.adoc index 662a496cc10..f3fca7d195e 100644 --- a/docs/src/man/man3/hal_init.3hal.adoc +++ b/docs/src/man/man3/hal_init.3hal.adoc @@ -6,25 +6,24 @@ hal_init - Sets up HAL and RTAPI == SYNTAX -int hal_init(const char *_modname_) +int hal_init(const char* _modname_) == ARGUMENTS modname:: - The name of this HAL module + The name of this HAL module. == DESCRIPTION -*hal_init* sets up HAL and RTAPI. It must be called by any module that -intends to use the API, before any other RTAPI calls. +*hal_init* sets up HAL and RTAPI. It must be called by any module +that intends to use the API, before any other RTAPI calls. -_modname_ must point to a string that identifies the module. The string -may be no longer than *HAL_NAME_LEN* characters. +_modname_ must point to a string that identifies the module. +The string may be no longer than *HAL_NAME_LEN* characters. == REALTIME CONSIDERATIONS -Call only from within non-realtime or init/cleanup code, not from -realtime tasks. +Call only from within non-realtime or init/cleanup code, not from realtime tasks. == RETURN VALUE diff --git a/docs/src/man/man3/hal_param_alias.3hal.adoc b/docs/src/man/man3/hal_param_alias.3hal.adoc index afd8af9560c..cc39f7a8396 100644 --- a/docs/src/man/man3/hal_param_alias.3hal.adoc +++ b/docs/src/man/man3/hal_param_alias.3hal.adoc @@ -13,18 +13,16 @@ int *hal_param_alias*(const char **original_name*, const char **alias*); original_name:: The original name of the param alias:: - The alternate name that may be used to refer to the param, or NULL to - remove any alternate name. + The alternate name that may be used to refer to the param, or NULL to remove any alternate name. == DESCRIPTION -A param may have two names: the original name (the one that was passed -to a *hal_param_new* function) and an alias. +A param may have two names: the original name +(the one that was passed to a *hal_param_new* function) and an alias. -Usually, aliases are for the convenience of users and should be created -and destroyed via halcmd. However, in some cases it is sensible to -create aliases directly in a component. These cases include the case -where a param is renamed, to preserve compatibility with old versions. +Usually, aliases are for the convenience of users and should be created and destroyed via halcmd. +However, in some cases it is sensible to create aliases directly in a component. +These cases include the case where a param is renamed, to preserve compatibility with old versions. == RETURN VALUE diff --git a/docs/src/man/man3/hal_param_new.3.adoc b/docs/src/man/man3/hal_param_new.3.adoc index 65d5503b6bb..50b6ca43cb1 100644 --- a/docs/src/man/man3/hal_param_new.3.adoc +++ b/docs/src/man/man3/hal_param_new.3.adoc @@ -8,49 +8,39 @@ hal_param_new, hal_param_bit_new, hal_param_float_new, hal_param_u32_new, hal_pa == SYNTAX -int hal_param_bit_new(const char *_name_, hal_param_dir_t _dir_, -hal_bit_t * _data_addr_, int _comp_id_) +int hal_param_bit_new(const char* _name_, hal_param_dir_t _dir_, hal_bit_t* _data_addr_, int _comp_id_) -int hal_param_float_new(const char *_name_, hal_param_dir_t _dir_, -hal_float_t * _data_addr_, int _comp_id_) +int hal_param_float_new(const char* _name_, hal_param_dir_t _dir_, hal_float_t* _data_addr_, int _comp_id_) -int hal_param_u32_new(const char *_name_, hal_param_dir_t _dir_, -hal_u32_t * _data_addr_, int _comp_id_) +int hal_param_u32_new(const char* _name_, hal_param_dir_t _dir_, hal_u32_t* _data_addr_, int _comp_id_) -int hal_param_s32_new(const char *_name_, hal_param_dir_t _dir_, -hal_s32_t * _data_addr_, int _comp_id_) +int hal_param_s32_new(const char* _name_, hal_param_dir_t _dir_, hal_s32_t* _data_addr_, int _comp_id_) -int hal_param_bit_newf(hal_param_dir_t _dir_, hal_bit_t * _data_addr_, -int _comp_id_, const char *_fmt_, _..._) +int hal_param_bit_newf(hal_param_dir_t _dir_, hal_bit_t* _data_addr_, int _comp_id_, const char* _fmt_, _..._) -int hal_param_float_newf(hal_param_dir_t _dir_, hal_float_t * -_data_addr_, int _comp_id_, const char *_fmt_, _..._) +int hal_param_float_newf(hal_param_dir_t _dir_, hal_float_t* _data_addr_, int _comp_id_, const char* _fmt_, _..._) -int hal_param_u32_newf(hal_param_dir_t _dir_, hal_u32_t * _data_addr_, -int _comp_id_, const char *_fmt_, _..._) +int hal_param_u32_newf(hal_param_dir_t _dir_, hal_u32_t * _data_addr_, int _comp_id_, const char* _fmt_, _..._) -int hal_param_s32_newf(hal_param_dir_t _dir_, hal_s32_t * _data_addr_, -int _comp_id_, const char *_fmt_, _..._) +int hal_param_s32_newf(hal_param_dir_t _dir_, hal_s32_t * _data_addr_, int _comp_id_, const char* _fmt_, _..._) -int hal_param_new(const char *_name_, hal_type_t _type_, hal_param_dir_t -_dir_, void *_data_addr_, int _comp_id_) +int hal_param_new(const char* _name_, hal_type_t _type_, hal_param_dir_t _dir_, void* _data_addr_, int _comp_id_) == ARGUMENTS _name_:: - The name to give to the created parameter + The name to give to the created parameter. _dir_:: The direction of the parameter, from the viewpoint of the component. - It may be one of *HAL_RO*, or *HAL_RW* A component may assign a value - to any parameter, but other programs (such as halcmd) may only assign - a value to a parameter that is *HAL_RW*. + It may be one of *HAL_RO*, or *HAL_RW*. + A component may assign a value to any parameter, + but other programs (such as halcmd) may only assign a value to a parameter that is *HAL_RW*. _data_addr_:: - The address of the data, which must lie within memory allocated by - *hal_malloc*. + The address of the data, which must lie within memory allocated by *hal_malloc*. _comp_id_:: A HAL component identifier returned by an earlier call to *hal_init*. _fmt, ..._:: - A printf-style format string and arguments + A printf-style format string and arguments. _type_:: The type of the parameter, as specified in *hal_type_t(3hal)*. diff --git a/docs/src/man/man3/hal_parport.3hal.adoc b/docs/src/man/man3/hal_parport.3hal.adoc index 0fb1d57af00..ff2ade624d1 100644 --- a/docs/src/man/man3/hal_parport.3hal.adoc +++ b/docs/src/man/man3/hal_parport.3hal.adoc @@ -8,10 +8,8 @@ hal_parport - portable access to PC-style parallel ports .... #include "hal_parport.h" -int hal_parport_get(int _comp_id_, hal_parport_t *_port_, - unsigned short _base_, unsigned short _base_hi_, - unsigned int _modes_) -void hal_parport_release(hal_parport_t *_port_) +int hal_parport_get(int _comp_id_, hal_parport_t* _port_, unsigned short _base_, unsigned short _base_hi_, unsigned int _modes_) +void hal_parport_release(hal_parport_t* _port_) .... == ARGUMENTS @@ -19,32 +17,30 @@ void hal_parport_release(hal_parport_t *_port_) comp_id:: A HAL component identifier returned by an earlier call to *hal_init*. port:: - A pointer to a hal_parport_t structure + A pointer to a hal_parport_t structure. base:: - The base address of the port (if port >= 16) or the linux port number - of the port (if port < 16) + The base address of the port (if port >= 16) or the linux port number of the port (if port < 16) base_hi:: - The "high" address of the port (location of the ECP registers), 0 to - use a probed high address, or -1 to disable the high address + The "high" address of the port (location of the ECP registers), + 0 to use a probed high address, or -1 to disable the high address modes:: Advise the driver of the desired port modes, from . - If a linux-detected port does not provide the requested modes, a - warning is printed with rtapi_print_msg. This does not make the port - request fail, because unfortunately, many systems that have working - EPP parports are not detected as such by Linux. + If a linux-detected port does not provide the requested modes, + a warning is printed with rtapi_print_msg. + This does not make the port request fail, because unfortunately, + many systems that have working EPP parports are not detected as such by Linux. == DESCRIPTION -*hal_parport_get* allocates a parallel port for exclusive use of the -named HAL component. The port must be released with -*hal_parport_release* before the component exits with *hal_exit*. +*hal_parport_get* allocates a parallel port for exclusive use of the named HAL component. +The port must be released with *hal_parport_release* before the component exits with *hal_exit*. == HIGH ADDRESS PROBING If the port is a parallel port known to Linux, and Linux detected a high I/O address, this value is used. Otherwise, if base+0x400 is not -registered to any device, it is used. Otherwise, no address is used. If -no high address is detected, port->base_hi is 0. +registered to any device, it is used. Otherwise, no address is used. +If no high address is detected, port->base_hi is 0. == PARPORT STRUCTURE @@ -59,10 +55,10 @@ typedef struct == RETURN VALUE -*hal_parport_get* returns a HAL status code. On success, _port_ is -filled out with information about the allocated port. On failure, the -contents of _port_ are undefined except that it is safe (but not -required) to pass this port to *hal_parport_release*. +*hal_parport_get* returns a HAL status code. +On success, _port_ is filled out with information about the allocated port. +On failure, the contents of _port_ are undefined except that it is safe +(but not required) to pass this port to *hal_parport_release*. *hal_parport_release* does not return a value. It always succeeds. diff --git a/docs/src/man/man3/hal_pin_alias.3hal.adoc b/docs/src/man/man3/hal_pin_alias.3hal.adoc index fdaf5f51386..e0a32c03816 100644 --- a/docs/src/man/man3/hal_pin_alias.3hal.adoc +++ b/docs/src/man/man3/hal_pin_alias.3hal.adoc @@ -6,12 +6,12 @@ hal_pin_alias - creates an alternate name for a pin == SYNTAX -int *hal_pin_alias*(const char **original_name*, const char **alias*); +int *hal_pin_alias*(const char* _original_name_, const char* _alias_); == ARGUMENTS original_name:: - The original name of the pin + The original name of the pin. alias:: The alternate name that may be used to refer to the pin, or NULL to remove any alternate name. @@ -21,10 +21,9 @@ alias:: A pin may have two names: the original name (the one that was passed to a *hal_pin_new* function) and an alias. -Usually, aliases are for the convenience of users and should be created -and destroyed via halcmd. However, in some cases it is sensible to -create aliases directly in a component. These cases include the case -where a pin is renamed, to preserve compatibility with old versions. +Usually, aliases are for the convenience of users and should be created and destroyed via halcmd. +However, in some cases it is sensible to create aliases directly in a component. +These cases include the case where a pin is renamed, to preserve compatibility with old versions. == RETURN VALUE diff --git a/docs/src/man/man3/hal_pin_new.3.adoc b/docs/src/man/man3/hal_pin_new.3.adoc index bbf29b31a35..21242d23fe5 100644 --- a/docs/src/man/man3/hal_pin_new.3.adoc +++ b/docs/src/man/man3/hal_pin_new.3.adoc @@ -11,50 +11,39 @@ hal_pin_port_newf - creates a HAL pin == SYNTAX -int hal_pin_bit_new(const char *_name_, hal_pin_dir_t _dir_, hal_bit_t -** _data_ptr_addr_, int _comp_id_) +int hal_pin_bit_new(const char* _name_, hal_pin_dir_t _dir_, hal_bit_t** _data_ptr_addr_, int _comp_id_) -int hal_pin_float_new(const char *_name_, hal_pin_dir_t _dir_, -hal_float_t ** _data_ptr_addr_, int _comp_id_) +int hal_pin_float_new(const char* _name_, hal_pin_dir_t _dir_, hal_float_t** _data_ptr_addr_, int _comp_id_) -int hal_pin_u32_new(const char *_name_, hal_pin_dir_t _dir_, hal_u32_t -** _data_ptr_addr_, int _comp_id_) +int hal_pin_u32_new(const char* _name_, hal_pin_dir_t _dir_, hal_u32_t** _data_ptr_addr_, int _comp_id_) -int hal_pin_s32_new(const char *_name_, hal_pin_dir_t _dir_, hal_s32_t -** _data_ptr_addr_, int _comp_id_) +int hal_pin_s32_new(const char* _name_, hal_pin_dir_t _dir_, hal_s32_t** _data_ptr_addr_, int _comp_id_) -int hal_pin_port_new(const char *_name_, hal_pin_dir_t _dir_, hal_port_t -** _data_ptr_addr_, int _comp_id_) +int hal_pin_port_new(const char* _name_, hal_pin_dir_t _dir_, hal_port_t** _data_ptr_addr_, int _comp_id_) -int hal_pin_bit_newf(hal_pin_dir_t _dir_, hal_bit_t ** _data_ptr_addr_, -int _comp_id_, const char *_fmt_, _..._) +int hal_pin_bit_newf(hal_pin_dir_t _dir_, hal_bit_t** _data_ptr_addr_, int _comp_id_, const char* _fmt_, _..._) -int hal_pin_float_newf(hal_pin_dir_t _dir_, hal_float_t ** -_data_ptr_addr_, int _comp_id_, const char *_fmt_, _..._) +int hal_pin_float_newf(hal_pin_dir_t _dir_, hal_float_t** _data_ptr_addr_, int _comp_id_, const char* _fmt_, _..._) -int hal_pin_u32_newf(hal_pin_dir_t _dir_, hal_u32_t ** _data_ptr_addr_, -int _comp_id_, const char *_fmt_, _..._) +int hal_pin_u32_newf(hal_pin_dir_t _dir_, hal_u32_t** _data_ptr_addr_, int _comp_id_, const char* _fmt_, _..._) -int hal_pin_s32_newf(hal_pin_dir_t _dir_, hal_s32_t ** _data_ptr_addr_, -int _comp_id_, const char *_fmt_, _..._) +int hal_pin_s32_newf(hal_pin_dir_t _dir_, hal_s32_t** _data_ptr_addr_, int _comp_id_, const char* _fmt_, _..._) -int hal_pin_port_newf(hal_pin_dir_t _dir_, hal_port_t ** -_data_ptr_addr_, int _comp_id_, const char *_fmt_, _..._) +int hal_pin_port_newf(hal_pin_dir_t _dir_, hal_port_t** _data_ptr_addr_, int _comp_id_, const char* _fmt_, _..._) -int hal_pin_new(const char *_name_, hal_type_t _type_, hal_pin_dir_t -_dir_, void **_data_ptr_addr_, int _comp_id_) +int hal_pin_new(const char* _name_, hal_type_t _type_, hal_pin_dir_t _dir_, void** _data_ptr_addr_, int _comp_id_) == ARGUMENTS name:: - name of the pin + Name of the pin. dir:: - The direction of the pin, from the viewpoint of the component. It may - be one of *HAL_IN*, *HAL_OUT*, or *HAL_IO*. Any number of *HAL_IN* or - *HAL_IO* pins may be connected to the same signal, but at most one - *HAL_OUT* pin is permitted. A component may assign a value to a pin - that is *HAL_OUT* or *HAL_IO*, but may not assign a value to a pin - that is *HAL_IN*. + The direction of the pin, from the viewpoint of the component. + It may be one of *HAL_IN*, *HAL_OUT*, or *HAL_IO*. + Any number of *HAL_IN* or *HAL_IO* pins may be connected to the same signal, + but at most one *HAL_OUT* pin is permitted. + A component may assign a value to a pin that is *HAL_OUT* or *HAL_IO*, + but may not assign a value to a pin that is *HAL_IN*. data_ptr_addr:: The address of the pointer-to-data, which must lie within memory allocated by *hal_malloc*. @@ -67,11 +56,11 @@ type:: == DESCRIPTION -The *hal_pin_new* family of functions create a new _pin_ object. Once a -pin has been created, it can be linked to a signal object using -*hal_link*. A pin contains a pointer, and the component that owns the -pin can dereference the pointer to access whatever signal is linked to -the pin. (If no signal is linked, it points to a dummy signal.) +The *hal_pin_new* family of functions create a new _pin_ object. +Once a pin has been created, it can be linked to a signal object using *hal_link*. +A pin contains a pointer, and the component that owns the pin +can dereference the pointer to access whatever signal is linked to the pin. +(If no signal is linked, it points to a dummy signal.) There are functions for each of the data types that the HAL supports. Pins may only be linked to signals of the same type. diff --git a/docs/src/man/man3/hal_port.3hal.adoc b/docs/src/man/man3/hal_port.3hal.adoc index 1152520ddd7..a85321e98a3 100644 --- a/docs/src/man/man3/hal_port.3hal.adoc +++ b/docs/src/man/man3/hal_port.3hal.adoc @@ -21,10 +21,8 @@ unsigned hal_port_writable(hal_port_t port); unsigned hal_port_buffer_size(hal_port_t port); #ifdef ULAPI -void hal_port_wait_readable(hal_port_t** port, unsigned count, - sig_atomic_t* stop); -void hal_port_wait_writable(hal_port_t** port, unsigned count, - sig_atomic_t* stop); +void hal_port_wait_readable(hal_port_t** port, unsigned count, sig_atomic_t* stop); +void hal_port_wait_writable(hal_port_t** port, unsigned count, sig_atomic_t* stop); #endif .... @@ -57,8 +55,8 @@ pin. === *hal_port_peek_commit* -Advances the read position in the port buffer by count bytes. A -hal_port_peek followed by a hal_port_peek_commit would function +Advances the read position in the port buffer by count bytes. +A hal_port_peek followed by a hal_port_peek_commit would function equivalently to hal_port_read given the same count value. Returns true if count readable bytes were skipped and are no longer accessible and false if no bytes wer skipped. This function should only be called by @@ -103,37 +101,34 @@ the stop flag is set. == ARGUMENTS hal_port_t:: - A handle to a port object. Created by hal_pin_new + A handle to a port object. Created by hal_pin_new. dest:: - An array of bytes that hal_port_read and hal_port_peek will copy data - into. This must be allocated by the caller and be at least count bytes - long. + An array of bytes that hal_port_read and hal_port_peek will copy data into. + This must be allocated by the caller and be at least count bytes long. count:: The number of bytes that hal_port_read, hal_port_peek, and - hal_port_write will copy in to dest or out from src + hal_port_write will copy in to dest or out from src. src:: An array of bytes that hal_port_write will copy data from into the port buffer. This must be of size count bytes or larger. stop:: - A pointer to a value which is monitored while waiting. If it is - nonzero, the wait operation returns early. This allows a wait call to - be safely terminated in the case of a signal. + A pointer to a value which is monitored while waiting. + If it is nonzero, the wait operation returns early. + This allows a wait call to be safely terminated in the case of a signal. == SAMPLE CODE In the source tree under src/hal/components/raster.comp is a realtime component intended for laser control. src/tests/raster is a test program -that also programs the raster component from python. +that also programs the raster component from Python. == REALTIME CONSIDERATIONS *hal_port_read*, *hal_port_peek*, *hal_port_peek_commit*, *hal_port_readable*, *hal_port_clear*, *hal_port_write*, -*hal_port_writable*, *hal_port_buffer_size* may be called from realtime -code. +*hal_port_writable*, *hal_port_buffer_size* may be called from realtime code. -*hal_port_wait_writable*, *hal_port_wait_readable* may be called from -ULAPI code. +*hal_port_wait_writable*, *hal_port_wait_readable* may be called from ULAPI code. == SEE ALSO diff --git a/docs/src/man/man3/hal_set_constructor.3hal.adoc b/docs/src/man/man3/hal_set_constructor.3hal.adoc index cbe522941ad..2c05c8914aa 100644 --- a/docs/src/man/man3/hal_set_constructor.3hal.adoc +++ b/docs/src/man/man3/hal_set_constructor.3hal.adoc @@ -6,26 +6,22 @@ hal_set_constructor - sets the constructor function for this component == SYNTAX -typedef int (*hal_constructor_t)(const char *prefix, const char *arg); +typedef int (*hal_constructor_t)(const char* prefix, const char* arg); int hal_set_constructor(int _comp_id_, hal_constructor_t _constructor_) == ARGUMENTS -_comp_id_ A HAL component identifier returned by an earlier call to -*hal_init*. +_comp_id_:: A HAL component identifier returned by an earlier call to *hal_init*. -_prefix_ The prefix to be given to the pins, parameters, and functions -in the new instance +_prefix_:: The prefix to be given to the pins, parameters, and functions in the new instance. -_arg_ An argument that may be used by the component to customize this -instance. +_arg_:: An argument that may be used by the component to customize this instance. == DESCRIPTION -As an experimental feature in HAL 2.1, components may be -_constructable_. Such a component may create pins and parameters not -only at the time the module is loaded, but it may create additional pins -and parameters, and functions on demand. +As an experimental feature in HAL 2.1, components may be _constructable_. +Such a component may create pins and parameters not only at the time the module is loaded, +but it may create additional pins and parameters, and functions on demand. == RETURN VALUE diff --git a/docs/src/man/man3/hal_set_lock.3.adoc b/docs/src/man/man3/hal_set_lock.3.adoc index 3b41b8c0fcf..7e2381301e9 100644 --- a/docs/src/man/man3/hal_set_lock.3.adoc +++ b/docs/src/man/man3/hal_set_lock.3.adoc @@ -16,11 +16,10 @@ int hal_get_lock() lock_type:: The desired lock type, which may be a bitwise combination of: - *HAL_LOCK_LOAD*, *HAL_LOCK_CONFIG*, *HAL_LOCK_PARAMS*, or - *HAL_LOCK_PARAMS*. *HAL_LOCK_NONE* or 0 locks nothing, and - *HAL_LOCK_ALL locks everything.* + *HAL_LOCK_LOAD*, *HAL_LOCK_CONFIG*, *HAL_LOCK_PARAMS*, or *HAL_LOCK_PARAMS*. + *HAL_LOCK_NONE* or 0 locks nothing, and *HAL_LOCK_ALL locks everything.* == RETURN VALUE -*hal_set_lock* Returns a HAL status code. *hal_get_lock* returns the -current HAL lock level or a HAL status code. +*hal_set_lock* returns a HAL status code. +*hal_get_lock* returns the current HAL lock level or a HAL status code. diff --git a/docs/src/man/man3/hal_signal_new.3.adoc b/docs/src/man/man3/hal_signal_new.3.adoc index 62a7ff64a68..5f9ae684169 100644 --- a/docs/src/man/man3/hal_signal_new.3.adoc +++ b/docs/src/man/man3/hal_signal_new.3.adoc @@ -9,20 +9,20 @@ signals == SYNTAX -int hal_signal_new(const char *_signal_name_, hal_type_t _type_) +int hal_signal_new(const char* _signal_name_, hal_type_t _type_) -int hal_signal_delete(const char *_signal_name_) +int hal_signal_delete(const char* _signal_name_) -int hal_link(const char *_pin_name_, const char *_signal_name_) +int hal_link(const char* _pin_name_, const char* _signal_name_) -int hal_unlink(const char *_pin_name_) +int hal_unlink(const char* _pin_name_) == ARGUMENTS signal_name:: - The name of the signal + The name of the signal. pin_name:: - The name of the pin + The name of the pin. type:: The type of the signal, as specified in *hal_type_t(3hal)*. diff --git a/docs/src/man/man3/hal_start_threads.3hal.adoc b/docs/src/man/man3/hal_start_threads.3hal.adoc index 22dffa38241..42c5fc1ff92 100644 --- a/docs/src/man/man3/hal_start_threads.3hal.adoc +++ b/docs/src/man/man3/hal_start_threads.3hal.adoc @@ -12,12 +12,11 @@ int hal_stop_threads() == DESCRIPTION -*hal_start_threads* starts all threads that have been created. This is -the point at which realtime functions start being called. +*hal_start_threads* starts all threads that have been created. +This is the point at which realtime functions start being called. -*hal_stop_threads* stops all threads that were previously started by -*hal_start_threads*. It should be called before any component that is -part of a system exits. +*hal_stop_threads* stops all threads that were previously started by *hal_start_threads*. +It should be called before any component that is part of a system exits. == RETURN VALUE diff --git a/docs/src/man/man3/hal_stream.3hal.adoc b/docs/src/man/man3/hal_stream.3hal.adoc index fec8b9414c8..47dcdee678c 100644 --- a/docs/src/man/man3/hal_stream.3hal.adoc +++ b/docs/src/man/man3/hal_stream.3hal.adoc @@ -8,11 +8,9 @@ hal_stream - non-blocking realtime streams .... #include -int hal_stream_create(hal_stream_t* stream, int comp_id, int key, - int depth, const char* typestring); +int hal_stream_create(hal_stream_t* stream, int comp_id, int key, int depth, const char* typestring); void hal_stream_destroy(hal_stream_t* stream); -int hal_stream_attach(hal_stream_t* stream, int comp_id, int key, - const char* typestring); +int hal_stream_attach(hal_stream_t* stream, int comp_id, int key, const char* typestring); int hal_stream_detach(hal_stream_t* stream); int hal_stream_element_count(hal_stream_t* stream); @@ -22,8 +20,7 @@ int hal_stream_maxdepth(hal_stream_t* stream); int hal_stream_num_underruns(hal_stream_t* stream); int hal_stream_num_overruns(hal_stream_t* stream); -int hal_stream_read(hal_stream_t* stream, union hal_stream_data* buf, - unsigned* sampleno); +int hal_stream_read(hal_stream_t* stream, union hal_stream_data* buf, unsigned* sampleno); bool hal_stream_readable(hal_stream_t* stream); int hal_stream_write(hal_stream_t* stream, union hal_stream_data* buf); @@ -38,22 +35,21 @@ void hal_stream_wait_readable(hal_stream_t* stream, sig_atomic_t* stop); == DESCRIPTION A HAL stream provides a limited ability for two components to -communicate data which does not fit within the model of HAL pins. A -reader and a writer must agree on a _key_ (32-bit integer identifier) +communicate data which does not fit within the model of HAL pins. +A reader and a writer must agree on a _key_ (32-bit integer identifier) and a data structure specified by _typestring._ They must also agree which component (the first one loaded) will *hal_stream_create* the stream, and which component (the second one loaded) will *hal_stream_attach* to the already-created stream. -The non-realtime part can be *halstreamer* or *halsampler*. In the case -of *halstreamer* the key is 0x48535430 plus the channel number. In the -case of *halsampler* the key is 0x48534130 plus the channel number. +The non-realtime part can be *halstreamer* or *halsampler*. +In the case of *halstreamer* the key is 0x48535430 plus the channel number. +In the case of *halsampler* the key is 0x48534130 plus the channel number. === *hal_stream_create* -Create the given stream, initializing the _stream_ which is passed by -reference. It is an undiagnosed error if a stream has already been -created with the same _key_. +Create the given stream, initializing the _stream_ which is passed by reference. +It is an undiagnosed error if a stream has already been created with the same _key_. === *hal_stream_destroy* @@ -65,80 +61,48 @@ stream was attached with *hal_stream_attach* rather than created with === *hal_stream_attach* -Attach the given stream, which was already created by -*hal_stream_create*. If the typestring is specified, this call fails if -it does not match the typestring the stream was created with. If the -typestring argument is NULL, then any typestring is accepted. +Attach the given stream, which was already created by *hal_stream_create*. +If the typestring is specified, this call fails if it does not match the typestring the stream was created with. +If the typestring argument is NULL, then any typestring is accepted. === *hal_stream_detach* Detach the given stream. It is an undiagnosed error if the stream was -created with *hal_stream_create* rather than attached with -*hal_stream_attach*. It is an undiagnosed error if the call to -*hal_stream_detach* is omitted. +created with *hal_stream_create* rather than attached with *hal_stream_attach*. +It is an undiagnosed error if the call to *hal_stream_detach* is omitted. -=== *hal_stream_element_count* +*hal_stream_element_count*:: Returns the number of pins. -Returns the number of pins. +*hal_stream_element_type*:: Returns the type of the given pin number. -=== *hal_stream_element_type* +*hal_stream_readable*:: Returns true if the stream has at least one sample to read -Returns the type of the given pin number. +*hal_stream_read*:: If the stream has one sample to read, stores it in buf. -=== *hal_stream_readable* +*hal_stream_writable*:: Returns true if the stream has room for at least one sample to be written. -Returns true if the stream has at least one sample to read +*hal_stream_depth*:: Returns the number of samples waiting to be read. -=== *hal_stream_read* +*hal_stream_maxdepth*:: Returns the *depth* argument that the stream was created with. -If the stream has one sample to read, stores it in buf. +*hal_stream_num_overruns*:: Returns a number which is incremented each time *hal_stream_write* is called without space available. -=== *hal_stream_writable* +*hal_stream_num_underruns*:: Returns a number which is incremented each time *hal_stream_read* is called without a sample available. -Returns true if the stream has room for at least one sample to be -written. +*hal_stream_wait_readable*:: Waits until the stream is readable or the stop flag is set. -=== *hal_stream_depth* +*hal_stream_wait_writable*:: Waits until the stream is writable or the stop flag is set. -Returns the number of samples waiting to be read. +*hal_stream_read*:: Reads a record from stream. + If successful, it is stored in the given buffer. + Optionally, the sample number can be retrieved. If no sample is available, _num_underruns_ is incremented. + It is an undetected error if more than one component or real-time function calls *hal_stream_read* concurrently. -=== *hal_stream_maxdepth* - -Returns the *depth* argument that the stream was created with. - -=== *hal_stream_num_overruns* - -Returns a number which is incremented each time *hal_stream_write* is -called without space available. - -=== *hal_stream_num_underruns* - -Returns a number which is incremented each time *hal_stream_read* is -called without a sample available. - -=== *hal_stream_wait_readable* - -Waits until the stream is readable or the stop flag is set. - -=== *hal_stream_wait_writable* - -Waits until the stream is writable or the stop flag is set. - -=== *hal_stream_read* - -Reads a record from stream. If successful, it is stored in the given -buffer. Optionally, the sample number can be retrieved. If no sample is -available, _num_underruns_ is incremented. It is an undetected error if -more than one component or real-time function calls *hal_stream_read* -concurrently. - -=== *hal_stream_write* - -Writes a record to the stream. If successful, it copied from the given -buffer. If no room is available, _num_overruns_ is incremented. In -either case, the internal _sampleno_ value is incremented. It is an -undetected error if more than one component or real-time function calls -*hal_stream_write* concurrently. +*hal_stream_write*:: Writes a record to the stream. + If successful, it copied from the given buffer. + If no room is available, _num_overruns_ is incremented. + In either case, the internal _sampleno_ value is incremented. + It is an undetected error if more than one component or real-time function calls *hal_stream_write* concurrently. == ARGUMENTS @@ -163,8 +127,8 @@ typestring:: . for int32_t / hal_s32_t . for uint32_t / hal_u32_t . for real_t / hal_float_t - -A typestring is limited to 16 characters. + + + A typestring is limited to 16 characters. buf:: A buffer big enough to hold all the data in one sample. @@ -190,28 +154,23 @@ In the source tree under _src/hal/components_, *sampler.c* and *hal_stream_depth*, *hal_stream_maxdepth*, *hal_stream_num_underruns*, *hal_stream_number_overruns* may be called from realtime code. -*hal_stream_wait_writable*, *hal_stream_wait_writable* may be called -from ULAPI code. +*hal_stream_wait_writable*, *hal_stream_wait_writable* may be called from ULAPI code. -Other functions may be called in any context, including realtime -contexts. +Other functions may be called in any context, including realtime contexts. == RETURN VALUE *hal_stream_create* , *hal_stream_attach* , *hal_stream_read* , *hal_stream_write* , *hal_stream_detach* and *hal_stream_destroy* return -an RTAPI status code. Other functions' return values are explained -above. +an RTAPI status code. Other functions' return values are explained above. == BUGS -The memory overhead of a stream can be large. Each element in a record -uses 8 bytes, and the implicit sample number also uses 8 bytes. As a -result, a stream which is used to transport 8-bit values uses 94% of its -memory as overhead. However, for modest stream sizes this overhead is -not important. (this memory is part of its own shared memory region and -does not count against the HAL shared memory region used for pins, -parameters and signals) +The memory overhead of a stream can be large. +Each element in a record uses 8 bytes, and the implicit sample number also uses 8 bytes. +As a result, a stream which is used to transport 8-bit values uses 94% of its memory as overhead. +However, for modest stream sizes this overhead is not important. +(This memory is part of its own shared memory region and does not count against the HAL shared memory region used for pins, parameters and signals) == SEE ALSO diff --git a/docs/src/man/man3/hal_type_t.3.adoc b/docs/src/man/man3/hal_type_t.3.adoc index c3c72b37a09..e8b50f39c45 100644 --- a/docs/src/man/man3/hal_type_t.3.adoc +++ b/docs/src/man/man3/hal_type_t.3.adoc @@ -52,18 +52,11 @@ It is often useful to refer to a type that can represent all the values as a HAL type, but without the volatile qualifier. The following types correspond with the HAL types: -____ -hal_bit_t:: - int -hal_s32_t:: - __s32 -hal_u32_t:: - __u32 -hal_float_t:: - hal_real_t -hal_port_t:: - int -____ +hal_bit_t:: int +hal_s32_t:: __s32 +hal_u32_t:: __u32 +hal_float_t:: hal_real_t +hal_port_t:: int Take care not to use the types *s32* and *u32*. These will compile in kernel modules but not in userspace, and not for realtime components diff --git a/docs/src/man/man3/hm2_bspi_set_write_function.3hm2.adoc b/docs/src/man/man3/hm2_bspi_set_write_function.3hm2.adoc index edd4152bcc3..dc6cb6b53bd 100644 --- a/docs/src/man/man3/hm2_bspi_set_write_function.3hm2.adoc +++ b/docs/src/man/man3/hm2_bspi_set_write_function.3hm2.adoc @@ -7,10 +7,11 @@ write phase of a hostmot2 buffered SPI driver. == SYNTAX -.... +[source,c] +---- #include int hm2_bspi_set_write_function(char *name, void *func, void *subdata) -.... +---- == DESCRIPTION @@ -20,9 +21,7 @@ to be called every time that the main Hostmot2 driver calls the generic printed with rtapi_print_msg during the driver loading process and take the form: -____ -hm2_..bspi. -____ +**hm2_**__**.**__**.bspi**.__ For example hm2_5i23.0.bspi.0. @@ -34,17 +33,14 @@ comp then the function must *not* use the FUNCTION() convenience macro, and the argument to the function in the definition must *always* be (struct state *inst). -"subdata" is a pointer to the driver instance internal data. In the case -of a driver written in comp this will always be "inst" in the function -call. +"subdata" is a pointer to the driver instance internal data. +In the case of a driver written in comp this will always be "inst" in the function call. -If using comp then the call to this function should be anywhere in the -EXTRA_SETUP code. +If using comp then the call to this function should be anywhere in the EXTRA_SETUP code. == REALTIME CONSIDERATIONS -Call only from realtime init code, not from other realtime code or -non-realtime components. +Call only from realtime init code, not from other realtime code or non-realtime components. == RETURN VALUE diff --git a/docs/src/man/man3/hm2_bspi_setup_chan.3hm2.adoc b/docs/src/man/man3/hm2_bspi_setup_chan.3hm2.adoc index 1aab1ecca87..a9121d65985 100644 --- a/docs/src/man/man3/hm2_bspi_setup_chan.3hm2.adoc +++ b/docs/src/man/man3/hm2_bspi_setup_chan.3hm2.adoc @@ -6,11 +6,12 @@ hm2_bspi_setup_chan - setup a Hostmot2 bspi channel == SYNTAX -.... +[source,c] +---- #include -int hm2_bspi_setup_chan(char *name, int chan, int cs, int bits, float mhz, +int hm2_bspi_setup_chan(char* name, int chan, int cs, int bits, float mhz, int delay, int cpol, int cpha, int noclear, int noecho) -.... +---- == DESCRIPTION @@ -21,9 +22,9 @@ name:: A unique string given to the BSPI channel during hostmot2 setup. The names of the available channels are printed to standard output during the driver loading process and take the form - *hm2_*_board-name_*.*_board-index_*.bspi.*_bspi-index_. For example, - the first index on the first hm2_5i23 board would be called - hm2_5i23.0.bspi.0. + **hm2_**_board-name_**.**_board-index_**.bspi.**_bspi-index_. + For example, the first index on the first hm2_5i23 board would be called + `hm2_5i23.0.bspi.0`. chan:: Channels are numbered 0 to 15. The value on the chip-select lines is set by cs and need not match the channel number. @@ -44,16 +45,13 @@ delay:: cpha and cpol:: Set the clock phase and polarity (according to the device datasheet). noclear:: - controls whether the frame clear bit is set after the 32 bit buffer - transfer. This parameter should be set to 1 when the frame length is - greater than 32 bits and the next data in the FIFO contains the other - bits. + Controls whether the frame clear bit is set after the 32 bit buffer transfer. + This parameter should be set to 1 when the frame length is greater than 32 bits and the next data in the FIFO contains the other bits. noecho:: Set to 1 for devices which do not return data (such as DACs). samplelate:: - Set to 1 to sample the received SPI data 1/2 SPI clock later than - normal. This is useful when high clock rates or isolation cause - significant delays from clock to received data. + Set to 1 to sample the received SPI data 1/2 SPI clock later than normal. + This is useful when high clock rates or isolation cause significant delays from clock to received data. == REALTIME CONSIDERATIONS diff --git a/docs/src/man/man3/hm2_bspi_write_chan.3hm2.adoc b/docs/src/man/man3/hm2_bspi_write_chan.3hm2.adoc index 64d3c7d7a6c..df135de263c 100644 --- a/docs/src/man/man3/hm2_bspi_write_chan.3hm2.adoc +++ b/docs/src/man/man3/hm2_bspi_write_chan.3hm2.adoc @@ -6,10 +6,11 @@ hm2_bspi_write_chan - write data to a Hostmot2 Buffered SPI channel == SYNTAX -.... +[source,c] +---- #include hm2_bspi_write_chan(char* name, int chan, u32 val) -.... +---- == DESCRIPTION @@ -17,18 +18,18 @@ hm2_bspi_write_chan(char* name, int chan, u32 val) the bspi instance "name". "name" is a unique string given to each bspi channel during hostmot2 setup. The names of the available channels are printed to standard output during the driver loading process and take -the form: hm2_..bspi. For example -hm2_5i23.0.bspi.0 +the form: hm2_____.____.bspi.____. +For example: `hm2_5i23.0.bspi.0`. -This function performs a one-time write of data to the specified -channel. It is typically used for setup and chip enabling purposes. It -should not be used in the main loop for regular data transfers (but is -appropriate to use for on-the- fly setup changes). +This function performs a one-time write of data to the specified channel. +It is typically used for setup and chip enabling purposes. +It should not be used in the main loop for regular data transfers +(but is appropriate to use for on-the-fly setup changes). == REALTIME CONSIDERATIONS -May be called from init/cleanup code and from within realtime tasks. Not -available in non-realtime components. +May be called from init/cleanup code and from within realtime tasks. +Not available in non-realtime components. == RETURN VALUE diff --git a/docs/src/man/man3/hm2_pktuart.3.adoc b/docs/src/man/man3/hm2_pktuart.3.adoc index bcd9d1fc09e..489628c0a96 100644 --- a/docs/src/man/man3/hm2_pktuart.3.adoc +++ b/docs/src/man/man3/hm2_pktuart.3.adoc @@ -8,18 +8,15 @@ hm2_pktuart - functions to access the Mesa FPGA card packeted UARTs .... #include -int hm2_pktuart_setup(char *name, int bitrate, rtapi_s32 tx_mode, - rtapi_s32 rx_mode, int txclear, int rxclear); -int hm2_pktuart_send(char *name, unsigned char data[], rtapi_u8 *num_frames, - rtapi_u16 frame_sizes[]); -int hm2_pktuart_read(char *name, unsigned char data[], rtapi_u8 *num_frames, - rtapi_u16 *max_frame_length, rtapi_u16 frame_sizes[]); +int hm2_pktuart_setup(char* name, int bitrate, rtapi_s32 tx_mode, rtapi_s32 rx_mode, int txclear, int rxclear); +int hm2_pktuart_send(char* name, unsigned char data[], rtapi_u8* num_frames, rtapi_u16 frame_sizes[]); +int hm2_pktuart_read(char* name, unsigned char data[], rtapi_u8* num_frames, rtapi_u16 *max_frame_length, rtapi_u16 frame_sizes[]); int hm2_pktuart_queue_get_frame_sizes(char *name, rtapi_u32 fsizes[]); -int hm2_pktuart_queue_read_data(char *name, rtapi_u32 *data, int bytes); -int hm2_pktuart_get_clock(char *name); -int hm2_pktuart_get_version(char *name); -rtapi_u32 hm2_pktuart_get_rx_status(char *name); -rtapi_u32 hm2_pktuart_get_tx_status(char *name); +int hm2_pktuart_queue_read_data(char* name, rtapi_u32* data, int bytes); +int hm2_pktuart_get_clock(char* name); +int hm2_pktuart_get_version(char* name); +rtapi_u32 hm2_pktuart_get_rx_status(char* name); +rtapi_u32 hm2_pktuart_get_tx_status(char* name); .... == DESCRIPTION @@ -35,17 +32,18 @@ In LinuxCNC v2.9 onwards the driver polls the Rx and Tx status registers every s === Accessing the UARTs === -The UART functions above can be included in your driver code by ``#include "hostmot2-serial.h"`` +The UART functions above can be included in your driver code by ``#include "hostmot2-serial.h"``. This will make the functions above available for use in your own C code. The UARTs are accessed by name, and the names will be printed to the terminal (or dmesg in the case of RTAI kernel realtime) when the board driver (hm2_eth, hm2_pci etc) is loaded. Internally the UARTs are addressed by index, but the indices are per-card so not unambiguous. -Internally the functions all use the private *hm2_get_pktuart" function which returns the index of the UART _and_ the low level driver instance it belongs to. [These functions are not hard- private, you can **#include "hostmot2.h"** if you need the lower-level functions, but then need to track the board instances yourself.] +Internally the functions all use the private `hm2_get_pktuart` function which returns the index of the UART _and_ the low level driver instance it belongs to. +These functions are not hard- private, you can `#include "hostmot2.h"` if you need the lower-level functions, but then need to track the board instances yourself. === Configuring the UART === You should refer to the Hostmot2 "regmap" file for up-to-date register setup information. -The latest version will normally be found at http://freeby.mesanet.com/regmap. +The latest version will normally be found at https://freeby.mesanet.com/regmap. You should use the function **hm2_pktuart_get_version()** to check the module version loaded to the FPGA board. This documentation is valid for Rx v0 / v1 and Tx v0. @@ -57,38 +55,38 @@ You will see that there are overlaps, in that some bits in the registers have di To configure the UART use -*int hm2_pktuart_setup(name, bitrate, tx_mode, rx_mode, txclear, rxclear)* +int *hm2_pktuart_setup*(_name_, _bitrate_, _tx_mode_, _rx_mode_, _txclear_, _rxclear_) -**bitrate** is simply the bitrate (e.g. 9600, 115200 etc). +_bitrate_ is simply the bitrate (e.g. 9600, 115200 etc). -**txmode** is built up from the following bits (directly copied from the regmap) +_txmode_ is built up from the following bits (directly copied from the regmap). ---- - Bit 17 Parity enable WO - Bit 18 Odd Parity WO (1=odd, 0=even) - Bits 15..8 InterFrame delay in bit times RW - Bit 6 Drive Enable bit (enables external RS-422/485 Driver when set) RW - Bit 5 Drive enable Auto (Automatic external drive enable) RW - Drive Enable Auto has priority over Drive Enable (bit 6 is a no-op if bit 5 is set) - Bits 3..0 Drive enable delay (delay from asserting drive enable to start of data transmit. - In Clock Low periods RW Drive enable delay is important to avoid start bit timing errors at high baud rates in RS-485 (half duplex) modes. +Bit 17 Parity enable WO +Bit 18 Odd Parity WO (1=odd, 0=even) +Bits 15..8 InterFrame delay in bit times RW +Bit 6 Drive Enable bit (enables external RS-422/485 Driver when set) RW +Bit 5 Drive enable Auto (Automatic external drive enable) RW + Drive Enable Auto has priority over Drive Enable (bit 6 is a no-op if bit 5 is set) +Bits 3..0 Drive enable delay (delay from asserting drive enable to start of data transmit. + In Clock Low periods RW Drive enable delay is important to avoid start bit timing errors at high baud rates in RS-485 (half duplex) modes. ---- A reasonable starting value for txmode is **0x00000A20** ----- - **rxmode** is built from the following: - Bits 29..22 RX data digital filter (in ClockLow periods) - Should be set to 1/2 bit time (or max=255 if it cannot be set long enough) - Bit 17 Parity enable WO - Bit 18 Odd Parity WO (1=odd, 0=even) - Bits 15..8 InterFrame delay in bit times RW - Bit 6 RXMask RO - Bit 3 RXEnable (must be set to receive packets) RW - Bit 2 RXMask Enable (enables input data masking when transmitting) RW ---- +Bits 29..22 RX data digital filter (in ClockLow periods) + Should be set to 1/2 bit time (or max=255 if it cannot be set long enough) +Bit 17 Parity enable WO +Bit 18 Odd Parity WO (1=odd, 0=even) +Bits 15..8 InterFrame delay in bit times RW +Bit 6 RXMask RO +Bit 3 RXEnable (must be set to receive packets) RW +Bit 2 RXMask Enable (enables input data masking when transmitting) RW +---- + For low baud rates **0x3FC0140C** will generally work, but the filter bits should really be set according to the actual baud rate. The function **int hm2_pktuart_get_clock(name)** is provided to enable calculation of the required filter period. @@ -127,7 +125,6 @@ The status should be used to check if any new data has been received, or if the The Tx status is encoded as: ---- - Bit 21 FrameBuffer Has Data RO Bits 20..16 Frames to send RO Bit 7 Send busy RO @@ -137,7 +134,6 @@ Bit 4 SCFIFO Error RO The Rx status is: ---- - Bit 21 FrameBuffer has data RO Bits 20..16 Frames received RO Bit 7 Buffer error (RX idle but data in RX data FIFO) RO @@ -151,15 +147,15 @@ Bit 0 False Start bit error (sticky) RW Based on the status of the Rx and Tx components reads or writes from the FPGA can then be set up. This is typically a multi-step process: -1) rxstatus indicates that there are packets of data, but at this point we need to know how big each packet is (and reading two much or two little data from the FIFOs will cause problems). -2) Queue a read of the frame sizes. **hm2_pktuart_queue_get_frame_sizes(name, fsizes[])** +1. rxstatus indicates that there are packets of data, but at this point we need to know how big each packet is (and reading two much or two little data from the FIFOs will cause problems). +2. Queue a read of the frame sizes. **hm2_pktuart_queue_get_frame_sizes(name, fsizes[])** On return, the fsizes[] array will have been loaded with the frame sizes (size in bytes). If fsizes are [8] [7] [6] and you only read 1 frame from the data FIFO then on the next call to get_frame_sizes the returned array would be [7] [6]. -3) Wait one thread cycle to get the data. Note that there is no serial latency here, the data is already on the FPGA but we can only know how much data to request once we know the packet size -4) Queue enough data reads to get all the data frames that the packet is spread over. -**int hm2_pktuart_queue_read_data(name, data, bytes)** +3. Wait one thread cycle to get the data. Note that there is no serial latency here, the data is already on the FPGA but we can only know how much data to request once we know the packet size +4. Queue enough data reads to get all the data frames that the packet is spread over. +int hm2_pktuart_queue_read_data(name, data, bytes) On return the data[] array will have been loaded with enough 32-bit frames to include "bytes" bytes. -5) Parse the data. +5. Parse the data. === Data Formats === diff --git a/docs/src/man/man3/hm2_pktuart_read.3hm2.adoc b/docs/src/man/man3/hm2_pktuart_read.3hm2.adoc index db57023e807..bf49c6b52b2 100644 --- a/docs/src/man/man3/hm2_pktuart_read.3hm2.adoc +++ b/docs/src/man/man3/hm2_pktuart_read.3hm2.adoc @@ -6,11 +6,12 @@ hm2_pktuart_read - read data from a Hostmot2 UART buffer == SYNTAX -.... +[source,c] +---- #include -int hm2_pktuart_read(char *name, unsigned char data[], rtapi_u8 *num_frames, - rtapi_u16 *max_frame_length, rtapi_u16 frame_sizes[]); -.... +int hm2_pktuart_read(char* name, unsigned char data[], rtapi_u8* num_frames, + rtapi_u16* max_frame_length, rtapi_u16 frame_sizes[]); +---- == DESCRIPTION diff --git a/docs/src/man/man3/hm2_pktuart_send.3hm2.adoc b/docs/src/man/man3/hm2_pktuart_send.3hm2.adoc index b0bc99360dc..71d8a20bc3e 100644 --- a/docs/src/man/man3/hm2_pktuart_send.3hm2.adoc +++ b/docs/src/man/man3/hm2_pktuart_send.3hm2.adoc @@ -6,16 +6,16 @@ hm2_pktuart_send - write data to a Hostmot2 PktUART == SYNTAX -.... +[source,c] +---- #include -int hm2_uart_send(char *name, unsigned char data[], rtapi_u8 *num_frames, +int hm2_uart_send(char* name, unsigned char data[], rtapi_u8* num_frames, rtapi_u16 frame_sizes[]); -.... +---- == DESCRIPTION *hm2_pktuart_send* writes "num_frames" of data to the PktUART "name" from the buffer "data" with frame sizes preset in "frame_sizes[]" array. -Please see the combined document hm2_pktuart.3hm2 for how to use this -function. +Please see the combined document hm2_pktuart.3hm2 for how to use this function. diff --git a/docs/src/man/man3/hm2_pktuart_setup.3hm2.adoc b/docs/src/man/man3/hm2_pktuart_setup.3hm2.adoc index 41122c40301..71fd736f4c3 100644 --- a/docs/src/man/man3/hm2_pktuart_setup.3hm2.adoc +++ b/docs/src/man/man3/hm2_pktuart_setup.3hm2.adoc @@ -6,15 +6,15 @@ hm2_pktuart_setup - setup a Hostmot2 PktUART instance == SYNTAX -.... +[source,c] +---- #include -int hm2_pktuart_setup(char *name, int bitrate, rtapi_s32 tx_mode, +int hm2_pktuart_setup(char* name, int bitrate, rtapi_s32 tx_mode, rtapi_s32 rx_mode, int txclear, int rxclear) -.... +---- == DESCRIPTION *hm2_pktuart_setup* -Please see the combined document hm2_pktuart.3hm2 for how to use this -function. +Please see the combined document hm2_pktuart.3hm2 for how to use this function. diff --git a/docs/src/man/man3/hm2_tram_add_bspi_frame.3hm2.adoc b/docs/src/man/man3/hm2_tram_add_bspi_frame.3hm2.adoc index cc124704a54..8eafc831112 100644 --- a/docs/src/man/man3/hm2_tram_add_bspi_frame.3hm2.adoc +++ b/docs/src/man/man3/hm2_tram_add_bspi_frame.3hm2.adoc @@ -8,7 +8,7 @@ hm2_tram_add_bspi_frame - add a register-write to the Hostmot2 TRAM .... #include -hm2_tram_add_bspi_frame(char *name, int chan, u32 **wbuff, u32 **rbuff); +hm2_tram_add_bspi_frame(char* name, int chan, u32** wbuff, u32** rbuff); .... == DESCRIPTION @@ -22,16 +22,14 @@ index>.bspi. For example hm2_5i23.0.bspi.0 This function is used to add a regular, every thread, write or write-read transaction to the Translation RAM system. A write need not -have a read (use 0 for **rbuff) but it is an error to have a read +have a read (use 0 for _rbuff_) but it is an error to have a read without a write. Note that the TRAM list is not actioned until the hm2_allocate_bspi_tram function is called. The read and write parameters -must be pointers to pointers, as TRAM re-maps the buffers into -contiguous memory. +must be pointers to pointers, as TRAM re-maps the buffers into contiguous memory. == REALTIME CONSIDERATIONS -Call only from realtime init code, not from other realtime code or -non-realtime components. +Call only from realtime init code, not from other realtime code or non-realtime components. == RETURN VALUE diff --git a/docs/src/man/man3/hm2_uart_read.3hm2.adoc b/docs/src/man/man3/hm2_uart_read.3hm2.adoc index 5a414bf7d8a..f969309a732 100644 --- a/docs/src/man/man3/hm2_uart_read.3hm2.adoc +++ b/docs/src/man/man3/hm2_uart_read.3hm2.adoc @@ -16,17 +16,16 @@ int hm2_uart_read(char *name, unsigned char *data); *hm2_uart_read* read data from the UART "name". "name" is a unique string given to each UART during hostmot2 setup. The names of the available channels are printed to standard output during the driver -loading process and take the form: hm2_..uart. For example hm2_5i23.0.uart.0 +loading process and take the form: +hm2_____.____.uart.____ +For example: `hm2_5i23.0.uart.0`. -This function reads a variable number of bytes from the the specified -channel. It should be used inside a realtime HAL component registered -with the main hostmot2 driver using the function -hm2_uart_set_read_function in the setup code. +This function reads a variable number of bytes from the the specified channel. +It should be used inside a realtime HAL component registered with the main +hostmot2 driver using the function `hm2_uart_set_read_function` in the setup code. -Note that the UART Receive FIFO is only 16 bytes deep,(the transmit FIFO -is 64 bytes) and "data" needs to be at least that large or undefined -mayhem will ensue. +Note that the UART Receive FIFO is only 16 bytes deep,(the transmit FIFO is 64 bytes) +and "data" needs to be at least that large or undefined mayhem will ensue. == RETURN VALUE diff --git a/docs/src/man/man3/hm2_uart_send.3hm2.adoc b/docs/src/man/man3/hm2_uart_send.3hm2.adoc index 7f4e8095fa8..9cdd1739d67 100644 --- a/docs/src/man/man3/hm2_uart_send.3hm2.adoc +++ b/docs/src/man/man3/hm2_uart_send.3hm2.adoc @@ -13,19 +13,17 @@ int hm2_uart_send(char* name, unsigned char data[], int count); == DESCRIPTION -*hm2_uart_send* write 'count' bytes of data to the UART "name" from the -buffer 'data'. +*hm2_uart_send* write 'count' bytes of data to the UART "name" from the buffer 'data'. -The UART FIFO is 64 bytes deep, attempts to transmit more than 64 bytes -may have unexpected effects. +The UART FIFO is 64 bytes deep, attempts to transmit more than 64 bytes may have unexpected effects. -"name" is a unique string given to each UART during hostmot2 setup. The -names of the available channels are printed to standard output during -the driver loading process and take the form: hm2_..uart. For example hm2_5i23.0.uart.0 +"name" is a unique string given to each UART during hostmot2 setup. +The names of the available channels are printed to standard output during +the driver loading process and take the form: hm2_____.____.uart.____ +For example `hm2_5i23.0.uart.0`. -This function performs writes of data to the specified UART. It should -be used inside a function in a realtime or non-realtime HAL component. +This function performs writes of data to the specified UART. +It should be used inside a function in a realtime or non-realtime HAL component. == RETURN VALUE diff --git a/docs/src/man/man3/hm2_uart_setup.3hm2.adoc b/docs/src/man/man3/hm2_uart_setup.3hm2.adoc index 6996ec2ab8a..6a809bd57fb 100644 --- a/docs/src/man/man3/hm2_uart_setup.3hm2.adoc +++ b/docs/src/man/man3/hm2_uart_setup.3hm2.adoc @@ -6,48 +6,46 @@ hm2_uart_setup - setup a Hostmot2 UART == SYNTAX -.... +[source,c] +---- #include -int hm2_uart_setup(char *name, int bitrate, s32 tx_mode, s32 rx_mode); -.... +int hm2_uart_setup(char* name, int bitrate, s32 tx_mode, s32 rx_mode); +---- == DESCRIPTION -*hm2_uart_setup* Setup the bitrate for the UART named "name". "name" is -a unique string given to each UART during hostmot2 setup. The names of -the available UARTs are printed to standard output during the driver -loading process and take the form: hm2_..uart., for example hm2_5i23.0.uart.0. The minimum bitrate -is approximately 50 bps, and the maximum around the FPGA frequency, 48 -MHz for a 5I23. The UART function allows different RX and TX bitrates, -but that is not currently supported by this driver - -tx_mode is bit mask defined in the Hostmot2 regmap: Bit 0..3 = TXEnable -delay. TXEnable delay specifies the transmit data holdoff time from the -TXenable signal valid state. This is used for RS-485 (half duplex) -operation, to delay transmit data until the driver is enabled, allowing -for driver enable delays, isolation barrier delays, etc. Delay is in -units of ClockLow period. Bit 4 = FIFOError, it indicates that a host -push has overflowed the FIFO (Mainly for driver debugging). Bit 5 = -DriveEnableAuto, When set, enables Drive when any data is in FIFO or -Xmit Shift register,removes drive when FIFO and Xmit shift register are -empty. Bit 6 = DriveEnableBit, If DriveEnableAuto is 0, controls Drive -(for software control of Xmit drive). rx_mode is bit mask defined in the -Hostmot2 regmap: Bit 0 = FalseStart bit Status, 1 = false start bit -detected Bit 1 = OverRun Status, 1 = overrun condition detected (no -valid stop bit) Bit 2 = RXMaskEnable, 1= enable RXMask for half duplex -operation, 0 = ignore RXMask Bit 4 = FIFOError, indicates that a host -read has attempted to read more data than available. (mainly for driver -debugging) Bit 5 = LostDataError, indicates that data was received with -no room in FIFO, therefore lost Bit 6 = RXMask, RO RXMASK status Bit 7 = -FIFO Has Data - -rx_mode and tx_mode registers are currently write-only. There should -possibly be a get-status function. - -To write only to the tx_mode DriveEnable bit call this function with the -bitrate unchanged and -1 as the rx_mode. To change bitrate without -altering mode settings send -1 to both modes. +*hm2_uart_setup* Setup the bitrate for the UART named "name". +"name" is a unique string given to each UART during hostmot2 setup. +The names of the available UARTs are printed to standard output during the driver +loading process and take the form: hm2_____.____.uart.____, +for example `hm2_5i23.0.uart.0`. +The minimum bitrate is approximately 50 bps, and the maximum around the FPGA frequency, 48 MHz for a 5I23. +The UART function allows different RX and TX bitrates, but that is not currently supported by this driver + +tx_mode is bit mask defined in the Hostmot2 regmap: +Bit 0..3:: TXEnable delay. + TXEnable delay specifies the transmit data holdoff time from the TXenable signal valid state. + This is used for RS-485 (half duplex) operation, to delay transmit data until the driver is enabled, + allowing for driver enable delays, isolation barrier delays, etc. + Delay is in units of ClockLow period. +Bit 4:: FIFOError, it indicates that a host push has overflowed the FIFO (Mainly for driver debugging). +Bit 5:: DriveEnableAuto, When set, enables Drive when any data is in FIFO or Xmit Shift register, + removes drive when FIFO and Xmit shift register are empty. +Bit 6:: DriveEnableBit, If DriveEnableAuto is 0, controls Drive (for software control of Xmit drive). + +rx_mode is bit mask defined in the Hostmot2 regmap: +Bit 0:: FalseStart bit Status, 1 = false start bit detected Bit 1 = OverRun Status, 1 = overrun condition detected (no valid stop bit) +Bit 2:: RXMaskEnable, 1= enable RXMask for half duplex operation, 0 = ignore RXMask Bit 4 = FIFOError, + indicates that a host read has attempted to read more data than available. + (mainly for driver debugging) +Bit 5:: LostDataError, indicates that data was received with no room in FIFO, therefore lost +Bit 6:: RXMask, RO RXMASK status +Bit 7:: FIFO Has Data + +rx_mode and tx_mode registers are currently write-only. There should possibly be a get-status function. + +To write only to the tx_mode DriveEnable bit call this function with the bitrate unchanged and -1 as the rx_mode. +To change bitrate without altering mode settings send -1 to both modes. == RETURN VALUE diff --git a/docs/src/man/man3/rtapi.3rtapi.adoc b/docs/src/man/man3/rtapi.3rtapi.adoc index a7818108563..ee8fa6472de 100644 --- a/docs/src/man/man3/rtapi.3rtapi.adoc +++ b/docs/src/man/man3/rtapi.3rtapi.adoc @@ -6,75 +6,69 @@ rtapi - Introduction to the RTAPI API == DESCRIPTION -RTAPI is a library providing a uniform API for several real time -operating systems. As of LinuxCNC 2.7, POSIX threads and RTAI are -supported. +RTAPI is a library providing a uniform API for several real time operating systems. +As of LinuxCNC 2.7, POSIX threads and RTAI are supported. == HEADER FILES === rtapi.h -The file *rtapi.h* defines the RTAPI for both realtime and non-realtime -code. This is a change from Rev 2, where the non-realtime API was -defined in ulapi.h and used different function names. The symbols RTAPI -and ULAPI are used to determine which mode is being compiled, RTAPI for -realtime and ULAPI for non-realtime. +The file *rtapi.h* defines the RTAPI for both realtime and non-realtime code. +This is a change from Rev 2, where the non-realtime API was +defined in ulapi.h and used different function names. +The symbols RTAPI and ULAPI are used to determine which mode is being compiled, +RTAPI for realtime and ULAPI for non-realtime. === rtapi_math.h -The file rtapi_math.h defines floating-point functions and constants. It -should be used instead of in rtapi real-time components. +The file rtapi_math.h defines floating-point functions and constants. +It should be used instead of in rtapi real-time components. === rtapi_string.h -The file rtapi_string.h defines string-related functions. It should be -used instead of in rtapi real-time components. +The file rtapi_string.h defines string-related functions. +It should be used instead of in rtapi real-time components. === rtapi_byteorder.h -This file defines the preprocessor macros RTAPI_BIG_ENDIAN, -RTAPI_LITTLE_ENDIAN, and RTAPI_FLOAT_BIG_ENDIAN as true or false -depending on the characteristics of the target system. It should be used -instead of ** (userspace) or ** (kernel -space). +This file defines the preprocessor macros RTAPI_BIG_ENDIAN, RTAPI_LITTLE_ENDIAN, and RTAPI_FLOAT_BIG_ENDIAN as true or false depending on the characteristics of the target system. It should be used instead of ** (userspace) or ** (kernel space). === rtapi_limits.h This file defines the minimum and maximum value of some fundamental integral types, such as INT_MIN and INT_MAX. This should be used instead -of ** because that header file is not available to kernel -modules. +of ** because that header file is not available to kernel modules. == REALTIME CONSIDERATIONS === Non-realtime code -Certain functions are not available in non-realtime code. This includes -functions that perform direct device access such as *rtapi_inb(3)*. +Certain functions are not available in non-realtime code. +This includes functions that perform direct device access such as *rtapi_inb(3)*. === Init/cleanup code Certain functions may only be called from realtime init/cleanup code. -This includes functions that perform memory allocation, such as -*rtapi_shmem_new(3)*. +This includes functions that perform memory allocation, such as *rtapi_shmem_new(3)*. === Realtime code -Only a few functions may be called from realtime code. This includes -functions that perform direct device access such as *rtapi_inb(3)*. It -excludes most Linux kernel APIs such as do_gettimeofday(3) and many -rtapi APIs such as rtapi_shmem_new(3). +Only a few functions may be called from realtime code. +This includes functions that perform direct device access such as *rtapi_inb(3)*. +It excludes most Linux kernel APIs such as do_gettimeofday(3) +and many rtapi APIs such as rtapi_shmem_new(3). === Simulator -For an RTAPI module to be buildable in the "sim" environment (fake -realtime system without special privileges), it must not use *any* linux -kernel APIs, and must not use the RTAPI APIs for direct device access -such as *rtapi_inb(3)*. This automatically includes any hardware device -drivers, and also devices which use Linux kernel APIs to do things like +For an RTAPI module to be buildable in the "sim" environment +(fake realtime system without special privileges), +it must not use *any* linux kernel APIs, +and must not use the RTAPI APIs for direct device access such as *rtapi_inb(3)*. +This automatically includes any hardware device drivers, +and also devices which use Linux kernel APIs to do things like create special devices or entries in the */proc* filesystem. == RTAPI STATUS CODES -Except as noted in specific manual pages, RTAPI returns negative errno -values for errors, and nonnegative values for success. +Except as noted in specific manual pages, +RTAPI returns negative errno values for errors, and nonnegative values for success. diff --git a/docs/src/man/man3/rtapi_app_exit.3rtapi.adoc b/docs/src/man/man3/rtapi_app_exit.3rtapi.adoc index b45ef7fe509..988f189302f 100644 --- a/docs/src/man/man3/rtapi_app_exit.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_app_exit.3rtapi.adoc @@ -6,10 +6,11 @@ rtapi_app_exit - User-provided function to shut down a component == SYNTAX -.... +[source,c] +---- #include void rtapi_app_exit(void); -.... +---- == ARGUMENTS @@ -18,12 +19,12 @@ None == DESCRIPTION The body of *rtapi_app_exit*, which is provided by the component author, -generally consists of a call to rtapi_exit or hal_exit, preceded by -other component-specific shutdown code. +generally consists of a call to rtapi_exit or hal_exit, +preceded by other component-specific shutdown code. This code is called when unloading a component which successfully -initialized (i.e., returned zero from its *rtapi_app_main*). It is not -called when the component did not successfully initialize. +initialized (i.e., returned zero from its *rtapi_app_main*). +It is not called when the component did not successfully initialize. == RETURN VALUE @@ -31,8 +32,7 @@ None. == REALTIME CONSIDERATIONS -Called automatically by the rtapi infrastructure in an initialization -(not realtime) context. +Called automatically by the rtapi infrastructure in an initialization (not realtime) context. == SEE ALSO diff --git a/docs/src/man/man3/rtapi_app_main.3rtapi.adoc b/docs/src/man/man3/rtapi_app_main.3rtapi.adoc index 89d7c7cb869..58e34971498 100644 --- a/docs/src/man/man3/rtapi_app_main.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_app_main.3rtapi.adoc @@ -6,10 +6,11 @@ rtapi_app_main - User-provided function to initialize a component == SYNTAX -.... +[source,c] +---- #include int rtapi_app_main(void); -.... +---- == ARGUMENTS @@ -23,9 +24,9 @@ other component-specific initialization code. == RETURN VALUE -Return 0 for success. Return a negative errno value (e.g., -EINVAL) on -error. Existing code also returns RTAPI or HAL error values, but using -negative errno values gives better diagnostics from insmod. +Return 0 for success. Return a negative errno value (e.g., -EINVAL) on error. +Existing code also returns RTAPI or HAL error values, +but using negative errno values gives better diagnostics from insmod. == REALTIME CONSIDERATIONS diff --git a/docs/src/man/man3/rtapi_atomic.3rtapi.adoc b/docs/src/man/man3/rtapi_atomic.3rtapi.adoc index 1abcfb32527..f292fd6484d 100644 --- a/docs/src/man/man3/rtapi_atomic.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_atomic.3rtapi.adoc @@ -6,47 +6,45 @@ rtapi_atomic - subset of C11 stdatomic.h == SYNTAX -.... +[source,c] +---- #include -enum memory_order \{ ... }; +enum memory_order { ... }; #define atomic_store(obj, desired)... #define atomic_store_explicit(obj, desired, order)... #define atomic_load(obj)... #define atomic_load_explicit(obj, order)... -.... +---- == ARGUMENTS volatile A* obj:: - A pointer to a volatile object that is the destination of the store or - the source of the load. The pointer must have an appropriate type and - alignment such that the underlying store or load operation itself is - atomic; at a minimum, a properly aligned "int" may be assumed to be - such a type. Improper size or alignment are undiagnosed errors. + A pointer to a volatile object that is the destination of the store or the source of the load. + The pointer must have an appropriate type and alignment such that the underlying store or load operation itself is atomic; + at a minimum, a properly aligned "int" may be assumed to be such a type. + Improper size or alignment are undiagnosed errors. C desired:: - The value to be stored in the object. "*obj = desired" must be - well-formed. + The value to be stored in the object. "*obj = desired" must be well-formed. memory_order order:: The required memory ordering semantic. == DESCRIPTION -This header provides at least the subset of C11's +<+stdatomic.h+>+ given -above. When there is an ordering requirement for multiple values read or -written in RTAPI shared memory areas by other threads of execution, -including the values of HAL pins and parameters, these functions (or -function-like macros) are the only way to ensure the ordering -requirement is obeyed. Otherwise, according to architecture-specific -rules, loads and stores may be reordered from their normal source code -order. +This header provides at least the subset of C11's +<+stdatomic.h+>+ given above. +When there is an ordering requirement for multiple values read or written +in RTAPI shared memory areas by other threads of execution, +including the values of HAL pins and parameters, +these functions (or function-like macros) are the only way to ensure the ordering requirement is obeyed. +Otherwise, according to architecture-specific rules, +loads and stores may be reordered from their normal source code order. For example, to leave a message in a shared memory area from one thread and retrieve it from another, the writer must use an atomic store for the "message is complete" variable, and the reader must use an atomic load when checking that variable: -____ -.... +[source,c] +---- // producer *message = 42; atomic_store_explicit(message_ready, 1, memory_order_release); @@ -54,8 +52,7 @@ atomic_store_explicit(message_ready, 1, memory_order_release); // consumer while(atomic_load_explicit(message_ready, memory_order_acquire) == 0) sched_yield(); printf("message was %d\n", *message); // must print 42 -.... -____ +---- == REALTIME CONSIDERATIONS @@ -63,12 +60,10 @@ May be called from any code. == RETURN VALUE -*atomic_load* and *atomic_load_explicit* return the value pointed to by -the _obj_ argument. +*atomic_load* and *atomic_load_explicit* return the value pointed to by the _obj_ argument. *atomic_store* and *atomic_store_explicit* have no return value. == SEE ALSO - (C11), (for other atomic memory -operations supported by rtapi) + (C11), (for other atomic memory operations supported by rtapi) diff --git a/docs/src/man/man3/rtapi_bool.3rtapi.adoc b/docs/src/man/man3/rtapi_bool.3rtapi.adoc index 5926b40c353..ca18ba30d4b 100644 --- a/docs/src/man/man3/rtapi_bool.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_bool.3rtapi.adoc @@ -6,14 +6,15 @@ rtapi_bool - RTAPI wrappers for linux kernel functionality == SYNTAX -.... +[source,c] +---- #include -.... +---- == DESCRIPTION -Includes either or as appropriate, to obtain -suitable declarations of "bool", "true" and "false". +Includes either or as appropriate, +to obtain suitable declarations of "bool", "true" and "false". == REALTIME CONSIDERATIONS diff --git a/docs/src/man/man3/rtapi_byteorder.3rtapi.adoc b/docs/src/man/man3/rtapi_byteorder.3rtapi.adoc index 84c2b55aefd..076d163d155 100644 --- a/docs/src/man/man3/rtapi_byteorder.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_byteorder.3rtapi.adoc @@ -6,27 +6,26 @@ rtapi_byteorder - RTAPI wrappers for linux kernel functionality == SYNTAX -.... +[source,c] +---- #include -.... +---- RTAPI_BIG_ENDIAN:: - Defined to 1 if the platform is big-endian, 0 otherwise + Defined to 1 if the platform is big-endian, 0 otherwise. RTAPI_LITTLE_ENDIAN:: - Defined to 1 if the platform is little-endian, 0 otherwise + Defined to 1 if the platform is little-endian, 0 otherwise. RTAPI_FLOAT_BIG_ENDIAN:: - Defined to 1 if the platform double-precision value is big-endian, 0 - otherwise. + Defined to 1 if the platform double-precision value is big-endian, 0 otherwise. == DESCRIPTION In kernel space, each rtapi_xxx or RTAPI_XXX identifier is mapped to the underlying kernel functionality, if available. -In userspace, or in kernels where the underlying functionality is not -provided by a kernel, generally another implementation--possibly with -reduced functionality--is provided. (For example, the userspace -implementation for rtapi_byteorder_register always succeeds) +In userspace, or in kernels where the underlying functionality is not provided by a kernel, +generally another implementation--possibly with reduced functionality--is provided. +(For example, the userspace implementation for rtapi_byteorder_register always succeeds) == REALTIME CONSIDERATIONS diff --git a/docs/src/man/man3/rtapi_clock_set_period.3rtapi.adoc b/docs/src/man/man3/rtapi_clock_set_period.3rtapi.adoc index f93b46cf606..1eca6007cd3 100644 --- a/docs/src/man/man3/rtapi_clock_set_period.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_clock_set_period.3rtapi.adoc @@ -6,9 +6,10 @@ rtapi_clock_set_period - set the basic time interval for realtime tasks == SYNTAX -.... -rtapi_clock_set_period(long int _nsec_); -.... +[source,c] +---- +rtapi_clock_set_period(long int nsec); +---- == ARGUMENTS @@ -17,25 +18,23 @@ nsec:: == DESCRIPTION -*rtapi_clock_set_period* sets the basic time interval for realtime -tasks. All periodic tasks will run at an integer multiple of this -period. The first call to *rtapi_clock_set_period* with _nsec_ greater -than zero will start the clock, using _nsec_ as the clock period in -nano-seconds. Due to hardware and RTOS limitations, the actual period -may not be exactly what was requested. On success, the function will -return the actual clock period if it is available, otherwise it returns -the requested period. If the requested period is outside the limits +*rtapi_clock_set_period* sets the basic time interval for realtime tasks. +All periodic tasks will run at an integer multiple of this period. +The first call to *rtapi_clock_set_period* with _nsec_ greater than zero will start the clock, +using _nsec_ as the clock period in nano-seconds. +Due to hardware and RTOS limitations, the actual period may not be exactly what was requested. +On success, the function will return the actual clock period if it is available, +otherwise it returns the requested period. If the requested period is outside the limits imposed by the hardware or RTOS, it returns *-EINVAL* and does not start the clock. Once the clock is started, subsequent calls with non-zero -_nsec_ return *-EINVAL* and have no effect. Calling -*rtapi_clock_set_period* with _nsec_ set to zero queries the clock, -returning the current clock period, or zero if the clock has not yet -been started. +_nsec_ return *-EINVAL* and have no effect. +Calling *rtapi_clock_set_period* with _nsec_ set to zero queries the clock, +returning the current clock period, or zero if the clock has not yet been started. == REALTIME CONSIDERATIONS -Call only from within init/cleanup code, not from realtime tasks. This -function is not available from non-realtime code. +Call only from within init/cleanup code, not from realtime tasks. +This function is not available from non-realtime code. == RETURN VALUE diff --git a/docs/src/man/man3/rtapi_delay.3.adoc b/docs/src/man/man3/rtapi_delay.3.adoc index 5c71c6cc29b..fbfdbe0fe0c 100644 --- a/docs/src/man/man3/rtapi_delay.3.adoc +++ b/docs/src/man/man3/rtapi_delay.3.adoc @@ -8,29 +8,27 @@ rtapi_delay, rtapi_delay_max - Busy-loop for short delays == SYNTAX -.... +[source,c] +---- void rtapi_delay(long int _nsec_); void rtapi_delay_max(); -.... +---- == ARGUMENTS nsec:: - The desired delay length in nanoseconds + The desired delay length in nanoseconds. == DESCRIPTION -*rtapi_delay* is a simple delay. It is intended only for short delays, -since it simply loops, wasting CPU cycles. +*rtapi_delay* is a simple delay. +It is intended only for short delays, since it simply loops, wasting CPU cycles. -*rtapi_delay_max* returns the max delay permitted (usually approximately -1/4 of the clock period). Any call to *rtapi_delay* requesting a delay -longer than the max will delay for the max time only. +*rtapi_delay_max* returns the max delay permitted (usually approximately 1/4 of the clock period). +Any call to *rtapi_delay* requesting a delay longer than the max will delay for the max time only. -*rtapi_delay_max* should be called before using *rtapi_delay* to make -sure the required delays can be achieved. The actual resolution of the -delay may be as good as one nano-second, or as bad as a several -microseconds. +*rtapi_delay_max* should be called before using *rtapi_delay* to make sure the required delays can be achieved. +The actual resolution of the delay may be as good as one nano-second, or as bad as a several microseconds. == REALTIME CONSIDERATIONS @@ -38,7 +36,7 @@ May be called from init/cleanup code, and from within realtime tasks. == RETURN VALUE -*rtapi_delay_max returns the maximum delay permitted.* +*rtapi_delay_max* returns the maximum delay permitted. == SEE ALSO diff --git a/docs/src/man/man3/rtapi_device.3rtapi.adoc b/docs/src/man/man3/rtapi_device.3rtapi.adoc index 84c9ba8393a..4ba3092e2f9 100644 --- a/docs/src/man/man3/rtapi_device.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_device.3rtapi.adoc @@ -6,28 +6,27 @@ rtapi_device - RTAPI wrappers for linux kernel functionality == SYNTAX -.... +[source,c] +---- #include struct rtapi_device; -int rtapi_dev_set_name(struct rtapi_device *dev, const char *name, ...); -int rtapi_device_register(struct rtapi_device *dev); -int rtapi_device_unregister(struct rtapi_device *dev); -.... +int rtapi_dev_set_name(struct rtapi_device* dev, const char* name, ...); +int rtapi_device_register(struct rtapi_device* dev); +int rtapi_device_unregister(struct rtapi_device* dev); +---- == DESCRIPTION -In kernel space, each rtapi_xxx or RTAPI_XXX identifier is mapped to the +In kernel space, each `rtapi_`__xxx__ or `RTAPI_`__XXX__ identifier is mapped to the underlying kernel functionality, if available. -In userspace, or in kernels where the underlying functionality is not -provided by a kernel, generally another implementation--possibly with -reduced functionality--is provided. (For example, the userspace -implementation for rtapi_device_register always succeeds) +In userspace, or in kernels where the underlying functionality is not provided by a kernel, +generally another implementation--possibly with reduced functionality--is provided. +(For example, the userspace implementation for rtapi_device_register always succeeds) == REALTIME CONSIDERATIONS -Typically, these functions may be called from realtime init/cleanup -code. +Typically, these functions may be called from realtime init/cleanup code. == RETURN VALUE diff --git a/docs/src/man/man3/rtapi_div_u64.3.adoc b/docs/src/man/man3/rtapi_div_u64.3.adoc index d74ecd5d561..d81781073aa 100644 --- a/docs/src/man/man3/rtapi_div_u64.3.adoc +++ b/docs/src/man/man3/rtapi_div_u64.3.adoc @@ -8,23 +8,23 @@ rtapi_div_u64, rtapi_div_u64_rem, rtapi_div_s64, rtapi_div_s64_rem - unsigned di == SYNTAX -.... -__u64 rtapi_div_u64_rem(__u64 _dividend_, __u32 _divisor_, __u32*_remainder_); -__u64 rtapi_div_u64(__u64 _dividend_, __u32 _divisor_); -__s64 rtapi_div_s64(__s64 _dividend_, __s32 _divisor_); -__s64 rtapi_div_s64_rem(__s64 _dividend_, __s32 _divisor_, __s32 *_remainder_); -.... +[source,c] +---- +__u64 rtapi_div_u64_rem(__u64 dividend, __u32 divisor, __u32* remainder); +__u64 rtapi_div_u64(__u64 dividend, __u32 divisor); +__s64 rtapi_div_s64(__s64 dividend, __s32 divisor); +__s64 rtapi_div_s64_rem(__s64 dividend, __s32 divisor, __s32* remainder); +---- == ARGUMENTS dividend:: - The value to be divided + The value to be divided. divisor:: - The value to divide by + The value to divide by. remainder:: - Pointer to the location to store the remainder. This may not be a NULL - pointer. If the remainder is not desired, call *rtapi_div_u64* or - *rtapi_div_s64*. + Pointer to the location to store the remainder. This may not be a NULL pointer. + If the remainder is not desired, call *rtapi_div_u64* or *rtapi_div_s64*. == DESCRIPTION @@ -33,14 +33,12 @@ Perform integer division (and optionally compute the remainder) with a == RETURN VALUE -The result of integer division of _dividend / divisor_. In versions with -the _remainder_ argument, the remainder is stored in the pointed-to -location. +The result of integer division of _dividend_ / _divisor_. +In versions with the _remainder_ argument, the remainder is stored in the pointed-to location. == NOTES -If the result of the division does not fit in the return type, the -result is undefined. +If the result of the division does not fit in the return type, the result is undefined. This function exists because in kernel space the use of the division operator on a 64-bit type can lead to an undefined symbol such as diff --git a/docs/src/man/man3/rtapi_exit.3rtapi.adoc b/docs/src/man/man3/rtapi_exit.3rtapi.adoc index fcbfbc18478..6a1fdbe97de 100644 --- a/docs/src/man/man3/rtapi_exit.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_exit.3rtapi.adoc @@ -6,25 +6,24 @@ rtapi_exit - Shut down RTAPI == SYNTAX -.... -int rtapi_exit(int _module_id_); -.... +[source,c] +---- +int rtapi_exit(int module_id); +---- == ARGUMENTS module_id:: - An rtapi module identifier returned by an earlier call to - *rtapi_init*. + An rtapi module identifier returned by an earlier call to *rtapi_init*. == DESCRIPTION -*rtapi_exit* shuts down and cleans up the RTAPI. It must be called prior -to exit by any module that called *rtapi_init*. +*rtapi_exit* shuts down and cleans up the RTAPI. +It must be called prior to exit by any module that called *rtapi_init*. == REALTIME CONSIDERATIONS -Call only from within non-realtime or realtime init/cleanup code, not -from realtime tasks. +Call only from within non-realtime or realtime init/cleanup code, not from realtime tasks. == RETURN VALUE diff --git a/docs/src/man/man3/rtapi_firmware.3rtapi.adoc b/docs/src/man/man3/rtapi_firmware.3rtapi.adoc index f2efcdd9eea..cf580122ecd 100644 --- a/docs/src/man/man3/rtapi_firmware.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_firmware.3rtapi.adoc @@ -6,28 +6,26 @@ rtapi_firmware - RTAPI wrappers for linux kernel functionality == SYNTAX -.... +[source,c] +---- #include struct rtapi_firmware; -int rtapi_request_firmware(const struct rtapi_firmware **fw, const char - *name, struct rtapi_device *device); +int rtapi_request_firmware(const struct rtapi_firmware **fw, + const char* name, struct rtapi_device* device); void rtapi_release_firmware(const struct rtapi_firmware *fw); -.... +---- == DESCRIPTION -In kernel space, each rtapi_xxx or RTAPI_XXX identifier is mapped to the -underlying kernel functionality, if available. +In kernel space, each rtapi___xxx__ or RTAPI___XXX__ identifier is mapped to the underlying kernel functionality, if available. -In userspace, or in kernels where the underlying functionality is not -provided by a kernel, generally another implementation--possibly with -reduced functionality--is provided. (For example, the userspace -implementation for rtapi_device_register always succeeds) +In userspace, or in kernels where the underlying functionality is not provided by a kernel, +generally another implementation--possibly with reduced functionality--is provided. +(For example, the userspace implementation for rtapi_device_register always succeeds) == REALTIME CONSIDERATIONS -Typically, these functions may be called from realtime init/cleanup -code. +Typically, these functions may be called from realtime init/cleanup code. == RETURN VALUE diff --git a/docs/src/man/man3/rtapi_get_msg_level.3.adoc b/docs/src/man/man3/rtapi_get_msg_level.3.adoc index 4009de83cfa..e35c3a39664 100644 --- a/docs/src/man/man3/rtapi_get_msg_level.3.adoc +++ b/docs/src/man/man3/rtapi_get_msg_level.3.adoc @@ -8,10 +8,11 @@ rtapi_get_msg_level, rtapi_set_msg_level - Get or set the logging level == SYNTAX -.... -int rtapi_set_msg_level(int _level_); +[source,c] +---- +int rtapi_set_msg_level(int level); int rtapi_get_msg_level(); -.... +---- == ARGUMENTS @@ -20,9 +21,8 @@ level:: == DESCRIPTION -Get or set the RTAPI message level used by *rtapi_print_msg*. Depending -on the RTOS, this level may apply to a single RTAPI module, or it may -apply to a group of modules. +Get or set the RTAPI message level used by *rtapi_print_msg*. +Depending on the RTOS, this level may apply to a single RTAPI module, or it may apply to a group of modules. == REALTIME CONSIDERATIONS @@ -30,10 +30,8 @@ May be called from non-realtime, init/cleanup, and realtime code. == RETURN VALUE -*rtapi_set_msg_level* returns a status code, and *rtapi_get_msg_level* -returns the current level. RTAPI_MSG_NONE = 0, RTAPI_MSG_ERR = 1, -RTAPI_MSG_WARN = 2, RTAPI_MSG_INFO = 3, RTAPI_MSG_DBG = 4 -RTAPI_MSG_ALL = 5 +*rtapi_set_msg_level* returns a status code, and *rtapi_get_msg_level* returns the current level. +RTAPI_MSG_NONE = 0, RTAPI_MSG_ERR = 1, RTAPI_MSG_WARN = 2, RTAPI_MSG_INFO = 3, RTAPI_MSG_DBG = 4,RTAPI_MSG_ALL = 5 == SEE ALSO diff --git a/docs/src/man/man3/rtapi_get_time.3.adoc b/docs/src/man/man3/rtapi_get_time.3.adoc index 88359651cf6..90c8b8c7f12 100644 --- a/docs/src/man/man3/rtapi_get_time.3.adoc +++ b/docs/src/man/man3/rtapi_get_time.3.adoc @@ -8,10 +8,11 @@ rtapi_get_time, rtapi_get_clocks - get the current time == SYNTAX -.... +[source,c] +---- long long rtapi_get_time(); long long rtapi_get_clocks(); -.... +---- == DESCRIPTION @@ -40,9 +41,10 @@ especially in kernel space. Also note that rtapi_print() will NOT print __long long__s. Most time measurements are relative, and should be done like this: -____ +[source,c] +---- deltat = (long int)(end_time - start_time); -____ +---- where end_time and start_time are longlong values returned from rtapi_get_time, and deltat is an ordinary long int (32 bits). This will @@ -56,18 +58,19 @@ Returns the current time in nanoseconds or CPU clocks. == NOTES -Certain versions of the Linux kernel provide a global variable -*cpu_khz*. Computing +Certain versions of the Linux kernel provide a global variable *cpu_khz*. Computing -____ +[source,c] +---- deltat = (end_clocks - start_clocks) / cpu_khz: -____ +---- gives the duration measured in milliseconds. Computing -____ +[source,c] +---- deltat = (end_clocks - start_clocks) * 1000000 / cpu_khz: -____ +---- gives the duration measured in nanoseconds for deltas less than about 9 trillion clocks (e.g., 3000 seconds at 3 GHz). diff --git a/docs/src/man/man3/rtapi_gfp.3rtapi.adoc b/docs/src/man/man3/rtapi_gfp.3rtapi.adoc index 6aebea8368e..e1e26ca811a 100644 --- a/docs/src/man/man3/rtapi_gfp.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_gfp.3rtapi.adoc @@ -6,12 +6,13 @@ rtapi_gfp - RTAPI wrappers for linux kernel functionality == SYNTAX -.... +[source,c] +---- #include enum rtapi_gfp_e; RTAPI_GFP_xxx typedef ... rtapi_gfp_t; -.... +---- == DESCRIPTION @@ -25,8 +26,7 @@ implementation for rtapi_device_register always succeeds) == REALTIME CONSIDERATIONS -Typically, these functions may be called from realtime init/cleanup -code. +Typically, these functions may be called from realtime init/cleanup code. == RETURN VALUE diff --git a/docs/src/man/man3/rtapi_init.3rtapi.adoc b/docs/src/man/man3/rtapi_init.3rtapi.adoc index 96a5bfe523d..17dc2a8575a 100644 --- a/docs/src/man/man3/rtapi_init.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_init.3rtapi.adoc @@ -6,31 +6,31 @@ rtapi_init - Sets up RTAPI == SYNTAX -.... +[source,c] +---- int rtapi_init(const char *_modname_); -.... +---- == ARGUMENTS modname:: - The name of this rtapi module + The name of this RTAPI module. == DESCRIPTION -*rtapi_init* sets up the RTAPI. It must be called by any module that -intends to use the API, before any other RTAPI calls. +*rtapi_init* sets up the RTAPI. +It must be called by any module that intends to use the API, before any other RTAPI calls. _modname_ can optionally point to a string that identifies the module. -The string will be truncated at *RTAPI_NAME_LEN* characters. If -_modname_ is *NULL*, the system will assign a name. +The string will be truncated at *RTAPI_NAME_LEN* characters. +If _modname_ is *NULL*, the system will assign a name. == REALTIME CONSIDERATIONS -Call only from within non-realtime or realtime init/cleanup code, not -from relatime tasks. +Call only from within non-realtime or realtime init/cleanup code, not from relatime tasks. == RETURN VALUE On success, returns a positive integer module ID, which is used for -subsequent calls to rtapi_xxx_new, rtapi_xxx_delete, and rtapi_exit. On -failure, returns an RTAPI error code. +subsequent calls to rtapi_xxx_new, rtapi_xxx_delete, and rtapi_exit. +On failure, returns an RTAPI error code. diff --git a/docs/src/man/man3/rtapi_io.3rtapi.adoc b/docs/src/man/man3/rtapi_io.3rtapi.adoc index a36bc710255..6d177bf64fa 100644 --- a/docs/src/man/man3/rtapi_io.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_io.3rtapi.adoc @@ -6,7 +6,8 @@ rtapi_io - RTAPI wrappers for linux kernel functionality == SYNTAX -.... +[source,c] +---- #include unsigned char rtapi_inb(unsigned short int port); unsigned short rtapi_inw(unsigned short int port); @@ -16,11 +17,11 @@ unsigned void rtapi_outw(unsigned short value, unsigned short int port); unsigned void rtapi_inl(unsigned int value, unsigned short int port); int rtapi_ioperm(unsigned long from, unsigned long num, int turn_on); unsigned void rtapi_outl(unsigned int value, unsigned short int port); -.... +---- == DESCRIPTION -In kernel space, each rtapi_xxx or RTAPI_XXX identifier is mapped to the +In kernel space, each rtapi___xxx__ or RTAPI___XXX__ identifier is mapped to the underlying kernel functionality, if available. In userspace, or in kernels where the underlying functionality is not diff --git a/docs/src/man/man3/rtapi_is.3rtapi.adoc b/docs/src/man/man3/rtapi_is.3rtapi.adoc index 10509b4747d..cb4c189e86d 100644 --- a/docs/src/man/man3/rtapi_is.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_is.3rtapi.adoc @@ -6,25 +6,23 @@ rtapi_is - details of rtapi configuration == SYNTAX -.... +[source,c] +---- int rtapi_is_kernelspace(); int rtapi_is_realtime(); -.... +---- == DESCRIPTION -*rtapi_is_kernelspace()* returns nonzero when rtapi modules run in -kernel space (e.g., under RTAI) and zero when they run in userspace -(e.g., under uspace). - -*rtapi_is_realtime()* returns nonzero when capable of running with -realtime guarantees. For rtai, this always returns nonzero (but actually -loading realtime modules will fail if not running under the appropriate -kernel). For uspace, this returns nonzero when the running kernel -indicates it is capable of realtime performance. If *rtapi_app* is not -setuid root, this returns nonzero even though *rtapi_app* will not be -able to obtain realtime scheduling or hardware access, so e.g., -attempting to *loadrt* a hardware driver will fail. +*rtapi_is_kernelspace()* returns nonzero when rtapi modules run in kernel space (e.g., under RTAI) +and zero when they run in userspace (e.g., under uspace). + +*rtapi_is_realtime()* returns nonzero when capable of running with realtime guarantees. +For rtai, this always returns nonzero (but actually loading realtime modules will fail if not running under the appropriate kernel). +For uspace, this returns nonzero when the running kernel indicates it is capable of realtime performance. +If *rtapi_app* is not setuid root, +this returns nonzero even though *rtapi_app* will not be able to obtain realtime scheduling or hardware access, +so e.g., attempting to *loadrt* a hardware driver will fail. == REALTIME CONSIDERATIONS diff --git a/docs/src/man/man3/rtapi_list.3rtapi.adoc b/docs/src/man/man3/rtapi_list.3rtapi.adoc index 03353ce294a..34f02da6e42 100644 --- a/docs/src/man/man3/rtapi_list.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_list.3rtapi.adoc @@ -6,34 +6,34 @@ rtapi_list - RTAPI wrappers for linux kernel functionality == SYNTAX -.... +[source,c] +---- #include struct rtapi_list_head; -void rtapi_list_add(struct rtapi_list_head *new_, - struct rtapi_list_head *head); -void rtapi_list_add_tail(struct rtapi_list_head *new_, - struct rtapi_list_head *head); -void rtapi_list_del(struct rtapi_list_head *entry); -void RTAPI_INIT_LIST_HEAD(struct rtapi_list_head *entry); +void rtapi_list_add(struct rtapi_list_head*new_, + struct rtapi_list_head* head); +void rtapi_list_add_tail(struct rtapi_list_head* new_, + struct rtapi_list_head* head); +void rtapi_list_del(struct rtapi_list_head* entry); +void RTAPI_INIT_LIST_HEAD(struct rtapi_list_head* entry); rtapi_list_for_each(pos, head) \{ ... } rtapi_list_entry(ptr, type, member) -.... +---- == DESCRIPTION -In kernel space, each rtapi_xxx or RTAPI_XXX identifier is mapped to the +In kernel space, each rtapi_xxx or RTAPI___XXX__ identifier is mapped to the underlying kernel functionality, if available. -In userspace, or in kernels where the underlying functionality is not -provided by a kernel, generally another implementation--possibly with -reduced functionality--is provided. (For example, the userspace -implementation for rtapi_device_register always succeeds) +In userspace, or in kernels where the underlying functionality is not provided by a kernel, +generally another implementation--possibly with reduced functionality--is provided. +(For example, the userspace implementation for rtapi_device_register always succeeds) == REALTIME CONSIDERATIONS -Call from init/cleanup code and from realtime tasks. These functions -will cause illegal instruction exceptions in non-realtime components, as -well as in uspace rtapi_app when it is not setuid root. +Call from init/cleanup code and from realtime tasks. +These functions will cause illegal instruction exceptions in non-realtime components, +as well as in uspace rtapi_app when it is not setuid root. == RETURN VALUE diff --git a/docs/src/man/man3/rtapi_module_param.3.adoc b/docs/src/man/man3/rtapi_module_param.3.adoc index d6f30413fcf..13e6a5835a3 100644 --- a/docs/src/man/man3/rtapi_module_param.3.adoc +++ b/docs/src/man/man3/rtapi_module_param.3.adoc @@ -11,7 +11,8 @@ MODULE_DESCRIPTION - Specifying module parameters == SYNTAX -.... +[source,c] +---- RTAPI_MP_INT(_var_, _description_); RTAPI_MP_LONG(_var_, _description_); RTAPI_MP_STRING(_var_, _description_); @@ -22,7 +23,7 @@ MODULE_LICENSE(_license_); MODULE_AUTHOR(_author_); MODULE_DESCRIPTION(_description_); EXPORT_FUNCTION(_function_); -.... +---- == ARGUMENTS @@ -41,22 +42,19 @@ function:: == DESCRIPTION -These macros are portable ways to declare kernel module parameters. They -must be used in the global scope, and are not followed by a terminating -semicolon. They must be used after the associated variable or function -has been defined. +These macros are portable ways to declare kernel module parameters. +They must be used in the global scope, and are not followed by a terminating semicolon. +They must be used after the associated variable or function has been defined. == NOTES -EXPORT_FUNCTION makes a symbol available for use by a subsequently -loaded component. It is unrelated to HAL functions, which are described -in hal_export_funct(3hal) +EXPORT_FUNCTION makes a symbol available for use by a subsequently loaded component. +It is unrelated to HAL functions, which are described in hal_export_funct(3hal) == Interpretation of license strings *MODULE_LICENSE* follows the kernel's definition of license strings. -Notably, "GPL" indicates "GNU General Public License v2 _or later_". -(emphasis ours). +Notably, "GPL" indicates "GNU General Public License v2 _or later_". (emphasis ours). "GPL":: GNU General Public License v2 or later @@ -74,8 +72,7 @@ Notably, "GPL" indicates "GNU General Public License v2 _or later_". Non-free products It is still good practice to include a license block which indicates the -author, copyright date, and disclaimer of warranty as recommended by the -GNU GPL. +author, copyright date, and disclaimer of warranty as recommended by the GNU GPL. == REALTIME CONSIDERATIONS diff --git a/docs/src/man/man3/rtapi_mutex.3rtapi.adoc b/docs/src/man/man3/rtapi_mutex.3rtapi.adoc index e0100fa0ead..2d90499e42c 100644 --- a/docs/src/man/man3/rtapi_mutex.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_mutex.3rtapi.adoc @@ -6,13 +6,14 @@ rtapi_mutex - Mutex-related functions == SYNTAX -.... +[source,c] +---- #include -int rtapi_mutex_try(unsigned long **_mutex_*); -int rtapi_mutex_get(unsigned long **_mutex_*); -int rtapi_mutex_give(unsigned long **_mutex_*); -.... +int rtapi_mutex_try(unsigned long* _mutex_); +int rtapi_mutex_get(unsigned long* _mutex_); +int rtapi_mutex_give(unsigned long* _mutex_); +---- == ARGUMENTS @@ -21,25 +22,22 @@ mutex:: == DESCRIPTION -*rtapi_mutex_try* makes a non-blocking attempt to get the mutex. If the -mutex is available, it returns 0, and the mutex is no longer available. +*rtapi_mutex_try* makes a non-blocking attempt to get the mutex. +If the mutex is available, it returns 0, and the mutex is no longer available. Otherwise, it returns a nonzero value. *rtapi_mutex_get* blocks until the mutex is available. -*rtapi_mutex_give* releases a mutex acquired by *rtapi_mutex_try* or -*rtapi_mutex_get*. +*rtapi_mutex_give* releases a mutex acquired by *rtapi_mutex_try* or *rtapi_mutex_get*. == REALTIME CONSIDERATIONS -*rtapi_mutex_give* and *rtapi_mutex_try* may be used from non-realtime, -init/cleanup, and realtime code. +*rtapi_mutex_give* and *rtapi_mutex_try* may be used from non-realtime, init/cleanup, and realtime code. *rtapi_mutex_get* may not be used from realtime code. == RETURN VALUE -*rtapi_mutex_try* returns 0 for if the mutex was claimed, and nonzero -otherwise. +*rtapi_mutex_try* returns 0 for if the mutex was claimed, and nonzero otherwise. *rtapi_mutex_get* and *rtapi_mutex_gif* have no return value. diff --git a/docs/src/man/man3/rtapi_open_as_root.3rtapi.adoc b/docs/src/man/man3/rtapi_open_as_root.3rtapi.adoc index e3f6cc94413..10a9ea993d6 100644 --- a/docs/src/man/man3/rtapi_open_as_root.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_open_as_root.3rtapi.adoc @@ -6,21 +6,22 @@ rtapi_open_as_root - Open a file with "root" privilege == SYNTAX -.... +[source,c] +---- #include int rtapi_open_as_root(const char *filename, int flags); -.... +---- == ARGUMENTS filename:: - The filename to open, as in *open(2)*. Note that rtapi has no - well-defined "current directory", so this should be an absolute path, - but this is not enforced. + The filename to open, as in *open(2)*. + Note that rtapi has no well-defined "current directory", + so this should be an absolute path, but this is not enforced. flags:: - The open flags, as in *open(2)*. Should never include bits that open - or create files (e.g., O_CREAT, O_APPEND, etc) as this API is not - intended for creating or writing files, but this is not enforced. + The open flags, as in *open(2)*. + Should never include bits that open or create files (e.g., O_CREAT, O_APPEND, etc) + as this API is not intended for creating or writing files, but this is not enforced. == DESCRIPTION @@ -29,13 +30,13 @@ This API temporarily switches on root privileges to open a file, and switches them off before returning. This can be useful for example when accessing device nodes or memory-mapped I/O. -In the case of PCI devices on x86 and x86-64 systems, prefer the -linux-style PCI interfaces provided in **. +In the case of PCI devices on x86 and x86-64 systems, +prefer the linux-style PCI interfaces provided in **. == RETURN VALUE -In case of success, the nonnegative file descriptor opened. If the -caller does not close it, it remains open until rtapi_app exits. +In case of success, the nonnegative file descriptor opened. +If the caller does not close it, it remains open until rtapi_app exits. In case of failure, a negative errno value. diff --git a/docs/src/man/man3/rtapi_outb.3.adoc b/docs/src/man/man3/rtapi_outb.3.adoc index f4a2d8e195c..094f453f426 100644 --- a/docs/src/man/man3/rtapi_outb.3.adoc +++ b/docs/src/man/man3/rtapi_outb.3.adoc @@ -8,10 +8,11 @@ rtapi_outb, rtapi_inb - Perform hardware I/O == SYNTAX -.... +[source,c] +---- void rtapi_outb(unsigned char _byte_, unsigned int _port_); unsigned char rtapi_inb(unsigned int _port_); -.... +---- == ARGUMENTS @@ -22,13 +23,12 @@ byte:: == DESCRIPTION -*rtapi_outb* writes a byte to a hardware I/O port. *rtapi_inb* reads a -byte from a hardware I/O port. +*rtapi_outb* writes a byte to a hardware I/O port. *rtapi_inb* reads a byte from a hardware I/O port. == REALTIME CONSIDERATIONS -May be called from init/cleanup code and from within realtime tasks. Not -available in non-realtime components. +May be called from init/cleanup code and from within realtime tasks. +Not available in non-realtime components. == RETURN VALUE @@ -36,9 +36,8 @@ available in non-realtime components. == NOTES -The I/O address should be within a region previously allocated by -*rtapi_request_region*. Otherwise, another real-time module or the Linux -kernel might attempt to access the I/O region at the same time. +The I/O address should be within a region previously allocated by *rtapi_request_region*. +Otherwise, another real-time module or the Linux kernel might attempt to access the I/O region at the same time. == SEE ALSO diff --git a/docs/src/man/man3/rtapi_parport.3rtapi.adoc b/docs/src/man/man3/rtapi_parport.3rtapi.adoc index 2d20c883e61..bf2b5b7b1bb 100644 --- a/docs/src/man/man3/rtapi_parport.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_parport.3rtapi.adoc @@ -6,28 +6,28 @@ rtapi_parport - portable access to PC-style parallel ports == SYNTAX -.... +[source,c] +---- #include "rtapi_parport.h" -int *rtapi_parport_get*(const char *_module_name_, rtapi_parport_t *_port_, - unsigned short _base_, unsigned short _base_hi_, - unsigned int _modes_); -void *rtapi_parport_release*(rtapi_parport_t *_port_); -.... +int rtapi_parport_get(const char* _module_name_, rtapi_parport_t* _port_, + short _base_, unsigned short _base_hi_, + int _modes_); +void rtapi_parport_release(rtapi_parport_t* _port_); +---- == ARGUMENTS module_name:: - By convention, the name of the RTAPI module or HAL component using the - parport. + By convention, the name of the RTAPI module or HAL component using the parport. port:: - A pointer to a rtapi_parport_t structure + A pointer to a rtapi_parport_t structure. base:: The base address of the port (if port >= 16) or the linux port number - of the port (if port < 16) + of the port (if port < 16). base_hi:: - The "high" address of the port (location of the ECP registers), 0 to - use a probed high address, or -1 to disable the high address + The "high" address of the port (location of the ECP registers), + 0 to use a probed high address, or -1 to disable the high address. modes:: Advise the driver of the desired port modes, from . If a linux-detected port does not provide the requested modes, a @@ -52,21 +52,22 @@ no high address is detected, port->base_hi is 0. == PARPORT STRUCTURE -.... +[source,c] +---- typedef struct { unsigned short base; unsigned short base_hi; .... // and further unspecified fields } rtapi_parport_t; -.... +---- == RETURN VALUE *rtapi_parport_get* returns a HAL status code. On success, _port_ is -filled out with information about the allocated port. On failure, the -contents of _port_ are undefined except that it is safe (but not -required) to pass this port to *rtapi_parport_release*. +filled out with information about the allocated port. +On failure, the contents of _port_ are undefined except that it is safe +(but not required) to pass this port to *rtapi_parport_release*. *rtapi_parport_release* does not return a value. It always succeeds. diff --git a/docs/src/man/man3/rtapi_pci.3rtapi.adoc b/docs/src/man/man3/rtapi_pci.3rtapi.adoc index 3bb1491958f..6bb0de8ea81 100644 --- a/docs/src/man/man3/rtapi_pci.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_pci.3rtapi.adoc @@ -6,7 +6,8 @@ rtapi_pci - RTAPI wrappers for linux kernel functionality == SYNTAX -.... +[source,c] +---- #include struct rtapi_pci_device_id \{ ... }; @@ -28,7 +29,7 @@ void rtapi_pci_set_drvdata(struct rtapi_pci_dev *pdev, void *data) void rtapi_pci_set_drvdata(struct rtapi_pci_dev *pdev, void *data) void rtapi_iounmap(volatile void *addr); struct rtapi_pci; -.... +---- == DESCRIPTION @@ -42,8 +43,7 @@ implementation for rtapi_pci_register always succeeds) == REALTIME CONSIDERATIONS -Typically, these functions may be called from realtime init/cleanup -code. +Typically, these functions may be called from realtime init/cleanup code. == RETURN VALUE diff --git a/docs/src/man/man3/rtapi_print.3.adoc b/docs/src/man/man3/rtapi_print.3.adoc index b375b9c884b..d642d83cce3 100644 --- a/docs/src/man/man3/rtapi_print.3.adoc +++ b/docs/src/man/man3/rtapi_print.3.adoc @@ -8,19 +8,19 @@ rtapi_print, rtapi_print_msg - print diagnostic messages == SYNTAX -.... -void rtapi_print(const char *_fmt_, _..._) -void rtapi_print_msg(int level, const char *_fmt_, _..._) -typedef void(**rtapi_msg_handler_t*)(msg_level_t _level_, const char *_msg_); -void *rtapi_set_msg_handler*(rtapi_msg_handler_t _handler_); -rtapi_msg_handler_t *rtapi_get_msg_handler*(void); -.... +[source,c] +---- +void rtapi_print(const char* _fmt_, _..._) +void rtapi_print_msg(int level, const char* _fmt_, _..._) +typedef void(**rtapi_msg_handler_t*)(msg_level_t _level_, const char* _msg_); +void rtapi_set_msg_handler(rtapi_msg_handler_t _handler_); +rtapi_msg_handler_t rtapi_get_msg_handler(void); +---- == ARGUMENTS level:: - A message level: One of *RTAPI_MSG_ERR*, *RTAPI_MSG_WARN*, - *RTAPI_MSG_INFO*, or *RTAPI_MSG_DBG*. + A message level: One of *RTAPI_MSG_ERR*, *RTAPI_MSG_WARN*, *RTAPI_MSG_INFO*, or *RTAPI_MSG_DBG*. handler:: A function to call from *rtapi_print* or *rtapi_print_msg* to actually output the message. @@ -30,28 +30,24 @@ fmt, ...:: == DESCRIPTION *rtapi_print* and *rtapi_print_msg* work like the standard C printf -functions, except that a reduced set of formatting operations are -supported. Notably, formatting long-long values is not supported, and -formatting floating-point values has different behavior than standard -printf. - -Depending on the RTOS, the default may be to print the message to -stdout, stderr, a kernel log, etc. In RTAPI code, the action may be -changed by a call to *rtapi_set_msg_handler*. A *NULL* argument to -*rtapi_set_msg_handler* restores the default handler. -*rtapi_msg_get_handler* returns the current handler. When the message -came from *rtapi_print*, _level_ is RTAPI_MSG_ALL. +functions, except that a reduced set of formatting operations are supported. +Notably, formatting long-long values is not supported, and formatting +floating-point values has different behavior than standard printf. + +Depending on the RTOS, the default may be to print the message to stdout, stderr, a kernel log, etc. +In RTAPI code, the action may be changed by a call to *rtapi_set_msg_handler*. +A *NULL* argument to *rtapi_set_msg_handler* restores the default handler. +*rtapi_msg_get_handler* returns the current handler. +When the message came from *rtapi_print*, _level_ is RTAPI_MSG_ALL. *rtapi_print_msg* works like rtapi_print but only prints if _level_ is less than or equal to the current message level. == REALTIME CONSIDERATIONS -*rtapi_print* and *rtapi_print_msg* May be called from non-realtime, -init/cleanup, and realtime code. *rtapi_get_msg_handler* and -*rtapi_set_msg_handler* may be called from realtime init/cleanup code. A -message handler passed to *rtapi_set_msg_handler* may only call -functions that can be called from realtime code. +*rtapi_print* and *rtapi_print_msg* May be called from non-realtime, init/cleanup, and realtime code. +*rtapi_get_msg_handler* and *rtapi_set_msg_handler* may be called from realtime init/cleanup code. +A message handler passed to *rtapi_set_msg_handler* may only call functions that can be called from realtime code. == RETURN VALUE diff --git a/docs/src/man/man3/rtapi_prio.3.adoc b/docs/src/man/man3/rtapi_prio.3.adoc index 89f6176400b..7ca7d556764 100644 --- a/docs/src/man/man3/rtapi_prio.3.adoc +++ b/docs/src/man/man3/rtapi_prio.3.adoc @@ -8,12 +8,13 @@ rtapi_prio, rtapi_prio_highest, rtapi_prio_lowest, rtapi_prio_next_higher, rtapi == SYNTAX -.... +[source,c] +---- int rtapi_prio_highest(); int rtapi_prio_lowest(); int rtapi_prio_next_higher(int _prio_); int rtapi_prio_next_lower(int _prio_); -.... +---- == ARGUMENTS @@ -25,24 +26,22 @@ prio:: The *rtapi_prio_xxxx* functions provide a portable way to set task priority. The mapping of actual priority to priority number depends on the RTOS. Priorities range from *rtapi_prio_lowest* to -*rtapi_prio_highest*, inclusive. To use this API, use one of two -methods: +*rtapi_prio_highest*, inclusive. To use this API, use one of two methods: [arabic] -. Set your lowest priority task to *rtapi_prio_lowest*, and for each -task of the next lowest priority, set their priorities to -*rtapi_prio_next_higher(previous)*. -. Set your highest priority task to *rtapi_prio_highest*, and for each -task of the next highest priority, set their priorities to -*rtapi_prio_next_lower(previous)*. +. Set your lowest priority task to *rtapi_prio_lowest*, + and for each task of the next lowest priority, set their priorities to + *rtapi_prio_next_higher*(previous). +. Set your highest priority task to *rtapi_prio_highest*, + and for each task of the next highest priority, + set their priorities to *rtapi_prio_next_lower*(previous). -N.B. A high priority task will preempt or interrupt a lower priority -task. Linux is always the lowest priority! +N.B.: A high priority task will preempt or interrupt a lower priority task. +Linux is always the lowest priority! == REALTIME CONSIDERATIONS -Call these functions only from within init/cleanup code, not from -realtime tasks. +Call these functions only from within init/cleanup code, not from realtime tasks. == RETURN VALUE diff --git a/docs/src/man/man3/rtapi_region.3.adoc b/docs/src/man/man3/rtapi_region.3.adoc index ca096377ed7..1df071772e5 100644 --- a/docs/src/man/man3/rtapi_region.3.adoc +++ b/docs/src/man/man3/rtapi_region.3.adoc @@ -8,11 +8,11 @@ rtapi_region, rtapi_request_region, rtapi_release_region - functions to manage I == SYNTAX -.... -void *rtapi_request_region(unsigned long _base_, unsigned long int _size_, - const char *_name_) +[source,c] +---- +void *rtapi_request_region(unsigned long _base_, unsigned long int _size_, const char* _name_) void rtapi_release_region(unsigned long _base_, unsigned long int _size_) -.... +---- == ARGUMENTS @@ -25,8 +25,7 @@ name:: == DESCRIPTION -*rtapi_request_region* reserves I/O memory starting at _base_ and going -for _size_ bytes. +*rtapi_request_region* reserves I/O memory starting at _base_ and going for _size_ bytes. == REALTIME CONSIDERATIONS @@ -34,7 +33,6 @@ May be called from realtime init/cleanup code only. == RETURN VALUE -*rtapi_request_region* returns NULL if the allocation fails, and a -non-NULL value otherwise. +*rtapi_request_region* returns NULL if the allocation fails, and a non-NULL value otherwise. *rtapi_release_region* has no return value. diff --git a/docs/src/man/man3/rtapi_shmem.3.adoc b/docs/src/man/man3/rtapi_shmem.3.adoc index 78184cb4be2..52c9c9fb7e9 100644 --- a/docs/src/man/man3/rtapi_shmem.3.adoc +++ b/docs/src/man/man3/rtapi_shmem.3.adoc @@ -8,24 +8,25 @@ rtapi_shmem, rtapi_shmem_new, rtapi_shmem_delete, rtapi_shmem_getptr - Functions == SYNTAX -.... +[source,c] +---- int rtapi_shmem_new(int _key_, int _module_id_, unsigned long int _size_); int rtapi_shmem_delete(int _shmem_id_, int _module_id_); int rtapi_shmem_getptr(int _shmem_id_, void ** _ptr_); -.... +---- == ARGUMENTS key:: - Identifies the memory block. Key must be nonzero. All modules wishing - to use the same memory must use the same key. + Identifies the memory block. Key must be nonzero. + All modules wishing to use the same memory must use the same key. module_id:: Module identifier returned by a prior call to *rtapi_init*. size:: The desired size of the shared memory block, in bytes ptr:: - The pointer to the shared memory block. Note that the block may be - mapped at a different address for different modules. + The pointer to the shared memory block. + Note that the block may be mapped at a different address for different modules. == DESCRIPTION @@ -42,17 +43,14 @@ block, or if another module already did so. On success, it returns a positive integer ID, which is used for all subsequent calls dealing with the block. On failure it returns a negative error code. -*rtapi_shmem_delete* frees the shared memory block associated with -_shmem_id_. _module_id_ is the ID of the calling module. Returns a -status code. +*rtapi_shmem_delete* frees the shared memory block associated with _shmem_id_. +_module_id_ is the ID of the calling module. Returns a status code. *rtapi_shmem_getptr* sets _*ptr_ to point to shared memory block associated with _shmem_id_. == REALTIME CONSIDERATIONS -*rtapi_shmem_getptr* may be called from non-realtime code, init/cleanup -code, or realtime tasks. +*rtapi_shmem_getptr* may be called from non-realtime code, init/cleanup code, or realtime tasks. -*rtapi_shmem_new* and *rtapi_shmem_dete* may not be called from realtime -tasks. +*rtapi_shmem_new* and *rtapi_shmem_dete* may not be called from realtime tasks. diff --git a/docs/src/man/man3/rtapi_slab.3rtapi.adoc b/docs/src/man/man3/rtapi_slab.3rtapi.adoc index 4af64e5d76c..3c55ece139f 100644 --- a/docs/src/man/man3/rtapi_slab.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_slab.3rtapi.adoc @@ -6,29 +6,29 @@ rtapi_slab - RTAPI wrappers for linux kernel functionality == SYNTAX -.... +[source,c] +---- #include void *rtapi_kmalloc(size_t size, gfp_t g); void *rtapi_kzalloc(size_t size, gfp_t g); void *rtapi_krealloc(size_t size, gfp_t g); -void rtapi_kfree(void *); -.... +void rtapi_kfree(void*); +---- == DESCRIPTION -In kernel space, each rtapi_xxx or RTAPI_XXX identifier is mapped to the +In kernel space, each rtapi_xxx or RTAPI___XXX__ identifier is mapped to the underlying kernel functionality, if available. -In userspace, or in kernels where the underlying functionality is not -provided by a kernel, generally another implementation--possibly with -reduced functionality--is provided. (For example, the userspace -implementation for rtapi_device_register always succeeds) +In userspace, or in kernels where the underlying functionality is not provided by a kernel, +generally another implementation -- possibly with reduced functionality -- is provided. +(For example, the userspace implementation for rtapi_device_register always succeeds) == REALTIME CONSIDERATIONS -Call only from within init/cleanup code, not from realtime tasks. This -function is not available from non-realtime code. +Call only from within init/cleanup code, not from realtime tasks. +This function is not available from non-realtime code. == RETURN VALUE diff --git a/docs/src/man/man3/rtapi_snprintf.3.adoc b/docs/src/man/man3/rtapi_snprintf.3.adoc index f9a34815e99..af1fe8e143b 100644 --- a/docs/src/man/man3/rtapi_snprintf.3.adoc +++ b/docs/src/man/man3/rtapi_snprintf.3.adoc @@ -8,12 +8,11 @@ rtapi_snprintf, rtapi_vsnprintf - Perform snprintf-like string formatting == SYNTAX -.... -int rtapi_snprintf(char *_buf_, unsigned long int _size_, - const char *_fmt_, _..._); -int rtapi_vsnprintf(char *_buf_, unsigned long int _size_, - const char *_fmt_, va_list _apf); -.... +[source,c] +---- +int rtapi_snprintf(char* _buf_, unsigned long int _size_, const char* _fmt_, _..._); +int rtapi_vsnprintf(char* _buf_, unsigned long int _size_, const char* _fmt_, va_list _apf); +---- == ARGUMENTS diff --git a/docs/src/man/man3/rtapi_stdint.3rtapi.adoc b/docs/src/man/man3/rtapi_stdint.3rtapi.adoc index 4134918317b..dcdb92a8d09 100644 --- a/docs/src/man/man3/rtapi_stdint.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_stdint.3rtapi.adoc @@ -6,7 +6,8 @@ rtapi_stdint - RTAPI wrappers for linux kernel functionality == SYNTAX -.... +[source,c] +---- #include typedef ... rtapi_s8; @@ -22,17 +23,16 @@ typedef ... rtapi_uintptr_t; #define RTAPI_INT__xx___MIN ... #define RTAPI_INT__xx___MAX ... #define RTAPI_UINT__xx___MAX ... -.... +---- == DESCRIPTION -In kernel space, each rtapi_xxx or RTAPI_XXX identifier is mapped to the +In kernel space, each rtapi___xxx__ or RTAPI___XXX__ identifier is mapped to the underlying kernel functionality, if available. -In userspace, or in kernels where the underlying functionality is not -provided by a kernel, generally another implementation--possibly with -reduced functionality--is provided. (For example, the userspace -implementation for rtapi_device_register always succeeds) +In userspace, or in kernels where the underlying functionality is not provided by a kernel, +generally another implementation--possibly with reduced functionality--is provided. +(For example, the userspace implementation for rtapi_device_register always succeeds) == REALTIME CONSIDERATIONS diff --git a/docs/src/man/man3/rtapi_string.3rtapi.adoc b/docs/src/man/man3/rtapi_string.3rtapi.adoc index 843894284e8..d46e7b770d4 100644 --- a/docs/src/man/man3/rtapi_string.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_string.3rtapi.adoc @@ -6,27 +6,27 @@ rtapi_string - RTAPI wrappers for linux kernel functionality == SYNTAX -.... +[source,c] +---- #include -char **rtapi_argv_split(rtapi_gfp_t g, const char *argstr, int *argc); -void rtapi_argv_free(char **argv); -char *rtapi_kstrdup(const char *s, rtapi_gfp_t t); -.... +char** rtapi_argv_split(rtapi_gfp_t g, const char* argstr, int* argc); +void rtapi_argv_free(char** argv); +char* rtapi_kstrdup(const char* s, rtapi_gfp_t t); +---- == DESCRIPTION -In kernel space, each rtapi_xxx or RTAPI_XXX identifier is mapped to the +In kernel space, each rtapi_xxx or RTAPI___XXX__ identifier is mapped to the underlying kernel functionality, if available. -In userspace, or in kernels where the underlying functionality is not -provided by a kernel, generally another implementation--possibly with -reduced functionality--is provided. (For example, the userspace -implementation for rtapi_device_register always succeeds) +In userspace, or in kernels where the underlying functionality is not provided by a kernel, +generally another implementation--possibly with reduced functionality--is provided. +(For example, the userspace implementation for rtapi_device_register always succeeds) == REALTIME CONSIDERATIONS -Call only from within init/cleanup code, not from realtime tasks. This -function is not available from non-realtime code. +Call only from within init/cleanup code, not from realtime tasks. +This function is not available from non-realtime code. == RETURN VALUE diff --git a/docs/src/man/man3/rtapi_strlcpy.3rtapi.adoc b/docs/src/man/man3/rtapi_strlcpy.3rtapi.adoc index 09f99f11a79..6c930a713e4 100644 --- a/docs/src/man/man3/rtapi_strlcpy.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_strlcpy.3rtapi.adoc @@ -6,19 +6,20 @@ rtapi_strlcpy - RTAPI string manipulation functions == SYNTAX -.... +[source,c] +---- #include size_t rtapi_strlcpy(char *dst, const char *src, size_t sz); #define rtapi_strxcpy(dst, src) ... size_t rtapi_strlcat(char *dst, const char *src, size_t sz); #define rtapi_strxcat(dst, src) ... -.... +---- == DESCRIPTION -rtapi_strlcpy will copy at most 'sz' chars from 'src' to 'dst'. Always -leaves 'dst' NUL-terminated except if 'sz' is 0. +rtapi_strlcpy will copy at most 'sz' chars from 'src' to 'dst'. +Always leaves 'dst' NUL-terminated except if 'sz' is 0. rtapi_strxcpy(dst, src) checks that 'dst' is an array with known size, and calls rtapi_strlcpy(dst, src, sizeof(dst)). If it is not an array @@ -34,9 +35,9 @@ with a known size, it is a (possibly cryptic!) syntax error. == RETURN VALUE -The total length of the string strlcpy or strlcat tried to create. For -strlcpy() that means the length of 'src'. If the return value is greater -than or equal to 'sz', the result was truncated. +The total length of the string strlcpy or strlcat tried to create. +For strlcpy() that means the length of 'src'. +If the return value is greater than or equal to 'sz', the result was truncated. == SEE ALSO diff --git a/docs/src/man/man3/rtapi_task_new.3.adoc b/docs/src/man/man3/rtapi_task_new.3.adoc index 5842593839f..513fefa21d0 100644 --- a/docs/src/man/man3/rtapi_task_new.3.adoc +++ b/docs/src/man/man3/rtapi_task_new.3.adoc @@ -8,19 +8,19 @@ rtapi_task_new, rtapi_task_delete - create a realtime task == SYNTAX -.... +[source,c] +---- int rtapi_task_new(void (*_taskcode_)(void*), void *_arg_, int _prio_, unsigned long _stacksize_, int _uses_fp_); int rtapi_task_delete(int _task_id_); -.... +---- == ARGUMENTS taskcode:: A pointer to the function to be called when the task is started arg:: - An argument to be passed to the _taskcode_ function when the task is - started + An argument to be passed to the _taskcode_ function when the task is started prio:: A task priority value returned by *rtapi_prio_xxxx* uses_fp:: @@ -30,10 +30,10 @@ task_id:: == DESCRIPTION -*rtapi_task_new* creates but does not start a realtime task. The task is -created in the "paused" state. To start it, call either -*rtapi_task_start* for periodic tasks, or *rtapi_task_resume* for -free-running tasks. +*rtapi_task_new* creates but does not start a realtime task. +The task is created in the "paused" state. +To start it, call either *rtapi_task_start* for periodic tasks, +or *rtapi_task_resume* for free-running tasks. == REALTIME CONSIDERATIONS @@ -41,9 +41,9 @@ Call only from within init/cleanup code, not from realtime tasks. == RETURN VALUE -On success, returns a positive integer task ID. This ID is used for all -subsequent calls that need to act on the task. On failure, returns an -RTAPI status code. +On success, returns a positive integer task ID. +This ID is used for all subsequent calls that need to act on the task. +On failure, returns an RTAPI status code. == SEE ALSO diff --git a/docs/src/man/man3/rtapi_task_pause.3.adoc b/docs/src/man/man3/rtapi_task_pause.3.adoc index a7e5349b042..7beb0d5f20b 100644 --- a/docs/src/man/man3/rtapi_task_pause.3.adoc +++ b/docs/src/man/man3/rtapi_task_pause.3.adoc @@ -8,31 +8,31 @@ rtapi_task_pause, rtapi_task_resume - pause and resume real-time tasks == SYNTAX -.... +[source,c] +---- void rtapi_task_pause(int _task_id_); void rtapi_task_resume(int _task_id_); -.... +---- == ARGUMENTS task_id:: - An RTAPI task identifier returned by an earlier call to - *rtapi_task_new*. + An RTAPI task identifier returned by an earlier call to *rtapi_task_new*. == DESCRIPTION -*rtapi_task_resume* starts a task in free-running mode. The task must be -in the "paused" state. +*rtapi_task_resume* starts a task in free-running mode. +The task must be in the "paused" state. A free running task runs continuously until either: [arabic] -. It is prempted by a higher priority task. It will resume as soon as -the higher priority task releases the CPU. -. It calls a blocking function, like *rtapi_sem_take*. It will resume -when the function unblocks. -. It is returned to the "paused" state by *rtapi_task_pause*. May be -called from init/cleanup code, and from within realtime tasks. +. It is prempted by a higher priority task. + It will resume as soon as the higher priority task releases the CPU. +. It calls a blocking function, like *rtapi_sem_take*. + It will resume when the function unblocks. +. It is returned to the "paused" state by *rtapi_task_pause*. + May be called from init/cleanup code, and from within realtime tasks. *rtapi_task_pause* causes a task to stop execution and change to the "paused" state. The task can be free-running or periodic. Note that diff --git a/docs/src/man/man3/rtapi_task_self.3rtapi.adoc b/docs/src/man/man3/rtapi_task_self.3rtapi.adoc index 6fca69d1858..4fd8cd3a120 100644 --- a/docs/src/man/man3/rtapi_task_self.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_task_self.3rtapi.adoc @@ -6,14 +6,15 @@ rtapi_task_self - Retrieve ID of current task == SYNTAX -.... +[source,c] +---- void rtapi_task_self(); -.... +---- == DESCRIPTION -*rtapi_task_self* retrieves the current task, or -EINVAL if not in a -realtime task (e.g., in startup or shutdown code). +*rtapi_task_self* retrieves the current task, +or -EINVAL if not in a realtime task (e.g., in startup or shutdown code). == REALTIME CONSIDERATIONS diff --git a/docs/src/man/man3/rtapi_task_start.3rtapi.adoc b/docs/src/man/man3/rtapi_task_start.3rtapi.adoc index f6b4cd59765..a89212b1d37 100644 --- a/docs/src/man/man3/rtapi_task_start.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_task_start.3rtapi.adoc @@ -6,9 +6,10 @@ rtapi_task_start - start a realtime task in periodic mode == SYNTAX -.... -int rtapi_task_start(int _task_id_, unsigned long _period_nsec_); -.... +[source,c] +---- +int rtapi_task_start(int task_id, unsigned long period_nsec); +---- == ARGUMENTS @@ -19,8 +20,8 @@ period_nsec:: == DESCRIPTION -*rtapi_task_start* starts a task in periodic mode. The task must be in -the _paused_ state. +*rtapi_task_start* starts a task in periodic mode. +The task must be in the _paused_ state. == REALTIME CONSIDERATIONS @@ -32,5 +33,4 @@ Returns an RTAPI status code. == SEE ALSO -rtapi_task_new(3rtapi), rtapi_task_pause(3rtapi), -rtapi_task_resume(3rtapi) +rtapi_task_new(3rtapi), rtapi_task_pause(3rtapi), rtapi_task_resume(3rtapi) diff --git a/docs/src/man/man3/rtapi_task_wait.3rtapi.adoc b/docs/src/man/man3/rtapi_task_wait.3rtapi.adoc index 98493e610ec..65166fe8552 100644 --- a/docs/src/man/man3/rtapi_task_wait.3rtapi.adoc +++ b/docs/src/man/man3/rtapi_task_wait.3rtapi.adoc @@ -6,14 +6,15 @@ rtapi_task_wait - suspend execution of this periodic task == SYNTAX -.... +[source,c] +---- void rtapi_task_wait(); -.... +---- == DESCRIPTION -*rtapi_task_wait* suspends execution of the current task until the next -period. The task must be periodic. If not, the result is undefined. +*rtapi_task_wait* suspends execution of the current task until the next period. +The task must be periodic. If not, the result is undefined. == REALTIME CONSIDERATIONS diff --git a/docs/src/man/man3/undocumented.3hal.adoc b/docs/src/man/man3/undocumented.3hal.adoc index c62d51cfc01..d650dbd392a 100644 --- a/docs/src/man/man3/undocumented.3hal.adoc +++ b/docs/src/man/man3/undocumented.3hal.adoc @@ -6,5 +6,4 @@ undocumented - undocumented functions in HAL == SEE ALSO -The header file _hal.h_. Most HAL functions have documentation in that -file. +The header file _hal.h_. Most HAL functions have documentation in that file. diff --git a/docs/src/man/man3/undocumented.3rtapi.adoc b/docs/src/man/man3/undocumented.3rtapi.adoc index 0b68eb5c787..dbae60ccbea 100644 --- a/docs/src/man/man3/undocumented.3rtapi.adoc +++ b/docs/src/man/man3/undocumented.3rtapi.adoc @@ -6,5 +6,4 @@ undocumented - undocumented functions in RTAPI == SEE ALSO -The header file _rtapi.h_. Most rtapi functions have documentation in -that file. +The header file _rtapi.h_. Most RTAPI functions are documentated in that file. diff --git a/docs/src/man/man9/classicladder.9.adoc b/docs/src/man/man9/classicladder.9.adoc index 2432995abf1..71b2924f554 100644 --- a/docs/src/man/man9/classicladder.9.adoc +++ b/docs/src/man/man9/classicladder.9.adoc @@ -67,11 +67,11 @@ the outputs. == BUGS -See http://wiki.linuxcnc.org/cgi-bin/wiki.pl?ClassicLadder_Ver_7.124 for the latest. +See https://wiki.linuxcnc.org/cgi-bin/wiki.pl?ClassicLadder_Ver_7.124 for the latest. == SEE ALSO _ClassicLadder_ chapters in the LinuxCNC documentation for a full description of the *ClassicLadder* syntax and examples. -http://wiki.linuxcnc.org/cgi-bin/wiki.pl?ClassicLadder_Ver_7.124 +https://wiki.linuxcnc.org/cgi-bin/wiki.pl?ClassicLadder_Ver_7.124 diff --git a/docs/src/man/man9/hm2_eth.9.adoc b/docs/src/man/man9/hm2_eth.9.adoc index 7f61c7ff085..adada497e63 100644 --- a/docs/src/man/man9/hm2_eth.9.adoc +++ b/docs/src/man/man9/hm2_eth.9.adoc @@ -47,9 +47,8 @@ this is a commonly-used value. If you use another network, you will also need to reconfigure the hostmot2 card to use an IP address on that network by using the mesaflash(1) utility and change jumper settings. Typically, you will choose one of the networks in the -http://en.wikipedia.org/wiki/IPv4#Private_networks[Private IPv4 address -space.] One common alternative is PC address 10.10.10.1, hostmot2 -address 10.10.10.10. +https://en.wikipedia.org/wiki/IPv4#Private_networks[Private IPv4 address +space.] One common alternative is PC address 10.10.10.1, hostmot2 address 10.10.10.10. Use of the dedicated ethernet interface while LinuxCNC is running can cause violation of realtime guarantees. hm2_eth will automatically @@ -57,15 +56,15 @@ mitigate most accidental causes of interference. === Configure network with static address -Add these lines to the file /etc/network/interfaces to configure eth1 -with a static address: +Add these lines to the file /etc/network/interfaces to configure the +Ethernet interface eth1 with a static address: -.... +---- auto eth1 iface eth1 inet static address 192.168.1.1 hardware-irq-coalesce-rx-usecs 0 -.... +---- == PACKET LOSS @@ -95,8 +94,8 @@ for each feedback signal, using *packet-error* as the mux2 *sel* input. == PINS -In addition to the pins documented in *hostmot2(9)*, *hm2_eth(9)* -creates additional pins: +In addition to the pins documented in *hostmot2(9)*, +*hm2_eth(9)* creates the following additional pins: (bit, out) hm2___.__.packet-error:: This pin is TRUE when the most recent cycle detected a read or write @@ -111,8 +110,8 @@ creates additional pins: == PARAMETERS -In addition to the parameters documented in *hostmot2(9)*, *hm2_eth(9)* -creates additional parameters: +In addition to the parameters documented in *hostmot2(9)*, +*hm2_eth(9)* creates the following additional parameters: hm2___.__.packet-error-decrement (s32, rw):: The amount deducted from _packet-error-level_ in a cycle without diff --git a/docs/src/man/man9/hostmot2.9.adoc b/docs/src/man/man9/hostmot2.9.adoc index 8556dddc7ed..a97eaad7b85 100644 --- a/docs/src/man/man9/hostmot2.9.adoc +++ b/docs/src/man/man9/hostmot2.9.adoc @@ -1172,7 +1172,7 @@ HAL pins. Instead the driver exports a set of functions that can be used by a sub-driver for the attached hardware. Typically, these would be written in the "comp". -pre-processing language: see http://linuxcnc.org/docs/html/hal/comp.html +pre-processing language: see https://linuxcnc.org/docs/html/hal/comp.html or man halcompile for further details. See mesa_7i65(9) and the source of mesa_7i65.comp for details of a typical sub-driver. See hm2_bspi_setup_chan(3hm2), hm2_bspi_write_chan(3hm2), @@ -1190,7 +1190,7 @@ e.g., `hm2_5i23.0.bspi.0`. The UART driver also does not create any HAL pins, instead it declares two simple read/write functions and a setup function to be utilised by user-written code. Typically this would be written in the "comp" pre-processing language: -see http://linuxcnc.org/docs/html/hal/comp.html or man halcompile for further details. +see https://linuxcnc.org/docs/html/hal/comp.html or man halcompile for further details. See mesa_uart(9) and the source of mesa_uart.comp for details of a typical sub-driver. See hm2_uart_setup_chan(3hm2), hm2_uart_send(3hm2), hm2_uart_read(3hm2) and hm2_uart_setup(3hm2). @@ -1562,7 +1562,7 @@ the response to the read request to arrive from board 0. hm2_pci(9), hm2_eth(9), hm2_spi(9), hm2_rpspi(9), hm2_7i43(9), hm2_7i90(9) -Mesa's documentation for the Anything I/O boards, at link:[http://www.mesanet.com]. +Mesa's documentation for the Anything I/O boards, at link:[https://www.mesanet.com]. == LICENSE diff --git a/docs/src/man/man9/lcd.9.adoc b/docs/src/man/man9/lcd.9.adoc index eb2f633cd1e..695d91c9545 100644 --- a/docs/src/man/man9/lcd.9.adoc +++ b/docs/src/man/man9/lcd.9.adoc @@ -47,7 +47,7 @@ could be used to stream data to a serial device. Perhaps even a genuine ADM3. The strings contain a mixture of text values (which are displayed directly), "escaped" formatting codes and numerical format descriptors. For a detailed description of formatting codes see: -http://en.wikipedia.org/wiki/Printf . +https://en.wikipedia.org/wiki/Printf . The component can be configured to display an unlimited number of differently-formatted pages, which may be selected with a HAL pin. diff --git a/docs/src/man/man9/opto_ac5.9.adoc b/docs/src/man/man9/opto_ac5.9.adoc index 6557be4f627..fb0bb9c4995 100644 --- a/docs/src/man/man9/opto_ac5.9.adoc +++ b/docs/src/man/man9/opto_ac5.9.adoc @@ -66,4 +66,4 @@ All boards are loaded with the same port configurations as the first board. == SEE ALSO -http://wiki.linuxcnc.org/cgi-bin/wiki.pl?OptoPciAc5 +https://wiki.linuxcnc.org/cgi-bin/wiki.pl?OptoPciAc5 diff --git a/docs/src/remap/remap.adoc b/docs/src/remap/remap.adoc index 81e96e1692a..43b24252cd3 100644 --- a/docs/src/remap/remap.adoc +++ b/docs/src/remap/remap.adoc @@ -1698,8 +1698,8 @@ For a current list of debug flags see 'src/emc/nml_intf/debugflags.h'. === Debugging Embedded Python code Debugging of embedded Python code is harder than debugging normal Python scripts, and only a limited supply of debuggers exists. -A working open-source based solution is to use the http://www.eclipse.org[Eclipse IDE], -and the http://www.pydev.org[PydDev] Eclipse plug in and its https://pydev.org/manual_adv_remote_debugger.html[remote debugging feature]. +A working open-source based solution is to use the https://www.eclipse.org[Eclipse IDE], +and the https://www.pydev.org[PydDev] Eclipse plug in and its https://pydev.org/manual_adv_remote_debugger.html[remote debugging feature]. To use this approach: