#include <hardware/bt_sdp.h>
#include <hardware/bt_sock.h>
#include <hardware/vendor.h>
+#ifdef WIPOWER_SUPPORTED
+#include <hardware/wipower.h>
+#endif
#include "bt_utils.h"
#include "btif_api.h"
/* avrc target */
extern btrc_interface_t *btif_rc_get_interface();
/* avrc controller */
+#ifdef WIPOWER_SUPPORTED
+extern wipower_interface_t *get_wipower_interface();
+#endif
extern btrc_interface_t *btif_rc_ctrl_get_interface();
/*SDP search client*/
extern btsdp_interface_t *btif_sdp_get_interface();
if (is_profile(profile_id, BT_PROFILE_AV_RC_ID))
return btif_rc_get_interface();
+#ifdef WIPOWER_SUPPORTED
+ if (is_profile(profile_id, BT_PROFILE_WIPOWER_VENDOR_ID))
+ return get_wipower_interface();
+#endif
+
if (is_profile(profile_id, BT_PROFILE_AV_RC_CTRL_ID))
return btif_rc_ctrl_get_interface();
LOCAL_SRC_FILES+= \
../udrv/ulinux/uipc.c
+ifeq ($(BOARD_USES_WIPOWER),true)
+LOCAL_SRC_FILES += \
+ ../../../vendor/qcom/opensource/bluetooth/wipower-host/core/src/wipower.c
+endif
+
LOCAL_C_INCLUDES+= . \
$(LOCAL_PATH)/../ \
$(LOCAL_PATH)/../bta/include \
external/zlib \
$(call include-path-for, audio-utils)
+ifeq ($(BOARD_USES_WIPOWER),true)
+LOCAL_C_INCLUDES+= \
+ vendor/qcom/opensource/bluetooth/hal/include \
+ vendor/qcom/opensource/bluetooth/wipower-host/core/include
+endif
+
LOCAL_SHARED_LIBRARIES := \
libcutils \
libdl \
#define BTM_BLE_MULTI_ADV_CB_EVT_MASK 0xF0
#define BTM_BLE_MULTI_ADV_SUBCODE_MASK 0x0F
+#ifdef WIPOWER_SUPPORTED
+#define WIPOWER_16_UUID_LSB 0xFE
+#define WIPOWER_16_UUID_MSB 0xFF
+static bool is_wipower_adv = false;
+#endif
+
/************************************************************************************
** Static variables
************************************************************************************/
tBTM_BLE_MULTI_ADV_INST_IDX_Q btm_multi_adv_idx_q;
pthread_mutex_t btm_multi_adv_lock = PTHREAD_MUTEX_INITIALIZER;
+#ifdef WIPOWER_SUPPORTED
+UINT8 wipower_inst_id = BTM_BLE_MULTI_ADV_DEFAULT_STD;
+#endif
+
/************************************************************************************
** Externs
************************************************************************************/
btm_ble_build_adv_data(&data_mask, &pp, p_data);
*p_len = (UINT8)(pp - param - 2);
UINT8_TO_STREAM(pp_temp, inst_id);
+#ifdef WIPOWER_SUPPORTED
+ if (param[7] == WIPOWER_16_UUID_LSB && param[8] == WIPOWER_16_UUID_MSB)
+ {
+ is_wipower_adv = true;
+ wipower_inst_id = inst_id;
+ }
+#endif
if ((rt = BTM_VendorSpecificCommand (HCI_BLE_MULTI_ADV_OCF,
(UINT8)BTM_BLE_MULTI_ADV_WRITE_DATA_LEN,
adv_inst != BTM_BLE_MULTI_ADV_DEFAULT_STD)
{
BTM_TRACE_EVENT("btm_ble_multi_adv_reenable called");
- btm_ble_multi_adv_reenable(adv_inst);
+#ifdef WIPOWER_SUPPORTED
+ if (!(is_wipower_adv && (adv_inst == wipower_inst_id))) {
+ btm_ble_multi_adv_reenable(adv_inst);
+ }
+#else
+ btm_ble_multi_adv_reenable(adv_inst);
+#endif
}
/* re-enable connectibility */
else if (adv_inst == BTM_BLE_MULTI_ADV_DEFAULT_STD)
*******************************************************************************/
void btm_ble_multi_adv_cleanup(void)
{
+#ifdef WIPOWER_SUPPORTED
+ is_wipower_adv = false;
+ wipower_inst_id = BTM_BLE_MULTI_ADV_DEFAULT_STD;
+#endif
+
pthread_mutex_lock(&btm_multi_adv_lock);
if (btm_multi_adv_cb.p_adv_inst) {
for (size_t i = 0; i < btm_cb.cmn_ble_vsc_cb.adv_inst_max; i++) {