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;