From e6ee74224253a34288df6ef2433ba30d533be5d5 Mon Sep 17 00:00:00 2001 From: linzlinz <2495670683@qq.com> Date: Tue, 1 Apr 2025 15:11:24 +0800 Subject: [PATCH] ble advertising handle --- .../inner/ipc/include/bluetooth_ble_advertiser_proxy.h | 2 +- .../inner/ipc/interface/i_bluetooth_ble_advertiser.h | 2 +- .../inner/ipc/src/bluetooth_ble_advertiser_proxy.cpp | 7 ++++++- frameworks/inner/src/bluetooth_ble_advertiser.cpp | 4 ++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/frameworks/inner/ipc/include/bluetooth_ble_advertiser_proxy.h b/frameworks/inner/ipc/include/bluetooth_ble_advertiser_proxy.h index 96a397ab..6e56e32f 100644 --- a/frameworks/inner/ipc/include/bluetooth_ble_advertiser_proxy.h +++ b/frameworks/inner/ipc/include/bluetooth_ble_advertiser_proxy.h @@ -36,7 +36,7 @@ public: int DisableAdvertising(uint8_t advHandle) override; int StopAdvertising(int32_t advHandle) override; void Close(int32_t advHandle) override; - int32_t GetAdvertiserHandle(int32_t &advHandle) override; + int32_t GetAdvertiserHandle(int32_t &advHandle, const sptr &callback) override; void SetAdvertisingData(const BluetoothBleAdvertiserData &advData, const BluetoothBleAdvertiserData &scanResponse, int32_t advHandle) override; int ChangeAdvertisingParams(uint8_t advHandle, const BluetoothBleAdvertiserSettings &settings) override; diff --git a/frameworks/inner/ipc/interface/i_bluetooth_ble_advertiser.h b/frameworks/inner/ipc/interface/i_bluetooth_ble_advertiser.h index 8185ec2f..d8a62673 100644 --- a/frameworks/inner/ipc/interface/i_bluetooth_ble_advertiser.h +++ b/frameworks/inner/ipc/interface/i_bluetooth_ble_advertiser.h @@ -39,7 +39,7 @@ public: virtual int DisableAdvertising(uint8_t advHandle) = 0; virtual int StopAdvertising(int32_t advHandle) = 0; virtual void Close(int32_t advHandle) = 0; - virtual int32_t GetAdvertiserHandle(int32_t &advHandle) = 0; + virtual int32_t GetAdvertiserHandle(int32_t &advHandle, const sptr &callback) = 0; virtual void SetAdvertisingData(const BluetoothBleAdvertiserData &advData, const BluetoothBleAdvertiserData &scanResponse, int32_t advHandle) = 0; virtual int ChangeAdvertisingParams(uint8_t advHandle, const BluetoothBleAdvertiserSettings &settings) = 0; diff --git a/frameworks/inner/ipc/src/bluetooth_ble_advertiser_proxy.cpp b/frameworks/inner/ipc/src/bluetooth_ble_advertiser_proxy.cpp index b9654c7e..94ff3853 100644 --- a/frameworks/inner/ipc/src/bluetooth_ble_advertiser_proxy.cpp +++ b/frameworks/inner/ipc/src/bluetooth_ble_advertiser_proxy.cpp @@ -216,13 +216,18 @@ void BluetoothBleAdvertiserProxy::Close(int32_t advHandle) } } -int32_t BluetoothBleAdvertiserProxy::GetAdvertiserHandle(int32_t &advHandle) +int32_t BluetoothBleAdvertiserProxy::GetAdvertiserHandle(int32_t &advHandle, + const sptr &callback) { MessageParcel data; if (!data.WriteInterfaceToken(BluetoothBleAdvertiserProxy::GetDescriptor())) { HILOGW("[GetAdvertiserHandle] fail: write interface token failed."); return BT_ERR_INTERNAL_ERROR; } + if (!data.WriteRemoteObject(callback->AsObject())) { + HILOGW("[GetAdvertiserHandle] fail: write callback failed."); + return BT_ERR_INTERNAL_ERROR; + } MessageParcel reply; MessageOption option = {MessageOption::TF_SYNC}; diff --git a/frameworks/inner/src/bluetooth_ble_advertiser.cpp b/frameworks/inner/src/bluetooth_ble_advertiser.cpp index d3bba56e..91805659 100644 --- a/frameworks/inner/src/bluetooth_ble_advertiser.cpp +++ b/frameworks/inner/src/bluetooth_ble_advertiser.cpp @@ -365,7 +365,7 @@ int BleAdvertiser::StartAdvertising(const BleAdvertiserSettings &settings, const if (pimpl->callbacks_.IsExistAdvertiserCallback(callback, advHandle)) { ret = proxy->StartAdvertising(setting, bleAdvertiserData, bleScanResponse, advHandle, duration, false); } else { - ret = proxy->GetAdvertiserHandle(advHandle); + ret = proxy->GetAdvertiserHandle(advHandle, pimpl->callbackImp_); if (ret != BT_NO_ERROR || advHandle == BLE_INVALID_ADVERTISING_HANDLE) { HILOGE("Invalid advertising handle"); callback->OnStartResultEvent(BT_ERR_INTERNAL_ERROR, static_cast(BLE_INVALID_ADVERTISING_HANDLE)); @@ -413,7 +413,7 @@ int BleAdvertiser::StartAdvertising(const BleAdvertiserSettings &settings, const if (pimpl->callbacks_.IsExistAdvertiserCallback(callback, advHandle)) { ret = proxy->StartAdvertising(setting, bleAdvertiserData, bleScanResponse, advHandle, duration, true); } else { - ret = proxy->GetAdvertiserHandle(advHandle); + ret = proxy->GetAdvertiserHandle(advHandle, pimpl->callbackImp_); if (ret != BT_NO_ERROR || advHandle == BLE_INVALID_ADVERTISING_HANDLE) { HILOGE("Invalid advertising handle"); callback->OnStartResultEvent(BT_ERR_INTERNAL_ERROR, BLE_INVALID_ADVERTISING_HANDLE); -- Gitee