Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
sdp.h File Reference

Service Discovery Protocol handling. More...

#include <bluetooth/uuid.h>
#include <bluetooth/conn.h>

Go to the source code of this file.

Data Structures

struct  bt_sdp_data_elem
 SDP Generic Data Element Value. More...
 
struct  bt_sdp_attribute
 SDP Attribute Value. More...
 
struct  bt_sdp_record
 SDP Service Record Value. More...
 
struct  bt_sdp_client_result
 Generic SDP Client Query Result data holder. More...
 
struct  bt_sdp_discover_params
 Main user structure used in SDP discovery of remote. More...
 

Macros

#define BT_SDP_SDP_SERVER_SVCLASS   0x1000
 
#define BT_SDP_BROWSE_GRP_DESC_SVCLASS   0x1001
 
#define BT_SDP_PUBLIC_BROWSE_GROUP   0x1002
 
#define BT_SDP_SERIAL_PORT_SVCLASS   0x1101
 
#define BT_SDP_LAN_ACCESS_SVCLASS   0x1102
 
#define BT_SDP_DIALUP_NET_SVCLASS   0x1103
 
#define BT_SDP_IRMC_SYNC_SVCLASS   0x1104
 
#define BT_SDP_OBEX_OBJPUSH_SVCLASS   0x1105
 
#define BT_SDP_OBEX_FILETRANS_SVCLASS   0x1106
 
#define BT_SDP_IRMC_SYNC_CMD_SVCLASS   0x1107
 
#define BT_SDP_HEADSET_SVCLASS   0x1108
 
#define BT_SDP_CORDLESS_TELEPHONY_SVCLASS   0x1109
 
#define BT_SDP_AUDIO_SOURCE_SVCLASS   0x110a
 
#define BT_SDP_AUDIO_SINK_SVCLASS   0x110b
 
#define BT_SDP_AV_REMOTE_TARGET_SVCLASS   0x110c
 
#define BT_SDP_ADVANCED_AUDIO_SVCLASS   0x110d
 
#define BT_SDP_AV_REMOTE_SVCLASS   0x110e
 
#define BT_SDP_AV_REMOTE_CONTROLLER_SVCLASS   0x110f
 
#define BT_SDP_INTERCOM_SVCLASS   0x1110
 
#define BT_SDP_FAX_SVCLASS   0x1111
 
#define BT_SDP_HEADSET_AGW_SVCLASS   0x1112
 
#define BT_SDP_WAP_SVCLASS   0x1113
 
#define BT_SDP_WAP_CLIENT_SVCLASS   0x1114
 
#define BT_SDP_PANU_SVCLASS   0x1115
 
#define BT_SDP_NAP_SVCLASS   0x1116
 
#define BT_SDP_GN_SVCLASS   0x1117
 
#define BT_SDP_DIRECT_PRINTING_SVCLASS   0x1118
 
#define BT_SDP_REFERENCE_PRINTING_SVCLASS   0x1119
 
#define BT_SDP_IMAGING_SVCLASS   0x111a
 
#define BT_SDP_IMAGING_RESPONDER_SVCLASS   0x111b
 
#define BT_SDP_IMAGING_ARCHIVE_SVCLASS   0x111c
 
#define BT_SDP_IMAGING_REFOBJS_SVCLASS   0x111d
 
#define BT_SDP_HANDSFREE_SVCLASS   0x111e
 
#define BT_SDP_HANDSFREE_AGW_SVCLASS   0x111f
 
#define BT_SDP_DIRECT_PRT_REFOBJS_SVCLASS   0x1120
 
#define BT_SDP_REFLECTED_UI_SVCLASS   0x1121
 
#define BT_SDP_BASIC_PRINTING_SVCLASS   0x1122
 
#define BT_SDP_PRINTING_STATUS_SVCLASS   0x1123
 
#define BT_SDP_HID_SVCLASS   0x1124
 
#define BT_SDP_HCR_SVCLASS   0x1125
 
