diff --git a/frameworks/inner/ipc/include/bluetooth_ble_advertiser_proxy.h b/frameworks/inner/ipc/include/bluetooth_ble_advertiser_proxy.h index 96a397ab9d607e9bb200591ea131a19aff197277..6e56e32ff1896cd62fa87c3285e1d7bef3496edd 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 8185ec2f24bdd4217170ad367b64b198eab19d77..d8a626730dd947145bdba1b2985612bb69f45d3e 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 b9654c7eaa5eefda2e139defcfbd16324f3a019b..94ff3853aad30b6374027436674e4f83fd2da741 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 d3bba56e994c4b5f338720b2baaaf1dad2084266..91805659093b1772b7d256b019cee8fec0f18fe7 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);