94 lines
4.5 KiB
C++
94 lines
4.5 KiB
C++
/* Copyright Statement:
|
|
* *
|
|
* * This software/firmware and related documentation ("MediaTek Software") are
|
|
* * protected under relevant copyright laws. The information contained herein
|
|
* * is confidential and proprietary to MediaTek Inc. and/or its licensors.
|
|
* * Without the prior written permission of MediaTek inc. and/or its licensors,
|
|
* * any reproduction, modification, use or disclosure of MediaTek Software,
|
|
* * and information contained herein, in whole or in part, shall be strictly
|
|
* * prohibited.
|
|
* *
|
|
* * MediaTek Inc. (C) 2016. All rights reserved.
|
|
* *
|
|
* * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
|
|
* * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
|
|
* * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
|
|
* * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL
|
|
* * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
|
|
* * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
|
|
* * NONINFRINGEMENT.
|
|
* * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
|
|
* * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
|
|
* * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO
|
|
* * SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER
|
|
* * EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN
|
|
* * FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK SOFTWARE.
|
|
* * MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES
|
|
* * MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR
|
|
* * OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
|
|
* * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED
|
|
* * HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK
|
|
* * SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE
|
|
* * PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
|
|
* *
|
|
* * The following software/firmware and/or related documentation ("MediaTek Software")
|
|
* * have been modified by MediaTek Inc. All revisions are subject to any receiver's
|
|
* * applicable license agreements with MediaTek Inc.
|
|
* */
|
|
|
|
#define LOG_TAG "mtk_sdp_service"
|
|
#include "mediatek/stack/include/mtk_sdp_service.h"
|
|
|
|
#include "interop_mtk.h"
|
|
#include "osi/include/log.h"
|
|
#include "stack/sdp/sdpint.h"
|
|
#include "stack/include/sdpdefs.h"
|
|
#include "bta/include/bta_ag_api.h"
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** Function sdp_hfp_version_blacklist_check
|
|
**
|
|
** Description This function check if
|
|
** 1. The device address matches the HFP 1.7 blacklist
|
|
** 2. The attribute id is profile desciptor
|
|
** 3. The profile uuid is HFP
|
|
** change HFP version to be 1.6
|
|
**
|
|
** Returns void
|
|
**
|
|
*******************************************************************************/
|
|
void sdp_hfp_version_blacklist_check(tSDP_ATTRIBUTE* p_attr, uint8_t* p_attr_start,
|
|
const RawAddress& addr) {
|
|
LOG_INFO("%s", __func__);
|
|
if (p_attr && p_attr_start && (p_attr->id == ATTR_ID_BT_PROFILE_DESC_LIST) &&
|
|
(p_attr->type == DATA_ELE_SEQ_DESC_TYPE) &&
|
|
(p_attr_start[MTK_HFP_VERSION_SDP_POSITION] ==
|
|
((UUID_DESC_TYPE << 3) | SIZE_TWO_BYTES)) &&
|
|
(((p_attr_start[MTK_HFP_VERSION_SDP_POSITION + 1] << 8) |
|
|
p_attr_start[MTK_HFP_VERSION_SDP_POSITION + 2]) ==
|
|
UUID_SERVCLASS_HF_HANDSFREE)) {
|
|
#if defined(MTK_INTEROP_EXTENSION) && (MTK_INTEROP_EXTENSION == TRUE)
|
|
if (interop_mtk_match_addr_name(INTEROP_MTK_HFP_17_TO_16, &addr)) {
|
|
LOG_INFO("SDP - HFP 1.7 IOT device, fallback the version to 1.6");
|
|
p_attr_start[MTK_HFP_VERSION_SDP_POSITION + MTK_HFP_VERSION_OFFSET] =
|
|
MTK_HFP_VERSION_16;
|
|
}
|
|
#endif
|
|
}
|
|
}
|
|
|
|
/** M: Add for ring tone blacklist @{ */
|
|
void sdp_update_hfp_features(tSDP_ATTRIBUTE* p_attr, uint8_t* p_attr_start, const RawAddress& addr) {
|
|
if (p_attr->id == ATTR_ID_SUPPORTED_FEATURES) {
|
|
#if defined(MTK_INTEROP_EXTENSION) && (MTK_INTEROP_EXTENSION == TRUE)
|
|
if ((p_attr_start[MTK_HFP_FEAUTRES_SDP_POSITION] & BTA_AG_FEAT_INBAND) &&
|
|
(interop_mtk_match_addr_name(INTEROP_MTK_HFP_INBAND_RINGING_DISABLE, &addr))) {
|
|
p_attr_start[MTK_HFP_FEAUTRES_SDP_POSITION] &= ~BTA_AG_FEAT_INBAND;
|
|
LOG_INFO("%s, update hfp supported features to 0x%x ", __func__, p_attr_start[MTK_HFP_FEAUTRES_SDP_POSITION]);
|
|
}
|
|
#endif
|
|
}
|
|
}
|
|
/** @} */
|