Loading system/gd/rust/linux/client/src/callbacks.rs +1 −4 Original line number Original line Diff line number Diff line Loading @@ -156,7 +156,7 @@ impl IBluetoothCallback for BtCallback { passkey: u32, passkey: u32, ) { ) { match variant { match variant { BtSspVariant::PasskeyNotification => { BtSspVariant::PasskeyNotification | BtSspVariant::PasskeyConfirmation => { print_info!( print_info!( "Device [{}: {}] would like to pair, enter passkey on remote device: {:06}", "Device [{}: {}] would like to pair, enter passkey on remote device: {:06}", &remote_device.address, &remote_device.address, Loading Loading @@ -189,9 +189,6 @@ impl IBluetoothCallback for BtCallback { BtSspVariant::PasskeyEntry => { BtSspVariant::PasskeyEntry => { println!("Got PasskeyEntry but it is not supported..."); println!("Got PasskeyEntry but it is not supported..."); } } BtSspVariant::PasskeyConfirmation => { println!("Got PasskeyConfirmation but there's nothing to do..."); } } } } } Loading system/gd/rust/linux/client/src/command_handler.rs +188 −116 Original line number Original line Diff line number Diff line Loading @@ -112,7 +112,12 @@ fn build_commands() -> HashMap<String, CommandOption> { command_options.insert( command_options.insert( String::from("device"), String::from("device"), CommandOption { CommandOption { rules: vec![String::from("device <connect|disconnect|info|set-alias> <address>")], rules: vec![ String::from("device <connect|disconnect|info|set-alias> <address>"), String::from("device <set-pairing-confirmation> <address> <accept|reject>"), String::from("device <set-pairing-pin> <address> <pin|reject>"), String::from("device <set-pairing-passkey> <address> <passkey|reject>"), ], description: String::from("Take action on a remote device. (i.e. info)"), description: String::from("Take action on a remote device. (i.e. info)"), function_pointer: CommandHandler::cmd_device, function_pointer: CommandHandler::cmd_device, }, }, Loading Loading @@ -556,8 +561,7 @@ impl CommandHandler { return; return; } } enforce_arg_len(args, 2, "device <connect|disconnect|info|set-alias> <address>", || { enforce_arg_len(args, 2, "device <commands>", || match &args[0][0..] { match &args[0][0..] { "connect" => { "connect" => { let device = BluetoothDevice { let device = BluetoothDevice { address: String::from(&args[1]), address: String::from(&args[1]), Loading Loading @@ -691,9 +695,77 @@ impl CommandHandler { .unwrap() .unwrap() .set_remote_alias(device.clone(), new_alias.clone()); .set_remote_alias(device.clone(), new_alias.clone()); } } "set-pairing-confirmation" => { if args.len() < 4 { println!("usage: device set-pairing-confirmation <address> <accept|reject>"); return; } let device = BluetoothDevice { address: String::from(&args[1]), name: String::from("") }; let accept = match &args[2][0..] { "accept" => true, "reject" => false, _ => { _ => { println!("Invalid argument '{}'", args[0]); println!("Failed to parse '{}'", args[2]); return; } } }; self.context .lock() .unwrap() .adapter_dbus .as_mut() .unwrap() .set_pairing_confirmation(device.clone(), accept); } "set-pairing-pin" => { if args.len() < 4 { println!("usage: device set-pairing-pin <address> <pin|reject>"); return; } let device = BluetoothDevice { address: String::from(&args[1]), name: String::from("") }; let (accept, pin) = match (&args[2][0..], String::from(&args[2]).parse::<u32>()) { (_, Ok(p)) => (true, Vec::from(p.to_ne_bytes())), ("reject", _) => (false, vec![]), _ => { println!("Failed to parse '{}'", args[2]); return; } }; self.context.lock().unwrap().adapter_dbus.as_mut().unwrap().set_pin( device.clone(), accept, pin, ); } "set-pairing-passkey" => { if args.len() < 4 { println!("usage: device set-pairing-passkey <address> <passkey|reject>"); return; } let device = BluetoothDevice { address: String::from(&args[1]), name: String::from("") }; let (accept, passkey) = match (&args[2][0..], String::from(&args[2]).parse::<u32>()) { (_, Ok(p)) => (true, Vec::from(p.to_ne_bytes())), ("reject", _) => (false, vec![]), _ => { println!("Failed to parse '{}'", args[2]); return; } }; self.context.lock().unwrap().adapter_dbus.as_mut().unwrap().set_passkey( device.clone(), accept, passkey, ); } _ => { println!("Invalid argument '{}'", args[0]); } } }); }); } } Loading Loading
system/gd/rust/linux/client/src/callbacks.rs +1 −4 Original line number Original line Diff line number Diff line Loading @@ -156,7 +156,7 @@ impl IBluetoothCallback for BtCallback { passkey: u32, passkey: u32, ) { ) { match variant { match variant { BtSspVariant::PasskeyNotification => { BtSspVariant::PasskeyNotification | BtSspVariant::PasskeyConfirmation => { print_info!( print_info!( "Device [{}: {}] would like to pair, enter passkey on remote device: {:06}", "Device [{}: {}] would like to pair, enter passkey on remote device: {:06}", &remote_device.address, &remote_device.address, Loading Loading @@ -189,9 +189,6 @@ impl IBluetoothCallback for BtCallback { BtSspVariant::PasskeyEntry => { BtSspVariant::PasskeyEntry => { println!("Got PasskeyEntry but it is not supported..."); println!("Got PasskeyEntry but it is not supported..."); } } BtSspVariant::PasskeyConfirmation => { println!("Got PasskeyConfirmation but there's nothing to do..."); } } } } } Loading
system/gd/rust/linux/client/src/command_handler.rs +188 −116 Original line number Original line Diff line number Diff line Loading @@ -112,7 +112,12 @@ fn build_commands() -> HashMap<String, CommandOption> { command_options.insert( command_options.insert( String::from("device"), String::from("device"), CommandOption { CommandOption { rules: vec![String::from("device <connect|disconnect|info|set-alias> <address>")], rules: vec![ String::from("device <connect|disconnect|info|set-alias> <address>"), String::from("device <set-pairing-confirmation> <address> <accept|reject>"), String::from("device <set-pairing-pin> <address> <pin|reject>"), String::from("device <set-pairing-passkey> <address> <passkey|reject>"), ], description: String::from("Take action on a remote device. (i.e. info)"), description: String::from("Take action on a remote device. (i.e. info)"), function_pointer: CommandHandler::cmd_device, function_pointer: CommandHandler::cmd_device, }, }, Loading Loading @@ -556,8 +561,7 @@ impl CommandHandler { return; return; } } enforce_arg_len(args, 2, "device <connect|disconnect|info|set-alias> <address>", || { enforce_arg_len(args, 2, "device <commands>", || match &args[0][0..] { match &args[0][0..] { "connect" => { "connect" => { let device = BluetoothDevice { let device = BluetoothDevice { address: String::from(&args[1]), address: String::from(&args[1]), Loading Loading @@ -691,9 +695,77 @@ impl CommandHandler { .unwrap() .unwrap() .set_remote_alias(device.clone(), new_alias.clone()); .set_remote_alias(device.clone(), new_alias.clone()); } } "set-pairing-confirmation" => { if args.len() < 4 { println!("usage: device set-pairing-confirmation <address> <accept|reject>"); return; } let device = BluetoothDevice { address: String::from(&args[1]), name: String::from("") }; let accept = match &args[2][0..] { "accept" => true, "reject" => false, _ => { _ => { println!("Invalid argument '{}'", args[0]); println!("Failed to parse '{}'", args[2]); return; } } }; self.context .lock() .unwrap() .adapter_dbus .as_mut() .unwrap() .set_pairing_confirmation(device.clone(), accept); } "set-pairing-pin" => { if args.len() < 4 { println!("usage: device set-pairing-pin <address> <pin|reject>"); return; } let device = BluetoothDevice { address: String::from(&args[1]), name: String::from("") }; let (accept, pin) = match (&args[2][0..], String::from(&args[2]).parse::<u32>()) { (_, Ok(p)) => (true, Vec::from(p.to_ne_bytes())), ("reject", _) => (false, vec![]), _ => { println!("Failed to parse '{}'", args[2]); return; } }; self.context.lock().unwrap().adapter_dbus.as_mut().unwrap().set_pin( device.clone(), accept, pin, ); } "set-pairing-passkey" => { if args.len() < 4 { println!("usage: device set-pairing-passkey <address> <passkey|reject>"); return; } let device = BluetoothDevice { address: String::from(&args[1]), name: String::from("") }; let (accept, passkey) = match (&args[2][0..], String::from(&args[2]).parse::<u32>()) { (_, Ok(p)) => (true, Vec::from(p.to_ne_bytes())), ("reject", _) => (false, vec![]), _ => { println!("Failed to parse '{}'", args[2]); return; } }; self.context.lock().unwrap().adapter_dbus.as_mut().unwrap().set_passkey( device.clone(), accept, passkey, ); } _ => { println!("Invalid argument '{}'", args[0]); } } }); }); } } Loading