#define BT_SDP_HCR_PRINT_SVCLASS   0x1126
 
#define BT_SDP_HCR_SCAN_SVCLASS   0x1127
 
#define BT_SDP_CIP_SVCLASS   0x1128
 
#define BT_SDP_VIDEO_CONF_GW_SVCLASS   0x1129
 
#define BT_SDP_UDI_MT_SVCLASS   0x112a
 
#define BT_SDP_UDI_TA_SVCLASS   0x112b
 
#define BT_SDP_AV_SVCLASS   0x112c
 
#define BT_SDP_SAP_SVCLASS   0x112d
 
#define BT_SDP_PBAP_PCE_SVCLASS   0x112e
 
#define BT_SDP_PBAP_PSE_SVCLASS   0x112f
 
#define BT_SDP_PBAP_SVCLASS   0x1130
 
#define BT_SDP_MAP_MSE_SVCLASS   0x1132
 
#define BT_SDP_MAP_MCE_SVCLASS   0x1133
 
#define BT_SDP_MAP_SVCLASS   0x1134
 
#define BT_SDP_GNSS_SVCLASS   0x1135
 
#define BT_SDP_GNSS_SERVER_SVCLASS   0x1136
 
#define BT_SDP_MPS_SC_SVCLASS   0x113a
 
#define BT_SDP_MPS_SVCLASS   0x113b
 
#define BT_SDP_PNP_INFO_SVCLASS   0x1200
 
#define BT_SDP_GENERIC_NETWORKING_SVCLASS   0x1201
 
#define BT_SDP_GENERIC_FILETRANS_SVCLASS   0x1202
 
#define BT_SDP_GENERIC_AUDIO_SVCLASS   0x1203
 
#define BT_SDP_GENERIC_TELEPHONY_SVCLASS   0x1204
 
#define BT_SDP_UPNP_SVCLASS   0x1205
 
#define BT_SDP_UPNP_IP_SVCLASS   0x1206
 
#define BT_SDP_UPNP_PAN_SVCLASS   0x1300
 
#define BT_SDP_UPNP_LAP_SVCLASS   0x1301
 
#define BT_SDP_UPNP_L2CAP_SVCLASS   0x1302
 
#define BT_SDP_VIDEO_SOURCE_SVCLASS   0x1303
 
#define BT_SDP_VIDEO_SINK_SVCLASS   0x1304
 
#define BT_SDP_VIDEO_DISTRIBUTION_SVCLASS   0x1305
 
#define BT_SDP_HDP_SVCLASS   0x1400
 
#define BT_SDP_HDP_SOURCE_SVCLASS   0x1401
 
#define BT_SDP_HDP_SINK_SVCLASS   0x1402
 
#define BT_SDP_GENERIC_ACCESS_SVCLASS   0x1800
 
#define BT_SDP_GENERIC_ATTRIB_SVCLASS   0x1801
 
#define BT_SDP_APPLE_AGENT_SVCLASS   0x2112
 
#define BT_SDP_SERVER_RECORD_HANDLE   0x0000
 
#define BT_SDP_ATTR_RECORD_HANDLE   0x0000
 
#define BT_SDP_ATTR_SVCLASS_ID_LIST   0x0001
 
#define BT_SDP_ATTR_RECORD_STATE   0x0002
 
#define BT_SDP_ATTR_SERVICE_ID   0x0003
 
#define BT_SDP_ATTR_PROTO_DESC_LIST   0x0004
 
#define BT_SDP_ATTR_BROWSE_GRP_LIST   0x0005
 
#define BT_SDP_ATTR_LANG_BASE_ATTR_ID_LIST   0x0006
 
#define BT_SDP_ATTR_SVCINFO_TTL   0x0007
 
#define BT_SDP_ATTR_SERVICE_AVAILABILITY   0x0008
 
#define BT_SDP_ATTR_PROFILE_DESC_LIST   0x0009
 
