1 use std
::collections
::HashMap
;
3 use wmi
::{COMLibrary
, Variant
, WMIConnection
};
6 a770
, asus_aura_usb
, corsair_lighting_pro
, corsair_vengeance
, cpu_temperature
,
7 lian_li_sl_infinity
, machine
, rgb
::RGB
, winring0
, wrapper_winring0
,
11 println!("Running some tests...");
15 // test_asus_aura_usb(asus_aura_usb::Motherboard::Asus650e);
16 // test_corsair_lighting_pro();
17 test_lianli_sl_infinity();
18 // list_usb_devices();
24 // test_read_temperature_cpu();
25 // test_read_temperature_a770();
26 // test_read_temperature_3080();
30 println!("Press any key to continue...");
31 std
::io
::stdin().read_line(&mut String
::new()).unwrap();
35 let com_con
= COMLibrary
::new().unwrap();
36 let wmi_con
= WMIConnection
::new(com_con
.into()).unwrap();
38 //let results: Vec<HashMap<String, Variant>> = wmi_con.raw_query("SELECT * FROM Win32_PnPSignedDriver WHERE Description LIKE '%SMBUS%' OR Description LIKE '%SM BUS%'").unwrap();
39 //let results: Vec<HashMap<String, Variant>> = wmi_con.raw_query("SELECT * FROM Win32_PnPSignedDriver WHERE Description LIKE 'Intel(R) NF I2C Host Controller'").unwrap();
40 let results
: Vec
<HashMap
<String
, Variant
>> = wmi_con
41 .raw_query("SELECT * FROM Win32_PnPSignedDriver")
43 //let results: Vec<HashMap<String, Variant>> = wmi_con.raw_query("SELECT * FROM Win32_PnPAllocatedResource").unwrap();
46 println!("-------------------");
47 println!("{:#?}", os
);
51 fn list_usb_devices() {
52 let api
= hidapi
::HidApi
::new().unwrap();
53 for device
in api
.device_list() {
54 println!("{:?}", device
);
55 println!("name: {}", device
.product_string().unwrap());
56 println!("interface number: {}", device
.interface_number());
57 println!("page: {}", device
.usage_page());
58 println!("usage: {}", device
.usage());
64 // let api = hidapi::HidApi::new().unwrap();
65 // let roccat_device = roccat::get_device(&api);
67 // let manufacturer = roccat_device.get_manufacturer_string().unwrap();
68 // dbg!(manufacturer);
70 // let product = roccat_device.get_product_string().unwrap();
73 // let serial = roccat_device.get_serial_number_string().unwrap();
76 // roccat::init(&roccat_device);
87 fn test_asus_aura_usb(motherboard
: asus_aura_usb
::Motherboard
) {
88 let api
= hidapi
::HidApi
::new().unwrap();
90 let device
= asus_aura_usb
::Device
::new(&api
, motherboard
).unwrap();
92 println!("Firmware: {}", device
.get_firmware_string().unwrap());
94 let configuration
= device
.get_configuration_table().unwrap();
95 println!("Configuration:");
97 print!("{:02X} ", configuration
[i
]);
102 println!("Number of addressable header: {}", configuration
[0x02]);
103 println!("Number of leds: {}", configuration
[0x1B]);
104 println!("Number of RGB headers: {}", configuration
[0x1D]);
114 device
.save_current_color().unwrap();
117 fn test_corsair_lighting_pro() {
118 let api
= hidapi
::HidApi
::new().unwrap();
119 let device
= corsair_lighting_pro
::Device
::new(
129 if i
% 10 == 0 || i
== 255 || i
== 0 {
130 device
.set_color(&RGB
{
132 green
: 255u8 - i
as u8,
135 std
::thread
::sleep(std
::time
::Duration
::from_millis(200));
140 fn test_lianli_sl_infinity() {
141 let api
= hidapi
::HidApi
::new().unwrap();
142 let device
= lian_li_sl_infinity
::Device
::new(&api
);
144 device
.set_color(&RGB
{
152 let corsair_controllers
= [
153 corsair_vengeance
::Controller
::new(0x19),
154 corsair_vengeance
::Controller
::new(0x1B),
157 for controller
in corsair_controllers
{
158 controller
.set_color(&RGB
{
167 // a770::set_rgb(255, 0, 0);
168 let mut a770
= a770
::A770
::new().unwrap();
169 a770
.set_color(255, 0, 0).unwrap();
173 let machine
: &mut dyn machine
::Machine
= &mut machine
::MachineLyssMetal
::new().unwrap();
175 machine
.set_color(&RGB
{
182 const F17H_M01H_THM_TCON_CUR_TMP
: u32 = 0x00059800;
183 const F17H_TEMP_OFFSET_FLAG
: u32 = 0x80000;
184 const FAMILY_17H_PCI_CONTROL_REGISTER
: u32 = 0x60;
186 fn test_read_temperature_cpu() {
187 println!("temp cpu: {}", cpu_temperature
::read())
190 fn test_read_temperature_a770() {
191 let jiji
: &dyn machine
::Machine
= &machine
::MachineJiji
::new().unwrap();
192 println!("temp gpu: {}", jiji
.get_gpu_tmp());
195 fn test_read_temperature_3080() {
196 nvapi
::initialize().expect("Unable to initialize nvapi (Nvidia API)");
197 // if let Ok(gpus) = {
199 // let thermal = gpu.thermal_settings(None).unwrap()[0];
200 // println!("{:?}", thermal.current_temperature.0)
203 let gpus
= nvapi
::PhysicalGpu
::enumerate().unwrap();
205 let sensor
= gpu
.thermal_settings(None
).unwrap()[0];
206 println!("{:?}", sensor
.current_temperature
.0);
207 nvapi
::unload().unwrap();