Linux Simple I/O library
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ada
basic
c++
c
csharp
doc
java
make
modula2
pascal
tests
udev
win
COPYING
Makefile
README.html
README.md
README.txt
control

README.md

Linux Simple I/O Library

libsimpleio is an attempt to encapsulate (as much as possible) the ugliness of Linux I/O device access. It provides services for the following types of I/O devices:

  • Industrial I/O Subsystem A/D (Analog to Digital) Converter Devices
  • Industrial I/O Subsystem D/A (Digital to Analog) Converter Devices
  • GPIO (General Purpose Input/Output) Pins
  • Raw HID (Human Interface Device) Devices
  • I2C (Inter-Integrated Circuit) Bus Devices
  • Labview LINX Remote I/O Devices
  • PWM (Pulse Width Modulated) Output Devices
  • Serial Ports
  • SPI (Serial Peripheral Interface) Bus Devices
  • Stream Framing Protocol Devices
  • TCP and UDP over IPv4 Network Devices
  • Watchdog Timer Devices

Although libsimpleio was originally intended for Linux microcomputers such as the Raspberry Pi, it can also be useful on larger desktop Linux systems.

The C wrapper functions exported by libsimpleio all follow the same uniform pattern:

  • All C wrapper functions are proper procedures (void f() in C).
  • All input arguments of primitive types (int, float, etc.) are passed by value.
  • All output arguments of primitive types are passed by reference (int *, float *, etc.).
  • All composite types are passed by reference.
  • int32_t is used wherever possible for int and bool arguments.

All of the C wrapper functions are declared between _BEGIN_STD_C and _END_STD_C for C++. Binding modules are provided for Ada, C++, C#, Java, and Free Pascal. Additional source code libraries are provided for Ada, C++, C#, Java, and Free Pascal that define OOP (Object Oriented Programming) classes for libsimpleio.

News

  • 9 January 2019 -- Continued working on the Ada Remote I/O code. Continued working on the Pascal Remote I/O code. Compiling Pascal Remote I/O client programs on Windows is now supported.
  • 16 January 2019 -- The C wrapper function source files have been moved to the c/ subdirectory. The source code is now published on GitHub at https://github.com/pmunts/libsimpleio. The old repository at http://git.munts.com (which actually just mirrors a private Subversion repository and then pushed to GitHub) will be maintained, but you should clone from GitHub, which will be much faster.
  • 8 February 2019 -- Reworked PWM device handling for the Linux 4.19 kernel. Cleaned up some stale links and commands in the user manual. Cleaned up some loose ends in the MY-BASIC bindings and example programs.

Documentation

The user manual for libsimpleio is available at: http://git.munts.com/libsimpleio/doc/UserManual.pdf

The man pages specifying the libsimpleio API are available at: libsimpleio.html

The source code is available at: https://github.com/pmunts/libsimpleio

Use the following command to clone it:

git clone https://github.com/pmunts/libsimpleio.git

Copyright:

Original works herein are copyrighted as follows:

Copyright (C)2016-2018, Philip Munts, President, Munts AM Corp.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice,
  this list of conditions and the following disclaimer.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

Redistributed works herein are copyrighted and/or licensed by their respective authors.


Questions or comments to Philip Munts phil@munts.net

I am available for custom system development (hardware and software) of products using ARM Linux or other microcomputers.