From 6da312685eec94518b06ab55f006e0665077ccd3 Mon Sep 17 00:00:00 2001 From: pmunts Date: Mon, 30 Mar 2026 05:33:18 -0700 Subject: [PATCH] libsimpleio release 2.24736.1 Wed Mar 25 07:14:37 AM PDT 2026 (#1836) * libsimpleio release 2.24736.1 Wed Mar 25 07:14:37 AM PDT 2026 Corrected Raspberry Pi 5 PWM output designators. With kernel 6.12, we are back to pwmchip0. * libsimpleio drop 2.24736.1 * libsimpleio release 2.24736.1 Thu Mar 26 08:59:46 AM PDT 2026 Corrected Raspberry Pi 5 PWM output designators. With kernel 6.12, we are back to pwmchip0. --- .../li/libsimpleio/libsimpleio-2.24736.1.toml | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 index/li/libsimpleio/libsimpleio-2.24736.1.toml diff --git a/index/li/libsimpleio/libsimpleio-2.24736.1.toml b/index/li/libsimpleio/libsimpleio-2.24736.1.toml new file mode 100644 index 00000000..6a98d27d --- /dev/null +++ b/index/li/libsimpleio/libsimpleio-2.24736.1.toml @@ -0,0 +1,146 @@ +name = "libsimpleio" +version = "2.24736.1" +description = "Linux Simple I/O Library" +website = "https://github.com/pmunts/libsimpleio" +authors = ["Philip Munts"] +maintainers = ["Philip Munts "] +maintainers-logins = ["pmunts"] +licenses = "BSD-1-Clause" + +long-description = """ +# Introduction + +This crate provides an Ada binding to the [Linux Simple I/O +Library](https://github.com/pmunts/libsimpleio), *aka* **libsimpleio**. + +# 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](https://wiki.analog.com/software/linux/docs/iio/iio) A/D + (Analog to Digital) Converter Devices +- [Industrial I/O + Subsystem](https://wiki.analog.com/software/linux/docs/iio/iio) 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 +- PWM (Pulse Width Modulated) Output Devices +- [Remote I/O + Protocol](https://repo.munts.com/libsimpleio/doc/RemoteIOProtocol.pdf) + Devices +- Serial Ports +- SPI (Serial Peripheral Interface) Bus Devices +- [Stream Framing + Protocol](https://repo.munts.com/libsimpleio/doc/StreamFramingProtocol.pdf) + Devices +- TCP and UDP over IPv4 Network Devices +- Watchdog Timer Devices + +**libsimpleio** exports a small number of C wrapper or shim functions. +These shim functions present a more coherent API (Application +Programming Interface) than Linux kernel **`ioctl()`** services and the +myriad other different Linux device I/O API's. The **libsimpleio** shim +functions are designed to be easily called from Ada, C++, C#, Java, Free +Pascal and other programming languages. + +The **`man`** pages specifying the **libsimpleio** API (Application +Programming Interface) are available for viewing at +. + +# Ada Binding for the Linux Simple I/O Library + +The Ada binding consists of several software component layers. + +The bottom software component layer consists of the **C shim functions** +discussed in the previous section. + +The next software component layer consists of **binding packages** that +declare the C shim functions as Ada procedures. Each of the binding +packages corresponds to a single C source file (*e.g.* package +**`libadc`** corresponds to **`libadc.c`**). Each of the C shim +functions are declared as external Ada procedures using +**`pragma Import`**. The Ada procedure names do not necessarily match +the C function names (*e.g.* the C function **`ADC_Open()`** is declared +as Ada procedure **`libadc.Open`**). Many of the binding packages also +declare constants as well (*e.g.* **`DIRECTION_INPUT`** in +**`libgpio.ads`**). + +With very few exceptions, you will never need to directly call any of +the procedures nor reference any of the constants declared in the +**`libxxx`** binding packages. + +The next software component layer consists of **object packages** that +declare OOP (Object Oriented Programming) object types and methods for +each of the I/O subsystems. This layer uses Ada interface types, +access-to-interface types, and private tagged records extensively. + +For example, the package **`GPIO`** defines an interface type +**`PinInterface`**, an access to **`PinInterface`** type named +**`Pin`**, and primitive operation subprograms **`Get`** and **`Put`**. + +The child package **`GPIO.libsimpleio`** declares a private tagged +record type **`PinSubclass`** that *implements* **`GPIO.PinInterface`**, +subprograms **`Get`** and **`Put`** that are required to implement +**`GPIO.PinInterface`**, and a constructor function **`Create`** that +returns an **`GPIO.Pin`** access value. + +Every package that implements **`GPIO.PinInterface`** will also declare +a constructor function **`Create`** that returns **`GPIO.Pin`**. + +This architecture allows code similar to the following fragment: + + MyPins : array (1 .. 3) of GPIO.pin; + + GPIO(1) := GPIO.libsimpleio.Create(...); + GPIO(2) := GPIO.UserLED.Create(...); + GPIO(3) := GPIO.PWM.Create(...); + +The three GPIO pins can be stored in the same array and manipulated in +exactly the same manner even though the hardware implementation for each +pin is radically different. + +The topmost software component layer consists of **device packages** +that implement support for particular I/O devices and are built upon the +lower layers. Most of the device packages correspond to integrated +circuits, such as the [PCA9534 I2C GPIO +Expander](https://www.nxp.com/products/interfaces/ic-spi-serial-interface-devices/ic-general-purpose-i-o/8-bit-ic-bus-and-smbus-low-power-i-o-port-with-interrupt:PCA9534). +A few implement support for boards or modules, such the [Grove +Temperature +Sensor](https://www.seeedstudio.com/Grove-Temperature-Sensor.html) +module. +""" + +tags = ["embedded", "linux", "libsimpleio", "remoteio", "beaglebone", +"pocketbeagle", "raspberrypi", "raspberry", "pi", "adc", "dac", "gpio", +"hid", "i2c", "motor", "pwm", "sensor", "serial", "servo", "spi", "stepper", +"watchdog", "wioe5"] + +project-files = ["libsimpleio.gpr"] + +[available."case(os)"] +'linux' = true +"..." = false + +[[forbids]] +# This crate contains the functionality of the following crates: +mcp2221 = "*" +remoteio = "*" +wioe5_ham1 = "*" +wioe5_ham2 = "*" +wioe5_p2p = "*" + +[[actions."case(os)".linux]] +type = "post-fetch" +command = ["sh", "-c", "./postfetch"] + +[origin] +hashes = [ +"sha256:f7326c67d136095f5029d6dee3e02c8ec8f22ef3882754699e2f5d190d7069a2", +"sha512:c12daa99beea7068867c070c47c0043a07bfd8127de0cc44b53bd3bd69dd83818eecff8d34e36d1cc2ddfdbce4d4f7c47ae22b103be505a6ab551569aaa0d0e2", +] +url = "https://raw.githubusercontent.com/pmunts/alire-crates/2309c881329907da24e8ee31cbbdd4d1a2b832cf/libsimpleio/libsimpleio-2.24736.1.tbz2" +