Loading system/bta/sdp/bta_sdp_act.cc +77 −77 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,7 @@ * This file contains action functions for SDP search. * This file contains action functions for SDP search. ******************************************************************************/ ******************************************************************************/ #include <bluetooth/log.h> #include <frameworks/proto_logging/stats/enums/bluetooth/enums.pb.h> #include <frameworks/proto_logging/stats/enums/bluetooth/enums.pb.h> #include <hardware/bt_sdp.h> #include <hardware/bt_sdp.h> Loading @@ -41,6 +42,7 @@ #include "types/raw_address.h" #include "types/raw_address.h" using namespace bluetooth::legacy::stack::sdp; using namespace bluetooth::legacy::stack::sdp; using namespace bluetooth; static void bta_create_mns_sdp_record(bluetooth_sdp_record* record, static void bta_create_mns_sdp_record(bluetooth_sdp_record* record, tSDP_DISC_REC* p_rec) { tSDP_DISC_REC* p_rec) { Loading @@ -62,10 +64,10 @@ static void bta_create_mns_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 4) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 4) { record->mns.supported_features = p_attr->attr_value.v.u32; record->mns.supported_features = p_attr->attr_value.v.u32; } else { } else { LOG_ERROR("ATTR_ID_MAP_SUPPORTED_FEATURES attr type or size wrong!!"); log::error("ATTR_ID_MAP_SUPPORTED_FEATURES attr type or size wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_MAP_SUPPORTED_FEATURES attr not found!!"); log::error("ATTR_ID_MAP_SUPPORTED_FEATURES attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -76,10 +78,10 @@ static void bta_create_mns_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type); SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->mns.hdr.service_name = (char*)p_attr->attr_value.v.array; record->mns.hdr.service_name = (char*)p_attr->attr_value.v.array; } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr type not TEXT_STR_DESC_TYPE!!"); log::error("ATTR_ID_SERVICE_NAME attr type not TEXT_STR_DESC_TYPE!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr not found!!"); log::error("ATTR_ID_SERVICE_NAME attr not found!!"); } } if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( Loading @@ -99,10 +101,10 @@ static void bta_create_mns_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->mns.hdr.l2cap_psm = p_attr->attr_value.v.u16; record->mns.hdr.l2cap_psm = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); } } } } Loading @@ -129,10 +131,10 @@ static void bta_create_mas_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { record->mas.mas_instance_id = p_attr->attr_value.v.u8; record->mas.mas_instance_id = p_attr->attr_value.v.u8; } else { } else { LOG_ERROR("ATTR_ID_MAS_INSTANCE_ID attr type or len wrong!!"); log::error("ATTR_ID_MAS_INSTANCE_ID attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_MAS_INSTANCE_ID attr not found!!"); log::error("ATTR_ID_MAS_INSTANCE_ID attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -142,10 +144,10 @@ static void bta_create_mas_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { record->mas.supported_message_types = p_attr->attr_value.v.u8; record->mas.supported_message_types = p_attr->attr_value.v.u8; } else { } else { LOG_ERROR("ATTR_ID_SUPPORTED_MSG_TYPE attr type or len wrong!!"); log::error("ATTR_ID_SUPPORTED_MSG_TYPE attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SUPPORTED_MSG_TYPE attr not found!!"); log::error("ATTR_ID_SUPPORTED_MSG_TYPE attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -155,10 +157,10 @@ static void bta_create_mas_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 4) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 4) { record->mas.supported_features = p_attr->attr_value.v.u32; record->mas.supported_features = p_attr->attr_value.v.u32; } else { } else { LOG_ERROR("ATTR_ID_MAP_SUPPORTED_FEATURES attr type or len wrong!!"); log::error("ATTR_ID_MAP_SUPPORTED_FEATURES attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_MAP_SUPPORTED_FEATURES attr not found!!"); log::error("ATTR_ID_MAP_SUPPORTED_FEATURES attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -169,10 +171,10 @@ static void bta_create_mas_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type); SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->mas.hdr.service_name = (char*)p_attr->attr_value.v.array; record->mas.hdr.service_name = (char*)p_attr->attr_value.v.array; } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr type wrong!!"); log::error("ATTR_ID_SERVICE_NAME attr type wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr not found!!"); log::error("ATTR_ID_SERVICE_NAME attr not found!!"); } } if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( Loading @@ -192,10 +194,10 @@ static void bta_create_mas_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->mas.hdr.l2cap_psm = p_attr->attr_value.v.u16; record->mas.hdr.l2cap_psm = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); } } } } Loading @@ -221,10 +223,10 @@ static void bta_create_pse_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { record->pse.supported_repositories = p_attr->attr_value.v.u8; record->pse.supported_repositories = p_attr->attr_value.v.u8; } else { } else { LOG_ERROR("ATTR_ID_SUPPORTED_REPOSITORIES attr type or len wrong!!"); log::error("ATTR_ID_SUPPORTED_REPOSITORIES attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SUPPORTED_REPOSITORIES attr not found!!"); log::error("ATTR_ID_SUPPORTED_REPOSITORIES attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_rec, ATTR_ID_PBAP_SUPPORTED_FEATURES); p_rec, ATTR_ID_PBAP_SUPPORTED_FEATURES); Loading @@ -233,10 +235,10 @@ static void bta_create_pse_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 4) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 4) { record->pse.supported_features = p_attr->attr_value.v.u32; record->pse.supported_features = p_attr->attr_value.v.u32; } else { } else { LOG_ERROR("ATTR_ID_PBAP_SUPPORTED_FEATURES attr type or len wrong!!"); log::error("ATTR_ID_PBAP_SUPPORTED_FEATURES attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_PBAP_SUPPORTED_FEATURES attr not found!!"); log::error("ATTR_ID_PBAP_SUPPORTED_FEATURES attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -248,10 +250,10 @@ static void bta_create_pse_sdp_record(bluetooth_sdp_record* record, // TODO: validate the lifetime of this value // TODO: validate the lifetime of this value record->pse.hdr.service_name = (char*)p_attr->attr_value.v.array; record->pse.hdr.service_name = (char*)p_attr->attr_value.v.array; } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr type NOT string!!"); log::error("ATTR_ID_SERVICE_NAME attr type NOT string!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr not found!!"); log::error("ATTR_ID_SERVICE_NAME attr not found!!"); } } if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( Loading @@ -271,10 +273,10 @@ static void bta_create_pse_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->pse.hdr.l2cap_psm = p_attr->attr_value.v.u16; record->pse.hdr.l2cap_psm = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); } } } } Loading @@ -300,10 +302,10 @@ static void bta_create_ops_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type); SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->ops.hdr.service_name = (char*)p_attr->attr_value.v.array; record->ops.hdr.service_name = (char*)p_attr->attr_value.v.array; } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr type NOT string!!"); log::error("ATTR_ID_SERVICE_NAME attr type NOT string!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr not found!!"); log::error("ATTR_ID_SERVICE_NAME attr not found!!"); } } if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( Loading @@ -323,10 +325,10 @@ static void bta_create_ops_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->ops.hdr.l2cap_psm = p_attr->attr_value.v.u16; record->ops.hdr.l2cap_psm = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -335,10 +337,10 @@ static void bta_create_ops_sdp_record(bluetooth_sdp_record* record, /* Safety check - each entry should itself be a sequence */ /* Safety check - each entry should itself be a sequence */ if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) != DATA_ELE_SEQ_DESC_TYPE) { if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) != DATA_ELE_SEQ_DESC_TYPE) { record->ops.supported_formats_list_len = 0; record->ops.supported_formats_list_len = 0; LOG_ERROR( log::error( "%s() - supported_formats_list - wrong attribute length/type:" "supported_formats_list - wrong attribute length/type: 0x{:02x} - " " 0x%02x - expected 0x06", "expected 0x06", __func__, p_attr->attr_len_type); p_attr->attr_len_type); } else { } else { int count = 0; int count = 0; /* 1 byte for type/length 1 byte for value */ /* 1 byte for type/length 1 byte for value */ Loading @@ -351,10 +353,9 @@ static void bta_create_ops_sdp_record(bluetooth_sdp_record* record, if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UINT_DESC_TYPE) && if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UINT_DESC_TYPE) && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) >= 1)) { (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) >= 1)) { if (count == sizeof(record->ops.supported_formats_list)) { if (count == sizeof(record->ops.supported_formats_list)) { LOG_ERROR( log::error( "%s() - supported_formats_list - count overflow - " "supported_formats_list - count overflow - too many sub " "too many sub attributes!!", "attributes!!"); __func__); /* If you hit this, new formats have been added, /* If you hit this, new formats have been added, * update SDP_OPP_SUPPORTED_FORMATS_MAX_LENGTH */ * update SDP_OPP_SUPPORTED_FORMATS_MAX_LENGTH */ break; break; Loading @@ -362,19 +363,19 @@ static void bta_create_ops_sdp_record(bluetooth_sdp_record* record, record->ops.supported_formats_list[count] = p_sattr->attr_value.v.u8; record->ops.supported_formats_list[count] = p_sattr->attr_value.v.u8; count++; count++; } else { } else { LOG_ERROR( log::error( "%s() - supported_formats_list - wrong sub attribute " "supported_formats_list - wrong sub attribute length/type: " "length/type: 0x%02x - expected 0x80", "0x{:02x} - expected 0x80", __func__, p_sattr->attr_len_type); p_sattr->attr_len_type); break; break; } } } } if (record->ops.supported_formats_list_len != count) { if (record->ops.supported_formats_list_len != count) { LOG_WARN( log::warn( "%s() - supported_formats_list - Length of attribute different " "supported_formats_list - Length of attribute different from the " "from the actual number of sub-attributes in the sequence " "actual number of sub-attributes in the sequence att-length: {} - " "att-length: %d - number of elements: %d", "number of elements: {}", __func__, record->ops.supported_formats_list_len, count); record->ops.supported_formats_list_len, count); } } record->ops.supported_formats_list_len = count; record->ops.supported_formats_list_len = count; } } Loading Loading @@ -402,10 +403,10 @@ static void bta_create_sap_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type); SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->sap.hdr.service_name = (char*)p_attr->attr_value.v.array; record->sap.hdr.service_name = (char*)p_attr->attr_value.v.array; } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr type NOT string!!"); log::error("ATTR_ID_SERVICE_NAME attr type NOT string!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr not found!!"); log::error("ATTR_ID_SERVICE_NAME attr not found!!"); } } if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( Loading @@ -423,7 +424,7 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, tSDP_DISC_REC* p_rec) { tSDP_DISC_REC* p_rec) { tSDP_DISC_ATTR* p_attr; tSDP_DISC_ATTR* p_attr; LOG_VERBOSE("%s()", __func__); log::verbose(""); /* hdr is redundancy in dip */ /* hdr is redundancy in dip */ record->dip.hdr.type = SDP_TYPE_DIP; record->dip.hdr.type = SDP_TYPE_DIP; Loading @@ -440,10 +441,10 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->dip.spec_id = p_attr->attr_value.v.u16; record->dip.spec_id = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_SPECIFICATION_ID attr type or len wrong!!"); log::error("ATTR_ID_SPECIFICATION_ID attr type or len wrong!!"); } } } else { } else { LOG_ERROR("%s() ATTR_ID_SPECIFICATION_ID not found", __func__); log::error("ATTR_ID_SPECIFICATION_ID not found"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -453,10 +454,10 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->dip.vendor = p_attr->attr_value.v.u16; record->dip.vendor = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_VENDOR_ID attr type or len wrong!!"); log::error("ATTR_ID_VENDOR_ID attr type or len wrong!!"); } } } else { } else { LOG_ERROR("%s() ATTR_ID_VENDOR_ID not found", __func__); log::error("ATTR_ID_VENDOR_ID not found"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -466,10 +467,10 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->dip.vendor_id_source = p_attr->attr_value.v.u16; record->dip.vendor_id_source = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_VENDOR_ID_SOURCE attr type or len wrong!!"); log::error("ATTR_ID_VENDOR_ID_SOURCE attr type or len wrong!!"); } } } else { } else { LOG_ERROR("%s() ATTR_ID_VENDOR_ID_SOURCE not found", __func__); log::error("ATTR_ID_VENDOR_ID_SOURCE not found"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -479,10 +480,10 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->dip.product = p_attr->attr_value.v.u16; record->dip.product = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_PRODUCT_ID attr type or len wrong!!"); log::error("ATTR_ID_PRODUCT_ID attr type or len wrong!!"); } } } else { } else { LOG_ERROR("%s() ATTR_ID_PRODUCT_ID not found", __func__); log::error("ATTR_ID_PRODUCT_ID not found"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -492,10 +493,10 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->dip.version = p_attr->attr_value.v.u16; record->dip.version = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_PRODUCT_VERSION attr type or len wrong!!"); log::error("ATTR_ID_PRODUCT_VERSION attr type or len wrong!!"); } } } else { } else { LOG_ERROR("%s() ATTR_ID_PRODUCT_VERSION not found", __func__); log::error("ATTR_ID_PRODUCT_VERSION not found"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -505,10 +506,10 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { record->dip.primary_record = !(!p_attr->attr_value.v.u8); record->dip.primary_record = !(!p_attr->attr_value.v.u8); } else { } else { LOG_ERROR("ATTR_ID_PRIMARY_RECORD attr type or len wrong!!"); log::error("ATTR_ID_PRIMARY_RECORD attr type or len wrong!!"); } } } else { } else { LOG_ERROR("%s() ATTR_ID_PRIMARY_RECORD not found", __func__); log::error("ATTR_ID_PRIMARY_RECORD not found"); } } } } Loading @@ -533,10 +534,10 @@ static void bta_create_raw_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type); SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->pse.hdr.service_name = (char*)p_attr->attr_value.v.array; record->pse.hdr.service_name = (char*)p_attr->attr_value.v.array; } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr type NOT string!!"); log::error("ATTR_ID_SERVICE_NAME attr type NOT string!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr not found!!"); log::error("ATTR_ID_SERVICE_NAME attr not found!!"); } } /* Try to extract an RFCOMM channel */ /* Try to extract an RFCOMM channel */ Loading @@ -553,7 +554,7 @@ static void bta_sdp_search_cback(UNUSED_ATTR const RawAddress& bd_addr, tSDP_RESULT result, const void* user_data) { tSDP_RESULT result, const void* user_data) { tBTA_SDP_STATUS status = BTA_SDP_FAILURE; tBTA_SDP_STATUS status = BTA_SDP_FAILURE; int count = 0; int count = 0; LOG_VERBOSE("%s() - res: 0x%x", __func__, result); log::verbose("res: 0x{:x}", result); bta_sdp_cb.sdp_active = false; bta_sdp_cb.sdp_active = false; Loading @@ -573,28 +574,28 @@ static void bta_sdp_search_cback(UNUSED_ATTR const RawAddress& bd_addr, p_bta_sdp_cfg->p_sdp_db, uuid, p_rec); p_bta_sdp_cfg->p_sdp_db, uuid, p_rec); /* generate the matching record data pointer */ /* generate the matching record data pointer */ if (!p_rec) { if (!p_rec) { LOG_VERBOSE("%s() - UUID not found", __func__); log::verbose("UUID not found"); continue; continue; } } status = BTA_SDP_SUCCESS; status = BTA_SDP_SUCCESS; if (uuid == UUID_MAP_MAS) { if (uuid == UUID_MAP_MAS) { LOG_VERBOSE("%s() - found MAP (MAS) uuid", __func__); log::verbose("found MAP (MAS) uuid"); bta_create_mas_sdp_record(&evt_data.records[count], p_rec); bta_create_mas_sdp_record(&evt_data.records[count], p_rec); } else if (uuid == UUID_MAP_MNS) { } else if (uuid == UUID_MAP_MNS) { LOG_VERBOSE("%s() - found MAP (MNS) uuid", __func__); log::verbose("found MAP (MNS) uuid"); bta_create_mns_sdp_record(&evt_data.records[count], p_rec); bta_create_mns_sdp_record(&evt_data.records[count], p_rec); } else if (uuid == UUID_PBAP_PSE) { } else if (uuid == UUID_PBAP_PSE) { LOG_VERBOSE("%s() - found PBAP (PSE) uuid", __func__); log::verbose("found PBAP (PSE) uuid"); bta_create_pse_sdp_record(&evt_data.records[count], p_rec); bta_create_pse_sdp_record(&evt_data.records[count], p_rec); } else if (uuid == UUID_OBEX_OBJECT_PUSH) { } else if (uuid == UUID_OBEX_OBJECT_PUSH) { LOG_VERBOSE("%s() - found Object Push Server (OPS) uuid", __func__); log::verbose("found Object Push Server (OPS) uuid"); bta_create_ops_sdp_record(&evt_data.records[count], p_rec); bta_create_ops_sdp_record(&evt_data.records[count], p_rec); } else if (uuid == UUID_SAP) { } else if (uuid == UUID_SAP) { LOG_VERBOSE("%s() - found SAP uuid", __func__); log::verbose("found SAP uuid"); bta_create_sap_sdp_record(&evt_data.records[count], p_rec); bta_create_sap_sdp_record(&evt_data.records[count], p_rec); } else if (uuid == UUID_PBAP_PCE) { } else if (uuid == UUID_PBAP_PCE) { LOG_VERBOSE("%s() - found PBAP (PCE) uuid", __func__); log::verbose("found PBAP (PCE) uuid"); if (p_rec != NULL) { if (p_rec != NULL) { uint16_t peer_pce_version = 0; uint16_t peer_pce_version = 0; Loading @@ -605,14 +606,14 @@ static void bta_sdp_search_cback(UNUSED_ATTR const RawAddress& bd_addr, peer_pce_version); peer_pce_version); } } } else { } else { LOG_VERBOSE("%s() - PCE Record is null", __func__); log::verbose("PCE Record is null"); } } } else if (uuid == UUID_DIP) { } else if (uuid == UUID_DIP) { LOG_VERBOSE("%s() - found DIP uuid", __func__); log::verbose("found DIP uuid"); bta_create_dip_sdp_record(&evt_data.records[count], p_rec); bta_create_dip_sdp_record(&evt_data.records[count], p_rec); } else { } else { /* we do not have specific structure for this */ /* we do not have specific structure for this */ LOG_VERBOSE("%s() - profile not identified. using raw data", __func__); log::verbose("profile not identified. using raw data"); bta_create_raw_sdp_record(&evt_data.records[count], p_rec); bta_create_raw_sdp_record(&evt_data.records[count], p_rec); p_rec = NULL; // Terminate loop p_rec = NULL; // Terminate loop /* For raw, we only extract the first entry, and then return the /* For raw, we only extract the first entry, and then return the Loading Loading @@ -647,7 +648,7 @@ static void bta_sdp_search_cback(UNUSED_ATTR const RawAddress& bd_addr, * * ******************************************************************************/ ******************************************************************************/ void bta_sdp_enable(tBTA_SDP_DM_CBACK* p_cback) { void bta_sdp_enable(tBTA_SDP_DM_CBACK* p_cback) { LOG_VERBOSE("%s in, sdp_active:%d", __func__, bta_sdp_cb.sdp_active); log::verbose("in, sdp_active:{}", bta_sdp_cb.sdp_active); tBTA_SDP_STATUS status = BTA_SDP_SUCCESS; tBTA_SDP_STATUS status = BTA_SDP_SUCCESS; bta_sdp_cb.p_dm_cback = p_cback; bta_sdp_cb.p_dm_cback = p_cback; tBTA_SDP bta_sdp; tBTA_SDP bta_sdp; Loading @@ -667,7 +668,7 @@ void bta_sdp_enable(tBTA_SDP_DM_CBACK* p_cback) { void bta_sdp_search(const RawAddress bd_addr, const bluetooth::Uuid uuid) { void bta_sdp_search(const RawAddress bd_addr, const bluetooth::Uuid uuid) { tBTA_SDP_STATUS status = BTA_SDP_FAILURE; tBTA_SDP_STATUS status = BTA_SDP_FAILURE; LOG_VERBOSE("%s in, sdp_active:%d", __func__, bta_sdp_cb.sdp_active); log::verbose("in, sdp_active:{}", bta_sdp_cb.sdp_active); if (bta_sdp_cb.sdp_active) { if (bta_sdp_cb.sdp_active) { /* SDP is still in progress */ /* SDP is still in progress */ Loading @@ -689,8 +690,7 @@ void bta_sdp_search(const RawAddress bd_addr, const bluetooth::Uuid uuid) { bta_sdp_cb.remote_addr = bd_addr; bta_sdp_cb.remote_addr = bd_addr; /* initialize the search for the uuid */ /* initialize the search for the uuid */ LOG_VERBOSE("%s init discovery with UUID: %s", __func__, log::verbose("init discovery with UUID: {}", uuid.ToString()); uuid.ToString().c_str()); get_legacy_stack_sdp_api()->service.SDP_InitDiscoveryDb( get_legacy_stack_sdp_api()->service.SDP_InitDiscoveryDb( p_bta_sdp_cfg->p_sdp_db, p_bta_sdp_cfg->sdp_db_size, 1, &uuid, 0, NULL); p_bta_sdp_cfg->p_sdp_db, p_bta_sdp_cfg->sdp_db_size, 1, &uuid, 0, NULL); Loading Loading
system/bta/sdp/bta_sdp_act.cc +77 −77 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,7 @@ * This file contains action functions for SDP search. * This file contains action functions for SDP search. ******************************************************************************/ ******************************************************************************/ #include <bluetooth/log.h> #include <frameworks/proto_logging/stats/enums/bluetooth/enums.pb.h> #include <frameworks/proto_logging/stats/enums/bluetooth/enums.pb.h> #include <hardware/bt_sdp.h> #include <hardware/bt_sdp.h> Loading @@ -41,6 +42,7 @@ #include "types/raw_address.h" #include "types/raw_address.h" using namespace bluetooth::legacy::stack::sdp; using namespace bluetooth::legacy::stack::sdp; using namespace bluetooth; static void bta_create_mns_sdp_record(bluetooth_sdp_record* record, static void bta_create_mns_sdp_record(bluetooth_sdp_record* record, tSDP_DISC_REC* p_rec) { tSDP_DISC_REC* p_rec) { Loading @@ -62,10 +64,10 @@ static void bta_create_mns_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 4) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 4) { record->mns.supported_features = p_attr->attr_value.v.u32; record->mns.supported_features = p_attr->attr_value.v.u32; } else { } else { LOG_ERROR("ATTR_ID_MAP_SUPPORTED_FEATURES attr type or size wrong!!"); log::error("ATTR_ID_MAP_SUPPORTED_FEATURES attr type or size wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_MAP_SUPPORTED_FEATURES attr not found!!"); log::error("ATTR_ID_MAP_SUPPORTED_FEATURES attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -76,10 +78,10 @@ static void bta_create_mns_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type); SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->mns.hdr.service_name = (char*)p_attr->attr_value.v.array; record->mns.hdr.service_name = (char*)p_attr->attr_value.v.array; } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr type not TEXT_STR_DESC_TYPE!!"); log::error("ATTR_ID_SERVICE_NAME attr type not TEXT_STR_DESC_TYPE!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr not found!!"); log::error("ATTR_ID_SERVICE_NAME attr not found!!"); } } if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( Loading @@ -99,10 +101,10 @@ static void bta_create_mns_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->mns.hdr.l2cap_psm = p_attr->attr_value.v.u16; record->mns.hdr.l2cap_psm = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); } } } } Loading @@ -129,10 +131,10 @@ static void bta_create_mas_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { record->mas.mas_instance_id = p_attr->attr_value.v.u8; record->mas.mas_instance_id = p_attr->attr_value.v.u8; } else { } else { LOG_ERROR("ATTR_ID_MAS_INSTANCE_ID attr type or len wrong!!"); log::error("ATTR_ID_MAS_INSTANCE_ID attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_MAS_INSTANCE_ID attr not found!!"); log::error("ATTR_ID_MAS_INSTANCE_ID attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -142,10 +144,10 @@ static void bta_create_mas_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { record->mas.supported_message_types = p_attr->attr_value.v.u8; record->mas.supported_message_types = p_attr->attr_value.v.u8; } else { } else { LOG_ERROR("ATTR_ID_SUPPORTED_MSG_TYPE attr type or len wrong!!"); log::error("ATTR_ID_SUPPORTED_MSG_TYPE attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SUPPORTED_MSG_TYPE attr not found!!"); log::error("ATTR_ID_SUPPORTED_MSG_TYPE attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -155,10 +157,10 @@ static void bta_create_mas_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 4) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 4) { record->mas.supported_features = p_attr->attr_value.v.u32; record->mas.supported_features = p_attr->attr_value.v.u32; } else { } else { LOG_ERROR("ATTR_ID_MAP_SUPPORTED_FEATURES attr type or len wrong!!"); log::error("ATTR_ID_MAP_SUPPORTED_FEATURES attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_MAP_SUPPORTED_FEATURES attr not found!!"); log::error("ATTR_ID_MAP_SUPPORTED_FEATURES attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -169,10 +171,10 @@ static void bta_create_mas_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type); SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->mas.hdr.service_name = (char*)p_attr->attr_value.v.array; record->mas.hdr.service_name = (char*)p_attr->attr_value.v.array; } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr type wrong!!"); log::error("ATTR_ID_SERVICE_NAME attr type wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr not found!!"); log::error("ATTR_ID_SERVICE_NAME attr not found!!"); } } if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( Loading @@ -192,10 +194,10 @@ static void bta_create_mas_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->mas.hdr.l2cap_psm = p_attr->attr_value.v.u16; record->mas.hdr.l2cap_psm = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); } } } } Loading @@ -221,10 +223,10 @@ static void bta_create_pse_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { record->pse.supported_repositories = p_attr->attr_value.v.u8; record->pse.supported_repositories = p_attr->attr_value.v.u8; } else { } else { LOG_ERROR("ATTR_ID_SUPPORTED_REPOSITORIES attr type or len wrong!!"); log::error("ATTR_ID_SUPPORTED_REPOSITORIES attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SUPPORTED_REPOSITORIES attr not found!!"); log::error("ATTR_ID_SUPPORTED_REPOSITORIES attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_rec, ATTR_ID_PBAP_SUPPORTED_FEATURES); p_rec, ATTR_ID_PBAP_SUPPORTED_FEATURES); Loading @@ -233,10 +235,10 @@ static void bta_create_pse_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 4) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 4) { record->pse.supported_features = p_attr->attr_value.v.u32; record->pse.supported_features = p_attr->attr_value.v.u32; } else { } else { LOG_ERROR("ATTR_ID_PBAP_SUPPORTED_FEATURES attr type or len wrong!!"); log::error("ATTR_ID_PBAP_SUPPORTED_FEATURES attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_PBAP_SUPPORTED_FEATURES attr not found!!"); log::error("ATTR_ID_PBAP_SUPPORTED_FEATURES attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -248,10 +250,10 @@ static void bta_create_pse_sdp_record(bluetooth_sdp_record* record, // TODO: validate the lifetime of this value // TODO: validate the lifetime of this value record->pse.hdr.service_name = (char*)p_attr->attr_value.v.array; record->pse.hdr.service_name = (char*)p_attr->attr_value.v.array; } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr type NOT string!!"); log::error("ATTR_ID_SERVICE_NAME attr type NOT string!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr not found!!"); log::error("ATTR_ID_SERVICE_NAME attr not found!!"); } } if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( Loading @@ -271,10 +273,10 @@ static void bta_create_pse_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->pse.hdr.l2cap_psm = p_attr->attr_value.v.u16; record->pse.hdr.l2cap_psm = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); } } } } Loading @@ -300,10 +302,10 @@ static void bta_create_ops_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type); SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->ops.hdr.service_name = (char*)p_attr->attr_value.v.array; record->ops.hdr.service_name = (char*)p_attr->attr_value.v.array; } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr type NOT string!!"); log::error("ATTR_ID_SERVICE_NAME attr type NOT string!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr not found!!"); log::error("ATTR_ID_SERVICE_NAME attr not found!!"); } } if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( Loading @@ -323,10 +325,10 @@ static void bta_create_ops_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->ops.hdr.l2cap_psm = p_attr->attr_value.v.u16; record->ops.hdr.l2cap_psm = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr type or len wrong!!"); } } } else { } else { LOG_ERROR("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); log::error("ATTR_ID_GOEP_L2CAP_PSM attr not found!!"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -335,10 +337,10 @@ static void bta_create_ops_sdp_record(bluetooth_sdp_record* record, /* Safety check - each entry should itself be a sequence */ /* Safety check - each entry should itself be a sequence */ if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) != DATA_ELE_SEQ_DESC_TYPE) { if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) != DATA_ELE_SEQ_DESC_TYPE) { record->ops.supported_formats_list_len = 0; record->ops.supported_formats_list_len = 0; LOG_ERROR( log::error( "%s() - supported_formats_list - wrong attribute length/type:" "supported_formats_list - wrong attribute length/type: 0x{:02x} - " " 0x%02x - expected 0x06", "expected 0x06", __func__, p_attr->attr_len_type); p_attr->attr_len_type); } else { } else { int count = 0; int count = 0; /* 1 byte for type/length 1 byte for value */ /* 1 byte for type/length 1 byte for value */ Loading @@ -351,10 +353,9 @@ static void bta_create_ops_sdp_record(bluetooth_sdp_record* record, if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UINT_DESC_TYPE) && if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UINT_DESC_TYPE) && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) >= 1)) { (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) >= 1)) { if (count == sizeof(record->ops.supported_formats_list)) { if (count == sizeof(record->ops.supported_formats_list)) { LOG_ERROR( log::error( "%s() - supported_formats_list - count overflow - " "supported_formats_list - count overflow - too many sub " "too many sub attributes!!", "attributes!!"); __func__); /* If you hit this, new formats have been added, /* If you hit this, new formats have been added, * update SDP_OPP_SUPPORTED_FORMATS_MAX_LENGTH */ * update SDP_OPP_SUPPORTED_FORMATS_MAX_LENGTH */ break; break; Loading @@ -362,19 +363,19 @@ static void bta_create_ops_sdp_record(bluetooth_sdp_record* record, record->ops.supported_formats_list[count] = p_sattr->attr_value.v.u8; record->ops.supported_formats_list[count] = p_sattr->attr_value.v.u8; count++; count++; } else { } else { LOG_ERROR( log::error( "%s() - supported_formats_list - wrong sub attribute " "supported_formats_list - wrong sub attribute length/type: " "length/type: 0x%02x - expected 0x80", "0x{:02x} - expected 0x80", __func__, p_sattr->attr_len_type); p_sattr->attr_len_type); break; break; } } } } if (record->ops.supported_formats_list_len != count) { if (record->ops.supported_formats_list_len != count) { LOG_WARN( log::warn( "%s() - supported_formats_list - Length of attribute different " "supported_formats_list - Length of attribute different from the " "from the actual number of sub-attributes in the sequence " "actual number of sub-attributes in the sequence att-length: {} - " "att-length: %d - number of elements: %d", "number of elements: {}", __func__, record->ops.supported_formats_list_len, count); record->ops.supported_formats_list_len, count); } } record->ops.supported_formats_list_len = count; record->ops.supported_formats_list_len = count; } } Loading Loading @@ -402,10 +403,10 @@ static void bta_create_sap_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type); SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->sap.hdr.service_name = (char*)p_attr->attr_value.v.array; record->sap.hdr.service_name = (char*)p_attr->attr_value.v.array; } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr type NOT string!!"); log::error("ATTR_ID_SERVICE_NAME attr type NOT string!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr not found!!"); log::error("ATTR_ID_SERVICE_NAME attr not found!!"); } } if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( if (get_legacy_stack_sdp_api()->record.SDP_FindProfileVersionInRec( Loading @@ -423,7 +424,7 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, tSDP_DISC_REC* p_rec) { tSDP_DISC_REC* p_rec) { tSDP_DISC_ATTR* p_attr; tSDP_DISC_ATTR* p_attr; LOG_VERBOSE("%s()", __func__); log::verbose(""); /* hdr is redundancy in dip */ /* hdr is redundancy in dip */ record->dip.hdr.type = SDP_TYPE_DIP; record->dip.hdr.type = SDP_TYPE_DIP; Loading @@ -440,10 +441,10 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->dip.spec_id = p_attr->attr_value.v.u16; record->dip.spec_id = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_SPECIFICATION_ID attr type or len wrong!!"); log::error("ATTR_ID_SPECIFICATION_ID attr type or len wrong!!"); } } } else { } else { LOG_ERROR("%s() ATTR_ID_SPECIFICATION_ID not found", __func__); log::error("ATTR_ID_SPECIFICATION_ID not found"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -453,10 +454,10 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->dip.vendor = p_attr->attr_value.v.u16; record->dip.vendor = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_VENDOR_ID attr type or len wrong!!"); log::error("ATTR_ID_VENDOR_ID attr type or len wrong!!"); } } } else { } else { LOG_ERROR("%s() ATTR_ID_VENDOR_ID not found", __func__); log::error("ATTR_ID_VENDOR_ID not found"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -466,10 +467,10 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->dip.vendor_id_source = p_attr->attr_value.v.u16; record->dip.vendor_id_source = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_VENDOR_ID_SOURCE attr type or len wrong!!"); log::error("ATTR_ID_VENDOR_ID_SOURCE attr type or len wrong!!"); } } } else { } else { LOG_ERROR("%s() ATTR_ID_VENDOR_ID_SOURCE not found", __func__); log::error("ATTR_ID_VENDOR_ID_SOURCE not found"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -479,10 +480,10 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->dip.product = p_attr->attr_value.v.u16; record->dip.product = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_PRODUCT_ID attr type or len wrong!!"); log::error("ATTR_ID_PRODUCT_ID attr type or len wrong!!"); } } } else { } else { LOG_ERROR("%s() ATTR_ID_PRODUCT_ID not found", __func__); log::error("ATTR_ID_PRODUCT_ID not found"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -492,10 +493,10 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 2) { record->dip.version = p_attr->attr_value.v.u16; record->dip.version = p_attr->attr_value.v.u16; } else { } else { LOG_ERROR("ATTR_ID_PRODUCT_VERSION attr type or len wrong!!"); log::error("ATTR_ID_PRODUCT_VERSION attr type or len wrong!!"); } } } else { } else { LOG_ERROR("%s() ATTR_ID_PRODUCT_VERSION not found", __func__); log::error("ATTR_ID_PRODUCT_VERSION not found"); } } p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( p_attr = get_legacy_stack_sdp_api()->record.SDP_FindAttributeInRec( Loading @@ -505,10 +506,10 @@ static void bta_create_dip_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { SDP_DISC_ATTR_LEN(p_attr->attr_len_type) >= 1) { record->dip.primary_record = !(!p_attr->attr_value.v.u8); record->dip.primary_record = !(!p_attr->attr_value.v.u8); } else { } else { LOG_ERROR("ATTR_ID_PRIMARY_RECORD attr type or len wrong!!"); log::error("ATTR_ID_PRIMARY_RECORD attr type or len wrong!!"); } } } else { } else { LOG_ERROR("%s() ATTR_ID_PRIMARY_RECORD not found", __func__); log::error("ATTR_ID_PRIMARY_RECORD not found"); } } } } Loading @@ -533,10 +534,10 @@ static void bta_create_raw_sdp_record(bluetooth_sdp_record* record, SDP_DISC_ATTR_LEN(p_attr->attr_len_type); SDP_DISC_ATTR_LEN(p_attr->attr_len_type); record->pse.hdr.service_name = (char*)p_attr->attr_value.v.array; record->pse.hdr.service_name = (char*)p_attr->attr_value.v.array; } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr type NOT string!!"); log::error("ATTR_ID_SERVICE_NAME attr type NOT string!!"); } } } else { } else { LOG_ERROR("ATTR_ID_SERVICE_NAME attr not found!!"); log::error("ATTR_ID_SERVICE_NAME attr not found!!"); } } /* Try to extract an RFCOMM channel */ /* Try to extract an RFCOMM channel */ Loading @@ -553,7 +554,7 @@ static void bta_sdp_search_cback(UNUSED_ATTR const RawAddress& bd_addr, tSDP_RESULT result, const void* user_data) { tSDP_RESULT result, const void* user_data) { tBTA_SDP_STATUS status = BTA_SDP_FAILURE; tBTA_SDP_STATUS status = BTA_SDP_FAILURE; int count = 0; int count = 0; LOG_VERBOSE("%s() - res: 0x%x", __func__, result); log::verbose("res: 0x{:x}", result); bta_sdp_cb.sdp_active = false; bta_sdp_cb.sdp_active = false; Loading @@ -573,28 +574,28 @@ static void bta_sdp_search_cback(UNUSED_ATTR const RawAddress& bd_addr, p_bta_sdp_cfg->p_sdp_db, uuid, p_rec); p_bta_sdp_cfg->p_sdp_db, uuid, p_rec); /* generate the matching record data pointer */ /* generate the matching record data pointer */ if (!p_rec) { if (!p_rec) { LOG_VERBOSE("%s() - UUID not found", __func__); log::verbose("UUID not found"); continue; continue; } } status = BTA_SDP_SUCCESS; status = BTA_SDP_SUCCESS; if (uuid == UUID_MAP_MAS) { if (uuid == UUID_MAP_MAS) { LOG_VERBOSE("%s() - found MAP (MAS) uuid", __func__); log::verbose("found MAP (MAS) uuid"); bta_create_mas_sdp_record(&evt_data.records[count], p_rec); bta_create_mas_sdp_record(&evt_data.records[count], p_rec); } else if (uuid == UUID_MAP_MNS) { } else if (uuid == UUID_MAP_MNS) { LOG_VERBOSE("%s() - found MAP (MNS) uuid", __func__); log::verbose("found MAP (MNS) uuid"); bta_create_mns_sdp_record(&evt_data.records[count], p_rec); bta_create_mns_sdp_record(&evt_data.records[count], p_rec); } else if (uuid == UUID_PBAP_PSE) { } else if (uuid == UUID_PBAP_PSE) { LOG_VERBOSE("%s() - found PBAP (PSE) uuid", __func__); log::verbose("found PBAP (PSE) uuid"); bta_create_pse_sdp_record(&evt_data.records[count], p_rec); bta_create_pse_sdp_record(&evt_data.records[count], p_rec); } else if (uuid == UUID_OBEX_OBJECT_PUSH) { } else if (uuid == UUID_OBEX_OBJECT_PUSH) { LOG_VERBOSE("%s() - found Object Push Server (OPS) uuid", __func__); log::verbose("found Object Push Server (OPS) uuid"); bta_create_ops_sdp_record(&evt_data.records[count], p_rec); bta_create_ops_sdp_record(&evt_data.records[count], p_rec); } else if (uuid == UUID_SAP) { } else if (uuid == UUID_SAP) { LOG_VERBOSE("%s() - found SAP uuid", __func__); log::verbose("found SAP uuid"); bta_create_sap_sdp_record(&evt_data.records[count], p_rec); bta_create_sap_sdp_record(&evt_data.records[count], p_rec); } else if (uuid == UUID_PBAP_PCE) { } else if (uuid == UUID_PBAP_PCE) { LOG_VERBOSE("%s() - found PBAP (PCE) uuid", __func__); log::verbose("found PBAP (PCE) uuid"); if (p_rec != NULL) { if (p_rec != NULL) { uint16_t peer_pce_version = 0; uint16_t peer_pce_version = 0; Loading @@ -605,14 +606,14 @@ static void bta_sdp_search_cback(UNUSED_ATTR const RawAddress& bd_addr, peer_pce_version); peer_pce_version); } } } else { } else { LOG_VERBOSE("%s() - PCE Record is null", __func__); log::verbose("PCE Record is null"); } } } else if (uuid == UUID_DIP) { } else if (uuid == UUID_DIP) { LOG_VERBOSE("%s() - found DIP uuid", __func__); log::verbose("found DIP uuid"); bta_create_dip_sdp_record(&evt_data.records[count], p_rec); bta_create_dip_sdp_record(&evt_data.records[count], p_rec); } else { } else { /* we do not have specific structure for this */ /* we do not have specific structure for this */ LOG_VERBOSE("%s() - profile not identified. using raw data", __func__); log::verbose("profile not identified. using raw data"); bta_create_raw_sdp_record(&evt_data.records[count], p_rec); bta_create_raw_sdp_record(&evt_data.records[count], p_rec); p_rec = NULL; // Terminate loop p_rec = NULL; // Terminate loop /* For raw, we only extract the first entry, and then return the /* For raw, we only extract the first entry, and then return the Loading Loading @@ -647,7 +648,7 @@ static void bta_sdp_search_cback(UNUSED_ATTR const RawAddress& bd_addr, * * ******************************************************************************/ ******************************************************************************/ void bta_sdp_enable(tBTA_SDP_DM_CBACK* p_cback) { void bta_sdp_enable(tBTA_SDP_DM_CBACK* p_cback) { LOG_VERBOSE("%s in, sdp_active:%d", __func__, bta_sdp_cb.sdp_active); log::verbose("in, sdp_active:{}", bta_sdp_cb.sdp_active); tBTA_SDP_STATUS status = BTA_SDP_SUCCESS; tBTA_SDP_STATUS status = BTA_SDP_SUCCESS; bta_sdp_cb.p_dm_cback = p_cback; bta_sdp_cb.p_dm_cback = p_cback; tBTA_SDP bta_sdp; tBTA_SDP bta_sdp; Loading @@ -667,7 +668,7 @@ void bta_sdp_enable(tBTA_SDP_DM_CBACK* p_cback) { void bta_sdp_search(const RawAddress bd_addr, const bluetooth::Uuid uuid) { void bta_sdp_search(const RawAddress bd_addr, const bluetooth::Uuid uuid) { tBTA_SDP_STATUS status = BTA_SDP_FAILURE; tBTA_SDP_STATUS status = BTA_SDP_FAILURE; LOG_VERBOSE("%s in, sdp_active:%d", __func__, bta_sdp_cb.sdp_active); log::verbose("in, sdp_active:{}", bta_sdp_cb.sdp_active); if (bta_sdp_cb.sdp_active) { if (bta_sdp_cb.sdp_active) { /* SDP is still in progress */ /* SDP is still in progress */ Loading @@ -689,8 +690,7 @@ void bta_sdp_search(const RawAddress bd_addr, const bluetooth::Uuid uuid) { bta_sdp_cb.remote_addr = bd_addr; bta_sdp_cb.remote_addr = bd_addr; /* initialize the search for the uuid */ /* initialize the search for the uuid */ LOG_VERBOSE("%s init discovery with UUID: %s", __func__, log::verbose("init discovery with UUID: {}", uuid.ToString()); uuid.ToString().c_str()); get_legacy_stack_sdp_api()->service.SDP_InitDiscoveryDb( get_legacy_stack_sdp_api()->service.SDP_InitDiscoveryDb( p_bta_sdp_cfg->p_sdp_db, p_bta_sdp_cfg->sdp_db_size, 1, &uuid, 0, NULL); p_bta_sdp_cfg->p_sdp_db, p_bta_sdp_cfg->sdp_db_size, 1, &uuid, 0, NULL); Loading