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

Commit 2307f284 authored by Charlie Boutier's avatar Charlie Boutier
Browse files

Avatar: Modify Incomplete UUID to Complete

Test: atest Avatar
Bug: 266125007
Change-Id: Ib4e787b3a473ff6fe771c79364fd1e08057f41fa
parent b4e66c12
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -207,7 +207,7 @@ class GAPProxy(ProfileProxy):

        self.host.StartAdvertising(
            own_address_type=OwnAddressType.PUBLIC,
            data=DataTypes(incomplete_service_class_uuids128=["955798ce-3022-455c-b759-ee8edcd73d1a"],))
            data=DataTypes(complete_service_class_uuids128=["955798ce-3022-455c-b759-ee8edcd73d1a"],))
        return "OK"

    @assert_description
+23 −15
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import android.bluetooth.BluetoothDevice.TRANSPORT_BREDR
import android.bluetooth.BluetoothDevice.TRANSPORT_LE
import android.bluetooth.BluetoothManager
import android.bluetooth.BluetoothProfile
import android.bluetooth.BluetoothUuid;
import android.bluetooth.BluetoothUuid
import android.bluetooth.le.AdvertiseCallback
import android.bluetooth.le.AdvertiseData
import android.bluetooth.le.AdvertiseSettings
@@ -548,21 +548,23 @@ class Host(
          val dataTypesRequest = request.data

          if (
            !dataTypesRequest.getCompleteServiceClassUuids16List().isEmpty() or
              !dataTypesRequest.getCompleteServiceClassUuids32List().isEmpty() or
              !dataTypesRequest.getCompleteServiceClassUuids128List().isEmpty()
            !dataTypesRequest.getIncompleteServiceClassUuids16List().isEmpty() or
              !dataTypesRequest.getIncompleteServiceClassUuids32List().isEmpty() or
              !dataTypesRequest.getIncompleteServiceClassUuids128List().isEmpty()
          ) {
            Log.e(TAG, "Complete Service Class Uuids not supported")
            Log.e(TAG, "Incomplete Service Class Uuids not supported")
            throw Status.UNKNOWN.asException()
          }

          for (service_uuid in dataTypesRequest.getIncompleteServiceClassUuids16List()) {
            advertisingDataBuilder.addServiceUuid(ParcelUuid.fromString(service_uuid))
          for (service_uuid in dataTypesRequest.getCompleteServiceClassUuids16List()) {
            val uuid16 = "0000${service_uuid}-0000-1000-8000-00805F9B34FB"
            advertisingDataBuilder.addServiceUuid(ParcelUuid.fromString(uuid16))
          }
          for (service_uuid in dataTypesRequest.getIncompleteServiceClassUuids32List()) {
          for (service_uuid in dataTypesRequest.getCompleteServiceClassUuids32List()) {
            val uuid32 = "${service_uuid}-0000-1000-8000-00805F9B34FB"
            advertisingDataBuilder.addServiceUuid(ParcelUuid.fromString(service_uuid))
          }
          for (service_uuid in dataTypesRequest.getIncompleteServiceClassUuids128List()) {
          for (service_uuid in dataTypesRequest.getCompleteServiceClassUuids128List()) {
            advertisingDataBuilder.addServiceUuid(ParcelUuid.fromString(service_uuid))
          }

@@ -649,18 +651,24 @@ class Host(
                if (BluetoothUuid.is16BitUuid(parcelUuid)) {
                  val uuid16 = parcelUuid.uuid.toString().substring(4, 8).uppercase()
                  dataTypesBuilder.addIncompleteServiceClassUuids16(uuid16)
                  dataTypesBuilder.putServiceDataUuid16(uuid16,
                                                        ByteString.copyFrom(serviceDataEntry.value))
                  dataTypesBuilder.putServiceDataUuid16(
                    uuid16,
                    ByteString.copyFrom(serviceDataEntry.value)
                  )
                } else if (BluetoothUuid.is32BitUuid(parcelUuid)) {
                  val uuid32 = parcelUuid.uuid.toString().substring(0, 8).uppercase()
                  dataTypesBuilder.addIncompleteServiceClassUuids32(uuid32)
                  dataTypesBuilder.putServiceDataUuid32(uuid32,
                                                        ByteString.copyFrom(serviceDataEntry.value))
                  dataTypesBuilder.putServiceDataUuid32(
                    uuid32,
                    ByteString.copyFrom(serviceDataEntry.value)
                  )
                } else {
                  val uuid128 = parcelUuid.uuid.toString().uppercase()
                  dataTypesBuilder.addIncompleteServiceClassUuids128(uuid128)
                  dataTypesBuilder.putServiceDataUuid128(uuid128,
                                                         ByteString.copyFrom(serviceDataEntry.value))
                  dataTypesBuilder.putServiceDataUuid128(
                    uuid128,
                    ByteString.copyFrom(serviceDataEntry.value)
                  )
                }
              }
              // Flags DataTypes CSSv10 1.3 Flags
+11 −2
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.content.IntentFilter
import android.util.Log
import com.google.protobuf.BoolValue
import com.google.protobuf.Empty
import io.grpc.Status
import io.grpc.stub.StreamObserver
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -75,8 +76,16 @@ class SecurityStorage(private val context: Context) : SecurityStorageImplBase()

  override fun deleteBond(request: DeleteBondRequest, responseObserver: StreamObserver<Empty>) {
    grpcUnary(globalScope, responseObserver) {
      check(request.getAddressCase() == DeleteBondRequest.AddressCase.PUBLIC)
      val bluetoothDevice = request.public.toBluetoothDevice(bluetoothAdapter)
      val (address, type) =
        when (request.getAddressCase()!!) {
          DeleteBondRequest.AddressCase.PUBLIC ->
            Pair(request.public, BluetoothDevice.ADDRESS_TYPE_PUBLIC)
          DeleteBondRequest.AddressCase.RANDOM ->
            Pair(request.random, BluetoothDevice.ADDRESS_TYPE_RANDOM)
          DeleteBondRequest.AddressCase.ADDRESS_NOT_SET -> throw Status.UNKNOWN.asException()
        }
      val bluetoothDevice =
        bluetoothAdapter.getRemoteLeDevice(address.decodeAsMacAddressToString(), type)
      Log.i(TAG, "deleteBond: device=$bluetoothDevice")

      val unbonded =