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

Commit 858a02f3 authored by Abhishek Pandit-Subedi's avatar Abhishek Pandit-Subedi
Browse files

floss: Change api to set_default_event_mask_except

The suspend implementation in Floss wants to mask away some events to
prevent spurious wakes. This change updates the btif api
|set_default_event_mask| to also accept bit masks that will be disabled
from the final event mask that is sent to the controller.

As part of this change, suspend will now stop calling |clear_event_mask|
during suspend and instead will just disable the Disconnect and Mode
change events only.

Bug: 231345733
Tag: #floss
Test: Manual test on ChromeOS.
Change-Id: I0105085c465666e5a8c0e7890c36072234fe05e2
parent 0e93532c
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@ service AdapterService {
  rpc SetEventFilterConnectionSetupAllDevices(google.protobuf.Empty) returns (google.protobuf.Empty) {}
  rpc AllowWakeByHid(google.protobuf.Empty) returns (google.protobuf.Empty) {}
  rpc RestoreFilterAcceptList(google.protobuf.Empty) returns (google.protobuf.Empty) {}
  rpc SetDefaultEventMask(google.protobuf.Empty) returns (google.protobuf.Empty) {}
  rpc SetDefaultEventMaskExcept(SetDefaultEventMaskExceptRequest) returns (google.protobuf.Empty) {}
  rpc SetEventFilterInquiryResultAllDevices(google.protobuf.Empty) returns (google.protobuf.Empty) {}
}

@@ -184,6 +184,11 @@ message SetVolumeRequest {
  int32 volume = 2;
}

message SetDefaultEventMaskExceptRequest {
  uint64 mask = 1;
  uint64 le_mask = 2;
}

// A Token representing an ACL connection.
// It's acquired via a Connect on the Host service (Bluetooth Core stack in our case).
message Connection {
+3 −2
Original line number Diff line number Diff line
@@ -106,8 +106,9 @@ class AdapterClient(AsyncClosable):
    async def restore_filter_accept_list(self):
        await self.__adapter_stub.RestoreFilterAcceptList(empty_proto.Empty())

    async def set_default_event_mask(self):
        await self.__adapter_stub.SetDefaultEventMask(empty_proto.Empty())
    async def set_default_event_mask_except(self, mask, le_mask):
        await self.__adapter_stub.SetDefaultEventMaskExcept(
            facade_pb2.SetDefaultEventMaskExceptRequest(mask=mask, le_mask=le_mask))

    async def set_event_filter_inquiry_result_all_devices(self):
        await self.__adapter_stub.SetEventFilterInquiryResultAllDevices(empty_proto.Empty())
+2 −2
Original line number Diff line number Diff line
@@ -135,8 +135,8 @@ class TopshimDevice(AsyncClosable):
    def allow_wake_by_hid(self):
        self.__post(self.__adapter.allow_wake_by_hid())

    def set_default_event_mask(self):
        self.__post(self.__adapter.set_default_event_mask())
    def set_default_event_mask_except(self, mask, le_mask):
        self.__post(self.__adapter.set_default_event_mask(mask, le_mask))

    def set_event_filter_inquiry_result_all_devices(self):
        self.__post(self.__adapter.set_event_filter_inquiry_result_all_devices())
+2 −2
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ class SuspendTest(TopshimBaseTest):

    def __verify_no_wake_resume(self):
        # Start resume work
        self.dut().set_default_event_mask()
        self.dut().set_default_event_mask_except(0, 0)
        self.dut().set_event_filter_inquiry_result_all_devices()
        self.dut().set_event_filter_connection_setup_all_devices()
        self.dut().le_rand()
@@ -55,7 +55,7 @@ class SuspendTest(TopshimBaseTest):

    def __verify_wakeful_resume(self, was_a2dp_connected):
        # Start resume work
        self.dut().set_default_event_mask()
        self.dut().set_default_event_mask_except(0, 0)
        self.dut().set_event_filter_inquiry_result_all_devices()
        self.dut().set_event_filter_connection_setup_all_devices()
        if was_a2dp_connected:
+8 −5
Original line number Diff line number Diff line
@@ -4208,16 +4208,19 @@ void bta_dm_restore_filter_accept_list() {

/*******************************************************************************
 *
 * Function        BTA_DmSetDefaultEventMask
 * Function       BTA_DmSetDefaultEventMaskExcept
 *
 * Description    Floss: Set the default event mask for Classic and LE
 * Description    Floss: Set the default event mask for Classic and LE except
 *                the given values (they will be disabled in the final set
 *                mask).
 *
 * Parameters
 * Parameters     Bits set for event mask and le event mask that should be
 *                disabled in the final value.
 *
 *******************************************************************************/
void bta_dm_set_default_event_mask() {
void bta_dm_set_default_event_mask_except(uint64_t mask, uint64_t le_mask) {
  // Autoplumbed
  bluetooth::shim::BTM_SetDefaultEventMask();
  bluetooth::shim::BTM_SetDefaultEventMaskExcept(mask, le_mask);
}

/*******************************************************************************
Loading