#define BT_SDP_ATTR_DOC_URL   0x000a
 
#define BT_SDP_ATTR_CLNT_EXEC_URL   0x000b
 
#define BT_SDP_ATTR_ICON_URL   0x000c
 
#define BT_SDP_ATTR_ADD_PROTO_DESC_LIST   0x000d
 
#define BT_SDP_ATTR_GROUP_ID   0x0200
 
#define BT_SDP_ATTR_IP_SUBNET   0x0200
 
#define BT_SDP_ATTR_VERSION_NUM_LIST   0x0200
 
#define BT_SDP_ATTR_SUPPORTED_FEATURES_LIST   0x0200
 
#define BT_SDP_ATTR_GOEP_L2CAP_PSM   0x0200
 
#define BT_SDP_ATTR_SVCDB_STATE   0x0201
 
#define BT_SDP_ATTR_MPSD_SCENARIOS   0x0200
 
#define BT_SDP_ATTR_MPMD_SCENARIOS   0x0201
 
#define BT_SDP_ATTR_MPS_DEPENDENCIES   0x0202
 
#define BT_SDP_ATTR_SERVICE_VERSION   0x0300
 
#define BT_SDP_ATTR_EXTERNAL_NETWORK   0x0301
 
#define BT_SDP_ATTR_SUPPORTED_DATA_STORES_LIST   0x0301
 
#define BT_SDP_ATTR_DATA_EXCHANGE_SPEC   0x0301
 
#define BT_SDP_ATTR_NETWORK   0x0301
 
#define BT_SDP_ATTR_FAX_CLASS1_SUPPORT   0x0302
 
#define BT_SDP_ATTR_REMOTE_AUDIO_VOLUME_CONTROL   0x0302
 
#define BT_SDP_ATTR_MCAP_SUPPORTED_PROCEDURES   0x0302
 
#define BT_SDP_ATTR_FAX_CLASS20_SUPPORT   0x0303
 
#define BT_SDP_ATTR_SUPPORTED_FORMATS_LIST   0x0303
 
#define BT_SDP_ATTR_FAX_CLASS2_SUPPORT   0x0304
 
#define BT_SDP_ATTR_AUDIO_FEEDBACK_SUPPORT   0x0305
 
#define BT_SDP_ATTR_NETWORK_ADDRESS   0x0306
 
#define BT_SDP_ATTR_WAP_GATEWAY   0x0307
 
#define BT_SDP_ATTR_HOMEPAGE_URL   0x0308
 
#define BT_SDP_ATTR_WAP_STACK_TYPE   0x0309
 
#define BT_SDP_ATTR_SECURITY_DESC   0x030a
 
#define BT_SDP_ATTR_NET_ACCESS_TYPE   0x030b
 
#define BT_SDP_ATTR_MAX_NET_ACCESSRATE   0x030c
 
#define BT_SDP_ATTR_IP4_SUBNET   0x030d
 
#define BT_SDP_ATTR_IP6_SUBNET   0x030e
 
#define BT_SDP_ATTR_SUPPORTED_CAPABILITIES   0x0310
 
#define BT_SDP_ATTR_SUPPORTED_FEATURES   0x0311
 
#define BT_SDP_ATTR_SUPPORTED_FUNCTIONS   0x0312
 
#define BT_SDP_ATTR_TOTAL_IMAGING_DATA_CAPACITY   0x0313
 
#define BT_SDP_ATTR_SUPPORTED_REPOSITORIES   0x0314
 
#define BT_SDP_ATTR_MAS_INSTANCE_ID   0x0315
 
#define BT_SDP_ATTR_SUPPORTED_MESSAGE_TYPES   0x0316
 
#define BT_SDP_ATTR_PBAP_SUPPORTED_FEATURES   0x0317
 
#define BT_SDP_ATTR_MAP_SUPPORTED_FEATURES   0x0317
 
#define BT_SDP_ATTR_SPECIFICATION_ID   0x0200
 
