Expand description
Core HID++ protocol implementation and device features.
This crate provides the HID++ protocol layer for communicating with
Logitech devices. It builds on top of hidpp-transport to provide
higher-level device abstractions and feature implementations.
§Features
The HID++ 2.0 protocol uses a feature-based model where each capability
(DPI control, SmartShift, etc.) is exposed as a feature with a unique ID.
Feature indices are discovered at runtime since they can vary between
devices and firmware versions.
§Device Initialization
use hidpp_transport::{create_hid_api, enumerate_hidpp_devices, HidapiChannel};
use logiops_core::HidppDevice;
let api = create_hid_api()?;
let devices = enumerate_hidpp_devices(&api);
if let Some(logi_dev) = devices.first() {
let channel = HidapiChannel::open(&api, &logi_dev.path)?;
let mut device = HidppDevice::direct(channel);
// Initialize queries protocol version, name, and discovers features
let info = device.initialize().await?;
println!("Found: {} ({})", info.name, info.protocol_version);
}Re-exports§
pub use device::DeviceInfo;pub use device::HidppDevice;pub use error::HidppErrorCode;pub use error::ProtocolError;pub use error::Result;pub use features::device_name::DeviceKind;pub use features::AdjustableDpiFeature;pub use features::BatteryFeature;pub use features::BatteryInfo;pub use features::BatteryStatusFeature;pub use features::ButtonEvent;pub use features::ChargingStatus;pub use features::CidReporting;pub use features::ControlFlags;pub use features::ControlInfo;pub use features::FeatureInfo;pub use features::FeatureSetFeature;pub use features::FeatureType;pub use features::ReprogControlsFeature;pub use features::SensorInfo;pub use features::SmartShiftConfig;pub use features::SmartShiftFeature;pub use features::UnifiedBatteryFeature;pub use features::WheelMode;pub use protocol::ProtocolVersion;pub use hidpp_transport;