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

Commit c66e96ff authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Floss: Add GATT client command to send ATT find by type"

parents 86b5c1ea 409a53d4
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -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>"),
@@ -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()
+5 −0
Original line number Diff line number Diff line
@@ -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!()
+5 −0
Original line number Diff line number Diff line
@@ -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!()
+23 −0
Original line number Diff line number Diff line
@@ -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);

@@ -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() {