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;