Files
MuditaOS/module-bluetooth/lib/Bluetopia/include/SDPAPI.h
2019-10-14 15:32:06 +02:00

1072 lines
57 KiB
C

/*
* Copyright 2000 - 2014 Stonestreet One.
* All Rights Reserved.
* Author: Damon Lange
*** MODIFICATION HISTORY ****************************************************
*
* mm/dd/yy F. Lastname Description of Modification
* -------- ----------- ------------------------------------------------
* 09/11/00 D. Lange Initial creation.
****************************************************************************
*/
/**
* @file SDPAPI.h
*
* @brief Stonestreet One Bluetooth Stack SDP API Type Definitions,
* Constants, and Prototypes. To use any of the following API's,
* include the following declaration in your application.
*
* @code
* #include "SS1BTPS.h"
* @endcode
* ============================================================================
*/
#ifndef __SDPAPIH__
#define __SDPAPIH__
#include "BTPSKRNL.h" /*! BTPS Kernel Prototypes/Constants. */
#include "BTAPITyp.h" /*! Bluetooth API Type Definitions. */
#include "SDPTypes.h" /*! Bluetooth SDP Type Definitions/Constants. */
#include "BTPSCFG.h" /*! BTPS Configuration Constants. */
/*! The following enumerated type represents the different Connection
* Modes that are supported by SDP. These constants are used with
* the SDP_Set_Disconnect_Mode() function.
*/
typedef enum
{
dmAutomatic,
dmManual
} SDP_Disconnect_Mode_t;
/*! The following constant specifies the default SDP Disconnect Mode
* that is used by SDP by default.
*/
#define SDP_DEFAULT_SERVER_DISCONNECT_MODE (BTPS_CONFIGURATION_SDP_DEFAULT_DISCONNECT_MODE)
/*! The following enumerated type represents the supported server
* connection modes supported by the local SDP Server.
*/
typedef enum
{
sdAutomaticAccept,
sdManualAccept
} SDP_Server_Connection_Mode_t;
/*! The following enumerated type represents all the allowable SDP
* Data Element Types that can be used with the SDP API.
*/
typedef enum
{
deNIL,
deNULL,
deUnsignedInteger1Byte,
deUnsignedInteger2Bytes,
deUnsignedInteger4Bytes,
deUnsignedInteger8Bytes,
deUnsignedInteger16Bytes,
deSignedInteger1Byte,
deSignedInteger2Bytes,
deSignedInteger4Bytes,
deSignedInteger8Bytes,
deSignedInteger16Bytes,
deTextString,
deBoolean,
deURL,
deUUID_16,
deUUID_32,
deUUID_128,
deSequence,
deAlternative
} SDP_Data_Element_Type_t;
/*! The following structure holds all SDP Information that is required
* for an SDP Attribute when stored in an array. This is the
* structure that is passed to SDP_Add_Raw_Attribute().
* \note The NumberOfUUIDOffsets and UUIDOffsets must contain the
* number of UUID offsets and a pointer to the UUID offset
* that contain the index in the AttributeData of the SDP
* Data Element type that prefixes each UUID in the
* Attribute Data.
*/
typedef struct _tagSDP_ConstantServiceAttributeEntry_t
{
Byte_t Flags;
Word_t AttributeID;
DWord_t AttributeLength;
DWord_t NumberOfUUIDOffsets;
Word_t *UUIDOffsets;
Byte_t *AttributeData;
} SDP_ConstantServiceAttributeEntry_t;
/*! The following flag is used to indicate if the data pointed to by
* UUIDOffsets and AttributeData is constant. If this flag is set
* then SDP will not make a local copy of this information and
* instead will used the pointers that are passed in.
*/
#define SDP_CONSTANT_SERVICE_ATTRIBUTE_FLAGS_CONSTANT_DATA 0x01
/*! The following data type represents a special SDP Data Type. This
* structure ONLY holds the UUID Data Types. This structure is
* provided so that API calls that only deal with UUID's can use
* this data type instead of the more generic SDP_Data_Element_Type_t
* Data Type. This will aid in code readability and also aid in
* making the code that only processes UUID's more simple.
*/
typedef struct _tagSDP_UUID_Entry_t
{
SDP_Data_Element_Type_t SDP_Data_Element_Type;
union
{
UUID_16_t UUID_16;
UUID_32_t UUID_32;
UUID_128_t UUID_128;
} UUID_Value;
} SDP_UUID_Entry_t;
#define SDP_UUID_ENTRY_SIZE (sizeof(SDP_UUID_Entry_t))
/*! The following data type represents a special SDP Data Type. This
* structure ONLY holds the Attribute ID Information. This
* structure is provided so that API calls that only deal with
* Attribute ID Lists can use this data type instead of the more
* generic SDP_Data_Element_Type_t Data Type. This will aid in code
* readability and also aid in making the code that only processes
* Attribute ID Lists more simple.
* The BOOLEAN Flag specifies whether or not the Attribute ID List
* specifies a Range or a single Attribute ID. If this flag is
* TRUE, then the End_Attribute_ID is valid and is used. The
* End_Attribute_ID value MUST be greater than the Start_Attribute_ID
* value of the entry is considered invalid (if the Attribute_Range
* flag is TRUE). If the Attribute_Range member is FALSE, then the
* Start_Attribute_ID member is the only member that is used.
*/
typedef struct _tagSDP_Attribute_ID_List_Entry_t
{
Boolean_t Attribute_Range;
Word_t Start_Attribute_ID;
Word_t End_Attribute_ID;
} SDP_Attribute_ID_List_Entry_t;
#define SDP_ATTRIBUTE_ID_LIST_ENTRY_SIZE (sizeof(SDP_Attribute_ID_List_Entry_t))
/*! The following Data Structure represents a structure that will hold
* an individual SDP Data Element. The SDP_Data_Element_Type field
* holds the SDP Data Element Type, the Length field holds the number
* of Bytes that the Actual Data Element Value occupies (this value
* represents the buffer size that the pointer member of the union
* points to), and finally, the union defines the actual Data Type
* value. It should be noted that the Text Field and the URL
* members are pointers to data because the data itself is variable
* in length.
* \note The following structure also supports the SDP Data Types
* of Sequences and Alternatives. This is treated as any
* of the other Data Element Types, the
* SDP_Data_Element_Length field denotes the Number of the
* Data Elements that the SDP_Data_Element_Sequence OR the
* SDP_Data_Element_Alternative Member points to.
*/
typedef struct _tagSDP_Data_Element_t
{
SDP_Data_Element_Type_t SDP_Data_Element_Type;
DWord_t SDP_Data_Element_Length;
union
{
Byte_t UnsignedInteger1Byte;
Word_t UnsignedInteger2Bytes;
DWord_t UnsignedInteger4Bytes;
Byte_t UnsignedInteger8Bytes[8];
Byte_t UnsignedInteger16Bytes[16];
SByte_t SignedInteger1Byte;
SWord_t SignedInteger2Bytes;
SDWord_t SignedInteger4Bytes;
Byte_t SignedInteger8Bytes[8];
Byte_t SignedInteger16Bytes[16];
Byte_t Boolean;
UUID_16_t UUID_16;
UUID_32_t UUID_32;
UUID_128_t UUID_128;
Byte_t *TextString;
Byte_t *URL;
struct _tagSDP_Data_Element_t *SDP_Data_Element_Sequence;
struct _tagSDP_Data_Element_t *SDP_Data_Element_Alternative;
} SDP_Data_Element;
} SDP_Data_Element_t;
#define SDP_DATA_ELEMENT_SIZE (sizeof(SDP_Data_Element_t))
/*! SDP Event API Types.
* The following enumerated type represents all the allowable SDP
* Request Response Data Types that will be returned in the SDP
* Response Callback Function.
*/
typedef enum
{
rdTimeout,
rdConnectionError,
rdErrorResponse,
rdServiceSearchResponse,
rdServiceAttributeResponse,
rdServiceSearchAttributeResponse,
rdServiceAttributeResponse_Raw,
rdServiceSearchAttributeResponse_Raw
} SDP_Response_Data_Type_t;
/*! The following enumerated type represents all the allowable SDP
* Connection Event Types that will be returned in the SDP Connection
* Event Callback function that was registered via the
* SDP_Set_Server_Connection_Mode()
*/
typedef enum
{
etSDP_Connection_Request, /*!< Event that signals a connection request has been received. */
etSDP_Connect_Indication, /*!< Event that signals a connection indication has been received. */
etSDP_Disconnect_Indication /*!< Event that signals a disconnection request has been received. */
} SDP_Connection_Event_Type_t;
/*! SDP Response Events.
* The following Data Structure represents the SDP Error Response
* Information that is returned by a Remote SDP Server when an
* invalid request has been received. The Error_Info field is an
* optional field that may or may be present depending upon the
* Error Code value. If there is NO Error Information, then the
* Error_Info_Length member will be set to zero and the Error_Info
* member pointer will be NULL. If there is Error Information, then
* the Error_Info member will be a non-NULL pointer to the Error
* Information, and the Error_Info_Length member will contain the
* Length of the Data (in Bytes) that the Error_Info Pointer points
* to.
*/
typedef struct _tagSDP_Error_Response_Data_t
{
Word_t Error_Code;
Word_t Error_Info_Length;
Byte_t *Error_Info;
} SDP_Error_Response_Data_t;
#define SDP_ERROR_RESPONSE_DATA_SIZE (sizeof(SDP_Error_Response_Data_t))
/*! The following Data Structure represents the SDP Service Search
* Response Data that is returned by the Remote SDP Server when a
* SDP Service Search Request is submitted. If there are Service
* Records then the Total_Service_Record_Count member will contain
* the Number Service Record Handles that the Service_Record_List
* member points to. If there are NO Service Record Handles, then
* the Total_Service_Record_Count member will be zero, and the
* Service_Record_List member will set to NULL.
*/
typedef struct _tagSDP_Service_Search_Response_Data_t
{
Word_t Total_Service_Record_Count;
DWord_t *Service_Record_List;
} SDP_Service_Search_Response_Data_t;
#define SDP_SERVICE_SEARCH_RESPONSE_DATA_SIZE (sizeof(SDP_Service_Search_Response_Data_t))
/*! The following Data Structure represents a Single SDP Service
* Attribute. This Attribute consists of an Attribute ID and the
* Attribute Data which is a SDP Data Element (Note the SDP Data
* Element could contain a list of SDP Data Elements).
*/
typedef struct _tagSDP_Attribute_Value_Data_t
{
Word_t Attribute_ID;
SDP_Data_Element_t *SDP_Data_Element;
} SDP_Service_Attribute_Value_Data_t;
#define SDP_SERVICE_ATTRIBUTE_VALUE_DATA_SIZE (sizeof(SDP_Service_Attribute_Value_Data_t))
/*! The following Data Structure represents an Attribute List that
* the Remote SDP Server returns when a SDP Service Attribute Request
* is processed. If there are Attributes, then the
* Number_Attribute_Values member will contain a non-zero value, and
* the SDP_Service_Attribute_Value_Data will point to an array of
* Service Attributes (Attribute ID/Attribute Data). If the
* Number_Attribute_Values member is zero, then there are NO
* Attributes present in the list, and the
* SDP_Service_Attribute_Value_Data member will be NULL.
*/
typedef struct _tagSDP_Attribute_Response_Data_t
{
Word_t Number_Attribute_Values;
SDP_Service_Attribute_Value_Data_t *SDP_Service_Attribute_Value_Data;
} SDP_Service_Attribute_Response_Data_t;
#define SDP_SERVICE_ATTRIBUTE_RESPONSE_DATA_SIZE (sizeof(SDP_Service_Attribute_Response_Data_t))
/*! The following Data Structure represents a Service Record Attribute
* List that the Remote SDP Server returns when a SDP Service Search
* Attribute Request is processed. If there were Service Records
* that matched the requested Search Pattern, then the
* Number_Service_Records member will contain a non-zero value, and
* the SDP_Service_Attribute_Response member will point to an array
* of SDP_Service_Attribute_Response_t data structures. Each element
* of this array will specify the Attribute(s) for an individual
* Service Record . If the Number_Service_Records member is zero,
* then there are NO Service Records (and thus NO Attributes)
* present in the list, and the SDP_Service_Attribute_Response_Data
* member will be NULL.
*/
typedef struct _tagSDP_Search_Attribute_Response_Data_t
{
Word_t Number_Service_Records;
SDP_Service_Attribute_Response_Data_t *SDP_Service_Attribute_Response_Data;
} SDP_Service_Search_Attribute_Response_Data_t;
#define SDP_SERVICE_SEARCH_ATTRIBUTE_RESPONSE_DATA_SIZE (sizeof(SDP_Service_Search_Attribute_Response_Data_t))
/*! The following Data Structure represents the raw Service Record
* data the Remote SDP Server returns when either a SDP Service
* Attribute Request or SDP Service Search Attribute Request is
* processed. There is not processing of the data (other than it
* will not contain any continuation information).
* \note This event is only valid for the following event types:
* - rdServiceAttributeResponse_Raw
* - rdServiceSearchAttributeResponse_Raw
* and the data format will be the raw representation of
* the correct response data for the corresponding SDP
* search result.
*/
typedef struct _tagSDP_Raw_Attribute_Response_Data_t
{
SDP_Response_Data_Type_t SDP_Response_Data_Type;
DWord_t Raw_Attribute_Data_Length;
Byte_t *Raw_Attribute_Data;
} SDP_Raw_Attribute_Response_Data_t;
#define SDP_RAW_ATTRIBUTE_RESPONSE_DATA_SIZE (sizeof(SDP_Raw_Attribute_Response_Data_t))
/*! The following Data Structure represents the Data that is
* returned in the SDP Response Callback. This Data Structure
* is a container for ALL possible Data that could be returned in
* a SDP Response Callback. Note that the type of Data returned
* depends on the SDP Request that the callback was installed for.
* Also note that for the rdTimeout and rdConnectionError
* SDP_Response_Data_Types there is NO further Data available for
* these Errors.
*/
typedef struct _tagSDP_Response_Data_t
{
SDP_Response_Data_Type_t SDP_Response_Data_Type;
union
{
SDP_Error_Response_Data_t SDP_Error_Response_Data;
SDP_Service_Search_Response_Data_t SDP_Service_Search_Response_Data;
SDP_Service_Attribute_Response_Data_t SDP_Service_Attribute_Response_Data;
SDP_Service_Search_Attribute_Response_Data_t SDP_Service_Search_Attribute_Response_Data;
SDP_Raw_Attribute_Response_Data_t SDP_Raw_Attribute_Response_Data;
} SDP_Response_Data;
} SDP_Response_Data_t;
#define SDP_RESPONSE_DATA_SIZE (sizeof(SDP_Response_Data_t))
/*! SDP Connection Events. */
/*! The following event is dispatched when a remote device is
* requesting a SDP connection to the local device and the connection
* mode has been explicitly set to sdManualAccept (via the
* SDP_Set_Server_Connection_Mode() function). The BD_ADDR specifies
* the Bluetooth Address of the Remote Device that is connecting.
* \note This event is only dispatched to servers that are in
* Manual Accept Mode.
* \note This event must be responded to with the
* SDP_Connect_Request_Response() function in order to
* accept the outstanding Connect Request.
*/
typedef struct _tagSDP_Connect_Request_Indication_Data_t
{
BD_ADDR_t BD_ADDR;
} SDP_Connect_Request_Indication_Data_t;
#define SDP_CONNECT_REQUEST_INDICATION_DATA_SIZE (sizeof(SDP_Connect_Request_Indication_Data_t))
/*! This event is dispatched by the local SDP server when a remote SDP
* client has connected.
* \note This event is only dispatched to the event callback that
* was registered via the SDP_Set_Server_Connection_Mode()
* function.
*/
typedef struct _tagSDP_Connect_Indication_Data_t
{
BD_ADDR_t BD_ADDR;
} SDP_Connect_Indication_Data_t;
#define SDP_CONNECT_INDICATION_DATA_SIZE (sizeof(SDP_Connect_Indication_Data_t))
/*! This event is dispatched by the local SDP server when a remote SDP
* client has disconnected.
* \note This event is only dispatched to the event callback that
* was registered via the SDP_Set_Server_Connection_Mode()
* function.
*/
typedef struct _tagSDP_Disconnect_Indication_Data_t
{
BD_ADDR_t BD_ADDR;
} SDP_Disconnect_Indication_Data_t;
#define SDP_DISCONNECT_INDICATION_DATA_SIZE (sizeof(SDP_Disconnect_Indication_Data_t))
/*! The following structure represents the container structure for
* holding all SDP connection event data.
* \note This event data is only applicable to the event callback
* that was registered via the
* SDP_Set_Server_Connection_Mode() function.
*/
typedef struct _tagSDP_Connection_Event_Data_t
{
SDP_Connection_Event_Type_t Event_Data_Type;
Word_t Event_Data_Size;
union
{
SDP_Connect_Request_Indication_Data_t *SDP_Connect_Request_Indication_Data;
SDP_Connect_Indication_Data_t *SDP_Connect_Indication_Data;
SDP_Disconnect_Indication_Data_t *SDP_Disconnect_Indication_Data;
} Event_Data;
} SDP_Connection_Event_Data_t;
#define SDP_CONNECTION_EVENT_DATA_SIZE (sizeof(SDP_Connection_Event_Data_t))
/*! The following structure is used with the
* SDP_Parse_Raw_Attribute_Response_Data() function to hold parsed
* SDP Attribute Response Data. Please see @brief The following functions
* for more information:
* - SDP_Service_Attribute_Request_Raw()
* - SDP_Service_Search_Attribute_Request_Raw()
* - SDP_Parse_Raw_Attribute_Response_Data()
*/
typedef struct _tagSDP_Parsed_Attribute_Response_Data_t
{
SDP_Response_Data_t SDP_Response_Data;
void *RESERVED;
} SDP_Parsed_Attribute_Response_Data_t;
/*! The following declared type represents the prototype Function for
* a SDP Request Callback. This function will be called whenever
* a SDP Request Response returns withith the Bluetooth Protocol
* Stack that is specified with the specified Bluetooth Stack ID.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth Protocol
* Stack via a call to BSC_Initialize.
* @param SDPRequestID Unique identifier associated with an outstanding Request.
* @param SDP_Response_Data Pointer to aSDP_Response_Data_t structure that
* contains the results from an SDP request. This structure is defined below.
* @param CallbackParameter User defined value received in the DSP request
* and dispatched with the SDP response. This can be used to uniquely identify
* a response when multiple requests are outstanding.
* The caller is free to use the
* contents of the SDP Request Response Data ONLY in the context of
* this callback. If the caller requires the Data for a longer
* period of time, then the callback function MUST copy the data
* into another Data Buffer(s). This function is guaranteed NOT to
* be invoked more than once simultaneously for the specified
* installed callback (i.e. this function DOES NOT have to be
* reentrant). The processing in this function should be as
* efficient as possible. It should be noted that this function is
* called in the Thread Context of a Thread that the User does NOT
* own. Therefore, processing in this function should be as
* possible.
* \note This function MUST NOT Block and wait for events that
* can only be satisfied by Receiving other Bluetooth
* Stack Events. A Deadlock WILL occur because other
* Callbacks might not be issued while this function is
* currently outstanding.
*/
typedef void (BTPSAPI *SDP_Response_Callback_t)(unsigned int BluetoothStackID, unsigned int SDPRequestID, SDP_Response_Data_t *SDP_Response_Data, unsigned long CallbackParameter);
/*! The following declared type represents the prototype function for
* a SDP connection event Callback. This function will be called
* whenever a SDP connection Event occurs that is associated with the
* specified Bluetooth stack ID.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth
* Protocol Stack via a call to BSC_Initialize
* @param SDP_Connection_Event_Data Pointer to the passed event data.
* See definitions in the next section.
* @param CallbackParameter User-defined parameter (e.g., tag value)
* that was defined in the callback registration.
* If the caller requires the data for a longer period of time, then the callback
* function MUST copy the data into another data buffer. This
* function is guaranteed NOT to be invoked more than once
* simultaneously for the specified installed callback (i.e. this
* function DOES NOT have be reentrant). It needs to be noted,
* however, that if the same callback is installed more than once,
* then the callbacks will be called serially. Because of this, the
* processing in this function should be as efficient as possible.
* It should also be noted that this function is called in the thread
* context of a thread that the user does NOT own. Therefore,
* processing in this function should be as efficient as possible
* (this argument holds anyway because another SDP Event will not be
* processed while this function call is outstanding).
* \note This function MUST NOT block and wait for events that
* can only be satisfied by receiving SDP events. A
* deadlock WILL occur because NO SDP event callbacks will
* be issued while this function is currently outstanding.
*/
typedef void (BTPSAPI *SDP_Connection_Event_Callback_t)(unsigned int BluetoothStackID, SDP_Connection_Event_Data_t *SDP_Connection_Event_Data, unsigned long CallbackParameter);
/*! @brief The following function is responsible for adding an SDP Service
* Record to the SDP Database.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth Protocol
* Stack via a call to BSC_Initialize.
* @param NumberServiceClassUUID Number of UUIDs that are present in the array of UUIDs
* @param SDP_UUID_Entry Array of UUIDs that represent the ServiceClassIDList
* attributes of the Service Record.
* @return This function returns a negative return value if the specified
* Service Record was unable to be added to the SDP Database.
* \note The UUID values that are specified in this Service
* Record call represent the ServiceClassIDList Attributes
* of the Service Record. This parameter is required
* because EVERY SDP Service Record MUST have this
* Attribute.
*/
BTPSAPI_DECLARATION long BTPSAPI SDP_Create_Service_Record(unsigned int BluetoothStackID, unsigned int NumberServiceClassUUID, SDP_UUID_Entry_t SDP_UUID_Entry[]);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef long (BTPSAPI *PFN_SDP_Create_Service_Record_t)(unsigned int BluetoothStackID, unsigned int NumberServiceClassUUID, SDP_UUID_Entry_t SDP_UUID_Entry[]);
#endif
/*! @brief The following function is responsible for Updating the Service
* Class Attribute for the specified SDP Service Record.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth Protocol
* Stack via a call to BSC_Initialize.
* @param Service_Record_Handle Handle to the service record to be deleted.
* This value is obtained from a successful call to SDP_Create_Service_Record.
* @param NumberServiceClassUUID Number of UUIDs that are present in the array of UUIDs
* @param SDP_UUID_Entry[] Array of UUIDs that represent the
* ServiceClassIDList attributes of the Service Record.
* @return This function returns zero if the Service class was updated
* successfully, or a negative value if there was an error.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Update_Service_Record_Service_Class(unsigned int BluetoothStackID, DWord_t Service_Record_Handle, unsigned int NumberServiceClassUUID, SDP_UUID_Entry_t SDP_UUID_Entry[]);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Update_Service_Record_Service_Class_t)(unsigned int BluetoothStackID, DWord_t Service_Record_Handle, unsigned int NumberServiceClassUUID, SDP_UUID_Entry_t SDP_UUID_Entry[]);
#endif
/*! @brief The following function is responsible for Deleting a SDP Service
* Record that was added with the SDP_Create_Service_Record()
* function.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth
* Protocol Stack via a call to BSC_Initialize.
* @param Service_Record_Handle Handle to the service record to be deleted.
* This value is obtained from a successful call to SDP_Create_Service_Record.
* @return This function returns zero if the
* specified Service Record was able to be deleted successfully, or
* a negative return error code if the Service Record was NOT able to
* be deleted successfully. If this function completes successfully
* the Service Record is NO longer valid on the specified SDP
* Server.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Delete_Service_Record(unsigned int BluetoothStackID, DWord_t Service_Record_Handle);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Delete_Service_Record_t)(unsigned int BluetoothStackID, DWord_t Service_Record_Handle);
#endif
/*! @brief The following function is responsible for Adding SDP Service
* Attributes to the specified SDP Service Record.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth Protocol
* Stack via a call to BSC_Initialize.
* @param Service_Record_Handle Handle to the service record of the service to
* add the attribute to. This value is obtained from a successful call
* to SDP_Create_Service_Record.
* @param Attribute_ID Unique identifier that distinguishes this attribute
* from other service attributes.
* @param SDP_Data_Element Pointer to an SDP_Data_Element_t structure.
* This structure contains the Attribute information to be associated with the Attribute_ID.
* @return This function returns zero if the specified Attribute was added
* successfully, or a negative return value if the specified
* attribute was unable to be added to the specified SDP Service
* Record.
* \note The SDP_ATTRIBUTE_ID_SERVICE_RECORD_HANDLE and the
* SDP_ATTRIBUTE_ID_SERVICE_CLASS_ID_LIST Attributes cannot
* be added since they were already added when the Service
* Record was created with the SDP_Create_Service_Record()
* function.
* \note Empty Lists can be added as an Attribute by specifying
* that there are NO Data Elements present in the Data
* Element Sequence or Data Element Alternative (Data
* Element Length will be zero which signifies that the
* list contains NO Data Elements).
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Add_Attribute(unsigned int BluetoothStackID, DWord_t Service_Record_Handle, Word_t Attribute_ID, SDP_Data_Element_t *SDP_Data_Element);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Add_Attribute_t)(unsigned int BluetoothStackID, DWord_t Service_Record_Handle, Word_t Attribute_ID, SDP_Data_Element_t *SDP_Data_Element);
#endif
/*! @brief The following function is responsible for Adding SDP Service Raw
* Attributes (i.e. prebuilt) to the specified SDP Service Record.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth
* Protocol Stack via a call to BSC_Initialize.
* @param Service_Record_Handle Handle to the service record of the
* service to add the attribute to. This value is obtained from a
* successful call to SDP_Create_Service_Record.
* @param AttributeEntry Pointer to a structure containing information
* on the attribute that is to be added to the specified service.
* @return This function returns zero if the specified
* Attribute was added successfully, or a negative return value if
* the specified attribute was unable to be added to the specified
* SDP Service Record.
* \note The SDP_ATTRIBUTE_ID_SERVICE_RECORD_HANDLE and the
* SDP_ATTRIBUTE_ID_SERVICE_CLASS_ID_LIST Attributes cannot
* be added since they were already added when the Service
* Record was created with the SDP_Create_Service_Record()
* function.
* \note Empty Lists can be added as an Attribute by specifying
* that there are NO Data Elements present in the Data
* Element Sequence or Data Element Alternative (Data
* Element Length will be zero which signifies that the list
* contains NO Data Elements).
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Add_Raw_Attribute(unsigned int BluetoothStackID, DWord_t Service_Record_Handle, SDP_ConstantServiceAttributeEntry_t *AttributeEntry);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Add_Raw_Attribute_t)(unsigned int BluetoothStackID, DWord_t Service_Record_Handle, SDP_ConstantServiceAttributeEntry_t *AttributeEntry);
#endif
/*! @brief The following function is responsible for Deleting a SDP Attribute
* that was previously added via a successful call to the
* SDP_Add_Attribute() function.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth
* Protocol Stack via a call to BSC_Initialize.
* @param Service_Record_Handle Handle to the service record to be deleted.
* This value is obtained from a successful call to SDP_Create_Service_Record.
* @param Attribute_ID Unique identifier that distinguishes this attribute to be removed.
* @return This function returns
* zero if the Attribute was successfully deleted, or a negative
* return error code if the Attribute was NOT able to be deleted
* successfully. If this function has completes successfully then
* the specifed Attribute no longer exists in the specified SDP
* Service Handle.
* \note The SDP_ATTRIBUTE_ID_SERVICE_RECORD_HANDLE and the
* SDP_ATTRIBUTE_ID_SERVICE_CLASS_ID_LIST Attributes cannot
* be deleted since they are required to exist for EVERY
* SDP Service Record.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Delete_Attribute(unsigned int BluetoothStackID, DWord_t Service_Record_Handle, Word_t Attribute_ID);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Delete_Attribute_t)(unsigned int BluetoothStackID, DWord_t Service_Record_Handle, Word_t Attribute_ID);
#endif
/*! @brief The following function is responsible for issuing an SDP Service
* Search Request to the specified BD_ADDR. This function will
* return the result of the Search Request in the SDP Response
* Callback that is specified in the calling of this function.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth Protocol
* Stack via a call to BSC_Initialize.
* @param BD_ADDR Address of the Bluetooth device where the SDP Server resides.
* @param MaximumServiceRecordCount Specifies the Maximum number of service
* records to be returned for this request.
* @param NumberServiceUUID Number of Service UUIDs that are contained in
* the array of Service UUIDs.
* @param SDP_UUID_Entry Pointer to an array of Service UUIDs that will
* serve as the Service Search Pattern. This parameter must point to an
* array that contains the number of entries specified by the NumberServiceUUID parameter.
* @param SDP_Response_Callback Callback function pointer of type
* SDP_Response_Callback_t to be used to dispatch the result of the Service Search.
* @param CallbackParameter User-defined value to be dispatched with
* the result of the request. This can be used to uniquely identify a
* response when multiple requests are outstanding.
* @return This function will return a positive, non-zero,
* return code if successful, or a negative return error code if
* there was an error. If this function is successful, the user can
* call the SDP_Cancel_Service_Request() function to cancel a the
* SDP Service Search Request prematurely. It should be noted that
* the Number of UUID Parameter must be at least one, and the
* Service UUID Parameter must point to a List of at least the
* Number of UUID's that have been specified. Finally, the BD_ADDR
* Parameter and the SDP_Reponse_Callback Parameter MUST be valid or
* the call to this function will be unsuccessful.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Service_Search_Request(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR, Word_t MaximumServiceRecordCount, unsigned int NumberServiceUUID, SDP_UUID_Entry_t SDP_UUID_Entry[], SDP_Response_Callback_t SDP_Response_Callback, unsigned long CallbackParameter);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Service_Search_Request_t)(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR, Word_t MaximumServiceRecordCount, unsigned int NumberServiceUUID, SDP_UUID_Entry_t SDP_UUID_Entry[], SDP_Response_Callback_t SDP_Response_Callback, unsigned long CallbackParameter);
#endif
/*! @brief The following function is responsible for issuing an SDP Service
* Attribute Request to the specified BD_ADDR. This function will
* return the result of the Attribute Request in the SDP Response
* Callback that is specified in the calling of this function.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth
* Protocol Stack via a call to BSC_Initialize.
* @param BD_ADDR Address of the Bluetooth device where the SDP Server
* resides.
* @param ServiceRecordHandle Handle of the remote service record to
* be searched. This value is either known in advance or is determined
* by looking at the SDP_Service_Search_Response data.
* @param NumberAttributeListElements Number of Attribute Elements that
* are contained in the array of Attribute Elements.
* @param AttributeIDList Array of Attribute Elements on which to search.
* @param SDP_Response_Callback Callback function pointer of type
* SDP_Response_Callback_t to be used to dispatch the result of the Service Search.
* @param CallbackParameter User-defined value to be dispatched with
* the result of the request. This can be used to uniquely identify a
* response when multiple requests are outstanding.
* @return This function will return a positive, non-zero, return
* code if successful, or a
* negative return error code if there was an error. If this
* function is successful, the user can call the
* SDP_Cancel_Service_Request() function to cancel a the SDP Service
* Search Request prematurely. It should be noted that the Number
* of Attributes that are contained in the Attribute List must be at
* least one, and the Attribute ID List Parameter must point to a
* List of Attribute ID's that contains at least the Number of
* Attribute List Entries that have been specified. Finally, the
* BD_ADDR Parameter and the SDP_Reponse_Callback Parameter MUST
* be valid or the call to this function will be unsuccessful.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Service_Attribute_Request(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR, DWord_t ServiceRecordHandle, unsigned int NumberAttributeListElements, SDP_Attribute_ID_List_Entry_t AttributeIDList[], SDP_Response_Callback_t SDP_Response_Callback, unsigned long CallbackParameter);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Service_Attribute_Request_t)(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR, DWord_t ServiceRecordHandle, unsigned int NumberAttributeListElements, SDP_Attribute_ID_List_Entry_t AttributeIDList[], SDP_Response_Callback_t SDP_Response_Callback, unsigned long CallbackParameter);
#endif
/*! @brief The following function is responsible for issuing an SDP Service
* Attribute Request to the specified BD_ADDR. This function will
* return the result of the Attribute Request in the SDP Response
* Callback that is specified in the calling of this function.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth
* Protocol Stack via a call to BSC_Initialize.
* @param BD_ADDR Address of the Bluetooth device where the SDP Server
* resides.
* @param ServiceRecordHandle Handle of the remote service record to
* be searched. This value is either known in advance or is determined
* by looking at the SDP_Service_Search_Response data.
* @param NumberAttributeListElements Number of Attribute Elements that
* are contained in the array of Attribute Elements.
* @param AttributeIDList Array of Attribute Elements on which to search.
* @param SDP_Response_Callback Callback function pointer of type
* SDP_Response_Callback_t to be used to dispatch the result of the Service Search.
* @param CallbackParameter User-defined value to be dispatched
* with the result of the request. This can be used to uniquely
* identify a response when multiple requests are outstanding.
* @return This function will return a positive, non-zero, return code if successful, or a
* negative return error code if there was an error. If this
* function is successful, the user can call the
* SDP_Cancel_Service_Request() function to cancel a the SDP Service
* Search Request prematurely. It should be noted that the Number
* of Attributes that are contained in the Attribute List must be at
* least one, and the Attribute ID List Parameter must point to a
* List of Attribute ID's that contains at least the Number of
* Attribute List Entries that have been specified. Finally, the
* BD_ADDR Parameter and the SDP_Reponse_Callback Parameter MUST
* be valid or the call to this function will be unsuccessful.
* \note This function is identical to the
*
* SDP_Service_Attribute_Request() function, except
*
* that a successful response will be the following event:
*
* rdServiceAttributeResponse_Raw
*
* (and the SDP Result data will be un-parsed).
* \note If valid un-parsed SDP Response data is received via the
* event above, then the caller is free to parse the data
* manually or the caller can call the:
*
* SDP_Parse_Raw_Attribute_Response_Data()
*
* function to parse the data into the Bluetopia parsed
* SDP data format.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Service_Attribute_Request_Raw(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR, DWord_t ServiceRecordHandle, unsigned int NumberAttributeListElements, SDP_Attribute_ID_List_Entry_t AttributeIDList[], SDP_Response_Callback_t SDP_Response_Callback, unsigned long CallbackParameter);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Service_Attribute_Request_Raw_t)(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR, DWord_t ServiceRecordHandle, unsigned int NumberAttributeListElements, SDP_Attribute_ID_List_Entry_t AttributeIDList[], SDP_Response_Callback_t SDP_Response_Callback, unsigned long CallbackParameter);
#endif
/*! @brief The following function is responsible for issuing an SDP Service
* Search Attribute Request to the specified BD_ADDR. This function
* will return the result of the Service Search Attribute Request in
* the SDP Response Callback that is specified in the calling of this
* function.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth
* Protocol Stack via a call to BSC_Initialize.
* @param BD_ADDR Address of the Bluetooth device where the SDP Server
* resides.
* @param NumberServiceUUID Number of Service UUIDs that area contained
* in an array of Service UUIDs.
* @param SDP_UUID_Entry Pointer to an array of Service UUIDs that will
* serve as the Service Search Pattern. This parameter must point
* to an array that contains the number of entries specified by the
* NumberServiceUUID parameter.
* @param NumberAttributeListElements Number of Attribute Elements that
* are contained in the array of Attribute Elements.
* @param AttributeIDList Array of Attribute Elements on which to search.
* @param SDP_Response_Callback Callback function pointer of type
* SDP_Response_Callback_t to be used to dispatch the result of the Service Search.
* @param CallbackParameter User-defined value to be dispatched with
* the result of the request. This can be used to uniquely identify
* a response when multiple requests are outstanding.
* @return This function will return a
* positive, non-zero, return code if successful, or a negative
* return error code if there was an error. If this function is
* successful, the user can call the SDP_Cancel_Service_Request()
* function to cancel a the SDP Service Search Request prematurely.
* It should be noted that the Number of UUID Parameter must be at
* least one, and the Service UUID Parameter must point to a List of
* at least the Number of UUID's that have been specified. Finally,
* the BD_ADDR Parameter and the SDP_Reponse_Callback Parameter MUST
* be valid or the call to this function will be unsuccessful.
* It should also be noted that the Number of Attributes that are
* in the Attribute List must be at least one, and the Attribute ID
* List Parameter must point to a List of Attribute ID's that
* contains at least the Number of Attribute List Entries that have
* been specified. Finally, the BD_ADDR Parameter and the
* SDP_Reponse_Callback Parameter MUST be valid or the call to this
* function will be unsuccessful.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Service_Search_Attribute_Request(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR, unsigned int NumberServiceUUID, SDP_UUID_Entry_t SDP_UUID_Entry[], unsigned int NumberAttributeListElements, SDP_Attribute_ID_List_Entry_t AttributeIDList[], SDP_Response_Callback_t SDP_Response_Callback, unsigned long CallbackParameter);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Service_Search_Attribute_Request_t)(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR, unsigned int NumberServiceUUID, SDP_UUID_Entry_t SDP_UUID_Entry[], unsigned int NumberAttributeListElements, SDP_Attribute_ID_List_Entry_t AttributeIDList[], SDP_Response_Callback_t SDP_Response_Callback, unsigned long CallbackParameter);
#endif
/*! @brief The following function is responsible for issuing an SDP Service
* Search Attribute Request to the specified BD_ADDR. This function
* will return the result of the Service Search Attribute Request in
* the SDP Response Callback that is specified in the calling of this
* function.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth
* Protocol Stack via a call to BSC_Initialize.
* @param BD_ADDR Address of the Bluetooth device where the SDP Server
* resides.
* @param NumberServiceUUID Number of Service UUIDs that area contained
* in an array of Service UUIDs.
* @param SDP_UUID_Entry Pointer to an array of Service UUIDs that will
* serve as the Service Search Pattern. This parameter must point to
* an array that contains the number of entries specified by the
* NumberServiceUUID parameter.
* @param NumberAttributeListElements Number of Attribute Elements that
* are contained in the array of Attribute Elements.
* @param AttributeIDList Array of Attribute Elements on which to search.
* @param SDP_Response_Callback Callback function pointer of type
* SDP_Response_Callback_t to be used to dispatch the result of the Service Search.
* @param CallbackParameter User-defined value to be dispatched with
* the result of the request. This can be used to uniquely identify
* a response when multiple requests are outstanding.
* @return This function will return a
* positive, non-zero, return code if successful, or a negative
* return error code if there was an error. If this function is
* successful, the user can call the SDP_Cancel_Service_Request()
* function to cancel a the SDP Service Search Request prematurely.
* It should be noted that the Number of UUID Parameter must be at
* least one, and the Service UUID Parameter must point to a List of
* at least the Number of UUID's that have been specified. Finally,
* the BD_ADDR Parameter and the SDP_Reponse_Callback Parameter MUST
* be valid or the call to this function will be unsuccessful.
* It should also be noted that the Number of Attributes that are
* in the Attribute List must be at least one, and the Attribute ID
* List Parameter must point to a List of Attribute ID's that
* contains at least the Number of Attribute List Entries that have
* been specified. Finally, the BD_ADDR Parameter and the
* SDP_Reponse_Callback Parameter MUST be valid or the call to this
* function will be unsuccessful.
* \note This function is identical to the
*
* SDP_Service_Search_Attribute_Request() function,
*
* except that a successful response will be the following
* event:
*
* rdServiceSearchAttributeResponse_Raw
*
* (and the SDP Result Data will be un-parsed).
* \note If valid un-parsed SDP Response data is received via the
* event above, then the caller is free to parse the data
* manually or the caller can call the:
*
* SDP_Parse_Raw_Attribute_Response_Data()
*
* function to parse the data into the Bluetopia parsed
* SDP data format.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Service_Search_Attribute_Request_Raw(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR, unsigned int NumberServiceUUID, SDP_UUID_Entry_t SDP_UUID_Entry[], unsigned int NumberAttributeListElements, SDP_Attribute_ID_List_Entry_t AttributeIDList[], SDP_Response_Callback_t SDP_Response_Callback, unsigned long CallbackParameter);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Service_Search_Attribute_Request_Raw_t)(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR, unsigned int NumberServiceUUID, SDP_UUID_Entry_t SDP_UUID_Entry[], unsigned int NumberAttributeListElements, SDP_Attribute_ID_List_Entry_t AttributeIDList[], SDP_Response_Callback_t SDP_Response_Callback, unsigned long CallbackParameter);
#endif
/* This function is responsible for terminating a currently
* executing SDP Service Request. This function accepts as input the
* Bluetooth Protocol Stack ID of the Bluetooth Protocol Stack the
* SDP Service Request was issued on, and the SDP Service Request
* ID of the SDP Service Request that was issued. The SDP Service
* Request ID is obtained via a successful call to one of the
* following functions:
* - SDP_Service_Search_Request()
* - SDP_Service_Attribute_Request()
* - SDP_Service_Search_Attribute_Request()
* After this function is called, the callback that was installed
* for the specified SDP Service Request will NOT be called and the
* caller will NOT have access to the SDP Service Response
* Information for the SDP Service Request.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth
* Protocol Stack via a call to BSC_Initialize.
* @param ServiceRequestID Unique identifier associated with an outstanding Request.
*/
BTPSAPI_DECLARATION void BTPSAPI SDP_Cancel_Service_Request(unsigned int BluetoothStackID, unsigned int ServiceRequestID);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef void (BTPSAPI *PFN_SDP_Cancel_Service_Request_t)(unsigned int BluetoothStackID, unsigned int ServiceRequestID);
#endif
/*! @brief The following function is a utility function that exists to parse
* the specified Raw SDP Attribute Response Data into the Bluetopia
* SDP API (Parsed) format.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth
* Protocol Stack via a call to BSC_Initialize.
* @param RawAttributeResponseData The raw SDP Attribute Response data to parse.
* @param ParsedAttributeResponseData Must contain a pointer to a
* structure that is to receive the parsed SDP Attribute Response
* information upon a successful return.
* @return This function returns zero if successful or a negative value if an
* error occurred.
* \note If this function is successful the final parameter *MUST*
* be passed to the
* SDP_Free_Parsed_Attribute_Response_Data() to free any
* allocated resources that were allocated to track the
* Parsed SDP Data. Failure to do this WILL RESULT IN A
* RESOURCE/MEMORY LEAK!
* \note The Raw SDP Attribute Response Data (second parameter)
* *MUST* remain active while the data is processed as well
* as even during the call to the
* SDP_Free_Parsed_Attribute_Response_Data() function.
* This buffer and the data that this buffer points to can
* ONLY be freed after the call to the
* SDP_Free_Parsed_Attribute_Response_Data() function.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Parse_Raw_Attribute_Response_Data(unsigned int BluetoothStackID, SDP_Raw_Attribute_Response_Data_t *RawAttributeResponseData, SDP_Parsed_Attribute_Response_Data_t *ParsedAttributeResponseData);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Parse_Raw_Attribute_Response_Data_t)(unsigned int BluetoothStackID, SDP_Raw_Attribute_Response_Data_t *RawAttributeResponseData, SDP_Parsed_Attribute_Response_Data_t *ParsedAttributeResponseData);
#endif
/*! @brief The following function is provided to allow a mechanism to free
* all resources that were allocated to parse Raw SDP Response Data
* into Bluetopia Parsed SDP Data. See the
* SDP_Parse_Raw_Attribute_Response_Data() function for more
* information.
* @param ParsedAttributeResponseData Must contain a pointer to a structure
* that was passed to the successful call to SDP_Parse_Raw_Attribute_Response_Data().
*/
BTPSAPI_DECLARATION void BTPSAPI SDP_Free_Parsed_Attribute_Response_Data(SDP_Parsed_Attribute_Response_Data_t *ParsedAttributeResponseData);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef void (BTPSAPI *PFN_SDP_Free_Parsed_Attribute_Response_Data_t)(SDP_Parsed_Attribute_Response_Data_t *ParsedAttributeResponseData);
#endif
/*! @brief This function is responsible for informing the SDP Module how it
* is to execute SDP Service Requests regarding the Connection
* Disconnection.
* @param BluetoothStackID Unique identifier assigned to this
* Bluetooth Protocol Stack via a call to BSC_Initialize
* @param SDPDisconnectMode What type of mode should be set.
* The possible values are:
* dmAutomatic {default mode}
* dmManual
* @return This function will return zero if the Connection Mode was
* successfully set, or a negative return error code if there was an
* error.
* \note If the caller specifies SDP Disconnect Mode dmManual
* then the caller is responsible for disconnecting the
* the SDP Connection (to the remote server) by calling
* the SDP_Disconnect_Server() function. If the SDP
* Disconnect Mode dmAutomatic is chosen (default) then the
* Connection to the server is automatically terminated
* when the SDP Transaction completes.
* \note The SDP Connection Mode can ONLY be changed when there
* are NO Client SDP Transactions outstanding.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Set_Disconnect_Mode(unsigned int BluetoothStackID, SDP_Disconnect_Mode_t SDPDisconnectMode);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Set_Disconnect_Mode_t)(unsigned int BluetoothStackID, SDP_Disconnect_Mode_t SDPDisconnectMode);
#endif
/*! @brief The following function is responsible for Disconnecting a Remote
* SDP Server Connection that is still open.
* @param BluetoothStackID Unique identifier assigned to this
* Bluetooth Protocol Stack via a call to BSC_Initialize
* @param BD_ADDR Bluetooth device address of the Remote SDP
* Server for which the local device is currently connected
* @return This function returns zero if successful, or a
* negative return error code if there was an error.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Disconnect_Server(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Disconnect_Server_t)(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR);
#endif
/*! @brief The following function is responsible for allowing a mechanism to
* query the SDP Server Connection Mode.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth Protocol
* Stack via a call to BSC_Initialize
* @param SDPServerConnectionMode Pointer to return the current SDP server
* connection mode into. If this function returns success this will point
* to one of the following values:
* sdAutomaticAccept
* sdManualAccept
* @return This function returns zero if successful, or a negative return
* value if there was an error.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Get_Server_Connection_Mode(unsigned int BluetoothStackID, SDP_Server_Connection_Mode_t *SDPServerConnectionMode);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Get_Server_Connection_Mode_t)(unsigned int BluetoothStackID, SDP_Server_Connection_Mode_t *SDPServerConnectionMode);
#endif
/*! @brief The following function is responsible for allowing a mechanism to
* change the current SDP Server Connection Mode.
* @param BluetoothStackID Unique identifier assigned to this
* Bluetooth Protocol Stack via a call to BSC_Initialize
* @param SDPServerConnectionMode The server connection mode to set.
* This may be one of the following values:
* sdAutomaticAccept
* sdManualAccept
* @param SDPConnectionEventCallback A connection event callback
* function that can be specified to watch SDP connection events.
* @param CallbackParameter Callback parameter that will be passed
* to the connection event callback specified in the SDPConnectionEventCallback
* parameter whenever a SDP connection event occurs.
* @return This function returns zero if
* successful, or a negative return error code if an error occurred.
* \note The Default Server Connection Mode is sdAutomaticAccept.
* \note If the Server Mode is set to sdManualAccept then the
* SDPConnectionEventCallback parameter must be valid.
* \note If the Server Mode is set to sdAutomaticAccept AND a
* callback is specified then the caller can watch the
* connection state.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Set_Server_Connection_Mode(unsigned int BluetoothStackID, SDP_Server_Connection_Mode_t SDPServerConnectionMode, SDP_Connection_Event_Callback_t SDPConnectionEventCallback, unsigned long CallbackParameter);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Set_Server_Connection_Mode_t)(unsigned int BluetoothStackID, SDP_Server_Connection_Mode_t SDPServerConnectionMode, SDP_Connection_Event_Callback_t SDPConnectionEventCallback, unsigned long CallbackParameter);
#endif
/*! @brief The following function is responsible for accepting an individual
* request to connect to the local SDP Server.
* @param BluetoothStackID Unique identifier assigned to this Bluetooth Protocol
* Stack via a call to BSC_Initialize
* @param BD_ADDR The BD_ADDR of the remote device whose SDP connection request
* is being accepted.
* @return This function returns zero if successful, or a negative
* return error code if an error occurred.
* \note The connection to the server is not established until a
* Connect Indication event has actually occurred.
* \note This event will only be dispatched if the server mode was
* explicitly set to sdManualAccept via the
* SDP_Set_Server_Connection_Mode() function.
*/
BTPSAPI_DECLARATION int BTPSAPI SDP_Connect_Request_Response(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR);
#ifdef INCLUDE_BLUETOOTH_API_PROTOTYPES
typedef int (BTPSAPI *PFN_SDP_Connect_Request_Response_t)(unsigned int BluetoothStackID, BD_ADDR_t BD_ADDR);
#endif
#endif