diff --git a/frameworks/inner/src/bluetooth_ble_advertiser.cpp b/frameworks/inner/src/bluetooth_ble_advertiser.cpp index 91805659093b1772b7d256b019cee8fec0f18fe7..1c10698489ee87f2edeeea6f30e0ab9bf82c87e4 100644 --- a/frameworks/inner/src/bluetooth_ble_advertiser.cpp +++ b/frameworks/inner/src/bluetooth_ble_advertiser.cpp @@ -316,12 +316,12 @@ int32_t BleAdvertiser::impl::CheckAdvertiserData(const BluetoothBleAdvertiserSet uint32_t size = GetAdvertiserTotalBytes(advData, setting.IsConnectable()); if (size > maxSize) { HILOGE("bleAdvertiserData size = %{public}d, maxSize = %{public}d", size, maxSize); - return BT_ERR_INTERNAL_ERROR; + return BT_ERR_BLE_ADV_DATA_EXCEED_LIMIT; } size = GetAdvertiserTotalBytes(scanResponse, false); if (size > maxSize) { HILOGE("bleScanResponse size = %{public}d, maxSize = %{public}d,", size, maxSize); - return BT_ERR_INTERNAL_ERROR; + return BT_ERR_BLE_ADV_DATA_EXCEED_LIMIT; } return BT_NO_ERROR; } @@ -366,7 +366,13 @@ int BleAdvertiser::StartAdvertising(const BleAdvertiserSettings &settings, const ret = proxy->StartAdvertising(setting, bleAdvertiserData, bleScanResponse, advHandle, duration, false); } else { ret = proxy->GetAdvertiserHandle(advHandle, pimpl->callbackImp_); + // ret will be BT_ERR_MAX_RESOURCES or BT_ERR_INTERNAL_ERROR. if (ret != BT_NO_ERROR || advHandle == BLE_INVALID_ADVERTISING_HANDLE) { + if (ret == BT_ERR_MAX_RESOURCES) { + HILOGE("The number of adv handle reaches the maximum."); + callback->OnStartResultEvent(BT_ERR_MAX_RESOURCES, static_cast(BLE_INVALID_ADVERTISING_HANDLE)); + return ret; + } HILOGE("Invalid advertising handle"); callback->OnStartResultEvent(BT_ERR_INTERNAL_ERROR, static_cast(BLE_INVALID_ADVERTISING_HANDLE)); return ret; @@ -486,7 +492,7 @@ int BleAdvertiser::EnableAdvertising(uint8_t advHandle, uint16_t duration, uint8_t tmpAdvHandle = pimpl->callbacks_.GetAdvertiserHandle(callback); if (tmpAdvHandle == BLE_INVALID_ADVERTISING_HANDLE) { HILOGE("Invalid advertising callback"); - return BT_ERR_INTERNAL_ERROR; + return BT_ERR_BLE_INVALID_ADV_ID; } std::shared_ptr observer = pimpl->callbacks_.GetAdvertiserObserver(advHandle); @@ -513,7 +519,7 @@ int BleAdvertiser::DisableAdvertising(uint8_t advHandle, std::shared_ptrcallbacks_.GetAdvertiserHandle(callback); if (tmpAdvHandle == BLE_INVALID_ADVERTISING_HANDLE) { HILOGE("Invalid advertising callback"); - return BT_ERR_INTERNAL_ERROR; + return BT_ERR_BLE_INVALID_ADV_ID; } std::shared_ptr observer = pimpl->callbacks_.GetAdvertiserObserver(advHandle); @@ -541,7 +547,7 @@ int BleAdvertiser::StopAdvertising(std::shared_ptr callbac uint8_t advHandle = pimpl->callbacks_.GetAdvertiserHandle(callback); if (advHandle == BLE_INVALID_ADVERTISING_HANDLE) { HILOGE("Invalid advertising handle"); - return BT_ERR_INTERNAL_ERROR; + return BT_ERR_BLE_INVALID_ADV_ID; } int ret = proxy->StopAdvertising(advHandle); diff --git a/frameworks/js/napi/src/ble/napi_bluetooth_ble.cpp b/frameworks/js/napi/src/ble/napi_bluetooth_ble.cpp index 16b325735c0d77239f86796f68f411c3d8dfc3fe..8a9912ff652b7291f3bdebe86d5d778f365b91bb 100644 --- a/frameworks/js/napi/src/ble/napi_bluetooth_ble.cpp +++ b/frameworks/js/napi/src/ble/napi_bluetooth_ble.cpp @@ -970,7 +970,7 @@ napi_value EnableAdvertising(napi_env env, napi_callback_info info) auto status = CheckAdvertisingEnableParams(env, info, advHandle, duration, baseCallback); NAPI_BT_ASSERT_RETURN_UNDEF(env, status == napi_ok, BT_ERR_INVALID_PARAM); // compatible with XTS - NAPI_BT_ASSERT_RETURN_UNDEF(env, advHandle != BLE_INVALID_ADVERTISING_HANDLE, BT_ERR_INTERNAL_ERROR); + NAPI_BT_ASSERT_RETURN_UNDEF(env, advHandle != BLE_INVALID_ADVERTISING_HANDLE, BT_ERR_BLE_INVALID_ADV_ID); std::shared_ptr callback = std::static_pointer_cast(baseCallback); auto func = [advHandle, duration, callback]() { @@ -1024,7 +1024,7 @@ napi_value DisableAdvertising(napi_env env, napi_callback_info info) auto status = CheckAdvertisingDisableParams(env, info, advHandle, baseCallback); NAPI_BT_ASSERT_RETURN_UNDEF(env, status == napi_ok, BT_ERR_INVALID_PARAM); // compatible with XTS - NAPI_BT_ASSERT_RETURN_UNDEF(env, advHandle != BLE_INVALID_ADVERTISING_HANDLE, BT_ERR_INTERNAL_ERROR); + NAPI_BT_ASSERT_RETURN_UNDEF(env, advHandle != BLE_INVALID_ADVERTISING_HANDLE, BT_ERR_BLE_INVALID_ADV_ID); std::shared_ptr callback = std::static_pointer_cast(baseCallback); auto func = [advHandle, callback]() { @@ -1095,7 +1095,7 @@ napi_value StopAdvertising(napi_env env, napi_callback_info info) status = CheckStopAdvWithAdvId(env, argv[PARAM0], advHandle, baseCallback); NAPI_BT_ASSERT_RETURN_UNDEF(env, status == napi_ok, BT_ERR_INVALID_PARAM); // compatible with XTS - NAPI_BT_ASSERT_RETURN_UNDEF(env, advHandle != BLE_INVALID_ADVERTISING_HANDLE, BT_ERR_INTERNAL_ERROR); + NAPI_BT_ASSERT_RETURN_UNDEF(env, advHandle != BLE_INVALID_ADVERTISING_HANDLE, BT_ERR_BLE_INVALID_ADV_ID); std::shared_ptr callback = std::static_pointer_cast(baseCallback); auto func = [bleAdvertiser, callback]() { diff --git a/interfaces/inner_api/include/bluetooth_errorcode.h b/interfaces/inner_api/include/bluetooth_errorcode.h index 47cceb119a1b49ccb6db16ba2f9004086c2340ee..b434ac6aa52d10ff1013e04686305ae52c22cf72 100644 --- a/interfaces/inner_api/include/bluetooth_errorcode.h +++ b/interfaces/inner_api/include/bluetooth_errorcode.h @@ -69,6 +69,8 @@ enum BtErrCode { BT_ERR_BLE_SCAN_MAX_FILTER = BT_ERR_BASE_SYSCAP + 2051, BT_ERR_BLE_CHANGE_SCAN_FILTER_FAIL = BT_ERR_BASE_SYSCAP + 2052, BT_ERR_BLE_CHANGE_SCAN_WRONG_STATE = BT_ERR_BASE_SYSCAP + 2053, + BT_ERR_BLE_ADV_DATA_EXCEED_LIMIT = BT_ERR_BASE_SYSCAP + 2054, + BT_ERR_BLE_INVALID_ADV_ID = BT_ERR_BASE_SYSCAP + 2055, // will deprected NO_ERROR = BT_NO_ERROR,