[PATCH 00/15] device-global identifiers and routes introduced

Greg Kroah-Hartman gregkh at linuxfoundation.org
Thu Nov 10 12:19:29 UTC 2016


On Wed, Oct 12, 2016 at 05:05:07AM -0600, Spencer E. Olson wrote:
> This patchset introduces a new framework for providing and maintaining a
> consistent namespace to define terminal/signal names for a set of comedi
> devices.  This effort was primarily focused on supporting NI hardware, but the
> interfaces introduced here can be implemented by all other hardware drivers, if
> desired.  Otherwise, these new interfaces do not effect any interfaces
> previously defined or prior use cases (i.e. backwards compatibility).
> 
> Some background:
>   There have been significant confusions over the past many years for users
>   when trying to understand how to connect to/from signals and terminals on
>   NI hardware using comedi.  The major reason for this is that the actual
>   register values were exposed and required to be used by end users.  Several
>   major reasons exist why this caused major confusion for users:
> 
>   1) The register values are _NOT_ in user documentation, but rather in
>     arcane locations, such as a few register programming manuals that are
>     increasingly hard to find.  Some information is found in the register level
>     programming libraries provided by National Instruments (NI-MHDDK), but
>     many items are only vaguely found/mentioned in the comments of the NI-MHDDK
>     example code.  There is no one place to find the various valid values of the
>     registers.
> 
>   2) The register values are _NOT_ completely consistent.  There is no way to
>     gain any sense of intuition of which values, or even enums one should use
>     for various registers.  There was some attempt in prior use of comedi to
>     name enums such that a user might know which enums should be used for
>     varying purposes, but the end-user had to gain a knowledge of register
>     values to correctly wield this approach.
> 
>   3) The names for signals and registers found in the various register level
>     programming manuals and vendor-provided documentation are _not_ even
>     close to the same names that are in the end-user documentation.
> 
>   4) The sets of routes that are valid are not consistent from device to device.
>     One additional major challenge is that this information is not documented
>     and does not seem to be obtainable in any programmatic fashion, neither
>     through the proprietary NIDAQmx(-base) c-libraries, nor with register level
>     programming.  In fact, the only consistent source of this information is
>     through the proprietary NI-MAX software, which currently only runs on
>     Windows platforms.  A further challenge is that this information cannot be
>     exported from NI-MAX, except by screenshot.
> 
> Similar confusion, albeit less, plagued NI's previous version of their own
> proprietary drivers.  Earlier than 2003, NI greatly simplified the situation for
> users by releasing a new API that abstracted the names of signals/terminals to a
> common and intuitive set of names.  In addition, this new API provided a much
> more common interface to use for most of NI hardware.
> 
> Comedi already provides such a common interface for data-acquisition and control
> hardware.  This effort complements comedi's abstraction layers by further
> abstracting much more of the use cases for NI hardware, but allowing users _and_
> developers to directly refer to NI documentation (user-level, register-level,
> and the register-level examples of the NI-MHDDK).
> 
> The goal of these patches are:
>   0) Allow current code to function as is, providing backwards compatibility to
>     the current interface, following a suggestion by Eric Piel.
>   1) Provide an interface to connect routes or identify signal sources and
>     destinations using a consistent naming scheme, global to a driver family.
>   2) For NI devices, use terminal/signal naming that is consistent with (a) the
>     NI's user level documentation, (b) NI's user-level code, (c) the information
>     as provided by the proprietary NI-MAX software, and (d) the user interface
>     code provided by the user-land comedilib library.
>   3) Make for easy maintenance of register level values that are to be used for
>     any particular NI device of any particular NI device family.
>   4) Provide a means whereby the user can query the set of signal routes that is
>     valid for a particular device.
>   5) Provide an interface whereby the user can query the status and capability
>     of any signal route.  The driver can provide information on whether the
>     route is valid for the device and whether the route is already connected.
> 
> This patch set implements various changes that keep the goals set forth here.
> This patch set is in nowise complete with respect to the various NI hardware
> options supported by comedi, though a large selection should be supported--all
> e/m-series (ni_mio_common.c hardware) boards and 660x boards are the target of
> this patch set, including the tio devices (counter/timers) used by these boards.
> 
> A copy of these patches can be found at:
> http://www.umich.edu/~olsonse/patches/comedi-devglobal-v1/
> 
> Cc: Eric Piel <piel at delmic.com>

No comment on these patches?  At first glance, they look like a good
idea to me, but I really don't know the comedi subsystem very well...

Ian?

thanks,

greg k-h


More information about the devel mailing list