From: sangrae.kim Date: Tue, 12 Apr 2016 01:34:16 +0000 (+0900) Subject: [Bluetooth] Fixed advertise callback issue X-Git-Tag: submit/tizen/20160418.070226^2~16^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8086f4960a71365b7b3cc00f058e491956e6993c;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Bluetooth] Fixed advertise callback issue [Verification] TCT pass rate: Auto: 100% (255/255/0/0/0) Manual: 100% (145/145/0/0/0) Change-Id: Iee8a10e8b25a684b77cd4f2eb8de2a0f14acf943 Signed-off-by: sangrae.kim --- diff --git a/src/bluetooth/bluetooth_api.js b/src/bluetooth/bluetooth_api.js index d1eaee4a..06c5fe92 100755 --- a/src/bluetooth/bluetooth_api.js +++ b/src/bluetooth/bluetooth_api.js @@ -1370,6 +1370,9 @@ var _bleAdvertiseListener = _singleListenerBuilder('BluetoothLEAdvertiseCallback case 'onstate': if (successCallback) { successCallback(native.getResultObject(event)); + if (native.getResultObject(event) == 'STOPPED') { + _bleAdvertiseListener.removeListener(); + } } return ret; @@ -1481,7 +1484,6 @@ BluetoothLEAdapter.prototype.startAdvertise = function() { BluetoothLEAdapter.prototype.stopAdvertise = function() { console.log('Entered BluetoothLEAdapter.stopAdvertise()'); - _bleAdvertiseListener.removeListener(); var result = native.callSync('BluetoothLEAdapter_stopAdvertise', {}); if (native.isFailure(result)) { diff --git a/src/bluetooth/bluetooth_le_adapter.cc b/src/bluetooth/bluetooth_le_adapter.cc index f34abd95..7447289a 100755 --- a/src/bluetooth/bluetooth_le_adapter.cc +++ b/src/bluetooth/bluetooth_le_adapter.cc @@ -693,15 +693,6 @@ void BluetoothLEAdapter::StopAdvertise(const picojson::value& data, picojson::ob return; } - ret = bt_adapter_le_destroy_advertiser(bt_advertiser_); - if (BT_ERROR_NONE != ret && BT_ERROR_NOT_IN_PROGRESS != ret) { - LogAndReportError( - PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to destroy advertiser"), &out, - ("bt_adapter_le_destroy_advertiser() failed with: %d (%s)", - ret, get_error_message(ret))); - return; - } - bt_advertiser_ = nullptr; } else { LoggerD("Advertising is not in progress"); @@ -790,6 +781,17 @@ void BluetoothLEAdapter::OnAdvertiseResult( LoggerD("Advertise state is: %s", state); data_obj->insert(std::make_pair(kAction, picojson::value(kOnAdvertiseState))); ReportSuccess(picojson::value(state), *data_obj); + if (adv_state == BT_ADAPTER_LE_ADVERTISING_STOPPED){ + LoggerD("Advertiser destroy"); + int ret = bt_adapter_le_destroy_advertiser(advertiser); + if (BT_ERROR_NONE != ret && BT_ERROR_NOT_IN_PROGRESS != ret) { + LogAndReportError( + PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to destroy advertiser"), data_obj, + ("bt_adapter_le_destroy_advertiser() failed with: %d (%s)", + ret, get_error_message(ret))); + return; + } + } } adapter->instance_.FireEvent(kAdvertiseEvent, value);