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