Module Name:    src
Committed By:   plunky
Date:           Mon Nov 22 20:02:06 UTC 2010

Modified Files:
        src/usr.sbin/btconfig: btconfig.c

Log Message:
update for ioctl improvements
- use SIOCGBTFEAT to recover device features rather than
  querying the device
- print also the max ACL/SCO buffers


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/usr.sbin/btconfig/btconfig.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.sbin/btconfig/btconfig.c
diff -u src/usr.sbin/btconfig/btconfig.c:1.22 src/usr.sbin/btconfig/btconfig.c:1.23
--- src/usr.sbin/btconfig/btconfig.c:1.22	Fri Oct  9 12:58:28 2009
+++ src/usr.sbin/btconfig/btconfig.c	Mon Nov 22 20:02:06 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: btconfig.c,v 1.22 2009/10/09 12:58:28 plunky Exp $ */
+/* $NetBSD: btconfig.c,v 1.23 2010/11/22 20:02:06 plunky Exp $ */
 
 /*-
  * Copyright (c) 2006 Itronix Inc.
@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2006 Itronix, Inc.  All rights reserved.");
-__RCSID("$NetBSD: btconfig.c,v 1.22 2009/10/09 12:58:28 plunky Exp $");
+__RCSID("$NetBSD: btconfig.c,v 1.23 2010/11/22 20:02:06 plunky Exp $");
 
 #include <sys/ioctl.h>
 #include <sys/param.h>
@@ -62,7 +62,6 @@
 void print_class0(void);
 void print_voice(int);
 void tag(const char *);
-void print_features(const char *, uint8_t, uint8_t *);
 void print_features0(uint8_t *);
 void print_features1(uint8_t *);
 void print_result(int, struct bt_devinquiry *);
@@ -646,11 +645,11 @@
 		return;
 
 	printf("\tnum_cmd = %d\n"
-	       "\tnum_acl = %d, acl_mtu = %d\n"
-	       "\tnum_sco = %d, sco_mtu = %d\n",
+	       "\tnum_acl = %d (max %d), acl_mtu = %d\n"
+	       "\tnum_sco = %d (max %d), sco_mtu = %d\n",
 	       btr.btr_num_cmd,
-	       btr.btr_num_acl, btr.btr_acl_mtu,
-	       btr.btr_num_sco, btr.btr_sco_mtu);
+	       btr.btr_num_acl, btr.btr_max_acl, btr.btr_acl_mtu,
+	       btr.btr_num_sco, btr.btr_max_sco, btr.btr_sco_mtu);
 
 	if (level-- < 1 || (btr.btr_flags & BTF_UP) == 0)
 		return;
@@ -740,22 +739,13 @@
 	if (level-- < 1)
 		return;
 
-	load_value(HCI_CMD_READ_LOCAL_FEATURES, buf, HCI_FEATURES_SIZE);
-	if ((buf[7] & HCI_LMP_EXTENDED_FEATURES) == 0) {
-		print_features("\tfeatures:", 0, buf);
-	} else {
-		hci_read_local_extended_features_rp rp;
-
-		rp.page = 0;
+	if (ioctl(hci, SIOCGBTFEAT, &btr) < 0)
+		err(EXIT_FAILURE, "SIOCGBTFEAT");
 
-		do {
-			hci_req(HCI_CMD_READ_LOCAL_EXTENDED_FEATURES, 0,
-			    &rp.page, sizeof(rp.page), &rp, sizeof(rp));
-
-			print_features("\tfeatures (page %d):",
-			    rp.page, rp.features);
-		} while (rp.page++ < rp.max_page);
-	}
+	width = printf("\tfeatures:");
+	print_features0(btr.btr_features0);
+	print_features1(btr.btr_features1);
+	tag(NULL);
 }
 
 void
@@ -786,21 +776,6 @@
 }
 
 void
-print_features(const char *fmt, uint8_t page, uint8_t *f)
-{
-
-	width = printf(fmt, page);
-
-	switch(page) {
-	case 0:	print_features0(f);	break;
-	case 1:	print_features1(f);	break;
-	default:			break;
-	}
-
-	tag(NULL);
-}
-
-void
 print_features0(uint8_t *f)
 {
 

Reply via email to