cue_sdk/device/
device_type.rs1use cue_sdk_sys as ffi;
2use num_traits::FromPrimitive;
3
4#[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}