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