1/****************************************************************************** 2 * 3 * Copyright (C) 1999-2012 Broadcom Corporation 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#ifndef SDP_API_H 19#define SDP_API_H 20 21#include "bt_target.h" 22#include "sdpdefs.h" 23 24/***************************************************************************** 25** Constants 26*****************************************************************************/ 27 28/* Success code and error codes */ 29#define SDP_SUCCESS 0x0000 30#define SDP_INVALID_VERSION 0x0001 31#define SDP_INVALID_SERV_REC_HDL 0x0002 32#define SDP_INVALID_REQ_SYNTAX 0x0003 33#define SDP_INVALID_PDU_SIZE 0x0004 34#define SDP_INVALID_CONT_STATE 0x0005 35#define SDP_NO_RESOURCES 0x0006 36#define SDP_DI_REG_FAILED 0x0007 37#define SDP_DI_DISC_FAILED 0x0008 38#define SDP_NO_DI_RECORD_FOUND 0x0009 39#define SDP_ERR_ATTR_NOT_PRESENT 0x000A 40#define SDP_ILLEGAL_PARAMETER 0x000B 41 42#define SDP_NO_RECS_MATCH 0xFFF0 43#define SDP_CONN_FAILED 0xFFF1 44#define SDP_CFG_FAILED 0xFFF2 45#define SDP_GENERIC_ERROR 0xFFF3 46#define SDP_DB_FULL 0xFFF4 47#define SDP_INVALID_PDU 0xFFF5 48#define SDP_SECURITY_ERR 0xFFF6 49#define SDP_CONN_REJECTED 0xFFF7 50#define SDP_CANCEL 0xFFF8 51 52/* these result codes are used only when SDP_FOR_JV_INCLUDED==TRUE */ 53#define SDP_EVT_OPEN 0x00F0 /* connected */ 54#define SDP_EVT_DATA_IND 0x00F1 /* data ind */ 55#define SDP_EVT_CLOSE 0x00F2 /* disconnected */ 56 57/* Define the PSM that SDP uses */ 58#define SDP_PSM 0x0001 59 60/* Legacy #define to avoid code changes - SDP UUID is same as BT UUID */ 61#define tSDP_UUID tBT_UUID 62 63/* Masks for attr_value field of tSDP_DISC_ATTR */ 64#define SDP_DISC_ATTR_LEN_MASK 0x0FFF 65#define SDP_DISC_ATTR_TYPE(len_type) (len_type >> 12) 66#define SDP_DISC_ATTR_LEN(len_type) (len_type & SDP_DISC_ATTR_LEN_MASK) 67 68/* Maximum number of protocol list items (list_elem in tSDP_PROTOCOL_ELEM) */ 69#define SDP_MAX_LIST_ELEMS 3 70 71 72/***************************************************************************** 73** Type Definitions 74*****************************************************************************/ 75 76/* Define a callback function for when discovery is complete. */ 77typedef void (tSDP_DISC_CMPL_CB) (UINT16 result); 78typedef void (tSDP_DISC_CMPL_CB2) (UINT16 result, void* user_data); 79 80typedef struct 81{ 82 BD_ADDR peer_addr; 83 UINT16 peer_mtu; 84} tSDP_DR_OPEN; 85 86typedef struct 87{ 88 UINT8 *p_data; 89 UINT16 data_len; 90} tSDP_DR_DATA; 91 92typedef union 93{ 94 tSDP_DR_OPEN open; 95 tSDP_DR_DATA data; 96} tSDP_DATA; 97 98/* Define a callback function for when discovery result is received. */ 99typedef void (tSDP_DISC_RES_CB) (UINT16 event, tSDP_DATA *p_data); 100 101/* Define a structure to hold the discovered service information. */ 102typedef struct 103{ 104 union 105 { 106 UINT8 u8; /* 8-bit integer */ 107 UINT16 u16; /* 16-bit integer */ 108 UINT32 u32; /* 32-bit integer */ 109 UINT8 array[4]; /* Variable length field */ 110 struct t_sdp_disc_attr *p_sub_attr; /* Addr of first sub-attr (list)*/ 111 } v; 112 113} tSDP_DISC_ATVAL; 114 115typedef struct t_sdp_disc_attr 116{ 117 struct t_sdp_disc_attr *p_next_attr; /* Addr of next linked attr */ 118 UINT16 attr_id; /* Attribute ID */ 119 UINT16 attr_len_type; /* Length and type fields */ 120 tSDP_DISC_ATVAL attr_value; /* Variable length entry data */ 121} tSDP_DISC_ATTR; 122 123typedef struct t_sdp_disc_rec 124{ 125 tSDP_DISC_ATTR *p_first_attr; /* First attribute of record */ 126 struct t_sdp_disc_rec *p_next_rec; /* Addr of next linked record */ 127 UINT32 time_read; /* The time the record was read */ 128 BD_ADDR remote_bd_addr; /* Remote BD address */ 129} tSDP_DISC_REC; 130 131typedef struct 132{ 133 UINT32 mem_size; /* Memory size of the DB */ 134 UINT32 mem_free; /* Memory still available */ 135 tSDP_DISC_REC *p_first_rec; /* Addr of first record in DB */ 136 UINT16 num_uuid_filters; /* Number of UUIds to filter */ 137 tSDP_UUID uuid_filters[SDP_MAX_UUID_FILTERS]; /* UUIDs to filter */ 138 UINT16 num_attr_filters; /* Number of attribute filters */ 139 UINT16 attr_filters[SDP_MAX_ATTR_FILTERS]; /* Attributes to filter */ 140 UINT8 *p_free_mem; /* Pointer to free memory */ 141#if (SDP_RAW_DATA_INCLUDED == TRUE) 142 UINT8 *raw_data; /* Received record from server. allocated/released by client */ 143 UINT32 raw_size; /* size of raw_data */ 144 UINT32 raw_used; /* length of raw_data used */ 145#endif 146}tSDP_DISCOVERY_DB; 147 148/* This structure is used to add protocol lists and find protocol elements */ 149typedef struct 150{ 151 UINT16 protocol_uuid; 152 UINT16 num_params; 153 UINT16 params[SDP_MAX_PROTOCOL_PARAMS]; 154} tSDP_PROTOCOL_ELEM; 155 156typedef struct 157{ 158 UINT16 num_elems; 159 tSDP_PROTOCOL_ELEM list_elem[SDP_MAX_LIST_ELEMS]; 160} tSDP_PROTO_LIST_ELEM; 161 162/* Device Identification (DI) data structure 163*/ 164/* Used to set the DI record */ 165typedef struct t_sdp_di_record 166{ 167 UINT16 vendor; 168 UINT16 vendor_id_source; 169 UINT16 product; 170 UINT16 version; 171 BOOLEAN primary_record; 172 char client_executable_url[SDP_MAX_ATTR_LEN]; /* optional */ 173 char service_description[SDP_MAX_ATTR_LEN]; /* optional */ 174 char documentation_url[SDP_MAX_ATTR_LEN]; /* optional */ 175}tSDP_DI_RECORD; 176 177/* Used to get the DI record */ 178typedef struct t_sdp_di_get_record 179{ 180 UINT16 spec_id; 181 tSDP_DI_RECORD rec; 182}tSDP_DI_GET_RECORD; 183 184 185/***************************************************************************** 186** External Function Declarations 187*****************************************************************************/ 188#ifdef __cplusplus 189extern "C" 190{ 191#endif 192 193/* API into the SDP layer for service discovery. */ 194 195/******************************************************************************* 196** 197** Function SDP_InitDiscoveryDb 198** 199** Description This function is called to initialize a discovery database. 200** 201** Returns TRUE if successful, FALSE if one or more parameters are bad 202** 203*******************************************************************************/ 204SDP_API extern BOOLEAN SDP_InitDiscoveryDb (tSDP_DISCOVERY_DB *p_db, UINT32 len, 205 UINT16 num_uuid, 206 tSDP_UUID *p_uuid_list, 207 UINT16 num_attr, 208 UINT16 *p_attr_list); 209 210/******************************************************************************* 211** 212** Function SDP_CancelServiceSearch 213** 214** Description This function cancels an active query to an SDP server. 215** 216** Returns TRUE if discovery cancelled, FALSE if a matching activity is not found. 217** 218*******************************************************************************/ 219SDP_API extern BOOLEAN SDP_CancelServiceSearch (tSDP_DISCOVERY_DB *p_db); 220 221/******************************************************************************* 222** 223** Function SDP_ServiceSearchRequest 224** 225** Description This function queries an SDP server for information. 226** 227** Returns TRUE if discovery started, FALSE if failed. 228** 229*******************************************************************************/ 230SDP_API extern BOOLEAN SDP_ServiceSearchRequest (UINT8 *p_bd_addr, 231 tSDP_DISCOVERY_DB *p_db, 232 tSDP_DISC_CMPL_CB *p_cb); 233 234 235/******************************************************************************* 236** 237** Function SDP_ServiceSearchAttributeRequest 238** 239** Description This function queries an SDP server for information. 240** 241** The difference between this API function and the function 242** SDP_ServiceSearchRequest is that this one does a 243** combined ServiceSearchAttributeRequest SDP function. 244** 245** Returns TRUE if discovery started, FALSE if failed. 246** 247*******************************************************************************/ 248SDP_API extern BOOLEAN SDP_ServiceSearchAttributeRequest (UINT8 *p_bd_addr, 249 tSDP_DISCOVERY_DB *p_db, 250 tSDP_DISC_CMPL_CB *p_cb); 251 252/******************************************************************************* 253** 254** Function SDP_ServiceSearchAttributeRequest2 255** 256** Description This function queries an SDP server for information. 257** 258** The difference between this API function and the function 259** SDP_ServiceSearchRequest is that this one does a 260** combined ServiceSearchAttributeRequest SDP function with the 261** user data piggyback 262** 263** Returns TRUE if discovery started, FALSE if failed. 264** 265*******************************************************************************/ 266SDP_API extern BOOLEAN SDP_ServiceSearchAttributeRequest2 (UINT8 *p_bd_addr, 267 tSDP_DISCOVERY_DB *p_db, 268 tSDP_DISC_CMPL_CB2 *p_cb, void * user_data); 269 270/* API of utilities to find data in the local discovery database */ 271 272/******************************************************************************* 273** 274** Function SDP_FindAttributeInDb 275** 276** Description This function queries an SDP database for a specific attribute. 277** If the p_start_rec pointer is NULL, it looks from the beginning 278** of the database, else it continues from the next record after 279** p_start_rec. 280** 281** Returns Pointer to matching record, or NULL 282** 283*******************************************************************************/ 284SDP_API extern tSDP_DISC_REC *SDP_FindAttributeInDb (tSDP_DISCOVERY_DB *p_db, 285 UINT16 attr_id, 286 tSDP_DISC_REC *p_start_rec); 287 288 289/******************************************************************************* 290** 291** Function SDP_FindAttributeInRec 292** 293** Description This function searches an SDP discovery record for a 294** specific attribute. 295** 296** Returns Pointer to matching attribute entry, or NULL 297** 298*******************************************************************************/ 299SDP_API extern tSDP_DISC_ATTR *SDP_FindAttributeInRec (tSDP_DISC_REC *p_rec, 300 UINT16 attr_id); 301 302 303/******************************************************************************* 304** 305** Function SDP_FindServiceInDb 306** 307** Description This function queries an SDP database for a specific service. 308** If the p_start_rec pointer is NULL, it looks from the beginning 309** of the database, else it continues from the next record after 310** p_start_rec. 311** 312** Returns Pointer to record containing service class, or NULL 313** 314*******************************************************************************/ 315SDP_API extern tSDP_DISC_REC *SDP_FindServiceInDb (tSDP_DISCOVERY_DB *p_db, 316 UINT16 service_uuid, 317 tSDP_DISC_REC *p_start_rec); 318 319 320/******************************************************************************* 321** 322** Function SDP_FindServiceUUIDInDb 323** 324** Description This function queries an SDP database for a specific service. 325** If the p_start_rec pointer is NULL, it looks from the beginning 326** of the database, else it continues from the next record after 327** p_start_rec. 328** 329** NOTE the only difference between this function and the previous 330** function "SDP_FindServiceInDb()" is that this function takes 331** a tBT_UUID input. 332** 333** Returns Pointer to record containing service class, or NULL 334** 335*******************************************************************************/ 336SDP_API extern tSDP_DISC_REC *SDP_FindServiceUUIDInDb (tSDP_DISCOVERY_DB *p_db, 337 tBT_UUID *p_uuid, 338 tSDP_DISC_REC *p_start_rec); 339 340/******************************************************************************* 341** 342** Function SDP_FindServiceUUIDInRec_128bit 343** 344** Description This function is called to read the 128-bit service UUID within a record 345** if there is any. 346** 347** Parameters: p_rec - pointer to a SDP record. 348** p_uuid - output parameter to save the UUID found. 349** 350** Returns TRUE if found, otherwise FALSE. 351** 352*******************************************************************************/ 353SDP_API extern BOOLEAN SDP_FindServiceUUIDInRec_128bit(tSDP_DISC_REC *p_rec, tBT_UUID * p_uuid); 354 355/******************************************************************************* 356** 357** Function SDP_FindServiceInDb_128bit 358** 359** Description This function queries an SDP database for a specific service. 360** If the p_start_rec pointer is NULL, it looks from the beginning 361** of the database, else it continues from the next record after 362** p_start_rec. 363** 364** Returns Pointer to record containing service class, or NULL 365** 366*******************************************************************************/ 367SDP_API extern tSDP_DISC_REC *SDP_FindServiceInDb_128bit(tSDP_DISCOVERY_DB *p_db, 368 tSDP_DISC_REC *p_start_rec); 369 370/******************************************************************************* 371** 372** Function SDP_FindProtocolListElemInRec 373** 374** Description This function looks at a specific discovery record for a 375** protocol list element. 376** 377** Returns TRUE if found, FALSE if not 378** If found, the passed protocol list element is filled in. 379** 380*******************************************************************************/ 381SDP_API extern BOOLEAN SDP_FindProtocolListElemInRec (tSDP_DISC_REC *p_rec, 382 UINT16 layer_uuid, 383 tSDP_PROTOCOL_ELEM *p_elem); 384 385 386/******************************************************************************* 387** 388** Function SDP_FindAddProtoListsElemInRec 389** 390** Description This function looks at a specific discovery record for a 391** protocol list element. 392** 393** Returns TRUE if found, FALSE if not 394** If found, the passed protocol list element is filled in. 395** 396*******************************************************************************/ 397SDP_API extern BOOLEAN SDP_FindAddProtoListsElemInRec (tSDP_DISC_REC *p_rec, 398 UINT16 layer_uuid, 399 tSDP_PROTOCOL_ELEM *p_elem); 400 401 402/******************************************************************************* 403** 404** Function SDP_FindProfileVersionInRec 405** 406** Description This function looks at a specific discovery record for the 407** Profile list descriptor, and pulls out the version number. 408** The version number consists of an 8-bit major version and 409** an 8-bit minor version. 410** 411** Returns TRUE if found, FALSE if not 412** If found, the major and minor version numbers that were passed 413** in are filled in. 414** 415*******************************************************************************/ 416SDP_API extern BOOLEAN SDP_FindProfileVersionInRec (tSDP_DISC_REC *p_rec, 417 UINT16 profile_uuid, 418 UINT16 *p_version); 419 420 421/* API into SDP for local service database updates */ 422 423/******************************************************************************* 424** 425** Function SDP_CreateRecord 426** 427** Description This function is called to create a record in the database. 428** This would be through the SDP database maintenance API. The 429** record is created empty, teh application should then call 430** "add_attribute" to add the record's attributes. 431** 432** Returns Record handle if OK, else 0. 433** 434*******************************************************************************/ 435SDP_API extern UINT32 SDP_CreateRecord (void); 436 437 438/******************************************************************************* 439** 440** Function SDP_DeleteRecord 441** 442** Description This function is called to add a record (or all records) 443** from the database. This would be through the SDP database 444** maintenance API. 445** 446** If a record handle of 0 is passed, all records are deleted. 447** 448** Returns TRUE if succeeded, else FALSE 449** 450*******************************************************************************/ 451SDP_API extern BOOLEAN SDP_DeleteRecord (UINT32 handle); 452 453 454/******************************************************************************* 455** 456** Function SDP_ReadRecord 457** 458** Description This function is called to get the raw data of the record 459** with the given handle from the database. 460** 461** Returns -1, if the record is not found. 462** Otherwise, the offset (0 or 1) to start of data in p_data. 463** 464** The size of data copied into p_data is in *p_data_len. 465** 466*******************************************************************************/ 467SDP_API extern INT32 SDP_ReadRecord(UINT32 handle, UINT8 *p_data, INT32 *p_data_len); 468 469/******************************************************************************* 470** 471** Function SDP_AddAttribute 472** 473** Description This function is called to add an attribute to a record. 474** This would be through the SDP database maintenance API. 475** If the attribute already exists in the record, it is replaced 476** with the new value. 477** 478** NOTE Attribute values must be passed as a Big Endian stream. 479** 480** Returns TRUE if added OK, else FALSE 481** 482*******************************************************************************/ 483SDP_API extern BOOLEAN SDP_AddAttribute (UINT32 handle, UINT16 attr_id, 484 UINT8 attr_type, UINT32 attr_len, 485 UINT8 *p_val); 486 487 488/******************************************************************************* 489** 490** Function SDP_AddSequence 491** 492** Description This function is called to add a sequence to a record. 493** This would be through the SDP database maintenance API. 494** If the sequence already exists in the record, it is replaced 495** with the new sequence. 496** 497** NOTE Element values must be passed as a Big Endian stream. 498** 499** Returns TRUE if added OK, else FALSE 500** 501*******************************************************************************/ 502SDP_API extern BOOLEAN SDP_AddSequence (UINT32 handle, UINT16 attr_id, 503 UINT16 num_elem, UINT8 type[], 504 UINT8 len[], UINT8 *p_val[]); 505 506 507/******************************************************************************* 508** 509** Function SDP_AddUuidSequence 510** 511** Description This function is called to add a UUID sequence to a record. 512** This would be through the SDP database maintenance API. 513** If the sequence already exists in the record, it is replaced 514** with the new sequence. 515** 516** Returns TRUE if added OK, else FALSE 517** 518*******************************************************************************/ 519SDP_API extern BOOLEAN SDP_AddUuidSequence (UINT32 handle, UINT16 attr_id, 520 UINT16 num_uuids, UINT16 *p_uuids); 521 522 523/******************************************************************************* 524** 525** Function SDP_AddProtocolList 526** 527** Description This function is called to add a protocol descriptor list to 528** a record. This would be through the SDP database maintenance API. 529** If the protocol list already exists in the record, it is replaced 530** with the new list. 531** 532** Returns TRUE if added OK, else FALSE 533** 534*******************************************************************************/ 535SDP_API extern BOOLEAN SDP_AddProtocolList (UINT32 handle, UINT16 num_elem, 536 tSDP_PROTOCOL_ELEM *p_elem_list); 537 538 539/******************************************************************************* 540** 541** Function SDP_AddAdditionProtoLists 542** 543** Description This function is called to add a protocol descriptor list to 544** a record. This would be through the SDP database maintenance API. 545** If the protocol list already exists in the record, it is replaced 546** with the new list. 547** 548** Returns TRUE if added OK, else FALSE 549** 550*******************************************************************************/ 551SDP_API extern BOOLEAN SDP_AddAdditionProtoLists (UINT32 handle, UINT16 num_elem, 552 tSDP_PROTO_LIST_ELEM *p_proto_list); 553 554 555/******************************************************************************* 556** 557** Function SDP_AddProfileDescriptorList 558** 559** Description This function is called to add a profile descriptor list to 560** a record. This would be through the SDP database maintenance API. 561** If the version already exists in the record, it is replaced 562** with the new one. 563** 564** Returns TRUE if added OK, else FALSE 565** 566*******************************************************************************/ 567SDP_API extern BOOLEAN SDP_AddProfileDescriptorList (UINT32 handle, 568 UINT16 profile_uuid, 569 UINT16 version); 570 571 572/******************************************************************************* 573** 574** Function SDP_AddLanguageBaseAttrIDList 575** 576** Description This function is called to add a language base attr list to 577** a record. This would be through the SDP database maintenance API. 578** If the version already exists in the record, it is replaced 579** with the new one. 580** 581** Returns TRUE if added OK, else FALSE 582** 583*******************************************************************************/ 584SDP_API extern BOOLEAN SDP_AddLanguageBaseAttrIDList (UINT32 handle, 585 UINT16 lang, UINT16 char_enc, 586 UINT16 base_id); 587 588 589/******************************************************************************* 590** 591** Function SDP_AddServiceClassIdList 592** 593** Description This function is called to add a service list to a record. 594** This would be through the SDP database maintenance API. 595** If the service list already exists in the record, it is replaced 596** with the new list. 597** 598** Returns TRUE if added OK, else FALSE 599** 600*******************************************************************************/ 601SDP_API extern BOOLEAN SDP_AddServiceClassIdList (UINT32 handle, 602 UINT16 num_services, 603 UINT16 *p_service_uuids); 604 605 606/******************************************************************************* 607** 608** Function SDP_DeleteAttribute 609** 610** Description This function is called to delete an attribute from a record. 611** This would be through the SDP database maintenance API. 612** 613** Returns TRUE if deleted OK, else FALSE if not found 614** 615*******************************************************************************/ 616SDP_API extern BOOLEAN SDP_DeleteAttribute (UINT32 handle, UINT16 attr_id); 617 618 619/* Device Identification APIs */ 620 621/******************************************************************************* 622** 623** Function SDP_SetLocalDiRecord 624** 625** Description This function adds a DI record to the local SDP database. 626** 627** Returns Returns SDP_SUCCESS if record added successfully, else error 628** 629*******************************************************************************/ 630SDP_API extern UINT16 SDP_SetLocalDiRecord (tSDP_DI_RECORD *device_info, 631 UINT32 *p_handle); 632 633/******************************************************************************* 634** 635** Function SDP_GetLocalDiRecord 636** 637** Description This function adds a DI record to the local SDP database. 638** 639** Fills in the device information of the record 640** p_handle - if p_handle == NULL, the primary record is returned 641** 642** Returns Returns SDP_SUCCESS if record exists, else error 643** 644*******************************************************************************/ 645SDP_API extern UINT16 SDP_GetLocalDiRecord(tSDP_DI_GET_RECORD *p_device_info, 646 UINT32 *p_handle ); 647 648/******************************************************************************* 649** 650** Function SDP_DiDiscover 651** 652** Description This function queries a remote device for DI information. 653** 654** Returns SDP_SUCCESS if query started successfully, else error 655** 656*******************************************************************************/ 657SDP_API extern UINT16 SDP_DiDiscover (BD_ADDR remote_device, 658 tSDP_DISCOVERY_DB *p_db, UINT32 len, 659 tSDP_DISC_CMPL_CB *p_cb); 660 661 662/******************************************************************************* 663** 664** Function SDP_GetNumDiRecords 665** 666** Description Searches specified database for DI records 667** 668** Returns number of DI records found 669** 670*******************************************************************************/ 671SDP_API extern UINT8 SDP_GetNumDiRecords (tSDP_DISCOVERY_DB *p_db); 672 673 674/******************************************************************************* 675** 676** Function SDP_GetDiRecord 677** 678** Description This function retrieves a remote device's DI record from 679** the specified database. 680** 681** Returns SDP_SUCCESS if record retrieved, else error 682** 683*******************************************************************************/ 684SDP_API extern UINT16 SDP_GetDiRecord (UINT8 getRecordIndex, 685 tSDP_DI_GET_RECORD *device_info, 686 tSDP_DISCOVERY_DB *p_db); 687 688 689/******************************************************************************* 690** 691** Function SDP_SetTraceLevel 692** 693** Description This function sets the trace level for SDP. If called with 694** a value of 0xFF, it simply reads the current trace level. 695** 696** Returns the new (current) trace level 697** 698*******************************************************************************/ 699SDP_API extern UINT8 SDP_SetTraceLevel (UINT8 new_level); 700 701/******************************************************************************* 702** 703** Function SDP_ConnOpen 704** 705** Description This function creates a connection to the SDP server on the 706** given device. 707** 708** Returns 0, if failed to initiate connection. Otherwise, the handle. 709** 710*******************************************************************************/ 711SDP_API UINT32 SDP_ConnOpen (UINT8 *p_bd_addr, tSDP_DISC_RES_CB *p_rcb, 712 tSDP_DISC_CMPL_CB *p_cb); 713 714/******************************************************************************* 715** 716** Function SDP_WriteData 717** 718** Description This function sends data to the connected SDP server. 719** 720** Returns TRUE if data is sent, FALSE if failed. 721** 722*******************************************************************************/ 723SDP_API BOOLEAN SDP_WriteData (UINT32 handle, BT_HDR *p_msg); 724 725/******************************************************************************* 726** 727** Function SDP_ConnClose 728** 729** Description This function is called to close a SDP connection. 730** 731** Parameters: handle - Handle of the connection returned by SDP_ConnOpen 732** 733** Returns TRUE if connection is closed, FALSE if failed to find the handle. 734** 735*******************************************************************************/ 736SDP_API BOOLEAN SDP_ConnClose (UINT32 handle); 737 738/******************************************************************************* 739** 740** Function SDP_FindServiceUUIDInRec 741** 742** Description This function is called to read the service UUID within a record 743** if there is any. 744** 745** Parameters: p_rec - pointer to a SDP record. 746** 747** Returns TRUE if found, otherwise FALSE. 748** 749*******************************************************************************/ 750SDP_API BOOLEAN SDP_FindServiceUUIDInRec(tSDP_DISC_REC *p_rec, tBT_UUID *p_uuid); 751 752#ifdef __cplusplus 753} 754#endif 755 756#endif /* SDP_API_H */ 757