90 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
		
		
			
		
	
	
			90 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
|  | use std::io::{self, Read};
 | ||
|  | use virtual_display;
 | ||
|  | 
 | ||
|  | fn prompt_input() -> u8 {
 | ||
|  |     println!("Press  key          execute:");
 | ||
|  |     println!("       1. 'x'       1. exit");
 | ||
|  |     println!("       2. 'i'       2. install or update driver");
 | ||
|  |     println!("       3. 'u'       3. uninstall driver");
 | ||
|  |     println!("       4. 'c'       4. create device");
 | ||
|  |     println!("       5. 'd'       5. destroy device");
 | ||
|  |     println!("       6. '1'       6. plug in monitor 0,1,2");
 | ||
|  |     println!("       7. '4'       7. plug out monitor 0,1,2");
 | ||
|  | 
 | ||
|  |     io::stdin()
 | ||
|  |         .bytes()
 | ||
|  |         .next()
 | ||
|  |         .and_then(|result| result.ok())
 | ||
|  |         .unwrap_or(0)
 | ||
|  | }
 | ||
|  | 
 | ||
|  | fn plug_in() {
 | ||
|  |     println!("Plug in monitor begin");
 | ||
|  |     if let Err(e) = virtual_display::plug_in_monitor() {
 | ||
|  |         println!("{}", e);
 | ||
|  |     } else {
 | ||
|  |         println!("Plug in monitor done");
 | ||
|  |     }
 | ||
|  | }
 | ||
|  | 
 | ||
|  | fn plug_out() {
 | ||
|  |     println!("Plug out monitor begin");
 | ||
|  |     if let Err(e) = virtual_display::plug_out_monitor() {
 | ||
|  |         println!("{}", e);
 | ||
|  |     } else {
 | ||
|  |         println!("Plug out monitor done");
 | ||
|  |     }
 | ||
|  | }
 | ||
|  | 
 | ||
|  | fn main() {
 | ||
|  |     loop {
 | ||
|  |         match prompt_input() as char {
 | ||
|  |             'x' => break,
 | ||
|  |             'i' => {
 | ||
|  |                 println!("Install or update driver begin");
 | ||
|  |                 let mut reboot_required = false;
 | ||
|  |                 if let Err(e) = virtual_display::install_update_driver(&mut reboot_required) {
 | ||
|  |                     println!("{}", e);
 | ||
|  |                 } else {
 | ||
|  |                     println!(
 | ||
|  |                         "Install or update driver done, reboot is {} required",
 | ||
|  |                         if reboot_required { "" } else { "not" }
 | ||
|  |                     );
 | ||
|  |                 }
 | ||
|  |             }
 | ||
|  |             'u' => {
 | ||
|  |                 println!("Uninstall driver begin");
 | ||
|  |                 let mut reboot_required = false;
 | ||
|  |                 if let Err(e) = virtual_display::uninstall_driver(&mut reboot_required) {
 | ||
|  |                     println!("{}", e);
 | ||
|  |                 } else {
 | ||
|  |                     println!(
 | ||
|  |                         "Uninstall driver done, reboot is {} required",
 | ||
|  |                         if reboot_required { "" } else { "not" }
 | ||
|  |                     );
 | ||
|  |                 }
 | ||
|  |             }
 | ||
|  |             'c' => {
 | ||
|  |                 println!("Create device begin");
 | ||
|  |                 if virtual_display::is_device_created() {
 | ||
|  |                     println!("Device created before");
 | ||
|  |                     continue;
 | ||
|  |                 }
 | ||
|  |                 if let Err(e) = virtual_display::create_device() {
 | ||
|  |                     println!("{}", e);
 | ||
|  |                 } else {
 | ||
|  |                     println!("Create device done");
 | ||
|  |                 }
 | ||
|  |             }
 | ||
|  |             'd' => {
 | ||
|  |                 println!("Close device begin");
 | ||
|  |                 virtual_display::close_device();
 | ||
|  |                 println!("Close device done");
 | ||
|  |             }
 | ||
|  |             '1' => plug_in(),
 | ||
|  |             '4' => plug_out(),
 | ||
|  |             _ => {}
 | ||
|  |         }
 | ||
|  |     }
 | ||
|  | }
 |