#define BT_SDP_ATTR_VENDOR_ID   0x0201
 
#define BT_SDP_ATTR_PRODUCT_ID   0x0202
 
#define BT_SDP_ATTR_VERSION   0x0203
 
#define BT_SDP_ATTR_PRIMARY_RECORD   0x0204
 
#define BT_SDP_ATTR_VENDOR_ID_SOURCE   0x0205
 
#define BT_SDP_ATTR_HID_DEVICE_RELEASE_NUMBER   0x0200
 
#define BT_SDP_ATTR_HID_PARSER_VERSION   0x0201
 
#define BT_SDP_ATTR_HID_DEVICE_SUBCLASS   0x0202
 
#define BT_SDP_ATTR_HID_COUNTRY_CODE   0x0203
 
#define BT_SDP_ATTR_HID_VIRTUAL_CABLE   0x0204
 
#define BT_SDP_ATTR_HID_RECONNECT_INITIATE   0x0205
 
#define BT_SDP_ATTR_HID_DESCRIPTOR_LIST   0x0206
 
#define BT_SDP_ATTR_HID_LANG_ID_BASE_LIST   0x0207
 
#define BT_SDP_ATTR_HID_SDP_DISABLE   0x0208
 
#define BT_SDP_ATTR_HID_BATTERY_POWER   0x0209
 
#define BT_SDP_ATTR_HID_REMOTE_WAKEUP   0x020a
 
#define BT_SDP_ATTR_HID_PROFILE_VERSION   0x020b
 
#define BT_SDP_ATTR_HID_SUPERVISION_TIMEOUT   0x020c
 
#define BT_SDP_ATTR_HID_NORMALLY_CONNECTABLE   0x020d
 
#define BT_SDP_ATTR_HID_BOOT_DEVICE   0x020e
 
#define BT_SDP_PRIMARY_LANG_BASE   0x0100
 
#define BT_SDP_ATTR_SVCNAME_PRIMARY   (0x0000 + BT_SDP_PRIMARY_LANG_BASE)
 
#define BT_SDP_ATTR_SVCDESC_PRIMARY   (0x0001 + BT_SDP_PRIMARY_LANG_BASE)
 
#define BT_SDP_ATTR_PROVNAME_PRIMARY   (0x0002 + BT_SDP_PRIMARY_LANG_BASE)
 
#define BT_SDP_DATA_NIL   0x00
 
#define BT_SDP_UINT8   0x08
 
#define BT_SDP_UINT16   0x09
 
#define BT_SDP_UINT32   0x0a
 
#define BT_SDP_UINT64   0x0b
 
#define BT_SDP_UINT128   0x0c
 
#define BT_SDP_INT8   0x10
 
#define BT_SDP_INT16   0x11
 
#define BT_SDP_INT32   0x12
 
#define BT_SDP_INT64   0x13
 
#define BT_SDP_INT128   0x14
 
#define BT_SDP_UUID_UNSPEC   0x18
 
#define BT_SDP_UUID16   0x19
 
#define BT_SDP_UUID32   0x1a
 
#define BT_SDP_UUID128   0x1c
 
#define BT_SDP_TEXT_STR_UNSPEC   0x20
 
#define BT_SDP_TEXT_STR8   0x25
 
#define BT_SDP_TEXT_STR16   0x26
 
#define BT_SDP_TEXT_STR32   0x27
 
#define BT_SDP_BOOL   0x28
 
#define BT_SDP_SEQ_UNSPEC   0x30
 
#define BT_SDP_SEQ8   0x35
 
#define BT_SDP_SEQ16   0x36
 
#define BT_SDP_SEQ32   0x37
 
#define BT_SDP_ALT_UNSPEC   0x38
 
#define BT_SDP_ALT8   0x3d
 
#define BT_SDP_ALT16   0x3e
 
#define BT_SDP_ALT32   0x3f
 
#define BT_SDP_URL_STR_UNSPEC   0x40
 
