Loading system/gd/rust/linux/client/src/command_handler.rs +15 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,7 @@ 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-discover-service-by-uuid-pts <address> <uuid>"), String::from("gatt client-disconnect <address>"), String::from("gatt configure-mtu <address> <mtu>"), String::from("gatt set-direct-connect <true|false>"), Loading Loading @@ -932,6 +933,20 @@ impl CommandHandler { let addr = String::from(get_arg(args, 1)?); self.lock_context().gatt_dbus.as_ref().unwrap().discover_services(client_id, addr); } "client-discover-service-by-uuid-pts" => { let client_id = self .lock_context() .gatt_client_context .client_id .ok_or("GATT client is not yet registered.")?; let addr = String::from(get_arg(args, 1)?); let uuid = String::from(get_arg(args, 2)?); self.lock_context() .gatt_dbus .as_ref() .unwrap() .btif_gattc_discover_service_by_uuid(client_id, addr, uuid); } "configure-mtu" => { let client_id = self .lock_context() Loading system/gd/rust/linux/client/src/dbus_iface.rs +5 −0 Original line number Diff line number Diff line Loading @@ -1451,6 +1451,11 @@ impl IBluetoothGatt for BluetoothGattDBus { dbus_generated!() } #[dbus_method("BtifGattcDiscoverServiceByUuid")] fn btif_gattc_discover_service_by_uuid(&self, client_id: i32, addr: String, uuid: String) { dbus_generated!() } #[dbus_method("ReadCharacteristic")] fn read_characteristic(&self, client_id: i32, addr: String, handle: i32, auth_req: i32) { dbus_generated!() Loading system/gd/rust/linux/service/src/iface_bluetooth_gatt.rs +5 −0 Original line number Diff line number Diff line Loading @@ -783,6 +783,11 @@ impl IBluetoothGatt for IBluetoothGattDBus { dbus_generated!() } #[dbus_method("BtifGattcDiscoverServiceByUuid")] fn btif_gattc_discover_service_by_uuid(&self, client_id: i32, addr: String, uuid: String) { dbus_generated!() } #[dbus_method("ReadCharacteristic")] fn read_characteristic(&self, client_id: i32, addr: String, handle: i32, auth_req: i32) { dbus_generated!() Loading system/gd/rust/linux/stack/src/bluetooth_gatt.rs +23 −0 Original line number Diff line number Diff line Loading @@ -520,6 +520,9 @@ pub trait IBluetoothGatt { /// Enumerates all GATT services on a connected device. fn discover_services(&self, client_id: i32, addr: String); /// Discovers all GATT services on a connected device. Only used by PTS. fn btif_gattc_discover_service_by_uuid(&self, client_id: i32, addr: String, uuid: String); /// Search a GATT service on a connected device based on a UUID. fn discover_service_by_uuid(&self, client_id: i32, addr: String, uuid: String); Loading Loading @@ -2281,6 +2284,26 @@ impl IBluetoothGatt for BluetoothGatt { self.gatt.as_ref().unwrap().lock().unwrap().client.search_service(conn_id.unwrap(), uuid); } fn btif_gattc_discover_service_by_uuid(&self, client_id: i32, addr: String, uuid: String) { let conn_id = match self.context_map.get_conn_id_from_address(client_id, &addr) { None => return, Some(id) => id, }; let uuid = match UuidHelper::parse_string(uuid) { None => return, Some(uuid) => uuid, }; self.gatt .as_ref() .unwrap() .lock() .unwrap() .client .btif_gattc_discover_service_by_uuid(conn_id, &uuid); } fn read_characteristic(&self, client_id: i32, addr: String, handle: i32, auth_req: i32) { let conn_id = self.context_map.get_conn_id_from_address(client_id, &addr); if conn_id.is_none() { Loading Loading
system/gd/rust/linux/client/src/command_handler.rs +15 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,7 @@ 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-discover-service-by-uuid-pts <address> <uuid>"), String::from("gatt client-disconnect <address>"), String::from("gatt configure-mtu <address> <mtu>"), String::from("gatt set-direct-connect <true|false>"), Loading Loading @@ -932,6 +933,20 @@ impl CommandHandler { let addr = String::from(get_arg(args, 1)?); self.lock_context().gatt_dbus.as_ref().unwrap().discover_services(client_id, addr); } "client-discover-service-by-uuid-pts" => { let client_id = self .lock_context() .gatt_client_context .client_id .ok_or("GATT client is not yet registered.")?; let addr = String::from(get_arg(args, 1)?); let uuid = String::from(get_arg(args, 2)?); self.lock_context() .gatt_dbus .as_ref() .unwrap() .btif_gattc_discover_service_by_uuid(client_id, addr, uuid); } "configure-mtu" => { let client_id = self .lock_context() Loading
system/gd/rust/linux/client/src/dbus_iface.rs +5 −0 Original line number Diff line number Diff line Loading @@ -1451,6 +1451,11 @@ impl IBluetoothGatt for BluetoothGattDBus { dbus_generated!() } #[dbus_method("BtifGattcDiscoverServiceByUuid")] fn btif_gattc_discover_service_by_uuid(&self, client_id: i32, addr: String, uuid: String) { dbus_generated!() } #[dbus_method("ReadCharacteristic")] fn read_characteristic(&self, client_id: i32, addr: String, handle: i32, auth_req: i32) { dbus_generated!() Loading
system/gd/rust/linux/service/src/iface_bluetooth_gatt.rs +5 −0 Original line number Diff line number Diff line Loading @@ -783,6 +783,11 @@ impl IBluetoothGatt for IBluetoothGattDBus { dbus_generated!() } #[dbus_method("BtifGattcDiscoverServiceByUuid")] fn btif_gattc_discover_service_by_uuid(&self, client_id: i32, addr: String, uuid: String) { dbus_generated!() } #[dbus_method("ReadCharacteristic")] fn read_characteristic(&self, client_id: i32, addr: String, handle: i32, auth_req: i32) { dbus_generated!() Loading
system/gd/rust/linux/stack/src/bluetooth_gatt.rs +23 −0 Original line number Diff line number Diff line Loading @@ -520,6 +520,9 @@ pub trait IBluetoothGatt { /// Enumerates all GATT services on a connected device. fn discover_services(&self, client_id: i32, addr: String); /// Discovers all GATT services on a connected device. Only used by PTS. fn btif_gattc_discover_service_by_uuid(&self, client_id: i32, addr: String, uuid: String); /// Search a GATT service on a connected device based on a UUID. fn discover_service_by_uuid(&self, client_id: i32, addr: String, uuid: String); Loading Loading @@ -2281,6 +2284,26 @@ impl IBluetoothGatt for BluetoothGatt { self.gatt.as_ref().unwrap().lock().unwrap().client.search_service(conn_id.unwrap(), uuid); } fn btif_gattc_discover_service_by_uuid(&self, client_id: i32, addr: String, uuid: String) { let conn_id = match self.context_map.get_conn_id_from_address(client_id, &addr) { None => return, Some(id) => id, }; let uuid = match UuidHelper::parse_string(uuid) { None => return, Some(uuid) => uuid, }; self.gatt .as_ref() .unwrap() .lock() .unwrap() .client .btif_gattc_discover_service_by_uuid(conn_id, &uuid); } fn read_characteristic(&self, client_id: i32, addr: String, handle: i32, auth_req: i32) { let conn_id = self.context_map.get_conn_id_from_address(client_id, &addr); if conn_id.is_none() { Loading