1 /****************************************************************************** 2 * 3 * Copyright 2015 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19 /****************************************************************************** 20 * 21 * This is the public interface file for the BTA SDP I/F 22 * 23 ******************************************************************************/ 24 #ifndef BTA_SDP_API_H 25 #define BTA_SDP_API_H 26 27 #include <cstdint> 28 29 #include "bt_target.h" // Must be first to define build configuration 30 31 #include "bta/include/bta_api.h" 32 #include "bta/include/bta_sdp_api.h" 33 #include "include/hardware/bt_sdp.h" // bluetooth_sdp_record 34 #include "types/bluetooth/uuid.h" 35 #include "types/raw_address.h" 36 37 using bluetooth::Uuid; 38 39 /* status values */ 40 #define BTA_SDP_SUCCESS 0 /* Successful operation. */ 41 #define BTA_SDP_FAILURE 1 /* Generic failure. */ 42 #define BTA_SDP_BUSY 2 /* Temporarily can not handle this request. */ 43 44 typedef uint8_t tBTA_SDP_STATUS; 45 46 /* SDP I/F callback events */ 47 /* events received by tBTA_SDP_DM_CBACK */ 48 #define BTA_SDP_ENABLE_EVT 0 /* SDP service i/f enabled*/ 49 #define BTA_SDP_SEARCH_EVT 1 /* SDP Service started */ 50 #define BTA_SDP_SEARCH_COMP_EVT 2 /* SDP search complete */ 51 #define BTA_SDP_CREATE_RECORD_USER_EVT 3 /* SDP search complete */ 52 #define BTA_SDP_REMOVE_RECORD_USER_EVT 4 /* SDP search complete */ 53 #define BTA_SDP_MAX_EVT 5 /* max number of SDP events */ 54 55 #define BTA_SDP_MAX_RECORDS 15 56 57 typedef uint16_t tBTA_SDP_EVT; 58 59 /* data associated with BTA_SDP_DISCOVERY_COMP_EVT */ 60 typedef struct { 61 tBTA_SDP_STATUS status; 62 RawAddress remote_addr; 63 bluetooth::Uuid uuid; 64 int record_count; 65 bluetooth_sdp_record records[BTA_SDP_MAX_RECORDS]; 66 } tBTA_SDP_SEARCH_COMP; 67 68 typedef union { 69 tBTA_SDP_STATUS status; /* BTA_SDP_SEARCH_EVT */ 70 tBTA_SDP_SEARCH_COMP sdp_search_comp; /* BTA_SDP_SEARCH_COMP_EVT */ 71 } tBTA_SDP; 72 73 /* SDP DM Interface callback */ 74 typedef void(tBTA_SDP_DM_CBACK)(tBTA_SDP_EVT event, tBTA_SDP* p_data, 75 void* user_data); 76 77 /* MCE configuration structure */ 78 typedef struct { 79 uint16_t sdp_db_size; /* The size of p_sdp_db */ 80 tSDP_DISCOVERY_DB* p_sdp_db; /* The data buffer to keep SDP database */ 81 } tBTA_SDP_CFG; 82 83 /******************************************************************************* 84 * 85 * Function BTA_SdpEnable 86 * 87 * Description Enable the SDP I/F service. When the enable 88 * operation is complete the callback function will be 89 * called with a BTA_SDP_ENABLE_EVT. This function must 90 * be called before other functions in the MCE API are 91 * called. 92 * 93 * Returns BTA_SDP_SUCCESS if successful. 94 * BTA_SDP_FAIL if internal failure. 95 * 96 ******************************************************************************/ 97 extern tBTA_SDP_STATUS BTA_SdpEnable(tBTA_SDP_DM_CBACK* p_cback); 98 99 /******************************************************************************* 100 * 101 * Function BTA_SdpSearch 102 * 103 * Description Start a search for sdp records for a specific BD_ADDR with a 104 * specific profile uuid. 105 * When the search operation is completed, the callback 106 * function will be called with a BTA_SDP_SEARCH_EVT. 107 * Returns BTA_SDP_SUCCESS if successful. 108 * BTA_SDP_FAIL if internal failure. 109 * 110 ******************************************************************************/ 111 extern tBTA_SDP_STATUS BTA_SdpSearch(const RawAddress& bd_addr, 112 const bluetooth::Uuid& uuid); 113 114 /******************************************************************************* 115 * 116 * Function BTA_SdpCreateRecordByUser 117 * 118 * Description This function is used to request a callback to create a SDP 119 * record. The registered callback will be called with event 120 * BTA_SDP_CREATE_RECORD_USER_EVT. 121 * 122 * Returns BTA_SDP_SUCCESS, if the request is being processed. 123 * BTA_SDP_FAILURE, otherwise. 124 * 125 ******************************************************************************/ 126 extern tBTA_SDP_STATUS BTA_SdpCreateRecordByUser(void* user_data); 127 128 /******************************************************************************* 129 * 130 * Function BTA_SdpRemoveRecordByUser 131 * 132 * Description This function is used to request a callback to remove a SDP 133 * record. The registered callback will be called with event 134 * BTA_SDP_REMOVE_RECORD_USER_EVT. 135 * 136 * Returns BTA_SDP_SUCCESS, if the request is being processed. 137 * BTA_SDP_FAILURE, otherwise. 138 * 139 ******************************************************************************/ 140 extern tBTA_SDP_STATUS BTA_SdpRemoveRecordByUser(void* user_data); 141 142 #endif /* BTA_SDP_API_H */ 143