#define BT_SDP_URL_STR8   0x45
 
#define BT_SDP_URL_STR16   0x46
 
#define BT_SDP_URL_STR32   0x47
 
#define BT_SDP_TYPE_DESC_MASK   0xf8
 
#define BT_SDP_SIZE_DESC_MASK   0x07
 
#define BT_SDP_SIZE_INDEX_OFFSET   5
 
#define BT_SDP_ARRAY_8(...)   ((uint8_t[]) {__VA_ARGS__})
 Declare an array of 8-bit elements in an attribute. More...
 
#define BT_SDP_ARRAY_16(...)   ((uint16_t[]) {__VA_ARGS__})
 Declare an array of 16-bit elements in an attribute. More...
 
#define BT_SDP_ARRAY_32(...)   ((uint32_t[]) {__VA_ARGS__})
 Declare an array of 32-bit elements in an attribute. More...
 
#define BT_SDP_TYPE_SIZE(_type)
 Declare a fixed-size data element header. More...
 
#define BT_SDP_TYPE_SIZE_VAR(_type, _size)
 Declare a variable-size data element header. More...
 
#define BT_SDP_DATA_ELEM_LIST(...)   ((struct bt_sdp_data_elem[]) {__VA_ARGS__})
 Declare a list of data elements. More...
 
#define BT_SDP_NEW_SERVICE
 SDP New Service Record Declaration Macro. More...
 
#define BT_SDP_LIST(_att_id, _type_size, _data_elem_seq)
 Generic SDP List Attribute Declaration Macro. More...
 
#define BT_SDP_SERVICE_ID(_uuid)
 SDP Service ID Attribute Declaration Macro. More...
 
#define BT_SDP_SERVICE_NAME(_name)
 SDP Name Attribute Declaration Macro. More...
 
#define BT_SDP_SUPPORTED_FEATURES(_features)
 SDP Supported Features Attribute Declaration Macro. More...
 
#define BT_SDP_RECORD(_attrs)
 SDP Service Declaration Macro. More...
 

Typedefs

typedef uint8_t(* bt_sdp_discover_func_t) (struct bt_conn *conn, struct bt_sdp_client_result *result)
 Callback type reporting to user that there is a resolved result on remote for given UUID and the result record buffer can be used by user for further inspection. More...
 

Enumerations

enum  { BT_SDP_DISCOVER_UUID_STOP = 0 , BT_SDP_DISCOVER_UUID_CONTINUE }
 Helper enum to be used as return value of bt_sdp_discover_func_t. The value informs the caller to perform further pending actions or stop them. More...
 
enum  bt_sdp_proto { BT_SDP_PROTO_RFCOMM = 0x0003 , BT_SDP_PROTO_L2CAP = 0x0100 }
 Protocols to be asked about specific parameters. More...
 

Functions

int bt_sdp_register_service (struct bt_sdp_record *service)
 Register a Service Record. More...
 
int bt_sdp_discover (struct bt_conn *conn, const struct bt_sdp_discover_params *params)
 Allows user to start SDP discovery session. More...
 
int bt_sdp_discover_cancel (struct bt_conn *conn, const struct bt_sdp_discover_params *params)
 Release waiting SDP discovery request. More...
 
int bt_sdp_get_proto_param (const struct net_buf *buf, enum bt_sdp_proto proto, uint16_t *param)
 Give to user parameter value related to given stacked protocol UUID. More...
 
int bt_sdp_get_addl_proto_param (const struct net_buf *buf, enum bt_sdp_proto proto, uint8_t param_index, uint16_t *param)
 Get additional parameter value related to given stacked protocol UUID. More...
 
int bt_sdp_get_profile_version (const struct net_buf *buf, uint16_t profile, uint16_t *version)
 Get profile version. More...
 
int bt_sdp_get_features (const struct net_buf *buf, uint16_t *features)
 Get SupportedFeatures attribute value. More...
 

Detailed Description

Service Discovery Protocol handling.