Skip to main content

Crate pokeys_lib

Crate pokeys_lib 

Source
Expand description

§PoKeys Core Library - Pure Rust Implementation

This is the core library of the PoKeys ecosystem, providing a pure Rust implementation of the PoKeysLib functionality for controlling PoKeys devices without external dependencies.

§Core Features

§Device Connectivity

  • USB and Network device enumeration and connection
  • Auto-detection of connection types
  • Multi-device concurrent management

§Digital & Analog I/O

  • Digital I/O operations with bulk configuration
  • Multi-channel analog input with configurable reference voltage
  • Pin function validation and safety checks

§Advanced Control Systems

  • PWM control with configurable frequency and duty cycle
  • Quadrature encoder support (4x/2x sampling modes)
  • Matrix keyboard scanning and LED matrix control

§Communication Protocols

  • SPI: Full master support with multiple chip select pins
  • I2C: Master operations with device scanning
  • 1-Wire: Temperature sensor support
  • CAN Bus: Message transmission and reception
  • UART: Serial communication

§Display & Interface Support

  • LCD display control and management
  • Seven-segment character mapping utilities

§Sensor Integration

  • EasySensors support and data acquisition
  • Real-time clock operations and synchronization
  • Temperature sensor integration

§Safety & Reliability

  • Device model validation with pin capability checks
  • Comprehensive error handling with context
  • Thread-safe concurrent device access
  • Configurable failsafe behavior
  • SPI pin reservation and conflict prevention

§Performance Optimizations

  • Bulk Operations: 28x faster pin configuration (96.4% time reduction)
  • Single Enumeration: 3x faster multi-device sync (65% improvement)
  • Encoder Fix: Correct pin numbering conversion

§Usage

use pokeys_lib::{enumerate_usb_devices, connect_to_device, PinFunction, Result};

fn main() -> Result<()> {
    // Enumerate available devices
    let device_count = enumerate_usb_devices()?;

    // Connect to first device
    if device_count > 0 {
        let mut device = connect_to_device(0)?;

        // Read device information
        device.get_device_data()?;

        // Set pin as digital output
        device.set_pin_function(1, PinFunction::DigitalOutput)?;

        // Set pin high
        device.set_digital_output(1, true)?;
    }

    Ok(())
}

Re-exports§

pub use pulse_engine::PulseEngineConfig;
pub use device::connect_to_device;
pub use device::connect_to_device_with_serial;
pub use device::enumerate_usb_devices;
pub use io::PinCapability;
pub use io::PinFunction;
pub use keyboard_matrix::MatrixKeyboard;
pub use model_manager::ModelManager;
pub use models::DeviceModel;
pub use models::PinModel;
pub use oem_parameters::LOCATION_PARAMETER_INDEX;
pub use oem_parameters::OEM_PARAMETER_MAX_INDEX;
pub use matrix::LedMatrixConfig;
pub use matrix::MatrixAction;
pub use matrix::MatrixLedProtocolConfig;
pub use matrix::SEVEN_SEGMENT_DIGITS;
pub use matrix::SEVEN_SEGMENT_LETTERS;
pub use matrix::SevenSegmentDisplay;
pub use matrix::get_seven_segment_pattern;
pub use network::NetworkDeviceConfig;
pub use protocols::can_send_standard;
pub use protocols::i2c_read_simple;
pub use protocols::i2c_write_simple;
pub use protocols::spi_configure_simple;
pub use protocols::spi_read_simple;
pub use protocols::spi_write_simple;
pub use protocols::SegmentMapping;
pub use protocols::SegmentMappingType;
pub use protocols::USPIBridgeCommand;
pub use protocols::USPIBridgeConfig;
pub use pwm::ServoConfig;
pub use pwm::ServoType;
pub use device::*;
pub use error::*;
pub use types::*;

Modules§

communication
Low-level communication protocol implementation
device
Device enumeration, connection, and management
encoders
Encoder support for PoKeys devices
error
Error types for PoKeys library
io
Digital and analog I/O operations
keyboard_matrix
Matrix keyboard support
lcd
LCD display support
matrix
Matrix LED support
model_manager
Model management API
models
Device model definitions and validation
network
Network device support and discovery
oem_parameters
OEM parameter read/write support (command 0xFD)
protocols
Communication protocols (I2C, SPI, 1-Wire, UART, CAN)
pulse_engine
Pulse Engine v2 support for motion control
pwm
PWM (Pulse Width Modulation) support
sensors
EasySensors support
types
Core types and structures for PoKeys library

Constants§

VERSION_MAJOR
Library version information
VERSION_MINOR
VERSION_PATCH

Functions§

version
Get library version as string