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

Commit d14c32a8 authored by Rahul Sabnis's avatar Rahul Sabnis
Browse files

Pass the written value for gatt characteristic and descriptor write

callbacks to the java layer

Tag: #feature
Bug: 195157393
Test: Manual
Ignore-AOSP-First: Resolving merge conflicts
Change-Id: I3dee0abd0a0f9e931588d015dd0cd43dd9f8e3d5
parent 7064e220
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -124,7 +124,7 @@ interface IBluetoothGatt {
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
    void readDescriptor(in int clientIf, in String address, in int handle, in int authReq, in AttributionSource attributionSource);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
    void writeDescriptor(in int clientIf, in String address, in int handle,
    int writeDescriptor(in int clientIf, in String address, in int handle,
                            in int authReq, in byte[] value, in AttributionSource attributionSource);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
    void registerForNotification(in int clientIf, in String address, in int handle, in boolean enable, in AttributionSource attributionSource);
+2 −2
Original line number Diff line number Diff line
@@ -30,10 +30,10 @@ oneway interface IBluetoothGattCallback {
    void onPhyRead(in String address, in int txPhy, in int rxPhy, in int status);
    void onSearchComplete(in String address, in List<BluetoothGattService> services, in int status);
    void onCharacteristicRead(in String address, in int status, in int handle, in byte[] value);
    void onCharacteristicWrite(in String address, in int status, in int handle);
    void onCharacteristicWrite(in String address, in int status, in int handle, in byte[] value);
    void onExecuteWrite(in String address, in int status);
    void onDescriptorRead(in String address, in int status, in int handle, in byte[] value);
    void onDescriptorWrite(in String address, in int status, in int handle);
    void onDescriptorWrite(in String address, in int status, in int handle, in byte[] value);
    void onNotify(in String address, in int handle, in byte[] value);
    void onReadRemoteRssi(in String address, in int rssi, in int status);
    void onConfigureMTU(in String address, in int mtu, in int status);
+3 −2
Original line number Diff line number Diff line
@@ -387,7 +387,8 @@ class CsisClientImpl : public CsisClient {
    BtaGattQueue::WriteCharacteristic(
        device->conn_id, csis_instance->svc_data.lock_handle.val_hdl, value,
        GATT_WRITE,
        [](uint16_t conn_id, tGATT_STATUS status, uint16_t handle, void* data) {
        [](uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
           const uint8_t* value, void* data) {
          if (instance)
            instance->OnGattCsisWriteLockRsp(conn_id, status, handle, data);
        },
@@ -1809,7 +1810,7 @@ class CsisClientImpl : public CsisClient {
    BtaGattQueue::WriteDescriptor(
        conn_id, ccc_handle, std::move(value), GATT_WRITE,
        [](uint16_t conn_id, tGATT_STATUS status, uint16_t value_handle,
           void* user_data) {
           uint16_t len, const uint8_t* value, void* user_data) {
          if (instance)
            instance->OnGattWriteCcc(conn_id, status, value_handle, user_data);
        },
+12 −4
Original line number Diff line number Diff line
@@ -386,7 +386,9 @@ class CsisClientTest : public ::testing::Test {
            Invoke([](uint16_t conn_id, uint16_t handle,
                      std::vector<uint8_t> value, tGATT_WRITE_TYPE write_type,
                      GATT_WRITE_OP_CB cb, void* cb_data) -> void {
              if (cb) cb(conn_id, GATT_SUCCESS, handle, cb_data);
              if (cb)
                cb(conn_id, GATT_SUCCESS, handle, value.size(), value.data(),
                   cb_data);
            }));
  }

@@ -935,7 +937,9 @@ TEST_F(CsisMultiClientTest, test_lock_multiple_instances) {
          Invoke([](uint16_t conn_id, uint16_t handle,
                    std::vector<uint8_t> value, tGATT_WRITE_TYPE write_type,
                    GATT_WRITE_OP_CB cb, void* cb_data) -> void {
            if (cb) cb(conn_id, GATT_SUCCESS, handle, cb_data);
            if (cb)
              cb(conn_id, GATT_SUCCESS, handle, value.size(), value.data(),
                 cb_data);
          }));
  CsisClient::Get()->LockGroup(
      1, true,
@@ -964,7 +968,9 @@ TEST_F(CsisMultiClientTest, test_unlock_multiple_instances) {
          Invoke([](uint16_t conn_id, uint16_t handle,
                    std::vector<uint8_t> value, tGATT_WRITE_TYPE write_type,
                    GATT_WRITE_OP_CB cb, void* cb_data) -> void {
            if (cb) cb(conn_id, GATT_SUCCESS, handle, cb_data);
            if (cb)
              cb(conn_id, GATT_SUCCESS, handle, value.size(), value.data(),
                 cb_data);
          }));
  CsisClient::Get()->LockGroup(
      1, true,
@@ -1001,7 +1007,9 @@ TEST_F(CsisMultiClientTest, test_disconnect_locked_multiple_instances) {
          Invoke([](uint16_t conn_id, uint16_t handle,
                    std::vector<uint8_t> value, tGATT_WRITE_TYPE write_type,
                    GATT_WRITE_OP_CB cb, void* cb_data) -> void {
            if (cb) cb(conn_id, GATT_SUCCESS, handle, cb_data);
            if (cb)
              cb(conn_id, GATT_SUCCESS, handle, value.size(), value.data(),
                 cb_data);
          }));
  CsisClient::Get()->LockGroup(
      1, true,
+1 −0
Original line number Diff line number Diff line
@@ -932,6 +932,7 @@ static void bta_gattc_write_cmpl(tBTA_GATTC_CLCB* p_clcb,

  if (cb) {
    cb(p_clcb->bta_conn_id, p_data->status, p_data->p_cmpl->att_value.handle,
       p_data->p_cmpl->att_value.len, p_data->p_cmpl->att_value.value,
       my_cb_data);
  }
}
Loading