cue_sdk/device/
device_type.rs

1use cue_sdk_sys as ffi;
2use num_traits::FromPrimitive;
3
4/// The various device types supported by the iCUE SDK.
5#[derive(Debug, Copy, Clone, PartialEq, FromPrimitive)]
6#[repr(u32)]
7pub enum DeviceType {
8    Mouse = ffi::CorsairDeviceType_CDT_Mouse,
9    Keyboard = ffi::CorsairDeviceType_CDT_Keyboard,
10    Headset = ffi::CorsairDeviceType_CDT_Headset,
11    MouseMat = ffi::CorsairDeviceType_CDT_MouseMat,
12    HeadsetStand = ffi::CorsairDeviceType_CDT_HeadsetStand,
13    CommanderPro = ffi::CorsairDeviceType_CDT_CommanderPro,
14    LightingNodePro = ffi::CorsairDeviceType_CDT_LightingNodePro,
15    MemoryModule = ffi::CorsairDeviceType_CDT_MemoryModule,
16    Cooler = ffi::CorsairDeviceType_CDT_Cooler,
17    Motherboard = ffi::CorsairDeviceType_CDT_Motherboard,
18    GraphicsCard = ffi::CorsairDeviceType_CDT_GraphicsCard,
19}
20
21impl DeviceType {
22    pub(crate) fn from_ffi(device_type: ffi::CorsairDeviceType) -> Option<Self> {
23        DeviceType::from_u32(device_type)
24    }
25}
26
27#[cfg(test)]
28mod tests {
29    use super::DeviceType;
30    use cue_sdk_sys as ffi;
31
32    #[test]
33    fn from_ffi_valid() {
34        assert_eq!(
35            DeviceType::from_ffi(ffi::CorsairDeviceType_CDT_Cooler),
36            Some(DeviceType::Cooler)
37        );
38    }
39
40    #[test]
41    fn from_ffi_invalid() {
42        assert_eq!(
43            DeviceType::from_ffi(ffi::CorsairDeviceType_CDT_Unknown),
44            None
45        );
46        assert_eq!(DeviceType::from_ffi(1642), None);
47    }
48}