summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoremax <emax@FreeBSD.org>2008-11-25 21:54:42 +0000
committeremax <emax@FreeBSD.org>2008-11-25 21:54:42 +0000
commit3a81cef6021b338d184e794524300696e9158123 (patch)
tree6a1f49251863117bf63d851ad979af3345cf8023
parent49203afd8c7d7140010993df59b7bfdb0557de3f (diff)
downloadFreeBSD-src-3a81cef6021b338d184e794524300696e9158123.zip
FreeBSD-src-3a81cef6021b338d184e794524300696e9158123.tar.gz
Straighten out those pesky SDP records for the Bluetooth
Service Discovery Application Profile. Discussed with: Iain Hibbert of NetBSD plunky at rya dash online dot net MFC after: 3 weeks
-rw-r--r--usr.sbin/bluetooth/sdpd/sd.c36
1 files changed, 26 insertions, 10 deletions
diff --git a/usr.sbin/bluetooth/sdpd/sd.c b/usr.sbin/bluetooth/sdpd/sd.c
index 52f6c95..1743ea7 100644
--- a/usr.sbin/bluetooth/sdpd/sd.c
+++ b/usr.sbin/bluetooth/sdpd/sd.c
@@ -52,6 +52,22 @@ sd_profile_create_service_class_id_list(
}
static int32_t
+sd_profile_create_bluetooth_profile_descriptor_list(
+ uint8_t *buf, uint8_t const * const eob,
+ uint8_t const *data, uint32_t datalen)
+{
+ static uint16_t profile_descriptor_list[] = {
+ SDP_SERVICE_CLASS_SERVICE_DISCOVERY_SERVER,
+ 0x0100
+ };
+
+ return (common_profile_create_bluetooth_profile_descriptor_list(
+ buf, eob,
+ (uint8_t const *) profile_descriptor_list,
+ sizeof(profile_descriptor_list)));
+}
+
+static int32_t
sd_profile_create_service_id(
uint8_t *buf, uint8_t const * const eob,
uint8_t const *data, uint32_t datalen)
@@ -89,25 +105,23 @@ sd_profile_create_protocol_descriptor_list(
uint8_t *buf, uint8_t const * const eob,
uint8_t const *data, uint32_t datalen)
{
- if (buf + 13 > eob)
+ if (buf + 12 > eob)
return (-1);
SDP_PUT8(SDP_DATA_SEQ8, buf);
- SDP_PUT8(11, buf);
+ SDP_PUT8(10, buf);
SDP_PUT8(SDP_DATA_SEQ8, buf);
- SDP_PUT8(9, buf);
-
+ SDP_PUT8(3, buf);
SDP_PUT8(SDP_DATA_UUID16, buf);
SDP_PUT16(SDP_UUID_PROTOCOL_L2CAP, buf);
- SDP_PUT8(SDP_DATA_UINT16, buf);
- SDP_PUT16(NG_L2CAP_PSM_SDP, buf);
-
- SDP_PUT8(SDP_DATA_UINT16, buf);
- SDP_PUT16(1, buf); /* version */
+ SDP_PUT8(SDP_DATA_SEQ8, buf);
+ SDP_PUT8(3, buf);
+ SDP_PUT8(SDP_DATA_UUID16, buf);
+ SDP_PUT16(SDP_UUID_PROTOCOL_SDP, buf);
- return (13);
+ return (12);
}
static int32_t
@@ -182,6 +196,8 @@ static attr_t sd_profile_attrs[] = {
common_profile_create_service_record_handle },
{ SDP_ATTR_SERVICE_CLASS_ID_LIST,
sd_profile_create_service_class_id_list },
+ { SDP_ATTR_BLUETOOTH_PROFILE_DESCRIPTOR_LIST,
+ sd_profile_create_bluetooth_profile_descriptor_list },
{ SDP_ATTR_SERVICE_ID,
sd_profile_create_service_id },
{ SDP_ATTR_LANGUAGE_BASE_ATTRIBUTE_ID_LIST,
OpenPOWER on IntegriCloud