unplugged-vendor/system/bt/mediatek/stack/sdp/mtk_sdp_service.cc

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
}
}
/** @} */