Skip to main content

Device

Struct Device 

Source
pub struct Device {
    pub device_index: u8,
    pub protocol_version: ProtocolVersion,
    /* private fields */
}
Expand description

Represents a single HID++ device connected to a HidppChannel.

This is used only for peripheral devices and not receivers.

Fields§

§device_index: u8

The index of the device on the HID++ channel.

§protocol_version: ProtocolVersion

The supported protocol version reported by the device.

Implementations§

Source§

impl Device

Source

pub async fn new( chan: Arc<HidppChannel>, device_index: u8, ) -> Result<Self, DeviceError>

Tries to initialize a device on a HID++ channel.

This will automatically ping the device to determine the protocol version it supports via protocol::determine_version.

Returns DeviceError::DeviceNotFound if there is no device with the specified index connected to the channel.

Returns DeviceError::UnsupportedProtocolVersion if the device only supports ProtocolVersion::V10.

Source

pub fn root(&self) -> Arc<RootFeature>

A convenience wrapper around Self::get_feature to obtain the root feature.

Source

pub fn add_feature_instance<F: Feature>(&mut self, feature: F) -> Arc<F>

Adds a new feature implementation to the list of available features. This will override an existing implementation of the same type. The caller is responsible for making sure the device actually supports the feature.

Source

pub fn add_feature<F: CreatableFeature>(&mut self, feature_index: u8) -> Arc<F>

Adds a new feature implementation to the list of available features. This will override an existing implementation of the same type. The caller is responsible for making sure the device actually supports the feature.

This method uses CreatableFeature to automatically create an instance of the feature implementation and adds it using Self::add_feature_instance.

Source

pub fn provides_feature<F: Feature>(&self) -> bool

Checks whether a specific feature implementation is provided by the device.

Source

pub fn get_feature<F: Feature>(&self) -> Option<Arc<F>>

Tries to retrieve a feature implementation from the device.

Returns None if the requested feature implementation is not provided.

Source

pub async fn enumerate_features( &mut self, ) -> Result<Option<Vec<FeatureInformation>>, Hidpp20Error>

Tries to detect all features supported by the device and add implementations for them using feature::registry::lookup_version.

Returns a vector containing all feature IDs supported by the device.

Returns Ok(None) if the FeatureSetFeature feature, which is required for feature enumeration, is not supported by the device.

Trait Implementations§

Source§

impl Clone for Device

Source§

fn clone(&self) -> Device

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V