Skip to content

Commit de219f9

Browse files
author
Dilawar Singh
committed
chore: baseClass on Linux as well
1 parent a00ebcc commit de219f9

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

src/common.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ pub struct UsbDevice {
1414
pub description: Option<String>,
1515
/// Optional serial number
1616
pub serial_number: Option<String>,
17-
/// Class of device.
18-
pub base_class: DeviceBaseClass,
17+
/// Class (bDeviceBaseClass) of device.
18+
pub base_class: Option<DeviceBaseClass>,
1919
}
2020

2121
/// See <https://www.usb.org/defined-class-codes>

src/linux.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use crate::common::*;
2+
use std::convert::TryFrom;
23

34
use std::error::Error;
45
use udev::Enumerator;
@@ -62,12 +63,17 @@ pub fn enumerate_platform(vid: Option<u16>, pid: Option<u16>) -> Vec<UsbDevice>
6263
.and_then(|s| s.to_str())
6364
.map(|s| s.to_string());
6465

66+
let bclass = device
67+
.attribute_value("bDeviceClass")
68+
.and_then(|x| x.to_str()?.parse::<u8>().ok());
69+
6570
output.push(UsbDevice {
6671
id,
6772
vendor_id,
6873
product_id,
6974
description,
7075
serial_number,
76+
base_class: bclass.and_then(|bc| DeviceBaseClass::try_from(bc).ok()),
7177
});
7278

7379
Ok(())

src/macos.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ pub fn enumerate_platform(vid: Option<u16>, pid: Option<u16>) -> Vec<UsbDevice>
104104
product_id,
105105
description,
106106
serial_number,
107-
base_class: DeviceBaseClass::try_from(base_class)?,
107+
base_class: DeviceBaseClass::try_from(base_class).ok(),
108108
});
109109

110110
Ok(())

0 commit comments

Comments
 (0)