1.问题背景
高通WCN39XX及以上系列每次蓝牙打开有固件加载的过程.,此过程耗时在2S左右。对比其他平台(比如展锐),蓝牙打开时间明显较长。在此背景下客户提出优化需求。
2.问题分析
从logcat上分析发现蓝牙打开过程中加载固件耗时2s左右。而加载固件是蓝牙打开过程中必须的过程。那么是否可设置为每一次系统开机之后仅需加载一次固件呢?
3.问题解决
在Create Point中查到文档kba-180822010533,确实存在每一次系统开机之后仅需加载一次固件的方式。
代码中合入参考如下patch:
diff --git a/QSSI.12/device/qcom/qssi/system.prop b/QSSI.12/device/qcom/qssi/system.prop
index 62b601f..6591b88 100644
--- a/QSSI.12/device/qcom/qssi/system.prop
+++ b/QSSI.12/device/qcom/qssi/system.prop
@@ -169,3 +169,6 @@ arm64.memtag.process.system_server=off
# Disable blur on app launch
ro.launcher.blur.appLaunch=0
+
+#BT TLV/BIN will be only downloaded at the first ON time after power on of DUT
+persist.vendor.service.bdroid.soc.alwayson=true
\ No newline at end of file
diff --git a/QSSI.12/device/qcom/qssi_32go/system.prop b/QSSI.12/device/qcom/qssi_32go/system.prop
index 5fa8c5e..3dee182 100644
--- a/QSSI.12/device/qcom/qssi_32go/system.prop
+++ b/QSSI.12/device/qcom/qssi_32go/system.prop
@@ -163,3 +163,6 @@ debug.stagefright.ccodec=1
#Proprty to set native recorder's maximum base layer fps
ro.media.recorder-max-base-layer-fps = 60
+
+#BT TLV/BIN will be only downloaded at the first ON time after power on of DUT
+persist.vendor.service.bdroid.soc.alwayson=true
\ No newline at end of file
diff --git a/UM.9.15/vendor/qcom/proprietary/bluetooth/build/bt-vendor-proprietary-board.mk b/UM.9.15/vendor/qcom/proprietary/bluetooth/build/bt-vendor-proprietary-board.mk
index fdd9edf..d266cde 100755
--- a/UM.9.15/vendor/qcom/proprietary/bluetooth/build/bt-vendor-proprietary-board.mk
+++ b/UM.9.15/vendor/qcom/proprietary/bluetooth/build/bt-vendor-proprietary-board.mk
@@ -76,7 +76,7 @@ ifeq ($(TARGET_BOARD_SUFFIX), _32)
BOARD_HAVE_QTI_BT_LAZY_SERVICE := true
endif
ifeq ($(TARGET_BOARD_SUFFIX), _32go)
-BOARD_HAVE_QTI_BT_LAZY_SERVICE := true
+BOARD_HAVE_QTI_BT_LAZY_SERVICE := false
endif
endif
diff --git a/UM.9.15/vendor/qcom/proprietary/bluetooth/hidl_transport/bt/1.0/default/data_handler.cpp b/UM.9.15/vendor/qcom/proprietary/bluetooth/hidl_transport/bt/1.0/default/data_handler.cpp
index 26c4a40..53f2aee 100755
--- a/UM.9.15/vendor/qcom/proprietary/bluetooth/hidl_transport/bt/1.0/default/data_handler.cpp
+++ b/UM.9.15/vendor/qcom/proprietary/bluetooth/hidl_transport/bt/1.0/default/data_handler.cpp
@@ -371,6 +371,7 @@ bool DataHandler::IsSocAlwaysOnEnabled()
* always on will have unnecessary power lekage.
*/
#ifndef LAZY_SERVICE
+ ALOGD("%s Application Qualcomm provides solutions,SoC always ON ", __func__);
char value[PROPERTY_VALUE_MAX] = {'\0'};
logger_->PropertyGet("persist.vendor.service.bdroid.soc.alwayson", value, "false");
return ((strcmp(value, "true") == 0) &&
另外客户还提出了扫描速度慢的问题,做了如下优化:
diff --git a/QSSI.12/packages/apps/Settings/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java b/QSSI.12/packages/apps/Settings/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
index 2181309..56c7ae6 100644
--- a/QSSI.12/packages/apps/Settings/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
+++ b/QSSI.12/packages/apps/Settings/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
@@ -193,12 +193,14 @@ public abstract class DeviceListPreferenceFragment extends
BluetoothDevicePreference preference = (BluetoothDevicePreference) getCachedPreference(key);
if (preference == null) {
- preference = new BluetoothDevicePreference(getPrefContext(), cachedDevice,
- mShowDevicesWithoutNames, BluetoothDevicePreference.SortType.TYPE_FIFO);
- preference.setKey(key);
- //Set hideSecondTarget is true if it's bonded device.
- preference.hideSecondTarget(true);
- mDeviceListGroup.addPreference(preference);
+ if (cachedDevice.hasHumanReadableName() || cachedDevice.getDevice().getType() == BluetoothDevice.DEVICE_TYPE_CLASSIC || cachedDevice.getDevice().getType() == BluetoothDevice.DEVICE_TYPE_DUAL || mShowDevicesWithoutNames){
+ preference = new BluetoothDevicePreference(getPrefContext(), cachedDevice,
+ mShowDevicesWithoutNames, BluetoothDevicePreference.SortType.TYPE_FIFO);
+ preference.setKey(key);
+ //Set hideSecondTarget is true if it's bonded device.
+ preference.hideSecondTarget(true);
+ mDeviceListGroup.addPreference(preference);
+ }
}