#graphics #input #hardware #audio #peripheral

adi

Ultra-portable hardware interface for platform-agnostic applications

18 releases (breaking)

0.13.0-pre2 Dec 10, 2018
0.13.0-pre0 Nov 26, 2018
0.10.0 Jun 22, 2018
0.6.0 Feb 25, 2018
0.3.1 Jun 8, 2017

#191 in Graphics APIs

Download history 14/week @ 2023-11-04 29/week @ 2023-11-11 14/week @ 2023-11-18 67/week @ 2023-11-25 21/week @ 2023-12-02 10/week @ 2023-12-09 34/week @ 2023-12-16 50/week @ 2023-12-23 8/week @ 2023-12-30 34/week @ 2024-01-06 11/week @ 2024-01-13 28/week @ 2024-01-20 100/week @ 2024-01-27 4/week @ 2024-02-03 91/week @ 2024-02-10 420/week @ 2024-02-17

616 downloads per month

MIT / BSL-1.0

750KB
18K SLoC

Aldaron's Device Interface

The lightweight platform-agnostic device interface abstraction layer for creating apps and video games.

Aldaron's Device Interface aims to be the new SDL in some aspects, but isn't specifically targeting video games. This library also aims to replace cross-platform GUI toolkits like GTK. Ultimately, though, it's cooler than both combined, and way smaller! Since those libraries are 3-letter acronyms, this library must also be: ADI!

Getting Started

Rather than having a bunch of separately maintained projects like SDL, everything is together in ADI. By default, everything is built (all of the device interfaces). This usually is not what you want, so this is how you should specify ADI in your Cargo.toml if you only want the screen API:

[dependencies.adi]
version = "0.13"
default-features = false
features = ["screen"]
path = "../adi"

Thanks to Cargo, that's a lot easier than finding all of the SDL libraries! Conveniently, the features have the same name as the modules in this documentation, to make it even easier!

List of Modules / Features

Module / Feature More Info
mic Microphone support on Linux (Alsa). TODO: Android, Windows, MacOS / iOS, Nintendo Switch, Web Assembly
speaker Speaker support on Linux (Alsa). TODO: Android, Windows, MacOS / iOS, Nintendo Switch, Web Assembly
screen Screen support on Linux and Windows. Can switch between OpenGL, OpenGLES or Vulkan depending on what's available. TODO: Vulkan + Android, Vulkan + DirectFB on Raspberry Pi, Metal or MoltenVk on MacOS & iOS, Vulkan on the Nintendo Switch, WebGL on Web Assembly
hid Human interface device, which may also have haptic feedback (vibrate). TODO: Separate from Screen, Implement missing joystick & touchpad support on Windows, missing touch
net Client / Server Wi-Fi & Ethernet stuff (even easier, simpler than std::net).
drive Application / Drive Storage (more secure than std::fs). TODO: Find storage locations for each platform, API for Reading / Writing CD & DVD
usb Low level USB interface. Send and recieve packets over USB between a Computer and an Arduino, Tablet, or Phone.
bluetooth Send and receive packets over bluetooth.
cam Record Video from a Webcam or other Camera.
gps Geographic position locator through GPS, WiFi, Cell Towers, or a combination.
sensor Gyroscope, accelerometer, distance sensor, etc.
gpio GPIO (General Purpose Input/Output) for electronics. Raspberry Pi and Arduino are good candidates for using this feature.

TODO

Once all of the modules / features listed above exist in the crate, and no longer have TODO written next to them, version 1.0 will be released.


Plop Grizzly

Dependencies

~0–1MB
~13K SLoC