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: u8The index of the device on the HID++ channel.
protocol_version: ProtocolVersionThe supported protocol version reported by the device.
Implementations§
Source§impl Device
impl Device
Sourcepub async fn new(
chan: Arc<HidppChannel>,
device_index: u8,
) -> Result<Self, DeviceError>
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.
Sourcepub fn root(&self) -> Arc<RootFeature>
pub fn root(&self) -> Arc<RootFeature>
A convenience wrapper around Self::get_feature to obtain the root
feature.
Sourcepub fn add_feature_instance<F: Feature>(&mut self, feature: F) -> Arc<F>
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.
Sourcepub fn add_feature<F: CreatableFeature>(&mut self, feature_index: u8) -> Arc<F>
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.
Sourcepub fn provides_feature<F: Feature>(&self) -> bool
pub fn provides_feature<F: Feature>(&self) -> bool
Checks whether a specific feature implementation is provided by the device.
Sourcepub fn get_feature<F: Feature>(&self) -> Option<Arc<F>>
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.
Sourcepub async fn enumerate_features(
&mut self,
) -> Result<Option<Vec<FeatureInformation>>, Hidpp20Error>
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.