Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 11a2ac09 authored by howardchung's avatar howardchung
Browse files

Floss: Add gatt client commands in btclient

This adds client-disconnect and configure-mtu in btclient.

Bug: 242266526
Test: run GATT/CL/GAC/BV-01-C and use btclient to configure MTU and
disconnect.

Change-Id: I63bfad4347eba2e09e666891c00cc873fa9bc8c4
parent 009099dc
Loading
Loading
Loading
Loading
+47 −0
Original line number Diff line number Diff line
@@ -133,6 +133,8 @@ fn build_commands() -> HashMap<String, CommandOption> {
                String::from("gatt client-connect <address>"),
                String::from("gatt client-read-phy <address>"),
                String::from("gatt client-discover-services <address>"),
                String::from("gatt client-disconnect <address>"),
                String::from("gatt configure-mtu <address> <mtu>"),
            ],
            description: String::from("GATT tools"),
            function_pointer: CommandHandler::cmd_gatt,
@@ -642,6 +644,27 @@ impl CommandHandler {
                    1,
                );
            }
            "client-disconnect" => {
                if args.len() < 3 {
                    println!("usage: gatt client-disconnect <addr>");
                    return;
                }

                let client_id = self.context.lock().unwrap().gatt_client_id;
                if client_id.is_none() {
                    println!("GATT client is not yet registered.");
                    return;
                }

                let addr = String::from(&args[1]);
                self.context
                    .lock()
                    .unwrap()
                    .gatt_dbus
                    .as_ref()
                    .unwrap()
                    .client_disconnect(client_id.unwrap(), addr);
            }
            "client-read-phy" => {
                if args.len() < 2 {
                    println!("usage: gatt client-read-phy <addr>");
@@ -684,6 +707,30 @@ impl CommandHandler {
                    .unwrap()
                    .discover_services(client_id.unwrap(), addr);
            }
            "configure-mtu" => {
                if args.len() < 4 {
                    println!("usage: gatt configure-mtu <addr> <mtu>");
                    return;
                }

                let client_id = self.context.lock().unwrap().gatt_client_id;
                if client_id.is_none() {
                    println!("GATT client is not yet registered.");
                    return;
                }

                let addr = String::from(&args[1]);
                let mtu = String::from(&args[2]).parse::<i32>();
                if let Ok(m) = mtu {
                    self.context.lock().unwrap().gatt_dbus.as_ref().unwrap().configure_mtu(
                        client_id.unwrap(),
                        addr,
                        m,
                    );
                } else {
                    print_error!("Failed parsing mtu");
                }
            }
            _ => {
                println!("Invalid argument '{}'", args[0]);
            }