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

Commit 83be4377 authored by Himanshu Rawat's avatar Himanshu Rawat Committed by Gerrit Code Review
Browse files

Merge changes I40beb6e2,Id980c8cc,I44002eea,I035c4a59 into main

* changes:
  Modified LeAudioServiceDiscoveryTest
  Modified HidHostDualModeTest as per new hid rpc call
  Modified HidHostTest as per new hid rpc call
  Bumble Java Android Headtracker Test Infra Changes
parents 9a03905d c75eee95
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -83,6 +83,9 @@ import org.mockito.MockitoAnnotations;
import org.mockito.hamcrest.MockitoHamcrest;
import org.mockito.stubbing.Answer;

import pandora.HIDGrpc;
import pandora.HidProto.HidServiceType;
import pandora.HidProto.ServiceRequest;
import pandora.HostProto.AdvertiseRequest;
import pandora.HostProto.OwnAddressType;

@@ -106,6 +109,7 @@ public class HidHostDualModeTest {
            InstrumentationRegistry.getInstrumentation().getTargetContext();
    private final BluetoothAdapter mAdapter =
            mContext.getSystemService(BluetoothManager.class).getAdapter();
    private HIDGrpc.HIDBlockingStub mHidBlockingStub;

    @Rule(order = 0)
    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
@@ -272,6 +276,11 @@ public class HidHostDualModeTest {
        mAdapter.getProfileProxy(mContext, mProfileServiceListener, BluetoothProfile.HEADSET);
        BluetoothHeadset hfpService =
                (BluetoothHeadset) verifyProfileServiceConnected(BluetoothProfile.HEADSET);
        mHidBlockingStub = mBumble.hidBlocking();
        mHidBlockingStub.registerService(
                ServiceRequest.newBuilder()
                        .setServiceType(HidServiceType.SERVICE_TYPE_BOTH)
                        .build());

        AdvertiseRequest request =
                AdvertiseRequest.newBuilder()
+6 −0
Original line number Diff line number Diff line
@@ -44,8 +44,10 @@ import org.junit.Test;
import org.junit.runner.RunWith;

import pandora.HIDGrpc;
import pandora.HidProto.HidServiceType;
import pandora.HidProto.ProtocolModeEvent;
import pandora.HidProto.ReportEvent;
import pandora.HidProto.ServiceRequest;

import java.time.Duration;
import java.util.Iterator;
@@ -233,6 +235,10 @@ public class HidHostTest {
        mAdapter.getProfileProxy(
                mContext, mBluetoothProfileServiceListener, BluetoothProfile.HEADSET);
        mHidBlockingStub = mBumble.hidBlocking();
        mHidBlockingStub.registerService(
                ServiceRequest.newBuilder()
                        .setServiceType(HidServiceType.SERVICE_TYPE_HID)
                        .build());
        mFutureConnectionIntent = SettableFuture.create();

        mDevice = mBumble.getRemoteDevice();
+1 −3
Original line number Diff line number Diff line
@@ -269,13 +269,11 @@ public class LeAudioServiceDiscoveryTest {
                        BluetoothDevice.EXTRA_UUID,
                        Matchers.allOf(
                                Matchers.hasItemInArray(BluetoothUuid.HFP),
                                Matchers.hasItemInArray(BluetoothUuid.HID),
                                Matchers.hasItemInArray(BluetoothUuid.A2DP_SOURCE),
                                Matchers.hasItemInArray(BluetoothUuid.A2DP_SINK),
                                Matchers.hasItemInArray(BluetoothUuid.AVRCP),
                                Matchers.hasItemInArray(BluetoothUuid.LE_AUDIO),
                                Matchers.hasItemInArray(BluetoothUuid.BATTERY),
                                Matchers.hasItemInArray(BluetoothUuid.HOGP))));
                                Matchers.hasItemInArray(BluetoothUuid.BATTERY))));
        unregisterIntentActions(
                BluetoothDevice.ACTION_UUID,
                BluetoothDevice.ACTION_ACL_CONNECTED,
+11 −0
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@ option java_outer_classname = "HidProto";
import "google/protobuf/empty.proto";

service HID {
  // Register service
  rpc RegisterService(ServiceRequest) returns (google.protobuf.Empty);
  // Connect HID Host
  rpc ConnectHost(google.protobuf.Empty) returns (google.protobuf.Empty);
  // Disconnect HID Host
@@ -39,6 +41,15 @@ enum HidReportId {
  HID_INVALID_RPT_ID = 3;
}

enum HidServiceType {
  SERVICE_TYPE_HID = 0;
  SERVICE_TYPE_HOGP = 1;
  SERVICE_TYPE_BOTH = 2;
}

message ServiceRequest {
  HidServiceType service_type = 1;
}
message SendHostReportRequest {
  bytes address = 1;
  HidReportType report_type = 2;
+32 −14
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ from pandora_experimental.hid_pb2 import (
    PROTOCOL_REPORT_MODE,
    PROTOCOL_BOOT_MODE,
    PROTOCOL_UNSUPPORTED_MODE,
    SERVICE_TYPE_HID,
    SERVICE_TYPE_HOGP,
)

from bumble.core import (
@@ -702,20 +704,11 @@ def on_virtual_cable_unplug_cb():


hid_protoMode_queue = None


# This class implements the Hid Pandora interface.
class HIDService(HIDServicer):

hid_device = None

    def __init__(self, device: Device) -> None:
        super().__init__()
        self.device = device

def register_hid(self) -> None:
    self.device.sdp_service_records.update(sdp_records())
        self.event_queue: Optional[asyncio.Queue[ProtocolModeEvent]] = None
        hogp_device(self.device)
        logging.info(f'Hid device register: ')
    global hid_device
    hid_device = HID_Device(self.device)
    # Register for  call backs
@@ -726,6 +719,31 @@ class HIDService(HIDServicer):
    # Register for virtual cable unplug call back
    hid_device.on('virtual_cable_unplug', on_virtual_cable_unplug_cb)


# This class implements the Hid Pandora interface.
class HIDService(HIDServicer):

    def __init__(self, device: Device) -> None:
        super().__init__()
        self.device = device
        self.event_queue: Optional[asyncio.Queue[ProtocolModeEvent]] = None

    @utils.rpc
    async def RegisterService(self, request: empty_pb2.Empty, context: grpc.ServicerContext) -> empty_pb2.Empty:

        if request.service_type == SERVICE_TYPE_HID:
            logging.info(f'Registering HID')
            register_hid(self)
        elif request.service_type == SERVICE_TYPE_HOGP:
            logging.info(f'Registering HOGP')
            hogp_device(self.device)
        else:
            logging.info(f'Registering both HID and HOGP')
            register_hid(self)
            hogp_device(self.device)

        return empty_pb2.Empty()

    @utils.rpc
    async def ConnectHost(self, request: empty_pb2.Empty, context: grpc.ServicerContext) -> empty_pb2.Empty: