Replace some unwrap by Result
[temp2RGB.git] / src / tests.rs
1 use std::collections::HashMap;
2
3 use wmi::{COMLibrary, Variant, WMIConnection};
4
5 use crate::{
6 a770, asus_aura_usb, corsair_lighting_pro, corsair_vengeance, cpu_temperature, machine,
7 rgb::RGB, winring0, wrapper_winring0,
8 };
9
10 pub fn tests() {
11 println!("Running some tests...");
12
13 winring0::init();
14
15 // test_asus_aura_usb(asus_aura_usb::Motherboard::AsusCrosshairVIIIHero);
16 // test_corsair_lighting_pro();
17 // list_usb_devices();
18 // test_roccat();
19 // test_wmi();
20 // test_corsair();
21 // test_a770();
22 test_3080ti();
23 // test_read_temperature_cpu();
24 // test_read_temperature_a770()
25 // test_read_temperature_3080();
26
27 winring0::deinit();
28
29 println!("Press any key to continue...");
30 std::io::stdin().read_line(&mut String::new()).unwrap();
31 }
32
33 fn test_wmi() {
34 let com_con = COMLibrary::new().unwrap();
35 let wmi_con = WMIConnection::new(com_con.into()).unwrap();
36
37 //let results: Vec<HashMap<String, Variant>> = wmi_con.raw_query("SELECT * FROM Win32_PnPSignedDriver WHERE Description LIKE '%SMBUS%' OR Description LIKE '%SM BUS%'").unwrap();
38 //let results: Vec<HashMap<String, Variant>> = wmi_con.raw_query("SELECT * FROM Win32_PnPSignedDriver WHERE Description LIKE 'Intel(R) NF I2C Host Controller'").unwrap();
39 let results: Vec<HashMap<String, Variant>> = wmi_con
40 .raw_query("SELECT * FROM Win32_PnPSignedDriver")
41 .unwrap();
42 //let results: Vec<HashMap<String, Variant>> = wmi_con.raw_query("SELECT * FROM Win32_PnPAllocatedResource").unwrap();
43
44 for os in results {
45 println!("-------------------");
46 println!("{:#?}", os);
47 }
48 }
49
50 fn list_usb_devices() {
51 let api = hidapi::HidApi::new().unwrap();
52 for device in api.device_list() {
53 println!("{:?}", device);
54 println!("name: {}", device.product_string().unwrap());
55 println!("interface number: {}", device.interface_number());
56 println!("page: {}", device.usage_page());
57 println!("usage: {}", device.usage());
58 println!("----");
59 }
60 }
61
62 // fn test_roccat() {
63 // let api = hidapi::HidApi::new().unwrap();
64 // let roccat_device = roccat::get_device(&api);
65
66 // let manufacturer = roccat_device.get_manufacturer_string().unwrap();
67 // dbg!(manufacturer);
68
69 // let product = roccat_device.get_product_string().unwrap();
70 // dbg!(product);
71
72 // let serial = roccat_device.get_serial_number_string().unwrap();
73 // dbg!(serial);
74
75 // roccat::init(&roccat_device);
76 // roccat::set_color(
77 // &roccat_device,
78 // &RGB {
79 // red: 0,
80 // green: 255,
81 // blue: 40,
82 // },
83 // );
84 // }
85
86 fn test_asus_aura_usb(motherboard: asus_aura_usb::Motherboard) {
87 let api = hidapi::HidApi::new().unwrap();
88
89 let device = asus_aura_usb::Device::new(&api, motherboard).unwrap();
90
91 println!("Firmware: {}", device.get_firmware_string().unwrap());
92
93 let configuration = device.get_configuration_table().unwrap();
94 println!("Configuration:");
95 for i in 0..60 {
96 print!("{:02X} ", configuration[i]);
97 if (i + 1) % 6 == 0 {
98 println!("");
99 }
100 }
101 println!("Number of addressable header: {}", configuration[0x02]);
102 println!("Number of leds: {}", configuration[0x1B]);
103 println!("Number of RGB headers: {}", configuration[0x1D]);
104
105 device
106 .set_color(&RGB {
107 red: 0,
108 green: 0,
109 blue: 255,
110 })
111 .unwrap();
112
113 device.save_current_color().unwrap();
114 }
115
116 fn test_corsair_lighting_pro() {
117 let api = hidapi::HidApi::new().unwrap();
118 let device = corsair_lighting_pro::Device::new(
119 &api,
120 &RGB {
121 red: 0,
122 green: 255,
123 blue: 0,
124 },
125 );
126
127 for i in 0..=255 {
128 if i % 10 == 0 || i == 255 || i == 0 {
129 device.set_color(&RGB {
130 red: i as u8,
131 green: 255u8 - i as u8,
132 blue: 0,
133 });
134 std::thread::sleep(std::time::Duration::from_millis(200));
135 }
136 }
137 }
138
139 fn test_corsair() {
140 let corsair_controllers = [
141 corsair_vengeance::Controller::new(0x19),
142 corsair_vengeance::Controller::new(0x1B),
143 ];
144
145 for controller in corsair_controllers {
146 controller.set_color(&RGB {
147 red: 0,
148 green: 0,
149 blue: 255,
150 });
151 }
152 }
153
154 fn test_a770() {
155 // a770::set_rgb(255, 0, 0);
156 let mut a770 = a770::A770::new().unwrap();
157 a770.set_color(255, 0, 0).unwrap();
158 }
159
160 fn test_3080ti() {
161 let machine: &mut dyn machine::Machine = &mut machine::MachineLyssMetal::new().unwrap();
162
163 machine.set_color(&RGB {
164 red: 255,
165 green: 0,
166 blue: 0,
167 });
168 }
169
170 const F17H_M01H_THM_TCON_CUR_TMP: u32 = 0x00059800;
171 const F17H_TEMP_OFFSET_FLAG: u32 = 0x80000;
172 const FAMILY_17H_PCI_CONTROL_REGISTER: u32 = 0x60;
173
174 fn test_read_temperature_cpu() {
175 println!("temp cpu: {}", cpu_temperature::read())
176 }
177
178 fn test_read_temperature_a770() {
179 let jiji: &dyn machine::Machine = &machine::MachineJiji::new().unwrap();
180 println!("temp gpu: {}", jiji.get_gpu_tmp());
181 }
182
183 fn test_read_temperature_3080() {
184 nvapi::initialize().expect("Unable to initialize nvapi (Nvidia API)");
185 // if let Ok(gpus) = {
186 // for gpu in gpus {
187 // let thermal = gpu.thermal_settings(None).unwrap()[0];
188 // println!("{:?}", thermal.current_temperature.0)
189 // }
190 // }
191 let gpus = nvapi::PhysicalGpu::enumerate().unwrap();
192 let gpu = &gpus[0];
193 let sensor = gpu.thermal_settings(None).unwrap()[0];
194 println!("{:?}", sensor.current_temperature.0);
195 nvapi::unload().unwrap();
196 }