Module Name:    src
Committed By:   plunky
Date:           Sat Jul  4 16:01:15 UTC 2009

Modified Files:
        src/usr.bin/sdpquery: print.c

Log Message:
add interpretation of "PNP Information" service class (Device ID profile)


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/usr.bin/sdpquery/print.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/sdpquery/print.c
diff -u src/usr.bin/sdpquery/print.c:1.1 src/usr.bin/sdpquery/print.c:1.2
--- src/usr.bin/sdpquery/print.c:1.1	Tue May 12 18:37:50 2009
+++ src/usr.bin/sdpquery/print.c	Sat Jul  4 16:01:15 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: print.c,v 1.1 2009/05/12 18:37:50 plunky Exp $	*/
+/*	$NetBSD: print.c,v 1.2 2009/07/04 16:01:15 plunky Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: print.c,v 1.1 2009/05/12 18:37:50 plunky Exp $");
+__RCSID("$NetBSD: print.c,v 1.2 2009/07/04 16:01:15 plunky Exp $");
 
 #include <ctype.h>
 #include <iconv.h>
@@ -75,6 +75,7 @@
 static void print_bool(sdp_data_t *);
 static void print_uint8x(sdp_data_t *);
 static void print_uint16d(sdp_data_t *);
+static void print_uint16x(sdp_data_t *);
 static void print_uint32x(sdp_data_t *);
 static void print_uint32d(sdp_data_t *);
 static void print_uuid(sdp_data_t *);
@@ -106,6 +107,7 @@
 static void print_hfag_network(sdp_data_t *);
 static void print_hfag_features(sdp_data_t *);
 static void print_net_access_type(sdp_data_t *);
+static void print_pnp_source(sdp_data_t *);
 
 static void print_rfcomm(sdp_data_t *);
 static void print_bnep(sdp_data_t *);
@@ -258,6 +260,15 @@
 	{ 0x020e, "HIDBootDevice",			print_bool },
 };
 
+attr_t pnp_attrs[] = {	/* Device ID */
+	{ 0x0200, "SpecificationID",			print_profile_version },
+	{ 0x0201, "VendorID",				print_uint16x },
+	{ 0x0202, "ProductID",				print_uint16x },
+	{ 0x0203, "Version",				print_hid_version },
+	{ 0x0204, "PrimaryRecord",			print_bool },
+	{ 0x0205, "VendorIDSource",			print_pnp_source },
+};
+
 #define A(a)	a, __arraycount(a)
 service_t service_list[] = {
 	{ 0x1000, "Service Discovery Server",		A(sds_attrs) },
@@ -308,7 +319,7 @@
 	{ 0x112b, "UDI TA",				NULL, 0 },
 	{ 0x112c, "Audio/Video",			NULL, 0 },
 	{ 0x112d, "SIM Access",				NULL, 0 },
-	{ 0x1200, "PNP Information",			NULL, 0 },
+	{ 0x1200, "PNP Information",			A(pnp_attrs) },
 	{ 0x1201, "Generic Networking",			NULL, 0 },
 	{ 0x1202, "Generic File Transfer",		NULL, 0 },
 	{ 0x1203, "Generic Audio",			NULL, 0 },
@@ -594,6 +605,17 @@
 }
 
 static void
+print_uint16x(sdp_data_t *data)
+{
+	uint16_t v;
+
+	if (!sdp_get_uint16(data, &v))
+		return;
+
+	printf("0x%04x\n", v);
+}
+
+static void
 print_uint32x(sdp_data_t *data)
 {
 	uint32_t v;
@@ -1235,6 +1257,23 @@
 }
 
 static void
+print_pnp_source(sdp_data_t *data)
+{
+	uint16_t v;
+
+	if (!sdp_get_uint16(data, &v))
+		return;
+
+	switch (v) {
+	case 0x0001:	printf("Bluetooth SIG");		break;
+	case 0x0002:	printf("USB Implementers Forum");	break;
+	default:	printf("0x%04x", v);			break;
+	}
+
+	printf("\n");
+}
+
+static void
 print_rfcomm(sdp_data_t *data)
 {
 	uint8_t v;

Reply via email to