summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergej Pupykin2021-04-07 22:20:16 +0300
committerSergej Pupykin2021-04-07 22:20:16 +0300
commit80f9638dc06dcd6e2b7ab41d7c0b3cf646988636 (patch)
tree7cb6a21a98c1967dfb91e4d7ea6acccfc6a26f87
parentcca1c2a3917b72a55c4ff33e12723b49c90573b2 (diff)
downloadaur-80f9638dc06dcd6e2b7ab41d7c0b3cf646988636.tar.gz
upd
-rw-r--r--.SRCINFO20
-rw-r--r--PKGBUILD16
-rw-r--r--csr.c2855
-rw-r--r--csr.h555
-rw-r--r--hciconfig.1272
-rw-r--r--hciconfig.c2064
-rw-r--r--textfile.c475
-rw-r--r--textfile.h34
-rw-r--r--util.h187
9 files changed, 9 insertions, 6469 deletions
diff --git a/.SRCINFO b/.SRCINFO
index b9511c717ea5..216a72dc381a 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,27 +1,13 @@
-# Generated by mksrcinfo v8
-# Thu Aug 2 16:23:56 UTC 2018
pkgbase = bluez-hciconfig
pkgdesc = deprecated hciconfig tool from bluez
- pkgver = 5.50
+ pkgver = 5.58
pkgrel = 1
url = http://www.bluez.org/
arch = x86_64
license = GPL2
depends = bluez
- source = hciconfig.1
- source = hciconfig.c
- source = textfile.c
- source = textfile.h
- source = csr.h
- source = csr.c
- source = util.h
- sha256sums = c7d50bbdec9d17b6c864834a8a9b6b3579b5b24554cb5440e96498858deb7dee
- sha256sums = 149d814df44c9fe851230f4d037f494a49f3dc7e00eecaa6aba73c9ae1d1a128
- sha256sums = 88f2a8db6687de0369266eb96a7ab007496e13fdb969de214f208c3866794e85
- sha256sums = 53317986e699d03f1502ccd03cf487950343769b476f215e67b57b361ae9cf5f
- sha256sums = 56c3227d3022c317677e9ebfc7fd4043177fc24b61871304ce988b2b29af9c53
- sha256sums = 44911c2262e1f279c53f910200e72a710fcc1a1d2d411a9c3c1a51fd5dc06611
- sha256sums = f1aa4d8199959d94dc1d08160f06a08c3bbb5208c4a0eda881dada31e2eca46a
+ source = https://www.kernel.org/pub/linux/bluetooth/bluez-5.58.tar.xz
+ sha256sums = c8065e75a5eb67236849ef68a354b1700540305a8c88ef0a0fd6288f19daf1f1
pkgname = bluez-hciconfig
diff --git a/PKGBUILD b/PKGBUILD
index 885d2017a67d..dfb9ebda5dad 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,27 +2,23 @@
# Maintainer: Sergej Pupykin <arch+pub@sergej.pp.ru>
pkgname=bluez-hciconfig
-pkgver=5.50
+pkgver=5.58
pkgrel=1
pkgdesc="deprecated hciconfig tool from bluez"
url="http://www.bluez.org/"
arch=('x86_64')
license=('GPL2')
depends=("bluez")
-source=(hciconfig.1 hciconfig.c textfile.c textfile.h csr.h csr.c util.h)
-sha256sums=('c7d50bbdec9d17b6c864834a8a9b6b3579b5b24554cb5440e96498858deb7dee'
- '149d814df44c9fe851230f4d037f494a49f3dc7e00eecaa6aba73c9ae1d1a128'
- '88f2a8db6687de0369266eb96a7ab007496e13fdb969de214f208c3866794e85'
- '53317986e699d03f1502ccd03cf487950343769b476f215e67b57b361ae9cf5f'
- '56c3227d3022c317677e9ebfc7fd4043177fc24b61871304ce988b2b29af9c53'
- '44911c2262e1f279c53f910200e72a710fcc1a1d2d411a9c3c1a51fd5dc06611'
- 'f1aa4d8199959d94dc1d08160f06a08c3bbb5208c4a0eda881dada31e2eca46a')
+source=(https://www.kernel.org/pub/linux/bluetooth/bluez-${pkgver}.tar.xz)
+sha256sums=('c8065e75a5eb67236849ef68a354b1700540305a8c88ef0a0fd6288f19daf1f1')
build() {
- gcc hciconfig.c csr.c -lbluetooth -o hciconfig -DVERSION=\"$pkgver\"
+ cd bluez-${pkgver}/tools
+ gcc hciconfig.c parser/{csr,parser,lmp}.c ../src/textfile.c -lbluetooth -o hciconfig -DVERSION=\"$pkgver\" -I..
}
package() {
+ cd bluez-${pkgver}/tools
install -Dm0755 hciconfig "$pkgdir"/usr/bin/hciconfig
install -Dm0755 hciconfig.1 "$pkgdir"/usr/share/man/man1/hciconfig.1
}
diff --git a/csr.c b/csr.c
deleted file mode 100644
index 7eedaca45d63..000000000000
--- a/csr.c
+++ /dev/null
@@ -1,2855 +0,0 @@
-/*
- *
- * BlueZ - Bluetooth protocol stack for Linux
- *
- * Copyright (C) 2003-2010 Marcel Holtmann <marcel@holtmann.org>
- *
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <sys/socket.h>
-
-#include "bluetooth/bluetooth.h"
-#include "bluetooth/hci.h"
-#include "bluetooth/hci_lib.h"
-
-#include "csr.h"
-
-struct psr_data {
- uint16_t pskey;
- uint8_t *value;
- uint8_t size;
- struct psr_data *next;
-};
-
-static struct psr_data *head = NULL, *tail = NULL;
-
-static struct {
- uint16_t id;
- char *str;
-} csr_map[] = {
- { 66, "HCI 9.8" },
- { 97, "HCI 10.3" },
- { 101, "HCI 10.5" },
- { 111, "HCI 11.0" },
- { 112, "HCI 11.1" },
- { 114, "HCI 11.2" },
- { 115, "HCI 11.3" },
- { 117, "HCI 12.0" },
- { 119, "HCI 12.1" },
- { 133, "HCI 12.2" },
- { 134, "HCI 12.3" },
- { 162, "HCI 12.4" },
- { 165, "HCI 12.5" },
- { 169, "HCI 12.6" },
- { 188, "HCI 12.7" },
- { 218, "HCI 12.8" },
- { 283, "HCI 12.9" },
- { 203, "HCI 13.2" },
- { 204, "HCI 13.2" },
- { 210, "HCI 13.3" },
- { 211, "HCI 13.3" },
- { 213, "HCI 13.4" },
- { 214, "HCI 13.4" },
- { 225, "HCI 13.5" },
- { 226, "HCI 13.5" },
- { 237, "HCI 13.6" },
- { 238, "HCI 13.6" },
- { 242, "HCI 14.0" },
- { 243, "HCI 14.0" },
- { 244, "HCI 14.0" },
- { 245, "HCI 14.0" },
- { 254, "HCI 13.7" },
- { 255, "HCI 13.7" },
- { 264, "HCI 14.1" },
- { 265, "HCI 14.1" },
- { 267, "HCI 14.2" },
- { 268, "HCI 14.2" },
- { 272, "HCI 14.3" },
- { 273, "HCI 14.3" },
- { 274, "HCI 13.8" },
- { 275, "HCI 13.8" },
- { 286, "HCI 13.9" },
- { 287, "HCI 13.9" },
- { 309, "HCI 13.10" },
- { 310, "HCI 13.10" },
- { 313, "HCI 14.4" },
- { 314, "HCI 14.4" },
- { 323, "HCI 14.5" },
- { 324, "HCI 14.5" },
- { 336, "HCI 14.6" },
- { 337, "HCI 14.6" },
- { 351, "HCI 13.11" },
- { 352, "HCI 13.11" },
- { 362, "HCI 15.0" },
- { 363, "HCI 15.0" },
- { 364, "HCI 15.0" },
- { 365, "HCI 15.0" },
- { 373, "HCI 14.7" },
- { 374, "HCI 14.7" },
- { 379, "HCI 15.1" },
- { 380, "HCI 15.1" },
- { 381, "HCI 15.1" },
- { 382, "HCI 15.1" },
- { 392, "HCI 15.2" },
- { 393, "HCI 15.2" },
- { 394, "HCI 15.2" },
- { 395, "HCI 15.2" },
- { 436, "HCI 16.0" },
- { 437, "HCI 16.0" },
- { 438, "HCI 16.0" },
- { 439, "HCI 16.0" },
- { 443, "HCI 15.3" },
- { 444, "HCI 15.3" },
- { 465, "HCI 16.1" },
- { 466, "HCI 16.1" },
- { 467, "HCI 16.1" },
- { 468, "HCI 16.1" },
- { 487, "HCI 14.8" },
- { 488, "HCI 14.8" },
- { 492, "HCI 16.2" },
- { 493, "HCI 16.2" },
- { 495, "HCI 16.2" },
- { 496, "HCI 16.2" },
- { 502, "HCI 16.1.1" },
- { 503, "HCI 16.1.1" },
- { 504, "HCI 16.1.1" },
- { 505, "HCI 16.1.1" },
- { 506, "HCI 16.1.2" },
- { 507, "HCI 16.1.2" },
- { 508, "HCI 16.1.2" },
- { 509, "HCI 16.1.2" },
- { 516, "HCI 16.3" },
- { 517, "HCI 16.3" },
- { 518, "HCI 16.3" },
- { 519, "HCI 16.3" },
- { 523, "HCI 16.4" },
- { 524, "HCI 16.4" },
- { 525, "HCI 16.4" },
- { 526, "HCI 16.4" },
- { 553, "HCI 15.3" },
- { 554, "HCI 15.3" },
- { 562, "HCI 16.5" },
- { 563, "HCI 16.5" },
- { 564, "HCI 16.5" },
- { 565, "HCI 16.5" },
- { 593, "HCI 17.0" },
- { 594, "HCI 17.0" },
- { 595, "HCI 17.0" },
- { 599, "HCI 17.0" },
- { 600, "HCI 17.0" },
- { 608, "HCI 13.10.1" },
- { 609, "HCI 13.10.1" },
- { 613, "HCI 17.1" },
- { 614, "HCI 17.1" },
- { 615, "HCI 17.1" },
- { 616, "HCI 17.1" },
- { 618, "HCI 17.1" },
- { 624, "HCI 17.2" },
- { 625, "HCI 17.2" },
- { 626, "HCI 17.2" },
- { 627, "HCI 17.2" },
- { 637, "HCI 16.6" },
- { 638, "HCI 16.6" },
- { 639, "HCI 16.6" },
- { 640, "HCI 16.6" },
- { 642, "HCI 13.10.2" },
- { 643, "HCI 13.10.2" },
- { 644, "HCI 13.10.3" },
- { 645, "HCI 13.10.3" },
- { 668, "HCI 13.10.4" },
- { 669, "HCI 13.10.4" },
- { 681, "HCI 16.7" },
- { 682, "HCI 16.7" },
- { 683, "HCI 16.7" },
- { 684, "HCI 16.7" },
- { 704, "HCI 16.8" },
- { 718, "HCI 16.4.1" },
- { 719, "HCI 16.4.1" },
- { 720, "HCI 16.4.1" },
- { 721, "HCI 16.4.1" },
- { 722, "HCI 16.7.1" },
- { 723, "HCI 16.7.1" },
- { 724, "HCI 16.7.1" },
- { 725, "HCI 16.7.1" },
- { 731, "HCI 16.7.2" },
- { 732, "HCI 16.7.2" },
- { 733, "HCI 16.7.2" },
- { 734, "HCI 16.7.2" },
- { 735, "HCI 16.4.2" },
- { 736, "HCI 16.4.2" },
- { 737, "HCI 16.4.2" },
- { 738, "HCI 16.4.2" },
- { 750, "HCI 16.7.3" },
- { 751, "HCI 16.7.3" },
- { 752, "HCI 16.7.3" },
- { 753, "HCI 16.7.3" },
- { 760, "HCI 16.7.4" },
- { 761, "HCI 16.7.4" },
- { 762, "HCI 16.7.4" },
- { 763, "HCI 16.7.4" },
- { 770, "HCI 16.9" },
- { 771, "HCI 16.9" },
- { 772, "HCI 16.9" },
- { 773, "HCI 16.9" },
- { 774, "HCI 17.3" },
- { 775, "HCI 17.3" },
- { 776, "HCI 17.3" },
- { 777, "HCI 17.3" },
- { 781, "HCI 16.7.5" },
- { 786, "HCI 16.10" },
- { 787, "HCI 16.10" },
- { 788, "HCI 16.10" },
- { 789, "HCI 16.10" },
- { 791, "HCI 16.4.3" },
- { 792, "HCI 16.4.3" },
- { 793, "HCI 16.4.3" },
- { 794, "HCI 16.4.3" },
- { 798, "HCI 16.11" },
- { 799, "HCI 16.11" },
- { 800, "HCI 16.11" },
- { 801, "HCI 16.11" },
- { 806, "HCI 16.7.5" },
- { 807, "HCI 16.12" },
- { 808, "HCI 16.12" },
- { 809, "HCI 16.12" },
- { 810, "HCI 16.12" },
- { 817, "HCI 16.13" },
- { 818, "HCI 16.13" },
- { 819, "HCI 16.13" },
- { 820, "HCI 16.13" },
- { 823, "HCI 13.10.5" },
- { 824, "HCI 13.10.5" },
- { 826, "HCI 16.14" },
- { 827, "HCI 16.14" },
- { 828, "HCI 16.14" },
- { 829, "HCI 16.14" },
- { 843, "HCI 17.3.1" },
- { 856, "HCI 17.3.2" },
- { 857, "HCI 17.3.2" },
- { 858, "HCI 17.3.2" },
- { 1120, "HCI 17.11" },
- { 1168, "HCI 18.1" },
- { 1169, "HCI 18.1" },
- { 1241, "HCI 18.x" },
- { 1298, "HCI 18.2" },
- { 1354, "HCI 18.2" },
- { 1392, "HCI 18.2" },
- { 1393, "HCI 18.2" },
- { 1501, "HCI 18.2" },
- { 1503, "HCI 18.2" },
- { 1504, "HCI 18.2" },
- { 1505, "HCI 18.2" },
- { 1506, "HCI 18.2" },
- { 1520, "HCI 18.2" },
- { 1586, "HCI 18.2" },
- { 1591, "HCI 18.2" },
- { 1592, "HCI 18.2" },
- { 1593, "HCI 18.2.1" },
- { 1733, "HCI 18.3" },
- { 1734, "HCI 18.3" },
- { 1735, "HCI 18.3" },
- { 1737, "HCI 18.3" },
- { 1915, "HCI 19.2" },
- { 1916, "HCI 19.2" },
- { 1958, "HCI 19.2" },
- { 1981, "Unified 20a" },
- { 1982, "Unified 20a" },
- { 1989, "HCI 18.4" },
- { 2062, "Unified 20a1" },
- { 2063, "Unified 20a1" },
- { 2067, "Unified 18f" },
- { 2068, "Unified 18f" },
- { 2243, "Unified 18e" },
- { 2244, "Unified 18e" },
- { 2258, "Unified 20d" },
- { 2259, "Unified 20d" },
- { 2361, "Unified 20e" },
- { 2362, "Unified 20e" },
- { 2386, "Unified 21a" },
- { 2387, "Unified 21a" },
- { 2423, "Unified 21a" },
- { 2424, "Unified 21a" },
- { 2623, "Unified 21c" },
- { 2624, "Unified 21c" },
- { 2625, "Unified 21c" },
- { 2626, "Unified 21c" },
- { 2627, "Unified 21c" },
- { 2628, "Unified 21c" },
- { 2629, "Unified 21c" },
- { 2630, "Unified 21c" },
- { 2631, "Unified 21c" },
- { 2632, "Unified 21c" },
- { 2633, "Unified 21c" },
- { 2634, "Unified 21c" },
- { 2635, "Unified 21c" },
- { 2636, "Unified 21c" },
- { 2649, "Unified 21c" },
- { 2650, "Unified 21c" },
- { 2651, "Unified 21c" },
- { 2652, "Unified 21c" },
- { 2653, "Unified 21c" },
- { 2654, "Unified 21c" },
- { 2655, "Unified 21c" },
- { 2656, "Unified 21c" },
- { 2658, "Unified 21c" },
- { 3057, "Unified 21d" },
- { 3058, "Unified 21d" },
- { 3059, "Unified 21d" },
- { 3060, "Unified 21d" },
- { 3062, "Unified 21d" },
- { 3063, "Unified 21d" },
- { 3064, "Unified 21d" },
- { 3164, "Unified 21e" },
- { 3413, "Unified 21f" },
- { 3414, "Unified 21f" },
- { 3415, "Unified 21f" },
- { 3424, "Unified 21f" },
- { 3454, "Unified 21f" },
- { 3684, "Unified 21f" },
- { 3764, "Unified 21f" },
- { 4276, "Unified 22b" },
- { 4277, "Unified 22b" },
- { 4279, "Unified 22b" },
- { 4281, "Unified 22b" },
- { 4282, "Unified 22b" },
- { 4283, "Unified 22b" },
- { 4284, "Unified 22b" },
- { 4285, "Unified 22b" },
- { 4289, "Unified 22b" },
- { 4290, "Unified 22b" },
- { 4291, "Unified 22b" },
- { 4292, "Unified 22b" },
- { 4293, "Unified 22b" },
- { 4294, "Unified 22b" },
- { 4295, "Unified 22b" },
- { 4363, "Unified 22c" },
- { 4373, "Unified 22c" },
- { 4374, "Unified 22c" },
- { 4532, "Unified 22d" },
- { 4533, "Unified 22d" },
- { 4698, "Unified 23c" },
- { 4839, "Unified 23c" },
- { 4841, "Unified 23c" },
- { 4866, "Unified 23c" },
- { 4867, "Unified 23c" },
- { 4868, "Unified 23c" },
- { 4869, "Unified 23c" },
- { 4870, "Unified 23c" },
- { 4871, "Unified 23c" },
- { 4872, "Unified 23c" },
- { 4874, "Unified 23c" },
- { 4875, "Unified 23c" },
- { 4876, "Unified 23c" },
- { 4877, "Unified 23c" },
- { 2526, "Marcel 1 (2005-09-26)" },
- { 2543, "Marcel 2 (2005-09-28)" },
- { 2622, "Marcel 3 (2005-10-27)" },
- { 3326, "Marcel 4 (2006-06-16)" },
- { 3612, "Marcel 5 (2006-10-24)" },
- { 4509, "Marcel 6 (2007-06-11)" },
- { 5417, "Marcel 7 (2008-08-26)" },
- { 195, "Sniff 1 (2001-11-27)" },
- { 220, "Sniff 2 (2002-01-03)" },
- { 269, "Sniff 3 (2002-02-22)" },
- { 270, "Sniff 4 (2002-02-26)" },
- { 284, "Sniff 5 (2002-03-12)" },
- { 292, "Sniff 6 (2002-03-20)" },
- { 305, "Sniff 7 (2002-04-12)" },
- { 306, "Sniff 8 (2002-04-12)" },
- { 343, "Sniff 9 (2002-05-02)" },
- { 346, "Sniff 10 (2002-05-03)" },
- { 355, "Sniff 11 (2002-05-16)" },
- { 256, "Sniff 11 (2002-05-16)" },
- { 390, "Sniff 12 (2002-06-26)" },
- { 450, "Sniff 13 (2002-08-16)" },
- { 451, "Sniff 13 (2002-08-16)" },
- { 533, "Sniff 14 (2002-10-11)" },
- { 580, "Sniff 15 (2002-11-14)" },
- { 623, "Sniff 16 (2002-12-12)" },
- { 678, "Sniff 17 (2003-01-29)" },
- { 847, "Sniff 18 (2003-04-17)" },
- { 876, "Sniff 19 (2003-06-10)" },
- { 997, "Sniff 22 (2003-09-05)" },
- { 1027, "Sniff 23 (2003-10-03)" },
- { 1029, "Sniff 24 (2003-10-03)" },
- { 1112, "Sniff 25 (2003-12-03)" },
- { 1113, "Sniff 25 (2003-12-03)" },
- { 1133, "Sniff 26 (2003-12-18)" },
- { 1134, "Sniff 26 (2003-12-18)" },
- { 1223, "Sniff 27 (2004-03-08)" },
- { 1224, "Sniff 27 (2004-03-08)" },
- { 1319, "Sniff 31 (2004-04-22)" },
- { 1320, "Sniff 31 (2004-04-22)" },
- { 1427, "Sniff 34 (2004-06-16)" },
- { 1508, "Sniff 35 (2004-07-19)" },
- { 1509, "Sniff 35 (2004-07-19)" },
- { 1587, "Sniff 36 (2004-08-18)" },
- { 1588, "Sniff 36 (2004-08-18)" },
- { 1641, "Sniff 37 (2004-09-16)" },
- { 1642, "Sniff 37 (2004-09-16)" },
- { 1699, "Sniff 38 (2004-10-07)" },
- { 1700, "Sniff 38 (2004-10-07)" },
- { 1752, "Sniff 39 (2004-11-02)" },
- { 1753, "Sniff 39 (2004-11-02)" },
- { 1759, "Sniff 40 (2004-11-03)" },
- { 1760, "Sniff 40 (2004-11-03)" },
- { 1761, "Sniff 40 (2004-11-03)" },
- { 2009, "Sniff 41 (2005-04-06)" },
- { 2010, "Sniff 41 (2005-04-06)" },
- { 2011, "Sniff 41 (2005-04-06)" },
- { 2016, "Sniff 42 (2005-04-11)" },
- { 2017, "Sniff 42 (2005-04-11)" },
- { 2018, "Sniff 42 (2005-04-11)" },
- { 2023, "Sniff 43 (2005-04-14)" },
- { 2024, "Sniff 43 (2005-04-14)" },
- { 2025, "Sniff 43 (2005-04-14)" },
- { 2032, "Sniff 44 (2005-04-18)" },
- { 2033, "Sniff 44 (2005-04-18)" },
- { 2034, "Sniff 44 (2005-04-18)" },
- { 2288, "Sniff 45 (2005-07-08)" },
- { 2289, "Sniff 45 (2005-07-08)" },
- { 2290, "Sniff 45 (2005-07-08)" },
- { 2388, "Sniff 46 (2005-08-17)" },
- { 2389, "Sniff 46 (2005-08-17)" },
- { 2390, "Sniff 46 (2005-08-17)" },
- { 2869, "Sniff 47 (2006-02-15)" },
- { 2870, "Sniff 47 (2006-02-15)" },
- { 2871, "Sniff 47 (2006-02-15)" },
- { 3214, "Sniff 48 (2006-05-16)" },
- { 3215, "Sniff 48 (2006-05-16)" },
- { 3216, "Sniff 48 (2006-05-16)" },
- { 3356, "Sniff 49 (2006-07-17)" },
- { 3529, "Sniff 50 (2006-09-21)" },
- { 3546, "Sniff 51 (2006-09-29)" },
- { 3683, "Sniff 52 (2006-11-03)" },
- { 0, }
-};
-
-char *csr_builddeftostr(uint16_t def)
-{
- switch (def) {
- case 0x0000:
- return "NONE";
- case 0x0001:
- return "CHIP_BASE_BC01";
- case 0x0002:
- return "CHIP_BASE_BC02";
- case 0x0003:
- return "CHIP_BC01B";
- case 0x0004:
- return "CHIP_BC02_EXTERNAL";
- case 0x0005:
- return "BUILD_HCI";
- case 0x0006:
- return "BUILD_RFCOMM";
- case 0x0007:
- return "BT_VER_1_1";
- case 0x0008:
- return "TRANSPORT_ALL";
- case 0x0009:
- return "TRANSPORT_BCSP";
- case 0x000a:
- return "TRANSPORT_H4";
- case 0x000b:
- return "TRANSPORT_USB";
- case 0x000c:
- return "MAX_CRYPT_KEY_LEN_56";
- case 0x000d:
- return "MAX_CRYPT_KEY_LEN_128";
- case 0x000e:
- return "TRANSPORT_USER";
- case 0x000f:
- return "CHIP_BC02_KATO";
- case 0x0010:
- return "TRANSPORT_NONE";
- case 0x0012:
- return "REQUIRE_8MBIT";
- case 0x0013:
- return "RADIOTEST";
- case 0x0014:
- return "RADIOTEST_LITE";
- case 0x0015:
- return "INSTALL_FLASH";
- case 0x0016:
- return "INSTALL_EEPROM";
- case 0x0017:
- return "INSTALL_COMBO_DOT11";
- case 0x0018:
- return "LOWPOWER_TX";
- case 0x0019:
- return "TRANSPORT_TWUTL";
- case 0x001a:
- return "COMPILER_GCC";
- case 0x001b:
- return "CHIP_BC02_CLOUSEAU";
- case 0x001c:
- return "CHIP_BC02_TOULOUSE";
- case 0x001d:
- return "CHIP_BASE_BC3";
- case 0x001e:
- return "CHIP_BC3_NICKNACK";
- case 0x001f:
- return "CHIP_BC3_KALIMBA";
- case 0x0020:
- return "INSTALL_HCI_MODULE";
- case 0x0021:
- return "INSTALL_L2CAP_MODULE";
- case 0x0022:
- return "INSTALL_DM_MODULE";
- case 0x0023:
- return "INSTALL_SDP_MODULE";
- case 0x0024:
- return "INSTALL_RFCOMM_MODULE";
- case 0x0025:
- return "INSTALL_HIDIO_MODULE";
- case 0x0026:
- return "INSTALL_PAN_MODULE";
- case 0x0027:
- return "INSTALL_IPV4_MODULE";
- case 0x0028:
- return "INSTALL_IPV6_MODULE";
- case 0x0029:
- return "INSTALL_TCP_MODULE";
- case 0x002a:
- return "BT_VER_1_2";
- case 0x002b:
- return "INSTALL_UDP_MODULE";
- case 0x002c:
- return "REQUIRE_0_WAIT_STATES";
- case 0x002d:
- return "CHIP_BC3_PADDYWACK";
- case 0x002e:
- return "CHIP_BC4_COYOTE";
- case 0x002f:
- return "CHIP_BC4_ODDJOB";
- case 0x0030:
- return "TRANSPORT_H4DS";
- case 0x0031:
- return "CHIP_BASE_BC4";
- default:
- return "UNKNOWN";
- }
-}
-
-char *csr_buildidtostr(uint16_t id)
-{
- static char str[12];
- int i;
-
- for (i = 0; csr_map[i].id; i++)
- if (csr_map[i].id == id)
- return csr_map[i].str;
-
- snprintf(str, sizeof(str), "Build %d", id);
- return str;
-}
-
-char *csr_chipvertostr(uint16_t ver, uint16_t rev)
-{
- switch (ver) {
- case 0x00:
- return "BlueCore01a";
- case 0x01:
- switch (rev) {
- case 0x64:
- return "BlueCore01b (ES)";
- case 0x65:
- default:
- return "BlueCore01b";
- }
- case 0x02:
- switch (rev) {
- case 0x89:
- return "BlueCore02-External (ES2)";
- case 0x8a:
- return "BlueCore02-External";
- case 0x28:
- return "BlueCore02-ROM/Audio/Flash";
- default:
- return "BlueCore02";
- }
- case 0x03:
- switch (rev) {
- case 0x43:
- return "BlueCore3-MM";
- case 0x15:
- return "BlueCore3-ROM";
- case 0xe2:
- return "BlueCore3-Flash";
- case 0x26:
- return "BlueCore4-External";
- case 0x30:
- return "BlueCore4-ROM";
- default:
- return "BlueCore3 or BlueCore4";
- }
- default:
- return "Unknown";
- }
-}
-
-char *csr_pskeytostr(uint16_t pskey)
-{
- switch (pskey) {
- case CSR_PSKEY_BDADDR:
- return "Bluetooth address";
- case CSR_PSKEY_COUNTRYCODE:
- return "Country code";
- case CSR_PSKEY_CLASSOFDEVICE:
- return "Class of device";
- case CSR_PSKEY_DEVICE_DRIFT:
- return "Device drift";
- case CSR_PSKEY_DEVICE_JITTER:
- return "Device jitter";
- case CSR_PSKEY_MAX_ACLS:
- return "Maximum ACL links";
- case CSR_PSKEY_MAX_SCOS:
- return "Maximum SCO links";
- case CSR_PSKEY_MAX_REMOTE_MASTERS:
- return "Maximum remote masters";
- case CSR_PSKEY_ENABLE_MASTERY_WITH_SLAVERY:
- return "Support master and slave roles simultaneously";
- case CSR_PSKEY_H_HC_FC_MAX_ACL_PKT_LEN:
- return "Maximum HCI ACL packet length";
- case CSR_PSKEY_H_HC_FC_MAX_SCO_PKT_LEN:
- return "Maximum HCI SCO packet length";
- case CSR_PSKEY_H_HC_FC_MAX_ACL_PKTS:
- return "Maximum number of HCI ACL packets";
- case CSR_PSKEY_H_HC_FC_MAX_SCO_PKTS:
- return "Maximum number of HCI SCO packets";
- case CSR_PSKEY_LC_FC_BUFFER_LOW_WATER_MARK:
- return "Flow control low water mark";
- case CSR_PSKEY_LC_MAX_TX_POWER:
- return "Maximum transmit power";
- case CSR_PSKEY_TX_GAIN_RAMP:
- return "Transmit gain ramp rate";
- case CSR_PSKEY_LC_POWER_TABLE:
- return "Radio power table";
- case CSR_PSKEY_LC_PEER_POWER_PERIOD:
- return "Peer transmit power control interval";
- case CSR_PSKEY_LC_FC_POOLS_LOW_WATER_MARK:
- return "Flow control pool low water mark";
- case CSR_PSKEY_LC_DEFAULT_TX_POWER:
- return "Default transmit power";
- case CSR_PSKEY_LC_RSSI_GOLDEN_RANGE:
- return "RSSI at bottom of golden receive range";
- case CSR_PSKEY_LC_COMBO_DISABLE_PIO_MASK:
- return "Combo: PIO lines and logic to disable transmit";
- case CSR_PSKEY_LC_COMBO_PRIORITY_PIO_MASK:
- return "Combo: priority activity PIO lines and logic";
- case CSR_PSKEY_LC_COMBO_DOT11_CHANNEL_PIO_BASE:
- return "Combo: 802.11b channel number base PIO line";
- case CSR_PSKEY_LC_COMBO_DOT11_BLOCK_CHANNELS:
- return "Combo: channels to block either side of 802.11b";
- case CSR_PSKEY_LC_MAX_TX_POWER_NO_RSSI:
- return "Maximum transmit power when peer has no RSSI";
- case CSR_PSKEY_LC_CONNECTION_RX_WINDOW:
- return "Receive window size during connections";
- case CSR_PSKEY_LC_COMBO_DOT11_TX_PROTECTION_MODE:
- return "Combo: which TX packets shall we protect";
- case CSR_PSKEY_LC_ENHANCED_POWER_TABLE:
- return "Radio power table";
- case CSR_PSKEY_LC_WIDEBAND_RSSI_CONFIG:
- return "RSSI configuration for use with wideband RSSI";
- case CSR_PSKEY_LC_COMBO_DOT11_PRIORITY_LEAD:
- return "Combo: How much notice will we give the Combo Card";
- case CSR_PSKEY_BT_CLOCK_INIT:
- return "Initial value of Bluetooth clock";
- case CSR_PSKEY_TX_MR_MOD_DELAY:
- return "TX Mod delay";
- case CSR_PSKEY_RX_MR_SYNC_TIMING:
- return "RX MR Sync Timing";
- case CSR_PSKEY_RX_MR_SYNC_CONFIG:
- return "RX MR Sync Configuration";
- case CSR_PSKEY_LC_LOST_SYNC_SLOTS:
- return "Time in ms for lost sync in low power modes";
- case CSR_PSKEY_RX_MR_SAMP_CONFIG:
- return "RX MR Sync Configuration";
- case CSR_PSKEY_AGC_HYST_LEVELS:
- return "AGC hysteresis levels";
- case CSR_PSKEY_RX_LEVEL_LOW_SIGNAL:
- return "ANA_RX_LVL at low signal strengths";
- case CSR_PSKEY_AGC_IQ_LVL_VALUES:
- return "ANA_IQ_LVL values for AGC algorithmn";
- case CSR_PSKEY_MR_FTRIM_OFFSET_12DB:
- return "ANA_RX_FTRIM offset when using 12 dB IF atten ";
- case CSR_PSKEY_MR_FTRIM_OFFSET_6DB:
- return "ANA_RX_FTRIM offset when using 6 dB IF atten ";
- case CSR_PSKEY_NO_CAL_ON_BOOT:
- return "Do not calibrate radio on boot";
- case CSR_PSKEY_RSSI_HI_TARGET:
- return "RSSI high target";
- case CSR_PSKEY_PREFERRED_MIN_ATTENUATION:
- return "Preferred minimum attenuator setting";
- case CSR_PSKEY_LC_COMBO_DOT11_PRIORITY_OVERRIDE:
- return "Combo: Treat all packets as high priority";
- case CSR_PSKEY_LC_MULTISLOT_HOLDOFF:
- return "Time till single slot packets are used for resync";
- case CSR_PSKEY_FREE_KEY_PIGEON_HOLE:
- return "Link key store bitfield";
- case CSR_PSKEY_LINK_KEY_BD_ADDR0:
- return "Bluetooth address + link key 0";
- case CSR_PSKEY_LINK_KEY_BD_ADDR1:
- return "Bluetooth address + link key 1";
- case CSR_PSKEY_LINK_KEY_BD_ADDR2:
- return "Bluetooth address + link key 2";
- case CSR_PSKEY_LINK_KEY_BD_ADDR3:
- return "Bluetooth address + link key 3";
- case CSR_PSKEY_LINK_KEY_BD_ADDR4:
- return "Bluetooth address + link key 4";
- case CSR_PSKEY_LINK_KEY_BD_ADDR5:
- return "Bluetooth address + link key 5";
- case CSR_PSKEY_LINK_KEY_BD_ADDR6:
- return "Bluetooth address + link key 6";
- case CSR_PSKEY_LINK_KEY_BD_ADDR7:
- return "Bluetooth address + link key 7";
- case CSR_PSKEY_LINK_KEY_BD_ADDR8:
- return "Bluetooth address + link key 8";
- case CSR_PSKEY_LINK_KEY_BD_ADDR9:
- return "Bluetooth address + link key 9";
- case CSR_PSKEY_LINK_KEY_BD_ADDR10:
- return "Bluetooth address + link key 10";
- case CSR_PSKEY_LINK_KEY_BD_ADDR11:
- return "Bluetooth address + link key 11";
- case CSR_PSKEY_LINK_KEY_BD_ADDR12:
- return "Bluetooth address + link key 12";
- case CSR_PSKEY_LINK_KEY_BD_ADDR13:
- return "Bluetooth address + link key 13";
- case CSR_PSKEY_LINK_KEY_BD_ADDR14:
- return "Bluetooth address + link key 14";
- case CSR_PSKEY_LINK_KEY_BD_ADDR15:
- return "Bluetooth address + link key 15";
- case CSR_PSKEY_ENC_KEY_LMIN:
- return "Minimum encryption key length";
- case CSR_PSKEY_ENC_KEY_LMAX:
- return "Maximum encryption key length";
- case CSR_PSKEY_LOCAL_SUPPORTED_FEATURES:
- return "Local supported features block";
- case CSR_PSKEY_LM_USE_UNIT_KEY:
- return "Allow use of unit key for authentication?";
- case CSR_PSKEY_HCI_NOP_DISABLE:
- return "Disable the HCI Command_Status event on boot";
- case CSR_PSKEY_LM_MAX_EVENT_FILTERS:
- return "Maximum number of event filters";
- case CSR_PSKEY_LM_USE_ENC_MODE_BROADCAST:
- return "Allow LM to use enc_mode=2";
- case CSR_PSKEY_LM_TEST_SEND_ACCEPTED_TWICE:
- return "LM sends two LMP_accepted messages in test mode";
- case CSR_PSKEY_LM_MAX_PAGE_HOLD_TIME:
- return "Maximum time we hold a device around page";
- case CSR_PSKEY_AFH_ADAPTATION_RESPONSE_TIME:
- return "LM period for AFH adaption";
- case CSR_PSKEY_AFH_OPTIONS:
- return "Options to configure AFH";
- case CSR_PSKEY_AFH_RSSI_RUN_PERIOD:
- return "AFH RSSI reading period";
- case CSR_PSKEY_AFH_REENABLE_CHANNEL_TIME:
- return "AFH good channel adding time";
- case CSR_PSKEY_NO_DROP_ON_ACR_MS_FAIL:
- return "Complete link if acr barge-in role switch refused";
- case CSR_PSKEY_MAX_PRIVATE_KEYS:
- return "Max private link keys stored";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR0:
- return "Bluetooth address + link key 0";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR1:
- return "Bluetooth address + link key 1";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR2:
- return "Bluetooth address + link key 2";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR3:
- return "Bluetooth address + link key 3";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR4:
- return "Bluetooth address + link key 4";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR5:
- return "Bluetooth address + link key 5";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR6:
- return "Bluetooth address + link key 6";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR7:
- return "Bluetooth address + link key 7";
- case CSR_PSKEY_LOCAL_SUPPORTED_COMMANDS:
- return "Local supported commands";
- case CSR_PSKEY_LM_MAX_ABSENCE_INDEX:
- return "Maximum absence index allowed";
- case CSR_PSKEY_DEVICE_NAME:
- return "Local device's \"user friendly\" name";
- case CSR_PSKEY_AFH_RSSI_THRESHOLD:
- return "AFH RSSI threshold";
- case CSR_PSKEY_LM_CASUAL_SCAN_INTERVAL:
- return "Scan interval in slots for casual scanning";
- case CSR_PSKEY_AFH_MIN_MAP_CHANGE:
- return "The minimum amount to change an AFH map by";
- case CSR_PSKEY_AFH_RSSI_LP_RUN_PERIOD:
- return "AFH RSSI reading period when in low power mode";
- case CSR_PSKEY_HCI_LMP_LOCAL_VERSION:
- return "The HCI and LMP version reported locally";
- case CSR_PSKEY_LMP_REMOTE_VERSION:
- return "The LMP version reported remotely";
- case CSR_PSKEY_HOLD_ERROR_MESSAGE_NUMBER:
- return "Maximum number of queued HCI Hardware Error Events";
- case CSR_PSKEY_DFU_ATTRIBUTES:
- return "DFU attributes";
- case CSR_PSKEY_DFU_DETACH_TO:
- return "DFU detach timeout";
- case CSR_PSKEY_DFU_TRANSFER_SIZE:
- return "DFU transfer size";
- case CSR_PSKEY_DFU_ENABLE:
- return "DFU enable";
- case CSR_PSKEY_DFU_LIN_REG_ENABLE:
- return "Linear Regulator enabled at boot in DFU mode";
- case CSR_PSKEY_DFUENC_VMAPP_PK_MODULUS_MSB:
- return "DFU encryption VM application public key MSB";
- case CSR_PSKEY_DFUENC_VMAPP_PK_MODULUS_LSB:
- return "DFU encryption VM application public key LSB";
- case CSR_PSKEY_DFUENC_VMAPP_PK_M_DASH:
- return "DFU encryption VM application M dash";
- case CSR_PSKEY_DFUENC_VMAPP_PK_R2N_MSB:
- return "DFU encryption VM application public key R2N MSB";
- case CSR_PSKEY_DFUENC_VMAPP_PK_R2N_LSB:
- return "DFU encryption VM application public key R2N LSB";
- case CSR_PSKEY_BCSP_LM_PS_BLOCK:
- return "BCSP link establishment block";
- case CSR_PSKEY_HOSTIO_FC_PS_BLOCK:
- return "HCI flow control block";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO0:
- return "Host transport channel 0 settings (BCSP ACK)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO1:
- return "Host transport channel 1 settings (BCSP-LE)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO2:
- return "Host transport channel 2 settings (BCCMD)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO3:
- return "Host transport channel 3 settings (HQ)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO4:
- return "Host transport channel 4 settings (DM)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO5:
- return "Host transport channel 5 settings (HCI CMD/EVT)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO6:
- return "Host transport channel 6 settings (HCI ACL)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO7:
- return "Host transport channel 7 settings (HCI SCO)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO8:
- return "Host transport channel 8 settings (L2CAP)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO9:
- return "Host transport channel 9 settings (RFCOMM)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO10:
- return "Host transport channel 10 settings (SDP)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO11:
- return "Host transport channel 11 settings (TEST)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO12:
- return "Host transport channel 12 settings (DFU)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO13:
- return "Host transport channel 13 settings (VM)";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO14:
- return "Host transport channel 14 settings";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO15:
- return "Host transport channel 15 settings";
- case CSR_PSKEY_HOSTIO_UART_RESET_TIMEOUT:
- return "UART reset counter timeout";
- case CSR_PSKEY_HOSTIO_USE_HCI_EXTN:
- return "Use hci_extn to route non-hci channels";
- case CSR_PSKEY_HOSTIO_USE_HCI_EXTN_CCFC:
- return "Use command-complete flow control for hci_extn";
- case CSR_PSKEY_HOSTIO_HCI_EXTN_PAYLOAD_SIZE:
- return "Maximum hci_extn payload size";
- case CSR_PSKEY_BCSP_LM_CNF_CNT_LIMIT:
- return "BCSP link establishment conf message count";
- case CSR_PSKEY_HOSTIO_MAP_SCO_PCM:
- return "Map SCO over PCM";
- case CSR_PSKEY_HOSTIO_AWKWARD_PCM_SYNC:
- return "PCM interface synchronisation is difficult";
- case CSR_PSKEY_HOSTIO_BREAK_POLL_PERIOD:
- return "Break poll period (microseconds)";
- case CSR_PSKEY_HOSTIO_MIN_UART_HCI_SCO_SIZE:
- return "Minimum SCO packet size sent to host over UART HCI";
- case CSR_PSKEY_HOSTIO_MAP_SCO_CODEC:
- return "Map SCO over the built-in codec";
- case CSR_PSKEY_PCM_CVSD_TX_HI_FREQ_BOOST:
- return "High frequency boost for PCM when transmitting CVSD";
- case CSR_PSKEY_PCM_CVSD_RX_HI_FREQ_BOOST:
- return "High frequency boost for PCM when receiving CVSD";
- case CSR_PSKEY_PCM_CONFIG32:
- return "PCM interface settings bitfields";
- case CSR_PSKEY_USE_OLD_BCSP_LE:
- return "Use the old version of BCSP link establishment";
- case CSR_PSKEY_PCM_CVSD_USE_NEW_FILTER:
- return "CVSD uses the new filter if available";
- case CSR_PSKEY_PCM_FORMAT:
- return "PCM data format";
- case CSR_PSKEY_CODEC_OUT_GAIN:
- return "Audio output gain when using built-in codec";
- case CSR_PSKEY_CODEC_IN_GAIN:
- return "Audio input gain when using built-in codec";
- case CSR_PSKEY_CODEC_PIO:
- return "PIO to enable when built-in codec is enabled";
- case CSR_PSKEY_PCM_LOW_JITTER_CONFIG:
- return "PCM interface settings for low jitter master mode";
- case CSR_PSKEY_HOSTIO_SCO_PCM_THRESHOLDS:
- return "Thresholds for SCO PCM buffers";
- case CSR_PSKEY_HOSTIO_SCO_HCI_THRESHOLDS:
- return "Thresholds for SCO HCI buffers";
- case CSR_PSKEY_HOSTIO_MAP_SCO_PCM_SLOT:
- return "Route SCO data to specified slot in pcm frame";
- case CSR_PSKEY_UART_BAUDRATE:
- return "UART Baud rate";
- case CSR_PSKEY_UART_CONFIG_BCSP:
- return "UART configuration when using BCSP";
- case CSR_PSKEY_UART_CONFIG_H4:
- return "UART configuration when using H4";
- case CSR_PSKEY_UART_CONFIG_H5:
- return "UART configuration when using H5";
- case CSR_PSKEY_UART_CONFIG_USR:
- return "UART configuration when under VM control";
- case CSR_PSKEY_UART_TX_CRCS:
- return "Use CRCs for BCSP or H5";
- case CSR_PSKEY_UART_ACK_TIMEOUT:
- return "Acknowledgement timeout for BCSP and H5";
- case CSR_PSKEY_UART_TX_MAX_ATTEMPTS:
- return "Max times to send reliable BCSP or H5 message";
- case CSR_PSKEY_UART_TX_WINDOW_SIZE:
- return "Transmit window size for BCSP and H5";
- case CSR_PSKEY_UART_HOST_WAKE:
- return "UART host wakeup";
- case CSR_PSKEY_HOSTIO_THROTTLE_TIMEOUT:
- return "Host interface performance control.";
- case CSR_PSKEY_PCM_ALWAYS_ENABLE:
- return "PCM port is always enable when chip is running";
- case CSR_PSKEY_UART_HOST_WAKE_SIGNAL:
- return "Signal to use for uart host wakeup protocol";
- case CSR_PSKEY_UART_CONFIG_H4DS:
- return "UART configuration when using H4DS";
- case CSR_PSKEY_H4DS_WAKE_DURATION:
- return "How long to spend waking the host when using H4DS";
- case CSR_PSKEY_H4DS_MAXWU:
- return "Maximum number of H4DS Wake-Up messages to send";
- case CSR_PSKEY_H4DS_LE_TIMER_PERIOD:
- return "H4DS Link Establishment Tsync and Tconf period";
- case CSR_PSKEY_H4DS_TWU_TIMER_PERIOD:
- return "H4DS Twu timer period";
- case CSR_PSKEY_H4DS_UART_IDLE_TIMER_PERIOD:
- return "H4DS Tuart_idle timer period";
- case CSR_PSKEY_ANA_FTRIM:
- return "Crystal frequency trim";
- case CSR_PSKEY_WD_TIMEOUT:
- return "Watchdog timeout (microseconds)";
- case CSR_PSKEY_WD_PERIOD:
- return "Watchdog period (microseconds)";
- case CSR_PSKEY_HOST_INTERFACE:
- return "Host interface";
- case CSR_PSKEY_HQ_HOST_TIMEOUT:
- return "HQ host command timeout";
- case CSR_PSKEY_HQ_ACTIVE:
- return "Enable host query task?";
- case CSR_PSKEY_BCCMD_SECURITY_ACTIVE:
- return "Enable configuration security";
- case CSR_PSKEY_ANA_FREQ:
- return "Crystal frequency";
- case CSR_PSKEY_PIO_PROTECT_MASK:
- return "Access to PIO pins";
- case CSR_PSKEY_PMALLOC_SIZES:
- return "pmalloc sizes array";
- case CSR_PSKEY_UART_BAUD_RATE:
- return "UART Baud rate (pre 18)";
- case CSR_PSKEY_UART_CONFIG:
- return "UART configuration bitfield";
- case CSR_PSKEY_STUB:
- return "Stub";
- case CSR_PSKEY_TXRX_PIO_CONTROL:
- return "TX and RX PIO control";
- case CSR_PSKEY_ANA_RX_LEVEL:
- return "ANA_RX_LVL register initial value";
- case CSR_PSKEY_ANA_RX_FTRIM:
- return "ANA_RX_FTRIM register initial value";
- case CSR_PSKEY_PSBC_DATA_VERSION:
- return "Persistent store version";
- case CSR_PSKEY_PCM0_ATTENUATION:
- return "Volume control on PCM channel 0";
- case CSR_PSKEY_LO_LVL_MAX:
- return "Maximum value of LO level control register";
- case CSR_PSKEY_LO_ADC_AMPL_MIN:
- return "Minimum value of the LO amplitude measured on the ADC";
- case CSR_PSKEY_LO_ADC_AMPL_MAX:
- return "Maximum value of the LO amplitude measured on the ADC";
- case CSR_PSKEY_IQ_TRIM_CHANNEL:
- return "IQ calibration channel";
- case CSR_PSKEY_IQ_TRIM_GAIN:
- return "IQ calibration gain";
- case CSR_PSKEY_IQ_TRIM_ENABLE:
- return "IQ calibration enable";
- case CSR_PSKEY_TX_OFFSET_HALF_MHZ:
- return "Transmit offset";
- case CSR_PSKEY_GBL_MISC_ENABLES:
- return "Global miscellaneous hardware enables";
- case CSR_PSKEY_UART_SLEEP_TIMEOUT:
- return "Time in ms to deep sleep if nothing received";
- case CSR_PSKEY_DEEP_SLEEP_STATE:
- return "Deep sleep state usage";
- case CSR_PSKEY_IQ_ENABLE_PHASE_TRIM:
- return "IQ phase enable";
- case CSR_PSKEY_HCI_HANDLE_FREEZE_PERIOD:
- return "Time for which HCI handle is frozen after link removal";
- case CSR_PSKEY_MAX_FROZEN_HCI_HANDLES:
- return "Maximum number of frozen HCI handles";
- case CSR_PSKEY_PAGETABLE_DESTRUCTION_DELAY:
- return "Delay from freezing buf handle to deleting page table";
- case CSR_PSKEY_IQ_TRIM_PIO_SETTINGS:
- return "IQ PIO settings";
- case CSR_PSKEY_USE_EXTERNAL_CLOCK:
- return "Device uses an external clock";
- case CSR_PSKEY_DEEP_SLEEP_WAKE_CTS:
- return "Exit deep sleep on CTS line activity";
- case CSR_PSKEY_FC_HC2H_FLUSH_DELAY:
- return "Delay from disconnect to flushing HC->H FC tokens";
- case CSR_PSKEY_RX_HIGHSIDE:
- return "Disable the HIGHSIDE bit in ANA_CONFIG";
- case CSR_PSKEY_TX_PRE_LVL:
- return "TX pre-amplifier level";
- case CSR_PSKEY_RX_SINGLE_ENDED:
- return "RX single ended";
- case CSR_PSKEY_TX_FILTER_CONFIG:
- return "TX filter configuration";
- case CSR_PSKEY_CLOCK_REQUEST_ENABLE:
- return "External clock request enable";
- case CSR_PSKEY_RX_MIN_ATTEN:
- return "Minimum attenuation allowed for receiver";
- case CSR_PSKEY_XTAL_TARGET_AMPLITUDE:
- return "Crystal target amplitude";
- case CSR_PSKEY_PCM_MIN_CPU_CLOCK:
- return "Minimum CPU clock speed with PCM port running";
- case CSR_PSKEY_HOST_INTERFACE_PIO_USB:
- return "USB host interface selection PIO line";
- case CSR_PSKEY_CPU_IDLE_MODE:
- return "CPU idle mode when radio is active";
- case CSR_PSKEY_DEEP_SLEEP_CLEAR_RTS:
- return "Deep sleep clears the UART RTS line";
- case CSR_PSKEY_RF_RESONANCE_TRIM:
- return "Frequency trim for IQ and LNA resonant circuits";
- case CSR_PSKEY_DEEP_SLEEP_PIO_WAKE:
- return "PIO line to wake the chip from deep sleep";
- case CSR_PSKEY_DRAIN_BORE_TIMERS:
- return "Energy consumption measurement settings";
- case CSR_PSKEY_DRAIN_TX_POWER_BASE:
- return "Energy consumption measurement settings";
- case CSR_PSKEY_MODULE_ID:
- return "Module serial number";
- case CSR_PSKEY_MODULE_DESIGN:
- return "Module design ID";
- case CSR_PSKEY_MODULE_SECURITY_CODE:
- return "Module security code";
- case CSR_PSKEY_VM_DISABLE:
- return "VM disable";
- case CSR_PSKEY_MOD_MANUF0:
- return "Module manufactuer data 0";
- case CSR_PSKEY_MOD_MANUF1:
- return "Module manufactuer data 1";
- case CSR_PSKEY_MOD_MANUF2:
- return "Module manufactuer data 2";
- case CSR_PSKEY_MOD_MANUF3:
- return "Module manufactuer data 3";
- case CSR_PSKEY_MOD_MANUF4:
- return "Module manufactuer data 4";
- case CSR_PSKEY_MOD_MANUF5:
- return "Module manufactuer data 5";
- case CSR_PSKEY_MOD_MANUF6:
- return "Module manufactuer data 6";
- case CSR_PSKEY_MOD_MANUF7:
- return "Module manufactuer data 7";
- case CSR_PSKEY_MOD_MANUF8:
- return "Module manufactuer data 8";
- case CSR_PSKEY_MOD_MANUF9:
- return "Module manufactuer data 9";
- case CSR_PSKEY_DUT_VM_DISABLE:
- return "VM disable when entering radiotest modes";
- case CSR_PSKEY_USR0:
- return "User configuration data 0";
- case CSR_PSKEY_USR1:
- return "User configuration data 1";
- case CSR_PSKEY_USR2:
- return "User configuration data 2";
- case CSR_PSKEY_USR3:
- return "User configuration data 3";
- case CSR_PSKEY_USR4:
- return "User configuration data 4";
- case CSR_PSKEY_USR5:
- return "User configuration data 5";
- case CSR_PSKEY_USR6:
- return "User configuration data 6";
- case CSR_PSKEY_USR7:
- return "User configuration data 7";
- case CSR_PSKEY_USR8:
- return "User configuration data 8";
- case CSR_PSKEY_USR9:
- return "User configuration data 9";
- case CSR_PSKEY_USR10:
- return "User configuration data 10";
- case CSR_PSKEY_USR11:
- return "User configuration data 11";
- case CSR_PSKEY_USR12:
- return "User configuration data 12";
- case CSR_PSKEY_USR13:
- return "User configuration data 13";
- case CSR_PSKEY_USR14:
- return "User configuration data 14";
- case CSR_PSKEY_USR15:
- return "User configuration data 15";
- case CSR_PSKEY_USR16:
- return "User configuration data 16";
- case CSR_PSKEY_USR17:
- return "User configuration data 17";
- case CSR_PSKEY_USR18:
- return "User configuration data 18";
- case CSR_PSKEY_USR19:
- return "User configuration data 19";
- case CSR_PSKEY_USR20:
- return "User configuration data 20";
- case CSR_PSKEY_USR21:
- return "User configuration data 21";
- case CSR_PSKEY_USR22:
- return "User configuration data 22";
- case CSR_PSKEY_USR23:
- return "User configuration data 23";
- case CSR_PSKEY_USR24:
- return "User configuration data 24";
- case CSR_PSKEY_USR25:
- return "User configuration data 25";
- case CSR_PSKEY_USR26:
- return "User configuration data 26";
- case CSR_PSKEY_USR27:
- return "User configuration data 27";
- case CSR_PSKEY_USR28:
- return "User configuration data 28";
- case CSR_PSKEY_USR29:
- return "User configuration data 29";
- case CSR_PSKEY_USR30:
- return "User configuration data 30";
- case CSR_PSKEY_USR31:
- return "User configuration data 31";
- case CSR_PSKEY_USR32:
- return "User configuration data 32";
- case CSR_PSKEY_USR33:
- return "User configuration data 33";
- case CSR_PSKEY_USR34:
- return "User configuration data 34";
- case CSR_PSKEY_USR35:
- return "User configuration data 35";
- case CSR_PSKEY_USR36:
- return "User configuration data 36";
- case CSR_PSKEY_USR37:
- return "User configuration data 37";
- case CSR_PSKEY_USR38:
- return "User configuration data 38";
- case CSR_PSKEY_USR39:
- return "User configuration data 39";
- case CSR_PSKEY_USR40:
- return "User configuration data 40";
- case CSR_PSKEY_USR41:
- return "User configuration data 41";
- case CSR_PSKEY_USR42:
- return "User configuration data 42";
- case CSR_PSKEY_USR43:
- return "User configuration data 43";
- case CSR_PSKEY_USR44:
- return "User configuration data 44";
- case CSR_PSKEY_USR45:
- return "User configuration data 45";
- case CSR_PSKEY_USR46:
- return "User configuration data 46";
- case CSR_PSKEY_USR47:
- return "User configuration data 47";
- case CSR_PSKEY_USR48:
- return "User configuration data 48";
- case CSR_PSKEY_USR49:
- return "User configuration data 49";
- case CSR_PSKEY_USB_VERSION:
- return "USB specification version number";
- case CSR_PSKEY_USB_DEVICE_CLASS_CODES:
- return "USB device class codes";
- case CSR_PSKEY_USB_VENDOR_ID:
- return "USB vendor identifier";
- case CSR_PSKEY_USB_PRODUCT_ID:
- return "USB product identifier";
- case CSR_PSKEY_USB_MANUF_STRING:
- return "USB manufacturer string";
- case CSR_PSKEY_USB_PRODUCT_STRING:
- return "USB product string";
- case CSR_PSKEY_USB_SERIAL_NUMBER_STRING:
- return "USB serial number string";
- case CSR_PSKEY_USB_CONFIG_STRING:
- return "USB configuration string";
- case CSR_PSKEY_USB_ATTRIBUTES:
- return "USB attributes bitmap";
- case CSR_PSKEY_USB_MAX_POWER:
- return "USB device maximum power consumption";
- case CSR_PSKEY_USB_BT_IF_CLASS_CODES:
- return "USB Bluetooth interface class codes";
- case CSR_PSKEY_USB_LANGID:
- return "USB language strings supported";
- case CSR_PSKEY_USB_DFU_CLASS_CODES:
- return "USB DFU class codes block";
- case CSR_PSKEY_USB_DFU_PRODUCT_ID:
- return "USB DFU product ID";
- case CSR_PSKEY_USB_PIO_DETACH:
- return "USB detach/attach PIO line";
- case CSR_PSKEY_USB_PIO_WAKEUP:
- return "USB wakeup PIO line";
- case CSR_PSKEY_USB_PIO_PULLUP:
- return "USB D+ pullup PIO line";
- case CSR_PSKEY_USB_PIO_VBUS:
- return "USB VBus detection PIO Line";
- case CSR_PSKEY_USB_PIO_WAKE_TIMEOUT:
- return "Timeout for assertion of USB PIO wake signal";
- case CSR_PSKEY_USB_PIO_RESUME:
- return "PIO signal used in place of bus resume";
- case CSR_PSKEY_USB_BT_SCO_IF_CLASS_CODES:
- return "USB Bluetooth SCO interface class codes";
- case CSR_PSKEY_USB_SUSPEND_PIO_LEVEL:
- return "USB PIO levels to set when suspended";
- case CSR_PSKEY_USB_SUSPEND_PIO_DIR:
- return "USB PIO I/O directions to set when suspended";
- case CSR_PSKEY_USB_SUSPEND_PIO_MASK:
- return "USB PIO lines to be set forcibly in suspend";
- case CSR_PSKEY_USB_ENDPOINT_0_MAX_PACKET_SIZE:
- return "The maxmimum packet size for USB endpoint 0";
- case CSR_PSKEY_USB_CONFIG:
- return "USB config params for new chips (>bc2)";
- case CSR_PSKEY_RADIOTEST_ATTEN_INIT:
- return "Radio test initial attenuator";
- case CSR_PSKEY_RADIOTEST_FIRST_TRIM_TIME:
- return "IQ first calibration period in test";
- case CSR_PSKEY_RADIOTEST_SUBSEQUENT_TRIM_TIME:
- return "IQ subsequent calibration period in test";
- case CSR_PSKEY_RADIOTEST_LO_LVL_TRIM_ENABLE:
- return "LO_LVL calibration enable";
- case CSR_PSKEY_RADIOTEST_DISABLE_MODULATION:
- return "Disable modulation during radiotest transmissions";
- case CSR_PSKEY_RFCOMM_FCON_THRESHOLD:
- return "RFCOMM aggregate flow control on threshold";
- case CSR_PSKEY_RFCOMM_FCOFF_THRESHOLD:
- return "RFCOMM aggregate flow control off threshold";
- case CSR_PSKEY_IPV6_STATIC_ADDR:
- return "Static IPv6 address";
- case CSR_PSKEY_IPV4_STATIC_ADDR:
- return "Static IPv4 address";
- case CSR_PSKEY_IPV6_STATIC_PREFIX_LEN:
- return "Static IPv6 prefix length";
- case CSR_PSKEY_IPV6_STATIC_ROUTER_ADDR:
- return "Static IPv6 router address";
- case CSR_PSKEY_IPV4_STATIC_SUBNET_MASK:
- return "Static IPv4 subnet mask";
- case CSR_PSKEY_IPV4_STATIC_ROUTER_ADDR:
- return "Static IPv4 router address";
- case CSR_PSKEY_MDNS_NAME:
- return "Multicast DNS name";
- case CSR_PSKEY_FIXED_PIN:
- return "Fixed PIN";
- case CSR_PSKEY_MDNS_PORT:
- return "Multicast DNS port";
- case CSR_PSKEY_MDNS_TTL:
- return "Multicast DNS TTL";
- case CSR_PSKEY_MDNS_IPV4_ADDR:
- return "Multicast DNS IPv4 address";
- case CSR_PSKEY_ARP_CACHE_TIMEOUT:
- return "ARP cache timeout";
- case CSR_PSKEY_HFP_POWER_TABLE:
- return "HFP power table";
- case CSR_PSKEY_DRAIN_BORE_TIMER_COUNTERS:
- return "Energy consumption estimation timer counters";
- case CSR_PSKEY_DRAIN_BORE_COUNTERS:
- return "Energy consumption estimation counters";
- case CSR_PSKEY_LOOP_FILTER_TRIM:
- return "Trim value to optimise loop filter";
- case CSR_PSKEY_DRAIN_BORE_CURRENT_PEAK:
- return "Energy consumption estimation current peak";
- case CSR_PSKEY_VM_E2_CACHE_LIMIT:
- return "Maximum RAM for caching EEPROM VM application";
- case CSR_PSKEY_FORCE_16MHZ_REF_PIO:
- return "PIO line to force 16 MHz reference to be assumed";
- case CSR_PSKEY_CDMA_LO_REF_LIMITS:
- return "Local oscillator frequency reference limits for CDMA";
- case CSR_PSKEY_CDMA_LO_ERROR_LIMITS:
- return "Local oscillator frequency error limits for CDMA";
- case CSR_PSKEY_CLOCK_STARTUP_DELAY:
- return "Clock startup delay in milliseconds";
- case CSR_PSKEY_DEEP_SLEEP_CORRECTION_FACTOR:
- return "Deep sleep clock correction factor";
- case CSR_PSKEY_TEMPERATURE_CALIBRATION:
- return "Temperature in deg C for a given internal setting";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_INTERNAL_PA:
- return "Temperature for given internal PA adjustment";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_PRE_LVL:
- return "Temperature for a given TX_PRE_LVL adjustment";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB:
- return "Temperature for a given TX_BB adjustment";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_ANA_FTRIM:
- return "Temperature for given crystal trim adjustment";
- case CSR_PSKEY_TEST_DELTA_OFFSET:
- return "Frequency offset applied to synthesiser in test mode";
- case CSR_PSKEY_RX_DYNAMIC_LVL_OFFSET:
- return "Receiver dynamic level offset depending on channel";
- case CSR_PSKEY_TEST_FORCE_OFFSET:
- return "Force use of exact value in PSKEY_TEST_DELTA_OFFSET";
- case CSR_PSKEY_RF_TRAP_BAD_DIVISION_RATIOS:
- return "Trap bad division ratios in radio frequency tables";
- case CSR_PSKEY_RADIOTEST_CDMA_LO_REF_LIMITS:
- return "LO frequency reference limits for CDMA in radiotest";
- case CSR_PSKEY_INITIAL_BOOTMODE:
- return "Initial device bootmode";
- case CSR_PSKEY_ONCHIP_HCI_CLIENT:
- return "HCI traffic routed internally";
- case CSR_PSKEY_RX_ATTEN_BACKOFF:
- return "Receiver attenuation back-off";
- case CSR_PSKEY_RX_ATTEN_UPDATE_RATE:
- return "Receiver attenuation update rate";
- case CSR_PSKEY_SYNTH_TXRX_THRESHOLDS:
- return "Local oscillator tuning voltage limits for tx and rx";
- case CSR_PSKEY_MIN_WAIT_STATES:
- return "Flash wait state indicator";
- case CSR_PSKEY_RSSI_CORRECTION:
- return "RSSI correction factor.";
- case CSR_PSKEY_SCHED_THROTTLE_TIMEOUT:
- return "Scheduler performance control.";
- case CSR_PSKEY_DEEP_SLEEP_USE_EXTERNAL_CLOCK:
- return "Deep sleep uses external 32 kHz clock source";
- case CSR_PSKEY_TRIM_RADIO_FILTERS:
- return "Trim rx and tx radio filters if true.";
- case CSR_PSKEY_TRANSMIT_OFFSET:
- return "Transmit offset in units of 62.5 kHz";
- case CSR_PSKEY_USB_VM_CONTROL:
- return "VM application will supply USB descriptors";
- case CSR_PSKEY_MR_ANA_RX_FTRIM:
- return "Medium rate value for the ANA_RX_FTRIM register";
- case CSR_PSKEY_I2C_CONFIG:
- return "I2C configuration";
- case CSR_PSKEY_IQ_LVL_RX:
- return "IQ demand level for reception";
- case CSR_PSKEY_MR_TX_FILTER_CONFIG:
- return "TX filter configuration used for enhanced data rate";
- case CSR_PSKEY_MR_TX_CONFIG2:
- return "TX filter configuration used for enhanced data rate";
- case CSR_PSKEY_USB_DONT_RESET_BOOTMODE_ON_HOST_RESET:
- return "Don't reset bootmode if USB host resets";
- case CSR_PSKEY_LC_USE_THROTTLING:
- return "Adjust packet selection on packet error rate";
- case CSR_PSKEY_CHARGER_TRIM:
- return "Trim value for the current charger";
- case CSR_PSKEY_CLOCK_REQUEST_FEATURES:
- return "Clock request is tristated if enabled";
- case CSR_PSKEY_TRANSMIT_OFFSET_CLASS1:
- return "Transmit offset / 62.5 kHz for class 1 radios";
- case CSR_PSKEY_TX_AVOID_PA_CLASS1_PIO:
- return "PIO line asserted in class1 operation to avoid PA";
- case CSR_PSKEY_MR_PIO_CONFIG:
- return "PIO line asserted in class1 operation to avoid PA";
- case CSR_PSKEY_UART_CONFIG2:
- return "The UART Sampling point";
- case CSR_PSKEY_CLASS1_IQ_LVL:
- return "IQ demand level for class 1 power level";
- case CSR_PSKEY_CLASS1_TX_CONFIG2:
- return "TX filter configuration used for class 1 tx power";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_INTERNAL_PA_CLASS1:
- return "Temperature for given internal PA adjustment";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_EXTERNAL_PA_CLASS1:
- return "Temperature for given internal PA adjustment";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_PRE_LVL_MR:
- return "Temperature adjustment for TX_PRE_LVL in EDR";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB_MR_HEADER:
- return "Temperature for a given TX_BB in EDR header";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB_MR_PAYLOAD:
- return "Temperature for a given TX_BB in EDR payload";
- case CSR_PSKEY_RX_MR_EQ_TAPS:
- return "Adjust receiver configuration for EDR";
- case CSR_PSKEY_TX_PRE_LVL_CLASS1:
- return "TX pre-amplifier level in class 1 operation";
- case CSR_PSKEY_ANALOGUE_ATTENUATOR:
- return "TX analogue attenuator setting";
- case CSR_PSKEY_MR_RX_FILTER_TRIM:
- return "Trim for receiver used in EDR.";
- case CSR_PSKEY_MR_RX_FILTER_RESPONSE:
- return "Filter response for receiver used in EDR.";
- case CSR_PSKEY_PIO_WAKEUP_STATE:
- return "PIO deep sleep wake up state ";
- case CSR_PSKEY_MR_TX_IF_ATTEN_OFF_TEMP:
- return "TX IF atten off temperature when using EDR.";
- case CSR_PSKEY_LO_DIV_LATCH_BYPASS:
- return "Bypass latch for LO dividers";
- case CSR_PSKEY_LO_VCO_STANDBY:
- return "Use standby mode for the LO VCO";
- case CSR_PSKEY_SLOW_CLOCK_FILTER_SHIFT:
- return "Slow clock sampling filter constant";
- case CSR_PSKEY_SLOW_CLOCK_FILTER_DIVIDER:
- return "Slow clock filter fractional threshold";
- case CSR_PSKEY_USB_ATTRIBUTES_POWER:
- return "USB self powered";
- case CSR_PSKEY_USB_ATTRIBUTES_WAKEUP:
- return "USB responds to wake-up";
- case CSR_PSKEY_DFU_ATTRIBUTES_MANIFESTATION_TOLERANT:
- return "DFU manifestation tolerant";
- case CSR_PSKEY_DFU_ATTRIBUTES_CAN_UPLOAD:
- return "DFU can upload";
- case CSR_PSKEY_DFU_ATTRIBUTES_CAN_DOWNLOAD:
- return "DFU can download";
- case CSR_PSKEY_UART_CONFIG_STOP_BITS:
- return "UART: stop bits";
- case CSR_PSKEY_UART_CONFIG_PARITY_BIT:
- return "UART: parity bit";
- case CSR_PSKEY_UART_CONFIG_FLOW_CTRL_EN:
- return "UART: hardware flow control";
- case CSR_PSKEY_UART_CONFIG_RTS_AUTO_EN:
- return "UART: RTS auto-enabled";
- case CSR_PSKEY_UART_CONFIG_RTS:
- return "UART: RTS asserted";
- case CSR_PSKEY_UART_CONFIG_TX_ZERO_EN:
- return "UART: TX zero enable";
- case CSR_PSKEY_UART_CONFIG_NON_BCSP_EN:
- return "UART: enable BCSP-specific hardware";
- case CSR_PSKEY_UART_CONFIG_RX_RATE_DELAY:
- return "UART: RX rate delay";
- case CSR_PSKEY_UART_SEQ_TIMEOUT:
- return "UART: BCSP ack timeout";
- case CSR_PSKEY_UART_SEQ_RETRIES:
- return "UART: retry limit in sequencing layer";
- case CSR_PSKEY_UART_SEQ_WINSIZE:
- return "UART: BCSP transmit window size";
- case CSR_PSKEY_UART_USE_CRC_ON_TX:
- return "UART: use BCSP CRCs";
- case CSR_PSKEY_UART_HOST_INITIAL_STATE:
- return "UART: initial host state";
- case CSR_PSKEY_UART_HOST_ATTENTION_SPAN:
- return "UART: host attention span";
- case CSR_PSKEY_UART_HOST_WAKEUP_TIME:
- return "UART: host wakeup time";
- case CSR_PSKEY_UART_HOST_WAKEUP_WAIT:
- return "UART: host wakeup wait";
- case CSR_PSKEY_BCSP_LM_MODE:
- return "BCSP link establishment mode";
- case CSR_PSKEY_BCSP_LM_SYNC_RETRIES:
- return "BCSP link establishment sync retries";
- case CSR_PSKEY_BCSP_LM_TSHY:
- return "BCSP link establishment Tshy";
- case CSR_PSKEY_UART_DFU_CONFIG_STOP_BITS:
- return "DFU mode UART: stop bits";
- case CSR_PSKEY_UART_DFU_CONFIG_PARITY_BIT:
- return "DFU mode UART: parity bit";
- case CSR_PSKEY_UART_DFU_CONFIG_FLOW_CTRL_EN:
- return "DFU mode UART: hardware flow control";
- case CSR_PSKEY_UART_DFU_CONFIG_RTS_AUTO_EN:
- return "DFU mode UART: RTS auto-enabled";
- case CSR_PSKEY_UART_DFU_CONFIG_RTS:
- return "DFU mode UART: RTS asserted";
- case CSR_PSKEY_UART_DFU_CONFIG_TX_ZERO_EN:
- return "DFU mode UART: TX zero enable";
- case CSR_PSKEY_UART_DFU_CONFIG_NON_BCSP_EN:
- return "DFU mode UART: enable BCSP-specific hardware";
- case CSR_PSKEY_UART_DFU_CONFIG_RX_RATE_DELAY:
- return "DFU mode UART: RX rate delay";
- case CSR_PSKEY_AMUX_AIO0:
- return "Multiplexer for AIO 0";
- case CSR_PSKEY_AMUX_AIO1:
- return "Multiplexer for AIO 1";
- case CSR_PSKEY_AMUX_AIO2:
- return "Multiplexer for AIO 2";
- case CSR_PSKEY_AMUX_AIO3:
- return "Multiplexer for AIO 3";
- case CSR_PSKEY_LOCAL_NAME_SIMPLIFIED:
- return "Local Name (simplified)";
- case CSR_PSKEY_EXTENDED_STUB:
- return "Extended stub";
- default:
- return "Unknown";
- }
-}
-
-char *csr_pskeytoval(uint16_t pskey)
-{
- switch (pskey) {
- case CSR_PSKEY_BDADDR:
- return "BDADDR";
- case CSR_PSKEY_COUNTRYCODE:
- return "COUNTRYCODE";
- case CSR_PSKEY_CLASSOFDEVICE:
- return "CLASSOFDEVICE";
- case CSR_PSKEY_DEVICE_DRIFT:
- return "DEVICE_DRIFT";
- case CSR_PSKEY_DEVICE_JITTER:
- return "DEVICE_JITTER";
- case CSR_PSKEY_MAX_ACLS:
- return "MAX_ACLS";
- case CSR_PSKEY_MAX_SCOS:
- return "MAX_SCOS";
- case CSR_PSKEY_MAX_REMOTE_MASTERS:
- return "MAX_REMOTE_MASTERS";
- case CSR_PSKEY_ENABLE_MASTERY_WITH_SLAVERY:
- return "ENABLE_MASTERY_WITH_SLAVERY";
- case CSR_PSKEY_H_HC_FC_MAX_ACL_PKT_LEN:
- return "H_HC_FC_MAX_ACL_PKT_LEN";
- case CSR_PSKEY_H_HC_FC_MAX_SCO_PKT_LEN:
- return "H_HC_FC_MAX_SCO_PKT_LEN";
- case CSR_PSKEY_H_HC_FC_MAX_ACL_PKTS:
- return "H_HC_FC_MAX_ACL_PKTS";
- case CSR_PSKEY_H_HC_FC_MAX_SCO_PKTS:
- return "H_HC_FC_MAX_SCO_PKTS";
- case CSR_PSKEY_LC_FC_BUFFER_LOW_WATER_MARK:
- return "LC_FC_BUFFER_LOW_WATER_MARK";
- case CSR_PSKEY_LC_MAX_TX_POWER:
- return "LC_MAX_TX_POWER";
- case CSR_PSKEY_TX_GAIN_RAMP:
- return "TX_GAIN_RAMP";
- case CSR_PSKEY_LC_POWER_TABLE:
- return "LC_POWER_TABLE";
- case CSR_PSKEY_LC_PEER_POWER_PERIOD:
- return "LC_PEER_POWER_PERIOD";
- case CSR_PSKEY_LC_FC_POOLS_LOW_WATER_MARK:
- return "LC_FC_POOLS_LOW_WATER_MARK";
- case CSR_PSKEY_LC_DEFAULT_TX_POWER:
- return "LC_DEFAULT_TX_POWER";
- case CSR_PSKEY_LC_RSSI_GOLDEN_RANGE:
- return "LC_RSSI_GOLDEN_RANGE";
- case CSR_PSKEY_LC_COMBO_DISABLE_PIO_MASK:
- return "LC_COMBO_DISABLE_PIO_MASK";
- case CSR_PSKEY_LC_COMBO_PRIORITY_PIO_MASK:
- return "LC_COMBO_PRIORITY_PIO_MASK";
- case CSR_PSKEY_LC_COMBO_DOT11_CHANNEL_PIO_BASE:
- return "LC_COMBO_DOT11_CHANNEL_PIO_BASE";
- case CSR_PSKEY_LC_COMBO_DOT11_BLOCK_CHANNELS:
- return "LC_COMBO_DOT11_BLOCK_CHANNELS";
- case CSR_PSKEY_LC_MAX_TX_POWER_NO_RSSI:
- return "LC_MAX_TX_POWER_NO_RSSI";
- case CSR_PSKEY_LC_CONNECTION_RX_WINDOW:
- return "LC_CONNECTION_RX_WINDOW";
- case CSR_PSKEY_LC_COMBO_DOT11_TX_PROTECTION_MODE:
- return "LC_COMBO_DOT11_TX_PROTECTION_MODE";
- case CSR_PSKEY_LC_ENHANCED_POWER_TABLE:
- return "LC_ENHANCED_POWER_TABLE";
- case CSR_PSKEY_LC_WIDEBAND_RSSI_CONFIG:
- return "LC_WIDEBAND_RSSI_CONFIG";
- case CSR_PSKEY_LC_COMBO_DOT11_PRIORITY_LEAD:
- return "LC_COMBO_DOT11_PRIORITY_LEAD";
- case CSR_PSKEY_BT_CLOCK_INIT:
- return "BT_CLOCK_INIT";
- case CSR_PSKEY_TX_MR_MOD_DELAY:
- return "TX_MR_MOD_DELAY";
- case CSR_PSKEY_RX_MR_SYNC_TIMING:
- return "RX_MR_SYNC_TIMING";
- case CSR_PSKEY_RX_MR_SYNC_CONFIG:
- return "RX_MR_SYNC_CONFIG";
- case CSR_PSKEY_LC_LOST_SYNC_SLOTS:
- return "LC_LOST_SYNC_SLOTS";
- case CSR_PSKEY_RX_MR_SAMP_CONFIG:
- return "RX_MR_SAMP_CONFIG";
- case CSR_PSKEY_AGC_HYST_LEVELS:
- return "AGC_HYST_LEVELS";
- case CSR_PSKEY_RX_LEVEL_LOW_SIGNAL:
- return "RX_LEVEL_LOW_SIGNAL";
- case CSR_PSKEY_AGC_IQ_LVL_VALUES:
- return "AGC_IQ_LVL_VALUES";
- case CSR_PSKEY_MR_FTRIM_OFFSET_12DB:
- return "MR_FTRIM_OFFSET_12DB";
- case CSR_PSKEY_MR_FTRIM_OFFSET_6DB:
- return "MR_FTRIM_OFFSET_6DB";
- case CSR_PSKEY_NO_CAL_ON_BOOT:
- return "NO_CAL_ON_BOOT";
- case CSR_PSKEY_RSSI_HI_TARGET:
- return "RSSI_HI_TARGET";
- case CSR_PSKEY_PREFERRED_MIN_ATTENUATION:
- return "PREFERRED_MIN_ATTENUATION";
- case CSR_PSKEY_LC_COMBO_DOT11_PRIORITY_OVERRIDE:
- return "LC_COMBO_DOT11_PRIORITY_OVERRIDE";
- case CSR_PSKEY_LC_MULTISLOT_HOLDOFF:
- return "LC_MULTISLOT_HOLDOFF";
- case CSR_PSKEY_FREE_KEY_PIGEON_HOLE:
- return "FREE_KEY_PIGEON_HOLE";
- case CSR_PSKEY_LINK_KEY_BD_ADDR0:
- return "LINK_KEY_BD_ADDR0";
- case CSR_PSKEY_LINK_KEY_BD_ADDR1:
- return "LINK_KEY_BD_ADDR1";
- case CSR_PSKEY_LINK_KEY_BD_ADDR2:
- return "LINK_KEY_BD_ADDR2";
- case CSR_PSKEY_LINK_KEY_BD_ADDR3:
- return "LINK_KEY_BD_ADDR3";
- case CSR_PSKEY_LINK_KEY_BD_ADDR4:
- return "LINK_KEY_BD_ADDR4";
- case CSR_PSKEY_LINK_KEY_BD_ADDR5:
- return "LINK_KEY_BD_ADDR5";
- case CSR_PSKEY_LINK_KEY_BD_ADDR6:
- return "LINK_KEY_BD_ADDR6";
- case CSR_PSKEY_LINK_KEY_BD_ADDR7:
- return "LINK_KEY_BD_ADDR7";
- case CSR_PSKEY_LINK_KEY_BD_ADDR8:
- return "LINK_KEY_BD_ADDR8";
- case CSR_PSKEY_LINK_KEY_BD_ADDR9:
- return "LINK_KEY_BD_ADDR9";
- case CSR_PSKEY_LINK_KEY_BD_ADDR10:
- return "LINK_KEY_BD_ADDR10";
- case CSR_PSKEY_LINK_KEY_BD_ADDR11:
- return "LINK_KEY_BD_ADDR11";
- case CSR_PSKEY_LINK_KEY_BD_ADDR12:
- return "LINK_KEY_BD_ADDR12";
- case CSR_PSKEY_LINK_KEY_BD_ADDR13:
- return "LINK_KEY_BD_ADDR13";
- case CSR_PSKEY_LINK_KEY_BD_ADDR14:
- return "LINK_KEY_BD_ADDR14";
- case CSR_PSKEY_LINK_KEY_BD_ADDR15:
- return "LINK_KEY_BD_ADDR15";
- case CSR_PSKEY_ENC_KEY_LMIN:
- return "ENC_KEY_LMIN";
- case CSR_PSKEY_ENC_KEY_LMAX:
- return "ENC_KEY_LMAX";
- case CSR_PSKEY_LOCAL_SUPPORTED_FEATURES:
- return "LOCAL_SUPPORTED_FEATURES";
- case CSR_PSKEY_LM_USE_UNIT_KEY:
- return "LM_USE_UNIT_KEY";
- case CSR_PSKEY_HCI_NOP_DISABLE:
- return "HCI_NOP_DISABLE";
- case CSR_PSKEY_LM_MAX_EVENT_FILTERS:
- return "LM_MAX_EVENT_FILTERS";
- case CSR_PSKEY_LM_USE_ENC_MODE_BROADCAST:
- return "LM_USE_ENC_MODE_BROADCAST";
- case CSR_PSKEY_LM_TEST_SEND_ACCEPTED_TWICE:
- return "LM_TEST_SEND_ACCEPTED_TWICE";
- case CSR_PSKEY_LM_MAX_PAGE_HOLD_TIME:
- return "LM_MAX_PAGE_HOLD_TIME";
- case CSR_PSKEY_AFH_ADAPTATION_RESPONSE_TIME:
- return "AFH_ADAPTATION_RESPONSE_TIME";
- case CSR_PSKEY_AFH_OPTIONS:
- return "AFH_OPTIONS";
- case CSR_PSKEY_AFH_RSSI_RUN_PERIOD:
- return "AFH_RSSI_RUN_PERIOD";
- case CSR_PSKEY_AFH_REENABLE_CHANNEL_TIME:
- return "AFH_REENABLE_CHANNEL_TIME";
- case CSR_PSKEY_NO_DROP_ON_ACR_MS_FAIL:
- return "NO_DROP_ON_ACR_MS_FAIL";
- case CSR_PSKEY_MAX_PRIVATE_KEYS:
- return "MAX_PRIVATE_KEYS";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR0:
- return "PRIVATE_LINK_KEY_BD_ADDR0";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR1:
- return "PRIVATE_LINK_KEY_BD_ADDR1";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR2:
- return "PRIVATE_LINK_KEY_BD_ADDR2";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR3:
- return "PRIVATE_LINK_KEY_BD_ADDR3";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR4:
- return "PRIVATE_LINK_KEY_BD_ADDR4";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR5:
- return "PRIVATE_LINK_KEY_BD_ADDR5";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR6:
- return "PRIVATE_LINK_KEY_BD_ADDR6";
- case CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR7:
- return "PRIVATE_LINK_KEY_BD_ADDR7";
- case CSR_PSKEY_LOCAL_SUPPORTED_COMMANDS:
- return "LOCAL_SUPPORTED_COMMANDS";
- case CSR_PSKEY_LM_MAX_ABSENCE_INDEX:
- return "LM_MAX_ABSENCE_INDEX";
- case CSR_PSKEY_DEVICE_NAME:
- return "DEVICE_NAME";
- case CSR_PSKEY_AFH_RSSI_THRESHOLD:
- return "AFH_RSSI_THRESHOLD";
- case CSR_PSKEY_LM_CASUAL_SCAN_INTERVAL:
- return "LM_CASUAL_SCAN_INTERVAL";
- case CSR_PSKEY_AFH_MIN_MAP_CHANGE:
- return "AFH_MIN_MAP_CHANGE";
- case CSR_PSKEY_AFH_RSSI_LP_RUN_PERIOD:
- return "AFH_RSSI_LP_RUN_PERIOD";
- case CSR_PSKEY_HCI_LMP_LOCAL_VERSION:
- return "HCI_LMP_LOCAL_VERSION";
- case CSR_PSKEY_LMP_REMOTE_VERSION:
- return "LMP_REMOTE_VERSION";
- case CSR_PSKEY_HOLD_ERROR_MESSAGE_NUMBER:
- return "HOLD_ERROR_MESSAGE_NUMBER";
- case CSR_PSKEY_DFU_ATTRIBUTES:
- return "DFU_ATTRIBUTES";
- case CSR_PSKEY_DFU_DETACH_TO:
- return "DFU_DETACH_TO";
- case CSR_PSKEY_DFU_TRANSFER_SIZE:
- return "DFU_TRANSFER_SIZE";
- case CSR_PSKEY_DFU_ENABLE:
- return "DFU_ENABLE";
- case CSR_PSKEY_DFU_LIN_REG_ENABLE:
- return "DFU_LIN_REG_ENABLE";
- case CSR_PSKEY_DFUENC_VMAPP_PK_MODULUS_MSB:
- return "DFUENC_VMAPP_PK_MODULUS_MSB";
- case CSR_PSKEY_DFUENC_VMAPP_PK_MODULUS_LSB:
- return "DFUENC_VMAPP_PK_MODULUS_LSB";
- case CSR_PSKEY_DFUENC_VMAPP_PK_M_DASH:
- return "DFUENC_VMAPP_PK_M_DASH";
- case CSR_PSKEY_DFUENC_VMAPP_PK_R2N_MSB:
- return "DFUENC_VMAPP_PK_R2N_MSB";
- case CSR_PSKEY_DFUENC_VMAPP_PK_R2N_LSB:
- return "DFUENC_VMAPP_PK_R2N_LSB";
- case CSR_PSKEY_BCSP_LM_PS_BLOCK:
- return "BCSP_LM_PS_BLOCK";
- case CSR_PSKEY_HOSTIO_FC_PS_BLOCK:
- return "HOSTIO_FC_PS_BLOCK";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO0:
- return "HOSTIO_PROTOCOL_INFO0";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO1:
- return "HOSTIO_PROTOCOL_INFO1";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO2:
- return "HOSTIO_PROTOCOL_INFO2";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO3:
- return "HOSTIO_PROTOCOL_INFO3";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO4:
- return "HOSTIO_PROTOCOL_INFO4";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO5:
- return "HOSTIO_PROTOCOL_INFO5";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO6:
- return "HOSTIO_PROTOCOL_INFO6";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO7:
- return "HOSTIO_PROTOCOL_INFO7";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO8:
- return "HOSTIO_PROTOCOL_INFO8";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO9:
- return "HOSTIO_PROTOCOL_INFO9";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO10:
- return "HOSTIO_PROTOCOL_INFO10";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO11:
- return "HOSTIO_PROTOCOL_INFO11";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO12:
- return "HOSTIO_PROTOCOL_INFO12";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO13:
- return "HOSTIO_PROTOCOL_INFO13";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO14:
- return "HOSTIO_PROTOCOL_INFO14";
- case CSR_PSKEY_HOSTIO_PROTOCOL_INFO15:
- return "HOSTIO_PROTOCOL_INFO15";
- case CSR_PSKEY_HOSTIO_UART_RESET_TIMEOUT:
- return "HOSTIO_UART_RESET_TIMEOUT";
- case CSR_PSKEY_HOSTIO_USE_HCI_EXTN:
- return "HOSTIO_USE_HCI_EXTN";
- case CSR_PSKEY_HOSTIO_USE_HCI_EXTN_CCFC:
- return "HOSTIO_USE_HCI_EXTN_CCFC";
- case CSR_PSKEY_HOSTIO_HCI_EXTN_PAYLOAD_SIZE:
- return "HOSTIO_HCI_EXTN_PAYLOAD_SIZE";
- case CSR_PSKEY_BCSP_LM_CNF_CNT_LIMIT:
- return "BCSP_LM_CNF_CNT_LIMIT";
- case CSR_PSKEY_HOSTIO_MAP_SCO_PCM:
- return "HOSTIO_MAP_SCO_PCM";
- case CSR_PSKEY_HOSTIO_AWKWARD_PCM_SYNC:
- return "HOSTIO_AWKWARD_PCM_SYNC";
- case CSR_PSKEY_HOSTIO_BREAK_POLL_PERIOD:
- return "HOSTIO_BREAK_POLL_PERIOD";
- case CSR_PSKEY_HOSTIO_MIN_UART_HCI_SCO_SIZE:
- return "HOSTIO_MIN_UART_HCI_SCO_SIZE";
- case CSR_PSKEY_HOSTIO_MAP_SCO_CODEC:
- return "HOSTIO_MAP_SCO_CODEC";
- case CSR_PSKEY_PCM_CVSD_TX_HI_FREQ_BOOST:
- return "PCM_CVSD_TX_HI_FREQ_BOOST";
- case CSR_PSKEY_PCM_CVSD_RX_HI_FREQ_BOOST:
- return "PCM_CVSD_RX_HI_FREQ_BOOST";
- case CSR_PSKEY_PCM_CONFIG32:
- return "PCM_CONFIG32";
- case CSR_PSKEY_USE_OLD_BCSP_LE:
- return "USE_OLD_BCSP_LE";
- case CSR_PSKEY_PCM_CVSD_USE_NEW_FILTER:
- return "PCM_CVSD_USE_NEW_FILTER";
- case CSR_PSKEY_PCM_FORMAT:
- return "PCM_FORMAT";
- case CSR_PSKEY_CODEC_OUT_GAIN:
- return "CODEC_OUT_GAIN";
- case CSR_PSKEY_CODEC_IN_GAIN:
- return "CODEC_IN_GAIN";
- case CSR_PSKEY_CODEC_PIO:
- return "CODEC_PIO";
- case CSR_PSKEY_PCM_LOW_JITTER_CONFIG:
- return "PCM_LOW_JITTER_CONFIG";
- case CSR_PSKEY_HOSTIO_SCO_PCM_THRESHOLDS:
- return "HOSTIO_SCO_PCM_THRESHOLDS";
- case CSR_PSKEY_HOSTIO_SCO_HCI_THRESHOLDS:
- return "HOSTIO_SCO_HCI_THRESHOLDS";
- case CSR_PSKEY_HOSTIO_MAP_SCO_PCM_SLOT:
- return "HOSTIO_MAP_SCO_PCM_SLOT";
- case CSR_PSKEY_UART_BAUDRATE:
- return "UART_BAUDRATE";
- case CSR_PSKEY_UART_CONFIG_BCSP:
- return "UART_CONFIG_BCSP";
- case CSR_PSKEY_UART_CONFIG_H4:
- return "UART_CONFIG_H4";
- case CSR_PSKEY_UART_CONFIG_H5:
- return "UART_CONFIG_H5";
- case CSR_PSKEY_UART_CONFIG_USR:
- return "UART_CONFIG_USR";
- case CSR_PSKEY_UART_TX_CRCS:
- return "UART_TX_CRCS";
- case CSR_PSKEY_UART_ACK_TIMEOUT:
- return "UART_ACK_TIMEOUT";
- case CSR_PSKEY_UART_TX_MAX_ATTEMPTS:
- return "UART_TX_MAX_ATTEMPTS";
- case CSR_PSKEY_UART_TX_WINDOW_SIZE:
- return "UART_TX_WINDOW_SIZE";
- case CSR_PSKEY_UART_HOST_WAKE:
- return "UART_HOST_WAKE";
- case CSR_PSKEY_HOSTIO_THROTTLE_TIMEOUT:
- return "HOSTIO_THROTTLE_TIMEOUT";
- case CSR_PSKEY_PCM_ALWAYS_ENABLE:
- return "PCM_ALWAYS_ENABLE";
- case CSR_PSKEY_UART_HOST_WAKE_SIGNAL:
- return "UART_HOST_WAKE_SIGNAL";
- case CSR_PSKEY_UART_CONFIG_H4DS:
- return "UART_CONFIG_H4DS";
- case CSR_PSKEY_H4DS_WAKE_DURATION:
- return "H4DS_WAKE_DURATION";
- case CSR_PSKEY_H4DS_MAXWU:
- return "H4DS_MAXWU";
- case CSR_PSKEY_H4DS_LE_TIMER_PERIOD:
- return "H4DS_LE_TIMER_PERIOD";
- case CSR_PSKEY_H4DS_TWU_TIMER_PERIOD:
- return "H4DS_TWU_TIMER_PERIOD";
- case CSR_PSKEY_H4DS_UART_IDLE_TIMER_PERIOD:
- return "H4DS_UART_IDLE_TIMER_PERIOD";
- case CSR_PSKEY_ANA_FTRIM:
- return "ANA_FTRIM";
- case CSR_PSKEY_WD_TIMEOUT:
- return "WD_TIMEOUT";
- case CSR_PSKEY_WD_PERIOD:
- return "WD_PERIOD";
- case CSR_PSKEY_HOST_INTERFACE:
- return "HOST_INTERFACE";
- case CSR_PSKEY_HQ_HOST_TIMEOUT:
- return "HQ_HOST_TIMEOUT";
- case CSR_PSKEY_HQ_ACTIVE:
- return "HQ_ACTIVE";
- case CSR_PSKEY_BCCMD_SECURITY_ACTIVE:
- return "BCCMD_SECURITY_ACTIVE";
- case CSR_PSKEY_ANA_FREQ:
- return "ANA_FREQ";
- case CSR_PSKEY_PIO_PROTECT_MASK:
- return "PIO_PROTECT_MASK";
- case CSR_PSKEY_PMALLOC_SIZES:
- return "PMALLOC_SIZES";
- case CSR_PSKEY_UART_BAUD_RATE:
- return "UART_BAUD_RATE";
- case CSR_PSKEY_UART_CONFIG:
- return "UART_CONFIG";
- case CSR_PSKEY_STUB:
- return "STUB";
- case CSR_PSKEY_TXRX_PIO_CONTROL:
- return "TXRX_PIO_CONTROL";
- case CSR_PSKEY_ANA_RX_LEVEL:
- return "ANA_RX_LEVEL";
- case CSR_PSKEY_ANA_RX_FTRIM:
- return "ANA_RX_FTRIM";
- case CSR_PSKEY_PSBC_DATA_VERSION:
- return "PSBC_DATA_VERSION";
- case CSR_PSKEY_PCM0_ATTENUATION:
- return "PCM0_ATTENUATION";
- case CSR_PSKEY_LO_LVL_MAX:
- return "LO_LVL_MAX";
- case CSR_PSKEY_LO_ADC_AMPL_MIN:
- return "LO_ADC_AMPL_MIN";
- case CSR_PSKEY_LO_ADC_AMPL_MAX:
- return "LO_ADC_AMPL_MAX";
- case CSR_PSKEY_IQ_TRIM_CHANNEL:
- return "IQ_TRIM_CHANNEL";
- case CSR_PSKEY_IQ_TRIM_GAIN:
- return "IQ_TRIM_GAIN";
- case CSR_PSKEY_IQ_TRIM_ENABLE:
- return "IQ_TRIM_ENABLE";
- case CSR_PSKEY_TX_OFFSET_HALF_MHZ:
- return "TX_OFFSET_HALF_MHZ";
- case CSR_PSKEY_GBL_MISC_ENABLES:
- return "GBL_MISC_ENABLES";
- case CSR_PSKEY_UART_SLEEP_TIMEOUT:
- return "UART_SLEEP_TIMEOUT";
- case CSR_PSKEY_DEEP_SLEEP_STATE:
- return "DEEP_SLEEP_STATE";
- case CSR_PSKEY_IQ_ENABLE_PHASE_TRIM:
- return "IQ_ENABLE_PHASE_TRIM";
- case CSR_PSKEY_HCI_HANDLE_FREEZE_PERIOD:
- return "HCI_HANDLE_FREEZE_PERIOD";
- case CSR_PSKEY_MAX_FROZEN_HCI_HANDLES:
- return "MAX_FROZEN_HCI_HANDLES";
- case CSR_PSKEY_PAGETABLE_DESTRUCTION_DELAY:
- return "PAGETABLE_DESTRUCTION_DELAY";
- case CSR_PSKEY_IQ_TRIM_PIO_SETTINGS:
- return "IQ_TRIM_PIO_SETTINGS";
- case CSR_PSKEY_USE_EXTERNAL_CLOCK:
- return "USE_EXTERNAL_CLOCK";
- case CSR_PSKEY_DEEP_SLEEP_WAKE_CTS:
- return "DEEP_SLEEP_WAKE_CTS";
- case CSR_PSKEY_FC_HC2H_FLUSH_DELAY:
- return "FC_HC2H_FLUSH_DELAY";
- case CSR_PSKEY_RX_HIGHSIDE:
- return "RX_HIGHSIDE";
- case CSR_PSKEY_TX_PRE_LVL:
- return "TX_PRE_LVL";
- case CSR_PSKEY_RX_SINGLE_ENDED:
- return "RX_SINGLE_ENDED";
- case CSR_PSKEY_TX_FILTER_CONFIG:
- return "TX_FILTER_CONFIG";
- case CSR_PSKEY_CLOCK_REQUEST_ENABLE:
- return "CLOCK_REQUEST_ENABLE";
- case CSR_PSKEY_RX_MIN_ATTEN:
- return "RX_MIN_ATTEN";
- case CSR_PSKEY_XTAL_TARGET_AMPLITUDE:
- return "XTAL_TARGET_AMPLITUDE";
- case CSR_PSKEY_PCM_MIN_CPU_CLOCK:
- return "PCM_MIN_CPU_CLOCK";
- case CSR_PSKEY_HOST_INTERFACE_PIO_USB:
- return "HOST_INTERFACE_PIO_USB";
- case CSR_PSKEY_CPU_IDLE_MODE:
- return "CPU_IDLE_MODE";
- case CSR_PSKEY_DEEP_SLEEP_CLEAR_RTS:
- return "DEEP_SLEEP_CLEAR_RTS";
- case CSR_PSKEY_RF_RESONANCE_TRIM:
- return "RF_RESONANCE_TRIM";
- case CSR_PSKEY_DEEP_SLEEP_PIO_WAKE:
- return "DEEP_SLEEP_PIO_WAKE";
- case CSR_PSKEY_DRAIN_BORE_TIMERS:
- return "DRAIN_BORE_TIMERS";
- case CSR_PSKEY_DRAIN_TX_POWER_BASE:
- return "DRAIN_TX_POWER_BASE";
- case CSR_PSKEY_MODULE_ID:
- return "MODULE_ID";
- case CSR_PSKEY_MODULE_DESIGN:
- return "MODULE_DESIGN";
- case CSR_PSKEY_MODULE_SECURITY_CODE:
- return "MODULE_SECURITY_CODE";
- case CSR_PSKEY_VM_DISABLE:
- return "VM_DISABLE";
- case CSR_PSKEY_MOD_MANUF0:
- return "MOD_MANUF0";
- case CSR_PSKEY_MOD_MANUF1:
- return "MOD_MANUF1";
- case CSR_PSKEY_MOD_MANUF2:
- return "MOD_MANUF2";
- case CSR_PSKEY_MOD_MANUF3:
- return "MOD_MANUF3";
- case CSR_PSKEY_MOD_MANUF4:
- return "MOD_MANUF4";
- case CSR_PSKEY_MOD_MANUF5:
- return "MOD_MANUF5";
- case CSR_PSKEY_MOD_MANUF6:
- return "MOD_MANUF6";
- case CSR_PSKEY_MOD_MANUF7:
- return "MOD_MANUF7";
- case CSR_PSKEY_MOD_MANUF8:
- return "MOD_MANUF8";
- case CSR_PSKEY_MOD_MANUF9:
- return "MOD_MANUF9";
- case CSR_PSKEY_DUT_VM_DISABLE:
- return "DUT_VM_DISABLE";
- case CSR_PSKEY_USR0:
- return "USR0";
- case CSR_PSKEY_USR1:
- return "USR1";
- case CSR_PSKEY_USR2:
- return "USR2";
- case CSR_PSKEY_USR3:
- return "USR3";
- case CSR_PSKEY_USR4:
- return "USR4";
- case CSR_PSKEY_USR5:
- return "USR5";
- case CSR_PSKEY_USR6:
- return "USR6";
- case CSR_PSKEY_USR7:
- return "USR7";
- case CSR_PSKEY_USR8:
- return "USR8";
- case CSR_PSKEY_USR9:
- return "USR9";
- case CSR_PSKEY_USR10:
- return "USR10";
- case CSR_PSKEY_USR11:
- return "USR11";
- case CSR_PSKEY_USR12:
- return "USR12";
- case CSR_PSKEY_USR13:
- return "USR13";
- case CSR_PSKEY_USR14:
- return "USR14";
- case CSR_PSKEY_USR15:
- return "USR15";
- case CSR_PSKEY_USR16:
- return "USR16";
- case CSR_PSKEY_USR17:
- return "USR17";
- case CSR_PSKEY_USR18:
- return "USR18";
- case CSR_PSKEY_USR19:
- return "USR19";
- case CSR_PSKEY_USR20:
- return "USR20";
- case CSR_PSKEY_USR21:
- return "USR21";
- case CSR_PSKEY_USR22:
- return "USR22";
- case CSR_PSKEY_USR23:
- return "USR23";
- case CSR_PSKEY_USR24:
- return "USR24";
- case CSR_PSKEY_USR25:
- return "USR25";
- case CSR_PSKEY_USR26:
- return "USR26";
- case CSR_PSKEY_USR27:
- return "USR27";
- case CSR_PSKEY_USR28:
- return "USR28";
- case CSR_PSKEY_USR29:
- return "USR29";
- case CSR_PSKEY_USR30:
- return "USR30";
- case CSR_PSKEY_USR31:
- return "USR31";
- case CSR_PSKEY_USR32:
- return "USR32";
- case CSR_PSKEY_USR33:
- return "USR33";
- case CSR_PSKEY_USR34:
- return "USR34";
- case CSR_PSKEY_USR35:
- return "USR35";
- case CSR_PSKEY_USR36:
- return "USR36";
- case CSR_PSKEY_USR37:
- return "USR37";
- case CSR_PSKEY_USR38:
- return "USR38";
- case CSR_PSKEY_USR39:
- return "USR39";
- case CSR_PSKEY_USR40:
- return "USR40";
- case CSR_PSKEY_USR41:
- return "USR41";
- case CSR_PSKEY_USR42:
- return "USR42";
- case CSR_PSKEY_USR43:
- return "USR43";
- case CSR_PSKEY_USR44:
- return "USR44";
- case CSR_PSKEY_USR45:
- return "USR45";
- case CSR_PSKEY_USR46:
- return "USR46";
- case CSR_PSKEY_USR47:
- return "USR47";
- case CSR_PSKEY_USR48:
- return "USR48";
- case CSR_PSKEY_USR49:
- return "USR49";
- case CSR_PSKEY_USB_VERSION:
- return "USB_VERSION";
- case CSR_PSKEY_USB_DEVICE_CLASS_CODES:
- return "USB_DEVICE_CLASS_CODES";
- case CSR_PSKEY_USB_VENDOR_ID:
- return "USB_VENDOR_ID";
- case CSR_PSKEY_USB_PRODUCT_ID:
- return "USB_PRODUCT_ID";
- case CSR_PSKEY_USB_MANUF_STRING:
- return "USB_MANUF_STRING";
- case CSR_PSKEY_USB_PRODUCT_STRING:
- return "USB_PRODUCT_STRING";
- case CSR_PSKEY_USB_SERIAL_NUMBER_STRING:
- return "USB_SERIAL_NUMBER_STRING";
- case CSR_PSKEY_USB_CONFIG_STRING:
- return "USB_CONFIG_STRING";
- case CSR_PSKEY_USB_ATTRIBUTES:
- return "USB_ATTRIBUTES";
- case CSR_PSKEY_USB_MAX_POWER:
- return "USB_MAX_POWER";
- case CSR_PSKEY_USB_BT_IF_CLASS_CODES:
- return "USB_BT_IF_CLASS_CODES";
- case CSR_PSKEY_USB_LANGID:
- return "USB_LANGID";
- case CSR_PSKEY_USB_DFU_CLASS_CODES:
- return "USB_DFU_CLASS_CODES";
- case CSR_PSKEY_USB_DFU_PRODUCT_ID:
- return "USB_DFU_PRODUCT_ID";
- case CSR_PSKEY_USB_PIO_DETACH:
- return "USB_PIO_DETACH";
- case CSR_PSKEY_USB_PIO_WAKEUP:
- return "USB_PIO_WAKEUP";
- case CSR_PSKEY_USB_PIO_PULLUP:
- return "USB_PIO_PULLUP";
- case CSR_PSKEY_USB_PIO_VBUS:
- return "USB_PIO_VBUS";
- case CSR_PSKEY_USB_PIO_WAKE_TIMEOUT:
- return "USB_PIO_WAKE_TIMEOUT";
- case CSR_PSKEY_USB_PIO_RESUME:
- return "USB_PIO_RESUME";
- case CSR_PSKEY_USB_BT_SCO_IF_CLASS_CODES:
- return "USB_BT_SCO_IF_CLASS_CODES";
- case CSR_PSKEY_USB_SUSPEND_PIO_LEVEL:
- return "USB_SUSPEND_PIO_LEVEL";
- case CSR_PSKEY_USB_SUSPEND_PIO_DIR:
- return "USB_SUSPEND_PIO_DIR";
- case CSR_PSKEY_USB_SUSPEND_PIO_MASK:
- return "USB_SUSPEND_PIO_MASK";
- case CSR_PSKEY_USB_ENDPOINT_0_MAX_PACKET_SIZE:
- return "USB_ENDPOINT_0_MAX_PACKET_SIZE";
- case CSR_PSKEY_USB_CONFIG:
- return "USB_CONFIG";
- case CSR_PSKEY_RADIOTEST_ATTEN_INIT:
- return "RADIOTEST_ATTEN_INIT";
- case CSR_PSKEY_RADIOTEST_FIRST_TRIM_TIME:
- return "RADIOTEST_FIRST_TRIM_TIME";
- case CSR_PSKEY_RADIOTEST_SUBSEQUENT_TRIM_TIME:
- return "RADIOTEST_SUBSEQUENT_TRIM_TIME";
- case CSR_PSKEY_RADIOTEST_LO_LVL_TRIM_ENABLE:
- return "RADIOTEST_LO_LVL_TRIM_ENABLE";
- case CSR_PSKEY_RADIOTEST_DISABLE_MODULATION:
- return "RADIOTEST_DISABLE_MODULATION";
- case CSR_PSKEY_RFCOMM_FCON_THRESHOLD:
- return "RFCOMM_FCON_THRESHOLD";
- case CSR_PSKEY_RFCOMM_FCOFF_THRESHOLD:
- return "RFCOMM_FCOFF_THRESHOLD";
- case CSR_PSKEY_IPV6_STATIC_ADDR:
- return "IPV6_STATIC_ADDR";
- case CSR_PSKEY_IPV4_STATIC_ADDR:
- return "IPV4_STATIC_ADDR";
- case CSR_PSKEY_IPV6_STATIC_PREFIX_LEN:
- return "IPV6_STATIC_PREFIX_LEN";
- case CSR_PSKEY_IPV6_STATIC_ROUTER_ADDR:
- return "IPV6_STATIC_ROUTER_ADDR";
- case CSR_PSKEY_IPV4_STATIC_SUBNET_MASK:
- return "IPV4_STATIC_SUBNET_MASK";
- case CSR_PSKEY_IPV4_STATIC_ROUTER_ADDR:
- return "IPV4_STATIC_ROUTER_ADDR";
- case CSR_PSKEY_MDNS_NAME:
- return "MDNS_NAME";
- case CSR_PSKEY_FIXED_PIN:
- return "FIXED_PIN";
- case CSR_PSKEY_MDNS_PORT:
- return "MDNS_PORT";
- case CSR_PSKEY_MDNS_TTL:
- return "MDNS_TTL";
- case CSR_PSKEY_MDNS_IPV4_ADDR:
- return "MDNS_IPV4_ADDR";
- case CSR_PSKEY_ARP_CACHE_TIMEOUT:
- return "ARP_CACHE_TIMEOUT";
- case CSR_PSKEY_HFP_POWER_TABLE:
- return "HFP_POWER_TABLE";
- case CSR_PSKEY_DRAIN_BORE_TIMER_COUNTERS:
- return "DRAIN_BORE_TIMER_COUNTERS";
- case CSR_PSKEY_DRAIN_BORE_COUNTERS:
- return "DRAIN_BORE_COUNTERS";
- case CSR_PSKEY_LOOP_FILTER_TRIM:
- return "LOOP_FILTER_TRIM";
- case CSR_PSKEY_DRAIN_BORE_CURRENT_PEAK:
- return "DRAIN_BORE_CURRENT_PEAK";
- case CSR_PSKEY_VM_E2_CACHE_LIMIT:
- return "VM_E2_CACHE_LIMIT";
- case CSR_PSKEY_FORCE_16MHZ_REF_PIO:
- return "FORCE_16MHZ_REF_PIO";
- case CSR_PSKEY_CDMA_LO_REF_LIMITS:
- return "CDMA_LO_REF_LIMITS";
- case CSR_PSKEY_CDMA_LO_ERROR_LIMITS:
- return "CDMA_LO_ERROR_LIMITS";
- case CSR_PSKEY_CLOCK_STARTUP_DELAY:
- return "CLOCK_STARTUP_DELAY";
- case CSR_PSKEY_DEEP_SLEEP_CORRECTION_FACTOR:
- return "DEEP_SLEEP_CORRECTION_FACTOR";
- case CSR_PSKEY_TEMPERATURE_CALIBRATION:
- return "TEMPERATURE_CALIBRATION";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_INTERNAL_PA:
- return "TEMPERATURE_VS_DELTA_INTERNAL_PA";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_PRE_LVL:
- return "TEMPERATURE_VS_DELTA_TX_PRE_LVL";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB:
- return "TEMPERATURE_VS_DELTA_TX_BB";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_ANA_FTRIM:
- return "TEMPERATURE_VS_DELTA_ANA_FTRIM";
- case CSR_PSKEY_TEST_DELTA_OFFSET:
- return "TEST_DELTA_OFFSET";
- case CSR_PSKEY_RX_DYNAMIC_LVL_OFFSET:
- return "RX_DYNAMIC_LVL_OFFSET";
- case CSR_PSKEY_TEST_FORCE_OFFSET:
- return "TEST_FORCE_OFFSET";
- case CSR_PSKEY_RF_TRAP_BAD_DIVISION_RATIOS:
- return "RF_TRAP_BAD_DIVISION_RATIOS";
- case CSR_PSKEY_RADIOTEST_CDMA_LO_REF_LIMITS:
- return "RADIOTEST_CDMA_LO_REF_LIMITS";
- case CSR_PSKEY_INITIAL_BOOTMODE:
- return "INITIAL_BOOTMODE";
- case CSR_PSKEY_ONCHIP_HCI_CLIENT:
- return "ONCHIP_HCI_CLIENT";
- case CSR_PSKEY_RX_ATTEN_BACKOFF:
- return "RX_ATTEN_BACKOFF";
- case CSR_PSKEY_RX_ATTEN_UPDATE_RATE:
- return "RX_ATTEN_UPDATE_RATE";
- case CSR_PSKEY_SYNTH_TXRX_THRESHOLDS:
- return "SYNTH_TXRX_THRESHOLDS";
- case CSR_PSKEY_MIN_WAIT_STATES:
- return "MIN_WAIT_STATES";
- case CSR_PSKEY_RSSI_CORRECTION:
- return "RSSI_CORRECTION";
- case CSR_PSKEY_SCHED_THROTTLE_TIMEOUT:
- return "SCHED_THROTTLE_TIMEOUT";
- case CSR_PSKEY_DEEP_SLEEP_USE_EXTERNAL_CLOCK:
- return "DEEP_SLEEP_USE_EXTERNAL_CLOCK";
- case CSR_PSKEY_TRIM_RADIO_FILTERS:
- return "TRIM_RADIO_FILTERS";
- case CSR_PSKEY_TRANSMIT_OFFSET:
- return "TRANSMIT_OFFSET";
- case CSR_PSKEY_USB_VM_CONTROL:
- return "USB_VM_CONTROL";
- case CSR_PSKEY_MR_ANA_RX_FTRIM:
- return "MR_ANA_RX_FTRIM";
- case CSR_PSKEY_I2C_CONFIG:
- return "I2C_CONFIG";
- case CSR_PSKEY_IQ_LVL_RX:
- return "IQ_LVL_RX";
- case CSR_PSKEY_MR_TX_FILTER_CONFIG:
- return "MR_TX_FILTER_CONFIG";
- case CSR_PSKEY_MR_TX_CONFIG2:
- return "MR_TX_CONFIG2";
- case CSR_PSKEY_USB_DONT_RESET_BOOTMODE_ON_HOST_RESET:
- return "USB_DONT_RESET_BOOTMODE_ON_HOST_RESET";
- case CSR_PSKEY_LC_USE_THROTTLING:
- return "LC_USE_THROTTLING";
- case CSR_PSKEY_CHARGER_TRIM:
- return "CHARGER_TRIM";
- case CSR_PSKEY_CLOCK_REQUEST_FEATURES:
- return "CLOCK_REQUEST_FEATURES";
- case CSR_PSKEY_TRANSMIT_OFFSET_CLASS1:
- return "TRANSMIT_OFFSET_CLASS1";
- case CSR_PSKEY_TX_AVOID_PA_CLASS1_PIO:
- return "TX_AVOID_PA_CLASS1_PIO";
- case CSR_PSKEY_MR_PIO_CONFIG:
- return "MR_PIO_CONFIG";
- case CSR_PSKEY_UART_CONFIG2:
- return "UART_CONFIG2";
- case CSR_PSKEY_CLASS1_IQ_LVL:
- return "CLASS1_IQ_LVL";
- case CSR_PSKEY_CLASS1_TX_CONFIG2:
- return "CLASS1_TX_CONFIG2";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_INTERNAL_PA_CLASS1:
- return "TEMPERATURE_VS_DELTA_INTERNAL_PA_CLASS1";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_EXTERNAL_PA_CLASS1:
- return "TEMPERATURE_VS_DELTA_EXTERNAL_PA_CLASS1";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_PRE_LVL_MR:
- return "TEMPERATURE_VS_DELTA_TX_PRE_LVL_MR";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB_MR_HEADER:
- return "TEMPERATURE_VS_DELTA_TX_BB_MR_HEADER";
- case CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB_MR_PAYLOAD:
- return "TEMPERATURE_VS_DELTA_TX_BB_MR_PAYLOAD";
- case CSR_PSKEY_RX_MR_EQ_TAPS:
- return "RX_MR_EQ_TAPS";
- case CSR_PSKEY_TX_PRE_LVL_CLASS1:
- return "TX_PRE_LVL_CLASS1";
- case CSR_PSKEY_ANALOGUE_ATTENUATOR:
- return "ANALOGUE_ATTENUATOR";
- case CSR_PSKEY_MR_RX_FILTER_TRIM:
- return "MR_RX_FILTER_TRIM";
- case CSR_PSKEY_MR_RX_FILTER_RESPONSE:
- return "MR_RX_FILTER_RESPONSE";
- case CSR_PSKEY_PIO_WAKEUP_STATE:
- return "PIO_WAKEUP_STATE";
- case CSR_PSKEY_MR_TX_IF_ATTEN_OFF_TEMP:
- return "MR_TX_IF_ATTEN_OFF_TEMP";
- case CSR_PSKEY_LO_DIV_LATCH_BYPASS:
- return "LO_DIV_LATCH_BYPASS";
- case CSR_PSKEY_LO_VCO_STANDBY:
- return "LO_VCO_STANDBY";
- case CSR_PSKEY_SLOW_CLOCK_FILTER_SHIFT:
- return "SLOW_CLOCK_FILTER_SHIFT";
- case CSR_PSKEY_SLOW_CLOCK_FILTER_DIVIDER:
- return "SLOW_CLOCK_FILTER_DIVIDER";
- case CSR_PSKEY_USB_ATTRIBUTES_POWER:
- return "USB_ATTRIBUTES_POWER";
- case CSR_PSKEY_USB_ATTRIBUTES_WAKEUP:
- return "USB_ATTRIBUTES_WAKEUP";
- case CSR_PSKEY_DFU_ATTRIBUTES_MANIFESTATION_TOLERANT:
- return "DFU_ATTRIBUTES_MANIFESTATION_TOLERANT";
- case CSR_PSKEY_DFU_ATTRIBUTES_CAN_UPLOAD:
- return "DFU_ATTRIBUTES_CAN_UPLOAD";
- case CSR_PSKEY_DFU_ATTRIBUTES_CAN_DOWNLOAD:
- return "DFU_ATTRIBUTES_CAN_DOWNLOAD";
- case CSR_PSKEY_UART_CONFIG_STOP_BITS:
- return "UART_CONFIG_STOP_BITS";
- case CSR_PSKEY_UART_CONFIG_PARITY_BIT:
- return "UART_CONFIG_PARITY_BIT";
- case CSR_PSKEY_UART_CONFIG_FLOW_CTRL_EN:
- return "UART_CONFIG_FLOW_CTRL_EN";
- case CSR_PSKEY_UART_CONFIG_RTS_AUTO_EN:
- return "UART_CONFIG_RTS_AUTO_EN";
- case CSR_PSKEY_UART_CONFIG_RTS:
- return "UART_CONFIG_RTS";
- case CSR_PSKEY_UART_CONFIG_TX_ZERO_EN:
- return "UART_CONFIG_TX_ZERO_EN";
- case CSR_PSKEY_UART_CONFIG_NON_BCSP_EN:
- return "UART_CONFIG_NON_BCSP_EN";
- case CSR_PSKEY_UART_CONFIG_RX_RATE_DELAY:
- return "UART_CONFIG_RX_RATE_DELAY";
- case CSR_PSKEY_UART_SEQ_TIMEOUT:
- return "UART_SEQ_TIMEOUT";
- case CSR_PSKEY_UART_SEQ_RETRIES:
- return "UART_SEQ_RETRIES";
- case CSR_PSKEY_UART_SEQ_WINSIZE:
- return "UART_SEQ_WINSIZE";
- case CSR_PSKEY_UART_USE_CRC_ON_TX:
- return "UART_USE_CRC_ON_TX";
- case CSR_PSKEY_UART_HOST_INITIAL_STATE:
- return "UART_HOST_INITIAL_STATE";
- case CSR_PSKEY_UART_HOST_ATTENTION_SPAN:
- return "UART_HOST_ATTENTION_SPAN";
- case CSR_PSKEY_UART_HOST_WAKEUP_TIME:
- return "UART_HOST_WAKEUP_TIME";
- case CSR_PSKEY_UART_HOST_WAKEUP_WAIT:
- return "UART_HOST_WAKEUP_WAIT";
- case CSR_PSKEY_BCSP_LM_MODE:
- return "BCSP_LM_MODE";
- case CSR_PSKEY_BCSP_LM_SYNC_RETRIES:
- return "BCSP_LM_SYNC_RETRIES";
- case CSR_PSKEY_BCSP_LM_TSHY:
- return "BCSP_LM_TSHY";
- case CSR_PSKEY_UART_DFU_CONFIG_STOP_BITS:
- return "UART_DFU_CONFIG_STOP_BITS";
- case CSR_PSKEY_UART_DFU_CONFIG_PARITY_BIT:
- return "UART_DFU_CONFIG_PARITY_BIT";
- case CSR_PSKEY_UART_DFU_CONFIG_FLOW_CTRL_EN:
- return "UART_DFU_CONFIG_FLOW_CTRL_EN";
- case CSR_PSKEY_UART_DFU_CONFIG_RTS_AUTO_EN:
- return "UART_DFU_CONFIG_RTS_AUTO_EN";
- case CSR_PSKEY_UART_DFU_CONFIG_RTS:
- return "UART_DFU_CONFIG_RTS";
- case CSR_PSKEY_UART_DFU_CONFIG_TX_ZERO_EN:
- return "UART_DFU_CONFIG_TX_ZERO_EN";
- case CSR_PSKEY_UART_DFU_CONFIG_NON_BCSP_EN:
- return "UART_DFU_CONFIG_NON_BCSP_EN";
- case CSR_PSKEY_UART_DFU_CONFIG_RX_RATE_DELAY:
- return "UART_DFU_CONFIG_RX_RATE_DELAY";
- case CSR_PSKEY_AMUX_AIO0:
- return "AMUX_AIO0";
- case CSR_PSKEY_AMUX_AIO1:
- return "AMUX_AIO1";
- case CSR_PSKEY_AMUX_AIO2:
- return "AMUX_AIO2";
- case CSR_PSKEY_AMUX_AIO3:
- return "AMUX_AIO3";
- case CSR_PSKEY_LOCAL_NAME_SIMPLIFIED:
- return "LOCAL_NAME_SIMPLIFIED";
- case CSR_PSKEY_EXTENDED_STUB:
- return "EXTENDED_STUB";
- default:
- return "UNKNOWN";
- }
-}
-
-int csr_write_varid_valueless(int dd, uint16_t seqnum, uint16_t varid)
-{
- unsigned char cmd[] = { 0x02, 0x00, 0x09, 0x00,
- seqnum & 0xff, seqnum >> 8, varid & 0xff, varid >> 8, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-
- unsigned char cp[254], rp[254];
- struct hci_request rq;
-
- memset(&cp, 0, sizeof(cp));
- cp[0] = 0xc2;
- memcpy(cp + 1, cmd, sizeof(cmd));
-
- switch (varid) {
- case CSR_VARID_COLD_RESET:
- case CSR_VARID_WARM_RESET:
- case CSR_VARID_COLD_HALT:
- case CSR_VARID_WARM_HALT:
- return hci_send_cmd(dd, OGF_VENDOR_CMD, 0x00, sizeof(cmd) + 1, cp);
- }
-
- memset(&rq, 0, sizeof(rq));
- rq.ogf = OGF_VENDOR_CMD;
- rq.ocf = 0x00;
- rq.event = EVT_VENDOR;
- rq.cparam = cp;
- rq.clen = sizeof(cmd) + 1;
- rq.rparam = rp;
- rq.rlen = sizeof(rp);
-
- if (hci_send_req(dd, &rq, 2000) < 0)
- return -1;
-
- if (rp[0] != 0xc2) {
- errno = EIO;
- return -1;
- }
-
- if ((rp[9] + (rp[10] << 8)) != 0) {
- errno = ENXIO;
- return -1;
- }
-
- return 0;
-}
-
-int csr_write_varid_complex(int dd, uint16_t seqnum, uint16_t varid, uint8_t *value, uint16_t length)
-{
- unsigned char cmd[] = { 0x02, 0x00, ((length / 2) + 5) & 0xff, ((length / 2) + 5) >> 8,
- seqnum & 0xff, seqnum >> 8, varid & 0xff, varid >> 8, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-
- unsigned char cp[254], rp[254];
- struct hci_request rq;
-
- memset(&cp, 0, sizeof(cp));
- cp[0] = 0xc2;
- memcpy(cp + 1, cmd, sizeof(cmd));
- memcpy(cp + 11, value, length);
-
- memset(&rq, 0, sizeof(rq));
- rq.ogf = OGF_VENDOR_CMD;
- rq.ocf = 0x00;
- rq.event = EVT_VENDOR;
- rq.cparam = cp;
- rq.clen = sizeof(cmd) + length + 1;
- rq.rparam = rp;
- rq.rlen = sizeof(rp);
-
- if (hci_send_req(dd, &rq, 2000) < 0)
- return -1;
-
- if (rp[0] != 0xc2) {
- errno = EIO;
- return -1;
- }
-
- if ((rp[9] + (rp[10] << 8)) != 0) {
- errno = ENXIO;
- return -1;
- }
-
- return 0;
-}
-
-int csr_read_varid_complex(int dd, uint16_t seqnum, uint16_t varid, uint8_t *value, uint16_t length)
-{
- unsigned char cmd[] = { 0x00, 0x00, ((length / 2) + 5) & 0xff, ((length / 2) + 5) >> 8,
- seqnum & 0xff, seqnum >> 8, varid & 0xff, varid >> 8, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-
- unsigned char cp[254], rp[254];
- struct hci_request rq;
-
- memset(&cp, 0, sizeof(cp));
- cp[0] = 0xc2;
- memcpy(cp + 1, cmd, sizeof(cmd));
- memcpy(cp + 11, value, length);
-
- memset(&rq, 0, sizeof(rq));
- rq.ogf = OGF_VENDOR_CMD;
- rq.ocf = 0x00;
- rq.event = EVT_VENDOR;
- rq.cparam = cp;
- rq.clen = sizeof(cmd) + length + 1;
- rq.rparam = rp;
- rq.rlen = sizeof(rp);
-
- if (hci_send_req(dd, &rq, 2000) < 0)
- return -1;
-
- if (rp[0] != 0xc2) {
- errno = EIO;
- return -1;
- }
-
- if ((rp[9] + (rp[10] << 8)) != 0) {
- errno = ENXIO;
- return -1;
- }
-
- memcpy(value, rp + 11, length);
-
- return 0;
-}
-
-int csr_read_varid_uint16(int dd, uint16_t seqnum, uint16_t varid, uint16_t *value)
-{
- unsigned char cmd[] = { 0x00, 0x00, 0x09, 0x00,
- seqnum & 0xff, seqnum >> 8, varid & 0xff, varid >> 8, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-
- unsigned char cp[254], rp[254];
- struct hci_request rq;
-
- memset(&cp, 0, sizeof(cp));
- cp[0] = 0xc2;
- memcpy(cp + 1, cmd, sizeof(cmd));
-
- memset(&rq, 0, sizeof(rq));
- rq.ogf = OGF_VENDOR_CMD;
- rq.ocf = 0x00;
- rq.event = EVT_VENDOR;
- rq.cparam = cp;
- rq.clen = sizeof(cmd) + 1;
- rq.rparam = rp;
- rq.rlen = sizeof(rp);
-
- if (hci_send_req(dd, &rq, 2000) < 0)
- return -1;
-
- if (rp[0] != 0xc2) {
- errno = EIO;
- return -1;
- }
-
- if ((rp[9] + (rp[10] << 8)) != 0) {
- errno = ENXIO;
- return -1;
- }
-
- *value = rp[11] + (rp[12] << 8);
-
- return 0;
-}
-
-int csr_read_varid_uint32(int dd, uint16_t seqnum, uint16_t varid, uint32_t *value)
-{
- unsigned char cmd[] = { 0x00, 0x00, 0x09, 0x00,
- seqnum & 0xff, seqnum >> 8, varid & 0xff, varid >> 8, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-
- unsigned char cp[254], rp[254];
- struct hci_request rq;
-
- memset(&cp, 0, sizeof(cp));
- cp[0] = 0xc2;
- memcpy(cp + 1, cmd, sizeof(cmd));
-
- memset(&rq, 0, sizeof(rq));
- rq.ogf = OGF_VENDOR_CMD;
- rq.ocf = 0x00;
- rq.event = EVT_VENDOR;
- rq.cparam = cp;
- rq.clen = sizeof(cmd) + 1;
- rq.rparam = rp;
- rq.rlen = sizeof(rp);
-
- if (hci_send_req(dd, &rq, 2000) < 0)
- return -1;
-
- if (rp[0] != 0xc2) {
- errno = EIO;
- return -1;
- }
-
- if ((rp[9] + (rp[10] << 8)) != 0) {
- errno = ENXIO;
- return -1;
- }
-
- *value = ((rp[11] + (rp[12] << 8)) << 16) + (rp[13] + (rp[14] << 8));
-
- return 0;
-}
-
-int csr_read_pskey_complex(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint8_t *value, uint16_t length)
-{
- unsigned char cmd[] = { 0x00, 0x00, ((length / 2) + 8) & 0xff, ((length / 2) + 8) >> 8,
- seqnum & 0xff, seqnum >> 8, 0x03, 0x70, 0x00, 0x00,
- pskey & 0xff, pskey >> 8,
- (length / 2) & 0xff, (length / 2) >> 8,
- stores & 0xff, stores >> 8, 0x00, 0x00 };
-
- unsigned char cp[254], rp[254];
- struct hci_request rq;
-
- memset(&cp, 0, sizeof(cp));
- cp[0] = 0xc2;
- memcpy(cp + 1, cmd, sizeof(cmd));
-
- memset(&rq, 0, sizeof(rq));
- rq.ogf = OGF_VENDOR_CMD;
- rq.ocf = 0x00;
- rq.event = EVT_VENDOR;
- rq.cparam = cp;
- rq.clen = sizeof(cmd) + length - 1;
- rq.rparam = rp;
- rq.rlen = sizeof(rp);
-
- if (hci_send_req(dd, &rq, 2000) < 0)
- return -1;
-
- if (rp[0] != 0xc2) {
- errno = EIO;
- return -1;
- }
-
- if ((rp[9] + (rp[10] << 8)) != 0) {
- errno = ENXIO;
- return -1;
- }
-
- memcpy(value, rp + 17, length);
-
- return 0;
-}
-
-int csr_write_pskey_complex(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint8_t *value, uint16_t length)
-{
- unsigned char cmd[] = { 0x02, 0x00, ((length / 2) + 8) & 0xff, ((length / 2) + 8) >> 8,
- seqnum & 0xff, seqnum >> 8, 0x03, 0x70, 0x00, 0x00,
- pskey & 0xff, pskey >> 8,
- (length / 2) & 0xff, (length / 2) >> 8,
- stores & 0xff, stores >> 8, 0x00, 0x00 };
-
- unsigned char cp[254], rp[254];
- struct hci_request rq;
-
- memset(&cp, 0, sizeof(cp));
- cp[0] = 0xc2;
- memcpy(cp + 1, cmd, sizeof(cmd));
-
- memcpy(cp + 17, value, length);
-
- memset(&rq, 0, sizeof(rq));
- rq.ogf = OGF_VENDOR_CMD;
- rq.ocf = 0x00;
- rq.event = EVT_VENDOR;
- rq.cparam = cp;
- rq.clen = sizeof(cmd) + length - 1;
- rq.rparam = rp;
- rq.rlen = sizeof(rp);
-
- if (hci_send_req(dd, &rq, 2000) < 0)
- return -1;
-
- if (rp[0] != 0xc2) {
- errno = EIO;
- return -1;
- }
-
- if ((rp[9] + (rp[10] << 8)) != 0) {
- errno = ENXIO;
- return -1;
- }
-
- return 0;
-}
-
-int csr_read_pskey_uint16(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint16_t *value)
-{
- uint8_t array[2] = { 0x00, 0x00 };
- int err;
-
- err = csr_read_pskey_complex(dd, seqnum, pskey, stores, array, 2);
-
- *value = array[0] + (array[1] << 8);
-
- return err;
-}
-
-int csr_write_pskey_uint16(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint16_t value)
-{
- uint8_t array[2] = { value & 0xff, value >> 8 };
-
- return csr_write_pskey_complex(dd, seqnum, pskey, stores, array, 2);
-}
-
-int csr_read_pskey_uint32(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint32_t *value)
-{
- uint8_t array[4] = { 0x00, 0x00, 0x00, 0x00 };
- int err;
-
- err = csr_read_pskey_complex(dd, seqnum, pskey, stores, array, 4);
-
- *value = ((array[0] + (array[1] << 8)) << 16) +
- (array[2] + (array[3] << 8));
-
- return err;
-}
-
-int csr_write_pskey_uint32(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint32_t value)
-{
- uint8_t array[4] = { (value & 0xff0000) >> 16, value >> 24,
- value & 0xff, (value & 0xff00) >> 8 };
-
- return csr_write_pskey_complex(dd, seqnum, pskey, stores, array, 4);
-}
-
-int psr_put(uint16_t pskey, uint8_t *value, uint16_t size)
-{
- struct psr_data *item;
-
- item = malloc(sizeof(*item));
- if (!item)
- return -ENOMEM;
-
- item->pskey = pskey;
-
- if (size > 0) {
- item->value = malloc(size);
- if (!item->value) {
- free(item);
- return -ENOMEM;
- }
-
- memcpy(item->value, value, size);
- item->size = size;
- } else {
- item->value = NULL;
- item->size = 0;
- }
-
- item->next = NULL;
-
- if (!head)
- head = item;
- else
- tail->next = item;
-
- tail = item;
-
- return 0;
-}
-
-int psr_get(uint16_t *pskey, uint8_t *value, uint16_t *size)
-{
- struct psr_data *item = head;
-
- if (!head)
- return -ENOENT;
-
- *pskey = item->pskey;
-
- if (item->value) {
- if (value && item->size > 0)
- memcpy(value, item->value, item->size);
- free(item->value);
- *size = item->size;
- } else
- *size = 0;
-
- if (head == tail)
- tail = NULL;
-
- head = head->next;
- free(item);
-
- return 0;
-}
-
-static int parse_line(char *str)
-{
- uint8_t array[256];
- uint16_t value, pskey, length = 0;
- char *off, *end;
-
- pskey = strtol(str + 1, NULL, 16);
- off = strstr(str, "=");
- if (!off)
- return -EIO;
-
- off++;
-
- while (length <= sizeof(array) - 2) {
- value = strtol(off, &end, 16);
- if (value == 0 && off == end)
- break;
-
- array[length++] = value & 0xff;
- array[length++] = value >> 8;
-
- if (*end == '\0')
- break;
-
- off = end + 1;
- }
-
- return psr_put(pskey, array, length);
-}
-
-int psr_read(const char *filename)
-{
- struct stat st;
- char *str, *map, *off, *end;
- int fd, err = 0;
-
- fd = open(filename, O_RDONLY);
- if (fd < 0)
- return fd;
-
- if (fstat(fd, &st) < 0) {
- err = -errno;
- goto close;
- }
-
- map = mmap(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
- if (!map || map == MAP_FAILED) {
- err = -errno;
- goto close;
- }
-
- off = map;
-
- while (1) {
- if (*off == '\r' || *off == '\n') {
- off++;
- continue;
- }
-
- end = strpbrk(off, "\r\n");
- if (!end)
- break;
-
- str = malloc(end - off + 1);
- if (!str)
- break;
-
- memset(str, 0, end - off + 1);
- strncpy(str, off, end - off);
- if (*str == '&')
- parse_line(str);
-
- free(str);
- off = end + 1;
- }
-
- munmap(map, st.st_size);
-
-close:
- close(fd);
-
- return err;
-}
-
-int psr_print(void)
-{
- uint8_t array[256];
- uint16_t pskey, length;
- char *str, val[7];
- int i;
-
- while (1) {
- if (psr_get(&pskey, array, &length) < 0)
- break;
-
- str = csr_pskeytoval(pskey);
- if (!strcasecmp(str, "UNKNOWN")) {
- sprintf(val, "0x%04x", pskey);
- str = NULL;
- }
-
- printf("// %s%s\n&%04x =", str ? "PSKEY_" : "",
- str ? str : val, pskey);
- for (i = 0; i < length / 2; i++)
- printf(" %02x%02x", array[i * 2 + 1], array[i * 2]);
- printf("\n");
- }
-
- return 0;
-}
diff --git a/csr.h b/csr.h
deleted file mode 100644
index cc245a5506b9..000000000000
--- a/csr.h
+++ /dev/null
@@ -1,555 +0,0 @@
-/*
- *
- * BlueZ - Bluetooth protocol stack for Linux
- *
- * Copyright (C) 2003-2010 Marcel Holtmann <marcel@holtmann.org>
- *
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <stdint.h>
-#include <termios.h>
-
-#define CSR_VARID_PS_CLR_ALL 0x000b /* valueless */
-#define CSR_VARID_PS_FACTORY_SET 0x000c /* valueless */
-#define CSR_VARID_PS_CLR_ALL_STORES 0x082d /* uint16 */
-#define CSR_VARID_BC01_STATUS 0x2801 /* uint16 */
-#define CSR_VARID_BUILDID 0x2819 /* uint16 */
-#define CSR_VARID_CHIPVER 0x281a /* uint16 */
-#define CSR_VARID_CHIPREV 0x281b /* uint16 */
-#define CSR_VARID_INTERFACE_VERSION 0x2825 /* uint16 */
-#define CSR_VARID_RAND 0x282a /* uint16 */
-#define CSR_VARID_MAX_CRYPT_KEY_LENGTH 0x282c /* uint16 */
-#define CSR_VARID_CHIPANAREV 0x2836 /* uint16 */
-#define CSR_VARID_BUILDID_LOADER 0x2838 /* uint16 */
-#define CSR_VARID_BT_CLOCK 0x2c00 /* uint32 */
-#define CSR_VARID_PS_NEXT 0x3005 /* complex */
-#define CSR_VARID_PS_SIZE 0x3006 /* complex */
-#define CSR_VARID_ADC_RES 0x3007 /* complex */
-#define CSR_VARID_CRYPT_KEY_LENGTH 0x3008 /* complex */
-#define CSR_VARID_PICONET_INSTANCE 0x3009 /* complex */
-#define CSR_VARID_GET_CLR_EVT 0x300a /* complex */
-#define CSR_VARID_GET_NEXT_BUILDDEF 0x300b /* complex */
-#define CSR_VARID_PS_MEMORY_TYPE 0x3012 /* complex */
-#define CSR_VARID_READ_BUILD_NAME 0x301c /* complex */
-#define CSR_VARID_COLD_RESET 0x4001 /* valueless */
-#define CSR_VARID_WARM_RESET 0x4002 /* valueless */
-#define CSR_VARID_COLD_HALT 0x4003 /* valueless */
-#define CSR_VARID_WARM_HALT 0x4004 /* valueless */
-#define CSR_VARID_INIT_BT_STACK 0x4005 /* valueless */
-#define CSR_VARID_ACTIVATE_BT_STACK 0x4006 /* valueless */
-#define CSR_VARID_ENABLE_TX 0x4007 /* valueless */
-#define CSR_VARID_DISABLE_TX 0x4008 /* valueless */
-#define CSR_VARID_RECAL 0x4009 /* valueless */
-#define CSR_VARID_PS_FACTORY_RESTORE 0x400d /* valueless */
-#define CSR_VARID_PS_FACTORY_RESTORE_ALL 0x400e /* valueless */
-#define CSR_VARID_PS_DEFRAG_RESET 0x400f /* valueless */
-#define CSR_VARID_KILL_VM_APPLICATION 0x4010 /* valueless */
-#define CSR_VARID_HOPPING_ON 0x4011 /* valueless */
-#define CSR_VARID_CANCEL_PAGE 0x4012 /* valueless */
-#define CSR_VARID_PS_CLR 0x4818 /* uint16 */
-#define CSR_VARID_MAP_SCO_PCM 0x481c /* uint16 */
-#define CSR_VARID_ADC 0x4829 /* uint16 */
-#define CSR_VARID_SINGLE_CHAN 0x482e /* uint16 */
-#define CSR_VARID_RADIOTEST 0x5004 /* complex */
-#define CSR_VARID_PS_CLR_STORES 0x500c /* complex */
-#define CSR_VARID_NO_VARIABLE 0x6000 /* valueless */
-#define CSR_VARID_CONFIG_UART 0x6802 /* uint16 */
-#define CSR_VARID_PANIC_ARG 0x6805 /* uint16 */
-#define CSR_VARID_FAULT_ARG 0x6806 /* uint16 */
-#define CSR_VARID_MAX_TX_POWER 0x6827 /* int8 */
-#define CSR_VARID_DEFAULT_TX_POWER 0x682b /* int8 */
-#define CSR_VARID_PS 0x7003 /* complex */
-
-#define CSR_PSKEY_BDADDR 0x0001 /* bdaddr / uint16[] = { 0x00A5A5, 0x5b, 0x0002 } */
-#define CSR_PSKEY_COUNTRYCODE 0x0002 /* uint16 */
-#define CSR_PSKEY_CLASSOFDEVICE 0x0003 /* bdcod */
-#define CSR_PSKEY_DEVICE_DRIFT 0x0004 /* uint16 */
-#define CSR_PSKEY_DEVICE_JITTER 0x0005 /* uint16 */
-#define CSR_PSKEY_MAX_ACLS 0x000d /* uint16 */
-#define CSR_PSKEY_MAX_SCOS 0x000e /* uint16 */
-#define CSR_PSKEY_MAX_REMOTE_MASTERS 0x000f /* uint16 */
-#define CSR_PSKEY_ENABLE_MASTERY_WITH_SLAVERY 0x0010 /* bool */
-#define CSR_PSKEY_H_HC_FC_MAX_ACL_PKT_LEN 0x0011 /* uint16 */
-#define CSR_PSKEY_H_HC_FC_MAX_SCO_PKT_LEN 0x0012 /* uint8 */
-#define CSR_PSKEY_H_HC_FC_MAX_ACL_PKTS 0x0013 /* uint16 */
-#define CSR_PSKEY_H_HC_FC_MAX_SCO_PKTS 0x0014 /* uint16 */
-#define CSR_PSKEY_LC_FC_BUFFER_LOW_WATER_MARK 0x0015 /* lc_fc_lwm */
-#define CSR_PSKEY_LC_MAX_TX_POWER 0x0017 /* int16 */
-#define CSR_PSKEY_TX_GAIN_RAMP 0x001d /* uint16 */
-#define CSR_PSKEY_LC_POWER_TABLE 0x001e /* power_setting[] */
-#define CSR_PSKEY_LC_PEER_POWER_PERIOD 0x001f /* TIME */
-#define CSR_PSKEY_LC_FC_POOLS_LOW_WATER_MARK 0x0020 /* lc_fc_lwm */
-#define CSR_PSKEY_LC_DEFAULT_TX_POWER 0x0021 /* int16 */
-#define CSR_PSKEY_LC_RSSI_GOLDEN_RANGE 0x0022 /* uint8 */
-#define CSR_PSKEY_LC_COMBO_DISABLE_PIO_MASK 0x0028 /* uint16[] */
-#define CSR_PSKEY_LC_COMBO_PRIORITY_PIO_MASK 0x0029 /* uint16[] */
-#define CSR_PSKEY_LC_COMBO_DOT11_CHANNEL_PIO_BASE 0x002a /* uint16 */
-#define CSR_PSKEY_LC_COMBO_DOT11_BLOCK_CHANNELS 0x002b /* uint16 */
-#define CSR_PSKEY_LC_MAX_TX_POWER_NO_RSSI 0x002d /* int8 */
-#define CSR_PSKEY_LC_CONNECTION_RX_WINDOW 0x002e /* uint16 */
-#define CSR_PSKEY_LC_COMBO_DOT11_TX_PROTECTION_MODE 0x0030 /* uint16 */
-#define CSR_PSKEY_LC_ENHANCED_POWER_TABLE 0x0031 /* enhanced_power_setting[] */
-#define CSR_PSKEY_LC_WIDEBAND_RSSI_CONFIG 0x0032 /* wideband_rssi_config */
-#define CSR_PSKEY_LC_COMBO_DOT11_PRIORITY_LEAD 0x0033 /* uint16 */
-#define CSR_PSKEY_BT_CLOCK_INIT 0x0034 /* uint32 */
-#define CSR_PSKEY_TX_MR_MOD_DELAY 0x0038 /* uint8 */
-#define CSR_PSKEY_RX_MR_SYNC_TIMING 0x0039 /* uint16 */
-#define CSR_PSKEY_RX_MR_SYNC_CONFIG 0x003a /* uint16 */
-#define CSR_PSKEY_LC_LOST_SYNC_SLOTS 0x003b /* uint16 */
-#define CSR_PSKEY_RX_MR_SAMP_CONFIG 0x003c /* uint16 */
-#define CSR_PSKEY_AGC_HYST_LEVELS 0x003d /* agc_hyst_config */
-#define CSR_PSKEY_RX_LEVEL_LOW_SIGNAL 0x003e /* uint16 */
-#define CSR_PSKEY_AGC_IQ_LVL_VALUES 0x003f /* IQ_LVL_VAL[] */
-#define CSR_PSKEY_MR_FTRIM_OFFSET_12DB 0x0040 /* uint16 */
-#define CSR_PSKEY_MR_FTRIM_OFFSET_6DB 0x0041 /* uint16 */
-#define CSR_PSKEY_NO_CAL_ON_BOOT 0x0042 /* bool */
-#define CSR_PSKEY_RSSI_HI_TARGET 0x0043 /* uint8 */
-#define CSR_PSKEY_PREFERRED_MIN_ATTENUATION 0x0044 /* uint8 */
-#define CSR_PSKEY_LC_COMBO_DOT11_PRIORITY_OVERRIDE 0x0045 /* bool */
-#define CSR_PSKEY_LC_MULTISLOT_HOLDOFF 0x0047 /* TIME */
-#define CSR_PSKEY_FREE_KEY_PIGEON_HOLE 0x00c9 /* uint16 */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR0 0x00ca /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR1 0x00cb /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR2 0x00cc /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR3 0x00cd /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR4 0x00ce /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR5 0x00cf /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR6 0x00d0 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR7 0x00d1 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR8 0x00d2 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR9 0x00d3 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR10 0x00d4 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR11 0x00d5 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR12 0x00d6 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR13 0x00d7 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR14 0x00d8 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LINK_KEY_BD_ADDR15 0x00d9 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_ENC_KEY_LMIN 0x00da /* uint16 */
-#define CSR_PSKEY_ENC_KEY_LMAX 0x00db /* uint16 */
-#define CSR_PSKEY_LOCAL_SUPPORTED_FEATURES 0x00ef /* uint16[] = { 0xffff, 0xfe8f, 0xf99b, 0x8000 }*/
-#define CSR_PSKEY_LM_USE_UNIT_KEY 0x00f0 /* bool */
-#define CSR_PSKEY_HCI_NOP_DISABLE 0x00f2 /* bool */
-#define CSR_PSKEY_LM_MAX_EVENT_FILTERS 0x00f4 /* uint8 */
-#define CSR_PSKEY_LM_USE_ENC_MODE_BROADCAST 0x00f5 /* bool */
-#define CSR_PSKEY_LM_TEST_SEND_ACCEPTED_TWICE 0x00f6 /* bool */
-#define CSR_PSKEY_LM_MAX_PAGE_HOLD_TIME 0x00f7 /* uint16 */
-#define CSR_PSKEY_AFH_ADAPTATION_RESPONSE_TIME 0x00f8 /* uint16 */
-#define CSR_PSKEY_AFH_OPTIONS 0x00f9 /* uint16 */
-#define CSR_PSKEY_AFH_RSSI_RUN_PERIOD 0x00fa /* uint16 */
-#define CSR_PSKEY_AFH_REENABLE_CHANNEL_TIME 0x00fb /* uint16 */
-#define CSR_PSKEY_NO_DROP_ON_ACR_MS_FAIL 0x00fc /* bool */
-#define CSR_PSKEY_MAX_PRIVATE_KEYS 0x00fd /* uint8 */
-#define CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR0 0x00fe /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR1 0x00ff /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR2 0x0100 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR3 0x0101 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR4 0x0102 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR5 0x0103 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR6 0x0104 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_PRIVATE_LINK_KEY_BD_ADDR7 0x0105 /* LM_LINK_KEY_BD_ADDR_T */
-#define CSR_PSKEY_LOCAL_SUPPORTED_COMMANDS 0x0106 /* uint16[] = { 0xffff, 0x03ff, 0xfffe, 0xffff, 0xffff, 0xffff, 0x0ff3, 0xfff8, 0x003f } */
-#define CSR_PSKEY_LM_MAX_ABSENCE_INDEX 0x0107 /* uint8 */
-#define CSR_PSKEY_DEVICE_NAME 0x0108 /* uint16[] */
-#define CSR_PSKEY_AFH_RSSI_THRESHOLD 0x0109 /* uint16 */
-#define CSR_PSKEY_LM_CASUAL_SCAN_INTERVAL 0x010a /* uint16 */
-#define CSR_PSKEY_AFH_MIN_MAP_CHANGE 0x010b /* uint16[] */
-#define CSR_PSKEY_AFH_RSSI_LP_RUN_PERIOD 0x010c /* uint16 */
-#define CSR_PSKEY_HCI_LMP_LOCAL_VERSION 0x010d /* uint16 */
-#define CSR_PSKEY_LMP_REMOTE_VERSION 0x010e /* uint8 */
-#define CSR_PSKEY_HOLD_ERROR_MESSAGE_NUMBER 0x0113 /* uint16 */
-#define CSR_PSKEY_DFU_ATTRIBUTES 0x0136 /* uint8 */
-#define CSR_PSKEY_DFU_DETACH_TO 0x0137 /* uint16 */
-#define CSR_PSKEY_DFU_TRANSFER_SIZE 0x0138 /* uint16 */
-#define CSR_PSKEY_DFU_ENABLE 0x0139 /* bool */
-#define CSR_PSKEY_DFU_LIN_REG_ENABLE 0x013a /* bool */
-#define CSR_PSKEY_DFUENC_VMAPP_PK_MODULUS_MSB 0x015e /* uint16[] */
-#define CSR_PSKEY_DFUENC_VMAPP_PK_MODULUS_LSB 0x015f /* uint16[] */
-#define CSR_PSKEY_DFUENC_VMAPP_PK_M_DASH 0x0160 /* uint16 */
-#define CSR_PSKEY_DFUENC_VMAPP_PK_R2N_MSB 0x0161 /* uint16[] */
-#define CSR_PSKEY_DFUENC_VMAPP_PK_R2N_LSB 0x0162 /* uint16[] */
-#define CSR_PSKEY_BCSP_LM_PS_BLOCK 0x0192 /* BCSP_LM_PS_BLOCK */
-#define CSR_PSKEY_HOSTIO_FC_PS_BLOCK 0x0193 /* HOSTIO_FC_PS_BLOCK */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO0 0x0194 /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO1 0x0195 /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO2 0x0196 /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO3 0x0197 /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO4 0x0198 /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO5 0x0199 /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO6 0x019a /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO7 0x019b /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO8 0x019c /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO9 0x019d /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO10 0x019e /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO11 0x019f /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO12 0x01a0 /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO13 0x01a1 /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO14 0x01a2 /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_PROTOCOL_INFO15 0x01a3 /* PROTOCOL_INFO */
-#define CSR_PSKEY_HOSTIO_UART_RESET_TIMEOUT 0x01a4 /* TIME */
-#define CSR_PSKEY_HOSTIO_USE_HCI_EXTN 0x01a5 /* bool */
-#define CSR_PSKEY_HOSTIO_USE_HCI_EXTN_CCFC 0x01a6 /* bool */
-#define CSR_PSKEY_HOSTIO_HCI_EXTN_PAYLOAD_SIZE 0x01a7 /* uint16 */
-#define CSR_PSKEY_BCSP_LM_CNF_CNT_LIMIT 0x01aa /* uint16 */
-#define CSR_PSKEY_HOSTIO_MAP_SCO_PCM 0x01ab /* bool */
-#define CSR_PSKEY_HOSTIO_AWKWARD_PCM_SYNC 0x01ac /* bool */
-#define CSR_PSKEY_HOSTIO_BREAK_POLL_PERIOD 0x01ad /* TIME */
-#define CSR_PSKEY_HOSTIO_MIN_UART_HCI_SCO_SIZE 0x01ae /* uint16 */
-#define CSR_PSKEY_HOSTIO_MAP_SCO_CODEC 0x01b0 /* bool */
-#define CSR_PSKEY_PCM_CVSD_TX_HI_FREQ_BOOST 0x01b1 /* uint16 */
-#define CSR_PSKEY_PCM_CVSD_RX_HI_FREQ_BOOST 0x01b2 /* uint16 */
-#define CSR_PSKEY_PCM_CONFIG32 0x01b3 /* uint32 */
-#define CSR_PSKEY_USE_OLD_BCSP_LE 0x01b4 /* uint16 */
-#define CSR_PSKEY_PCM_CVSD_USE_NEW_FILTER 0x01b5 /* bool */
-#define CSR_PSKEY_PCM_FORMAT 0x01b6 /* uint16 */
-#define CSR_PSKEY_CODEC_OUT_GAIN 0x01b7 /* uint16 */
-#define CSR_PSKEY_CODEC_IN_GAIN 0x01b8 /* uint16 */
-#define CSR_PSKEY_CODEC_PIO 0x01b9 /* uint16 */
-#define CSR_PSKEY_PCM_LOW_JITTER_CONFIG 0x01ba /* uint32 */
-#define CSR_PSKEY_HOSTIO_SCO_PCM_THRESHOLDS 0x01bb /* uint16[] */
-#define CSR_PSKEY_HOSTIO_SCO_HCI_THRESHOLDS 0x01bc /* uint16[] */
-#define CSR_PSKEY_HOSTIO_MAP_SCO_PCM_SLOT 0x01bd /* uint16 */
-#define CSR_PSKEY_UART_BAUDRATE 0x01be /* uint16 */
-#define CSR_PSKEY_UART_CONFIG_BCSP 0x01bf /* uint16 */
-#define CSR_PSKEY_UART_CONFIG_H4 0x01c0 /* uint16 */
-#define CSR_PSKEY_UART_CONFIG_H5 0x01c1 /* uint16 */
-#define CSR_PSKEY_UART_CONFIG_USR 0x01c2 /* uint16 */
-#define CSR_PSKEY_UART_TX_CRCS 0x01c3 /* bool */
-#define CSR_PSKEY_UART_ACK_TIMEOUT 0x01c4 /* uint16 */
-#define CSR_PSKEY_UART_TX_MAX_ATTEMPTS 0x01c5 /* uint16 */
-#define CSR_PSKEY_UART_TX_WINDOW_SIZE 0x01c6 /* uint16 */
-#define CSR_PSKEY_UART_HOST_WAKE 0x01c7 /* uint16[] */
-#define CSR_PSKEY_HOSTIO_THROTTLE_TIMEOUT 0x01c8 /* TIME */
-#define CSR_PSKEY_PCM_ALWAYS_ENABLE 0x01c9 /* bool */
-#define CSR_PSKEY_UART_HOST_WAKE_SIGNAL 0x01ca /* uint16 */
-#define CSR_PSKEY_UART_CONFIG_H4DS 0x01cb /* uint16 */
-#define CSR_PSKEY_H4DS_WAKE_DURATION 0x01cc /* uint16 */
-#define CSR_PSKEY_H4DS_MAXWU 0x01cd /* uint16 */
-#define CSR_PSKEY_H4DS_LE_TIMER_PERIOD 0x01cf /* uint16 */
-#define CSR_PSKEY_H4DS_TWU_TIMER_PERIOD 0x01d0 /* uint16 */
-#define CSR_PSKEY_H4DS_UART_IDLE_TIMER_PERIOD 0x01d1 /* uint16 */
-#define CSR_PSKEY_ANA_FTRIM 0x01f6 /* uint16 */
-#define CSR_PSKEY_WD_TIMEOUT 0x01f7 /* TIME */
-#define CSR_PSKEY_WD_PERIOD 0x01f8 /* TIME */
-#define CSR_PSKEY_HOST_INTERFACE 0x01f9 /* phys_bus */
-#define CSR_PSKEY_HQ_HOST_TIMEOUT 0x01fb /* TIME */
-#define CSR_PSKEY_HQ_ACTIVE 0x01fc /* bool */
-#define CSR_PSKEY_BCCMD_SECURITY_ACTIVE 0x01fd /* bool */
-#define CSR_PSKEY_ANA_FREQ 0x01fe /* uint16 */
-#define CSR_PSKEY_PIO_PROTECT_MASK 0x0202 /* uint16 */
-#define CSR_PSKEY_PMALLOC_SIZES 0x0203 /* uint16[] */
-#define CSR_PSKEY_UART_BAUD_RATE 0x0204 /* uint16 */
-#define CSR_PSKEY_UART_CONFIG 0x0205 /* uint16 */
-#define CSR_PSKEY_STUB 0x0207 /* uint16 */
-#define CSR_PSKEY_TXRX_PIO_CONTROL 0x0209 /* uint16 */
-#define CSR_PSKEY_ANA_RX_LEVEL 0x020b /* uint16 */
-#define CSR_PSKEY_ANA_RX_FTRIM 0x020c /* uint16 */
-#define CSR_PSKEY_PSBC_DATA_VERSION 0x020d /* uint16 */
-#define CSR_PSKEY_PCM0_ATTENUATION 0x020f /* uint16 */
-#define CSR_PSKEY_LO_LVL_MAX 0x0211 /* uint16 */
-#define CSR_PSKEY_LO_ADC_AMPL_MIN 0x0212 /* uint16 */
-#define CSR_PSKEY_LO_ADC_AMPL_MAX 0x0213 /* uint16 */
-#define CSR_PSKEY_IQ_TRIM_CHANNEL 0x0214 /* uint16 */
-#define CSR_PSKEY_IQ_TRIM_GAIN 0x0215 /* uint16 */
-#define CSR_PSKEY_IQ_TRIM_ENABLE 0x0216 /* iq_trim_enable_flag */
-#define CSR_PSKEY_TX_OFFSET_HALF_MHZ 0x0217 /* int16 */
-#define CSR_PSKEY_GBL_MISC_ENABLES 0x0221 /* uint16 */
-#define CSR_PSKEY_UART_SLEEP_TIMEOUT 0x0222 /* uint16 */
-#define CSR_PSKEY_DEEP_SLEEP_STATE 0x0229 /* deep_sleep_state */
-#define CSR_PSKEY_IQ_ENABLE_PHASE_TRIM 0x022d /* bool */
-#define CSR_PSKEY_HCI_HANDLE_FREEZE_PERIOD 0x0237 /* TIME */
-#define CSR_PSKEY_MAX_FROZEN_HCI_HANDLES 0x0238 /* uint16 */
-#define CSR_PSKEY_PAGETABLE_DESTRUCTION_DELAY 0x0239 /* TIME */
-#define CSR_PSKEY_IQ_TRIM_PIO_SETTINGS 0x023a /* uint8 */
-#define CSR_PSKEY_USE_EXTERNAL_CLOCK 0x023b /* bool */
-#define CSR_PSKEY_DEEP_SLEEP_WAKE_CTS 0x023c /* uint16 */
-#define CSR_PSKEY_FC_HC2H_FLUSH_DELAY 0x023d /* TIME */
-#define CSR_PSKEY_RX_HIGHSIDE 0x023e /* bool */
-#define CSR_PSKEY_TX_PRE_LVL 0x0240 /* uint8 */
-#define CSR_PSKEY_RX_SINGLE_ENDED 0x0242 /* bool */
-#define CSR_PSKEY_TX_FILTER_CONFIG 0x0243 /* uint32 */
-#define CSR_PSKEY_CLOCK_REQUEST_ENABLE 0x0246 /* uint16 */
-#define CSR_PSKEY_RX_MIN_ATTEN 0x0249 /* uint16 */
-#define CSR_PSKEY_XTAL_TARGET_AMPLITUDE 0x024b /* uint8 */
-#define CSR_PSKEY_PCM_MIN_CPU_CLOCK 0x024d /* uint16 */
-#define CSR_PSKEY_HOST_INTERFACE_PIO_USB 0x0250 /* uint16 */
-#define CSR_PSKEY_CPU_IDLE_MODE 0x0251 /* cpu_idle_mode */
-#define CSR_PSKEY_DEEP_SLEEP_CLEAR_RTS 0x0252 /* bool */
-#define CSR_PSKEY_RF_RESONANCE_TRIM 0x0254 /* uint16 */
-#define CSR_PSKEY_DEEP_SLEEP_PIO_WAKE 0x0255 /* uint16 */
-#define CSR_PSKEY_DRAIN_BORE_TIMERS 0x0256 /* uint32[] */
-#define CSR_PSKEY_DRAIN_TX_POWER_BASE 0x0257 /* uint16 */
-#define CSR_PSKEY_MODULE_ID 0x0259 /* uint32 */
-#define CSR_PSKEY_MODULE_DESIGN 0x025a /* uint16 */
-#define CSR_PSKEY_MODULE_SECURITY_CODE 0x025c /* uint16[] */
-#define CSR_PSKEY_VM_DISABLE 0x025d /* bool */
-#define CSR_PSKEY_MOD_MANUF0 0x025e /* uint16[] */
-#define CSR_PSKEY_MOD_MANUF1 0x025f /* uint16[] */
-#define CSR_PSKEY_MOD_MANUF2 0x0260 /* uint16[] */
-#define CSR_PSKEY_MOD_MANUF3 0x0261 /* uint16[] */
-#define CSR_PSKEY_MOD_MANUF4 0x0262 /* uint16[] */
-#define CSR_PSKEY_MOD_MANUF5 0x0263 /* uint16[] */
-#define CSR_PSKEY_MOD_MANUF6 0x0264 /* uint16[] */
-#define CSR_PSKEY_MOD_MANUF7 0x0265 /* uint16[] */
-#define CSR_PSKEY_MOD_MANUF8 0x0266 /* uint16[] */
-#define CSR_PSKEY_MOD_MANUF9 0x0267 /* uint16[] */
-#define CSR_PSKEY_DUT_VM_DISABLE 0x0268 /* bool */
-#define CSR_PSKEY_USR0 0x028a /* uint16[] */
-#define CSR_PSKEY_USR1 0x028b /* uint16[] */
-#define CSR_PSKEY_USR2 0x028c /* uint16[] */
-#define CSR_PSKEY_USR3 0x028d /* uint16[] */
-#define CSR_PSKEY_USR4 0x028e /* uint16[] */
-#define CSR_PSKEY_USR5 0x028f /* uint16[] */
-#define CSR_PSKEY_USR6 0x0290 /* uint16[] */
-#define CSR_PSKEY_USR7 0x0291 /* uint16[] */
-#define CSR_PSKEY_USR8 0x0292 /* uint16[] */
-#define CSR_PSKEY_USR9 0x0293 /* uint16[] */
-#define CSR_PSKEY_USR10 0x0294 /* uint16[] */
-#define CSR_PSKEY_USR11 0x0295 /* uint16[] */
-#define CSR_PSKEY_USR12 0x0296 /* uint16[] */
-#define CSR_PSKEY_USR13 0x0297 /* uint16[] */
-#define CSR_PSKEY_USR14 0x0298 /* uint16[] */
-#define CSR_PSKEY_USR15 0x0299 /* uint16[] */
-#define CSR_PSKEY_USR16 0x029a /* uint16[] */
-#define CSR_PSKEY_USR17 0x029b /* uint16[] */
-#define CSR_PSKEY_USR18 0x029c /* uint16[] */
-#define CSR_PSKEY_USR19 0x029d /* uint16[] */
-#define CSR_PSKEY_USR20 0x029e /* uint16[] */
-#define CSR_PSKEY_USR21 0x029f /* uint16[] */
-#define CSR_PSKEY_USR22 0x02a0 /* uint16[] */
-#define CSR_PSKEY_USR23 0x02a1 /* uint16[] */
-#define CSR_PSKEY_USR24 0x02a2 /* uint16[] */
-#define CSR_PSKEY_USR25 0x02a3 /* uint16[] */
-#define CSR_PSKEY_USR26 0x02a4 /* uint16[] */
-#define CSR_PSKEY_USR27 0x02a5 /* uint16[] */
-#define CSR_PSKEY_USR28 0x02a6 /* uint16[] */
-#define CSR_PSKEY_USR29 0x02a7 /* uint16[] */
-#define CSR_PSKEY_USR30 0x02a8 /* uint16[] */
-#define CSR_PSKEY_USR31 0x02a9 /* uint16[] */
-#define CSR_PSKEY_USR32 0x02aa /* uint16[] */
-#define CSR_PSKEY_USR33 0x02ab /* uint16[] */
-#define CSR_PSKEY_USR34 0x02ac /* uint16[] */
-#define CSR_PSKEY_USR35 0x02ad /* uint16[] */
-#define CSR_PSKEY_USR36 0x02ae /* uint16[] */
-#define CSR_PSKEY_USR37 0x02af /* uint16[] */
-#define CSR_PSKEY_USR38 0x02b0 /* uint16[] */
-#define CSR_PSKEY_USR39 0x02b1 /* uint16[] */
-#define CSR_PSKEY_USR40 0x02b2 /* uint16[] */
-#define CSR_PSKEY_USR41 0x02b3 /* uint16[] */
-#define CSR_PSKEY_USR42 0x02b4 /* uint16[] */
-#define CSR_PSKEY_USR43 0x02b5 /* uint16[] */
-#define CSR_PSKEY_USR44 0x02b6 /* uint16[] */
-#define CSR_PSKEY_USR45 0x02b7 /* uint16[] */
-#define CSR_PSKEY_USR46 0x02b8 /* uint16[] */
-#define CSR_PSKEY_USR47 0x02b9 /* uint16[] */
-#define CSR_PSKEY_USR48 0x02ba /* uint16[] */
-#define CSR_PSKEY_USR49 0x02bb /* uint16[] */
-#define CSR_PSKEY_USB_VERSION 0x02bc /* uint16 */
-#define CSR_PSKEY_USB_DEVICE_CLASS_CODES 0x02bd /* usbclass */
-#define CSR_PSKEY_USB_VENDOR_ID 0x02be /* uint16 */
-#define CSR_PSKEY_USB_PRODUCT_ID 0x02bf /* uint16 */
-#define CSR_PSKEY_USB_MANUF_STRING 0x02c1 /* unicodestring */
-#define CSR_PSKEY_USB_PRODUCT_STRING 0x02c2 /* unicodestring */
-#define CSR_PSKEY_USB_SERIAL_NUMBER_STRING 0x02c3 /* unicodestring */
-#define CSR_PSKEY_USB_CONFIG_STRING 0x02c4 /* unicodestring */
-#define CSR_PSKEY_USB_ATTRIBUTES 0x02c5 /* uint8 */
-#define CSR_PSKEY_USB_MAX_POWER 0x02c6 /* uint16 */
-#define CSR_PSKEY_USB_BT_IF_CLASS_CODES 0x02c7 /* usbclass */
-#define CSR_PSKEY_USB_LANGID 0x02c9 /* uint16 */
-#define CSR_PSKEY_USB_DFU_CLASS_CODES 0x02ca /* usbclass */
-#define CSR_PSKEY_USB_DFU_PRODUCT_ID 0x02cb /* uint16 */
-#define CSR_PSKEY_USB_PIO_DETACH 0x02ce /* uint16 */
-#define CSR_PSKEY_USB_PIO_WAKEUP 0x02cf /* uint16 */
-#define CSR_PSKEY_USB_PIO_PULLUP 0x02d0 /* uint16 */
-#define CSR_PSKEY_USB_PIO_VBUS 0x02d1 /* uint16 */
-#define CSR_PSKEY_USB_PIO_WAKE_TIMEOUT 0x02d2 /* uint16 */
-#define CSR_PSKEY_USB_PIO_RESUME 0x02d3 /* uint16 */
-#define CSR_PSKEY_USB_BT_SCO_IF_CLASS_CODES 0x02d4 /* usbclass */
-#define CSR_PSKEY_USB_SUSPEND_PIO_LEVEL 0x02d5 /* uint16 */
-#define CSR_PSKEY_USB_SUSPEND_PIO_DIR 0x02d6 /* uint16 */
-#define CSR_PSKEY_USB_SUSPEND_PIO_MASK 0x02d7 /* uint16 */
-#define CSR_PSKEY_USB_ENDPOINT_0_MAX_PACKET_SIZE 0x02d8 /* uint8 */
-#define CSR_PSKEY_USB_CONFIG 0x02d9 /* uint16 */
-#define CSR_PSKEY_RADIOTEST_ATTEN_INIT 0x0320 /* uint16 */
-#define CSR_PSKEY_RADIOTEST_FIRST_TRIM_TIME 0x0326 /* TIME */
-#define CSR_PSKEY_RADIOTEST_SUBSEQUENT_TRIM_TIME 0x0327 /* TIME */
-#define CSR_PSKEY_RADIOTEST_LO_LVL_TRIM_ENABLE 0x0328 /* bool */
-#define CSR_PSKEY_RADIOTEST_DISABLE_MODULATION 0x032c /* bool */
-#define CSR_PSKEY_RFCOMM_FCON_THRESHOLD 0x0352 /* uint16 */
-#define CSR_PSKEY_RFCOMM_FCOFF_THRESHOLD 0x0353 /* uint16 */
-#define CSR_PSKEY_IPV6_STATIC_ADDR 0x0354 /* uint16[] */
-#define CSR_PSKEY_IPV4_STATIC_ADDR 0x0355 /* uint32 */
-#define CSR_PSKEY_IPV6_STATIC_PREFIX_LEN 0x0356 /* uint8 */
-#define CSR_PSKEY_IPV6_STATIC_ROUTER_ADDR 0x0357 /* uint16[] */
-#define CSR_PSKEY_IPV4_STATIC_SUBNET_MASK 0x0358 /* uint32 */
-#define CSR_PSKEY_IPV4_STATIC_ROUTER_ADDR 0x0359 /* uint32 */
-#define CSR_PSKEY_MDNS_NAME 0x035a /* char[] */
-#define CSR_PSKEY_FIXED_PIN 0x035b /* uint8[] */
-#define CSR_PSKEY_MDNS_PORT 0x035c /* uint16 */
-#define CSR_PSKEY_MDNS_TTL 0x035d /* uint8 */
-#define CSR_PSKEY_MDNS_IPV4_ADDR 0x035e /* uint32 */
-#define CSR_PSKEY_ARP_CACHE_TIMEOUT 0x035f /* uint16 */
-#define CSR_PSKEY_HFP_POWER_TABLE 0x0360 /* uint16[] */
-#define CSR_PSKEY_DRAIN_BORE_TIMER_COUNTERS 0x03e7 /* uint32[] */
-#define CSR_PSKEY_DRAIN_BORE_COUNTERS 0x03e6 /* uint32[] */
-#define CSR_PSKEY_LOOP_FILTER_TRIM 0x03e4 /* uint16 */
-#define CSR_PSKEY_DRAIN_BORE_CURRENT_PEAK 0x03e3 /* uint32[] */
-#define CSR_PSKEY_VM_E2_CACHE_LIMIT 0x03e2 /* uint16 */
-#define CSR_PSKEY_FORCE_16MHZ_REF_PIO 0x03e1 /* uint16 */
-#define CSR_PSKEY_CDMA_LO_REF_LIMITS 0x03df /* uint16 */
-#define CSR_PSKEY_CDMA_LO_ERROR_LIMITS 0x03de /* uint16 */
-#define CSR_PSKEY_CLOCK_STARTUP_DELAY 0x03dd /* uint16 */
-#define CSR_PSKEY_DEEP_SLEEP_CORRECTION_FACTOR 0x03dc /* int16 */
-#define CSR_PSKEY_TEMPERATURE_CALIBRATION 0x03db /* temperature_calibration */
-#define CSR_PSKEY_TEMPERATURE_VS_DELTA_INTERNAL_PA 0x03da /* temperature_calibration[] */
-#define CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_PRE_LVL 0x03d9 /* temperature_calibration[] */
-#define CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB 0x03d8 /* temperature_calibration[] */
-#define CSR_PSKEY_TEMPERATURE_VS_DELTA_ANA_FTRIM 0x03d7 /* temperature_calibration[] */
-#define CSR_PSKEY_TEST_DELTA_OFFSET 0x03d6 /* uint16 */
-#define CSR_PSKEY_RX_DYNAMIC_LVL_OFFSET 0x03d4 /* uint16 */
-#define CSR_PSKEY_TEST_FORCE_OFFSET 0x03d3 /* bool */
-#define CSR_PSKEY_RF_TRAP_BAD_DIVISION_RATIOS 0x03cf /* uint16 */
-#define CSR_PSKEY_RADIOTEST_CDMA_LO_REF_LIMITS 0x03ce /* uint16 */
-#define CSR_PSKEY_INITIAL_BOOTMODE 0x03cd /* int16 */
-#define CSR_PSKEY_ONCHIP_HCI_CLIENT 0x03cc /* bool */
-#define CSR_PSKEY_RX_ATTEN_BACKOFF 0x03ca /* uint16 */
-#define CSR_PSKEY_RX_ATTEN_UPDATE_RATE 0x03c9 /* uint16 */
-#define CSR_PSKEY_SYNTH_TXRX_THRESHOLDS 0x03c7 /* uint16 */
-#define CSR_PSKEY_MIN_WAIT_STATES 0x03c6 /* uint16 */
-#define CSR_PSKEY_RSSI_CORRECTION 0x03c5 /* int8 */
-#define CSR_PSKEY_SCHED_THROTTLE_TIMEOUT 0x03c4 /* TIME */
-#define CSR_PSKEY_DEEP_SLEEP_USE_EXTERNAL_CLOCK 0x03c3 /* bool */
-#define CSR_PSKEY_TRIM_RADIO_FILTERS 0x03c2 /* uint16 */
-#define CSR_PSKEY_TRANSMIT_OFFSET 0x03c1 /* int16 */
-#define CSR_PSKEY_USB_VM_CONTROL 0x03c0 /* bool */
-#define CSR_PSKEY_MR_ANA_RX_FTRIM 0x03bf /* uint16 */
-#define CSR_PSKEY_I2C_CONFIG 0x03be /* uint16 */
-#define CSR_PSKEY_IQ_LVL_RX 0x03bd /* uint16 */
-#define CSR_PSKEY_MR_TX_FILTER_CONFIG 0x03bb /* uint32 */
-#define CSR_PSKEY_MR_TX_CONFIG2 0x03ba /* uint16 */
-#define CSR_PSKEY_USB_DONT_RESET_BOOTMODE_ON_HOST_RESET 0x03b9 /* bool */
-#define CSR_PSKEY_LC_USE_THROTTLING 0x03b8 /* bool */
-#define CSR_PSKEY_CHARGER_TRIM 0x03b7 /* uint16 */
-#define CSR_PSKEY_CLOCK_REQUEST_FEATURES 0x03b6 /* uint16 */
-#define CSR_PSKEY_TRANSMIT_OFFSET_CLASS1 0x03b4 /* int16 */
-#define CSR_PSKEY_TX_AVOID_PA_CLASS1_PIO 0x03b3 /* uint16 */
-#define CSR_PSKEY_MR_PIO_CONFIG 0x03b2 /* uint16 */
-#define CSR_PSKEY_UART_CONFIG2 0x03b1 /* uint8 */
-#define CSR_PSKEY_CLASS1_IQ_LVL 0x03b0 /* uint16 */
-#define CSR_PSKEY_CLASS1_TX_CONFIG2 0x03af /* uint16 */
-#define CSR_PSKEY_TEMPERATURE_VS_DELTA_INTERNAL_PA_CLASS1 0x03ae /* temperature_calibration[] */
-#define CSR_PSKEY_TEMPERATURE_VS_DELTA_EXTERNAL_PA_CLASS1 0x03ad /* temperature_calibration[] */
-#define CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_PRE_LVL_MR 0x03ac /* temperature_calibration[] */
-#define CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB_MR_HEADER 0x03ab /* temperature_calibration[] */
-#define CSR_PSKEY_TEMPERATURE_VS_DELTA_TX_BB_MR_PAYLOAD 0x03aa /* temperature_calibration[] */
-#define CSR_PSKEY_RX_MR_EQ_TAPS 0x03a9 /* uint16[] */
-#define CSR_PSKEY_TX_PRE_LVL_CLASS1 0x03a8 /* uint8 */
-#define CSR_PSKEY_ANALOGUE_ATTENUATOR 0x03a7 /* bool */
-#define CSR_PSKEY_MR_RX_FILTER_TRIM 0x03a6 /* uint16 */
-#define CSR_PSKEY_MR_RX_FILTER_RESPONSE 0x03a5 /* int16[] */
-#define CSR_PSKEY_PIO_WAKEUP_STATE 0x039f /* uint16 */
-#define CSR_PSKEY_MR_TX_IF_ATTEN_OFF_TEMP 0x0394 /* int16 */
-#define CSR_PSKEY_LO_DIV_LATCH_BYPASS 0x0393 /* bool */
-#define CSR_PSKEY_LO_VCO_STANDBY 0x0392 /* bool */
-#define CSR_PSKEY_SLOW_CLOCK_FILTER_SHIFT 0x0391 /* uint16 */
-#define CSR_PSKEY_SLOW_CLOCK_FILTER_DIVIDER 0x0390 /* uint16 */
-#define CSR_PSKEY_USB_ATTRIBUTES_POWER 0x03f2 /* bool */
-#define CSR_PSKEY_USB_ATTRIBUTES_WAKEUP 0x03f3 /* bool */
-#define CSR_PSKEY_DFU_ATTRIBUTES_MANIFESTATION_TOLERANT 0x03f4 /* bool */
-#define CSR_PSKEY_DFU_ATTRIBUTES_CAN_UPLOAD 0x03f5 /* bool */
-#define CSR_PSKEY_DFU_ATTRIBUTES_CAN_DOWNLOAD 0x03f6 /* bool */
-#define CSR_PSKEY_UART_CONFIG_STOP_BITS 0x03fc /* bool */
-#define CSR_PSKEY_UART_CONFIG_PARITY_BIT 0x03fd /* uint16 */
-#define CSR_PSKEY_UART_CONFIG_FLOW_CTRL_EN 0x03fe /* bool */
-#define CSR_PSKEY_UART_CONFIG_RTS_AUTO_EN 0x03ff /* bool */
-#define CSR_PSKEY_UART_CONFIG_RTS 0x0400 /* bool */
-#define CSR_PSKEY_UART_CONFIG_TX_ZERO_EN 0x0401 /* bool */
-#define CSR_PSKEY_UART_CONFIG_NON_BCSP_EN 0x0402 /* bool */
-#define CSR_PSKEY_UART_CONFIG_RX_RATE_DELAY 0x0403 /* uint16 */
-#define CSR_PSKEY_UART_SEQ_TIMEOUT 0x0405 /* uint16 */
-#define CSR_PSKEY_UART_SEQ_RETRIES 0x0406 /* uint16 */
-#define CSR_PSKEY_UART_SEQ_WINSIZE 0x0407 /* uint16 */
-#define CSR_PSKEY_UART_USE_CRC_ON_TX 0x0408 /* bool */
-#define CSR_PSKEY_UART_HOST_INITIAL_STATE 0x0409 /* hwakeup_state */
-#define CSR_PSKEY_UART_HOST_ATTENTION_SPAN 0x040a /* uint16 */
-#define CSR_PSKEY_UART_HOST_WAKEUP_TIME 0x040b /* uint16 */
-#define CSR_PSKEY_UART_HOST_WAKEUP_WAIT 0x040c /* uint16 */
-#define CSR_PSKEY_BCSP_LM_MODE 0x0410 /* uint16 */
-#define CSR_PSKEY_BCSP_LM_SYNC_RETRIES 0x0411 /* uint16 */
-#define CSR_PSKEY_BCSP_LM_TSHY 0x0412 /* uint16 */
-#define CSR_PSKEY_UART_DFU_CONFIG_STOP_BITS 0x0417 /* bool */
-#define CSR_PSKEY_UART_DFU_CONFIG_PARITY_BIT 0x0418 /* uint16 */
-#define CSR_PSKEY_UART_DFU_CONFIG_FLOW_CTRL_EN 0x0419 /* bool */
-#define CSR_PSKEY_UART_DFU_CONFIG_RTS_AUTO_EN 0x041a /* bool */
-#define CSR_PSKEY_UART_DFU_CONFIG_RTS 0x041b /* bool */
-#define CSR_PSKEY_UART_DFU_CONFIG_TX_ZERO_EN 0x041c /* bool */
-#define CSR_PSKEY_UART_DFU_CONFIG_NON_BCSP_EN 0x041d /* bool */
-#define CSR_PSKEY_UART_DFU_CONFIG_RX_RATE_DELAY 0x041e /* uint16 */
-#define CSR_PSKEY_AMUX_AIO0 0x041f /* ana_amux_sel */
-#define CSR_PSKEY_AMUX_AIO1 0x0420 /* ana_amux_sel */
-#define CSR_PSKEY_AMUX_AIO2 0x0421 /* ana_amux_sel */
-#define CSR_PSKEY_AMUX_AIO3 0x0422 /* ana_amux_sel */
-#define CSR_PSKEY_LOCAL_NAME_SIMPLIFIED 0x0423 /* local_name_complete */
-#define CSR_PSKEY_EXTENDED_STUB 0x2001 /* uint16 */
-
-char *csr_builddeftostr(uint16_t def);
-char *csr_buildidtostr(uint16_t id);
-char *csr_chipvertostr(uint16_t ver, uint16_t rev);
-char *csr_pskeytostr(uint16_t pskey);
-char *csr_pskeytoval(uint16_t pskey);
-
-int csr_open_hci(char *device);
-int csr_read_hci(uint16_t varid, uint8_t *value, uint16_t length);
-int csr_write_hci(uint16_t varid, uint8_t *value, uint16_t length);
-void csr_close_hci(void);
-
-int csr_open_usb(char *device);
-int csr_read_usb(uint16_t varid, uint8_t *value, uint16_t length);
-int csr_write_usb(uint16_t varid, uint8_t *value, uint16_t length);
-void csr_close_usb(void);
-
-int csr_open_bcsp(char *device, speed_t bcsp_rate);
-int csr_read_bcsp(uint16_t varid, uint8_t *value, uint16_t length);
-int csr_write_bcsp(uint16_t varid, uint8_t *value, uint16_t length);
-void csr_close_bcsp(void);
-
-int csr_open_h4(char *device);
-int csr_read_h4(uint16_t varid, uint8_t *value, uint16_t length);
-int csr_write_h4(uint16_t varid, uint8_t *value, uint16_t length);
-void csr_close_h4(void);
-
-int csr_open_3wire(char *device);
-int csr_read_3wire(uint16_t varid, uint8_t *value, uint16_t length);
-int csr_write_3wire(uint16_t varid, uint8_t *value, uint16_t length);
-void csr_close_3wire(void);
-
-int csr_write_varid_valueless(int dd, uint16_t seqnum, uint16_t varid);
-int csr_write_varid_complex(int dd, uint16_t seqnum, uint16_t varid, uint8_t *value, uint16_t length);
-int csr_read_varid_complex(int dd, uint16_t seqnum, uint16_t varid, uint8_t *value, uint16_t length);
-int csr_read_varid_uint16(int dd, uint16_t seqnum, uint16_t varid, uint16_t *value);
-int csr_read_varid_uint32(int dd, uint16_t seqnum, uint16_t varid, uint32_t *value);
-int csr_read_pskey_complex(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint8_t *value, uint16_t length);
-int csr_write_pskey_complex(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint8_t *value, uint16_t length);
-int csr_read_pskey_uint16(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint16_t *value);
-int csr_write_pskey_uint16(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint16_t value);
-int csr_read_pskey_uint32(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint32_t *value);
-int csr_write_pskey_uint32(int dd, uint16_t seqnum, uint16_t pskey, uint16_t stores, uint32_t value);
-
-int psr_put(uint16_t pskey, uint8_t *value, uint16_t size);
-int psr_get(uint16_t *pskey, uint8_t *value, uint16_t *size);
-int psr_read(const char *filename);
-int psr_print(void);
diff --git a/hciconfig.1 b/hciconfig.1
deleted file mode 100644
index 633ffa3ff494..000000000000
--- a/hciconfig.1
+++ /dev/null
@@ -1,272 +0,0 @@
-.TH HCICONFIG 1 "Nov 11 2002" BlueZ "Linux System Administration"
-.SH NAME
-hciconfig \- configure Bluetooth devices
-.SH SYNOPSIS
-.B hciconfig
-.B \-h
-.br
-.B hciconfig
-.RB [\| \-a \|]
-.br
-.B hciconfig
-.RB [\| \-a \|]
-.B hciX
-.RI [\| command
-.RI [\| "command parameters" \|]\|]
-
-.SH DESCRIPTION
-.LP
-.B hciconfig
-is used to configure Bluetooth devices.
-.I hciX
-is the name of a Bluetooth device installed in the system. If
-.I hciX
-is not given,
-.B hciconfig
-prints name and basic information about all the Bluetooth devices installed in
-the system. If
-.I hciX
-is given but no command is given, it prints basic information on device
-.I hciX
-only. Basic information is
-interface type, BD address, ACL MTU, SCO MTU, flags (up, init, running, raw,
-page scan enabled, inquiry scan enabled, inquiry, authentication enabled,
-encryption enabled).
-.SH OPTIONS
-.TP
-.B \-h, \-\-help
-Gives a list of possible commands.
-.TP
-.B \-a, \-\-all
-Other than the basic info, print features, packet type, link policy, link mode,
-name, class, version.
-.SH COMMANDS
-.TP
-.B up
-Open and initialize HCI device.
-.TP
-.B down
-Close HCI device.
-.TP
-.B reset
-Reset HCI device.
-.TP
-.B rstat
-Reset statistic counters.
-.TP
-.B auth
-Enable authentication (sets device to security mode 3).
-.TP
-.B noauth
-Disable authentication.
-.TP
-.B encrypt
-Enable encryption (sets device to security mode 3).
-.TP
-.B noencrypt
-Disable encryption.
-.TP
-.B secmgr
-Enable security manager (current kernel support is limited).
-.TP
-.B nosecmgr
-Disable security manager.
-.TP
-.B piscan
-Enable page and inquiry scan.
-.TP
-.B noscan
-Disable page and inquiry scan.
-.TP
-.B iscan
-Enable inquiry scan, disable page scan.
-.TP
-.B pscan
-Enable page scan, disable inquiry scan.
-.TP
-\fBptype\fP [\fItype\fP]
-With no
-.I type
-, displays the current packet types. Otherwise, all the packet types specified
-by
-.I type
-are set.
-.I type
-is a comma-separated list of packet types, where the possible packet types are
-.BR DM1 ,
-.BR DM3 ,
-.BR DM5 ,
-.BR DH1 ,
-.BR DH3 ,
-.BR DH5 ,
-.BR HV1 ,
-.BR HV2 ,
-.BR HV3 .
-.TP
-.BI name " [name]"
-With no
-.IR name ,
-prints local name. Otherwise, sets local name to
-.IR name .
-.TP
-.BI class " [class]"
-With no
-.IR class ,
-prints class of device. Otherwise, sets class of device to
-.IR class .
-.I
-class
-is a 24-bit hex number describing the class of device, as specified in section
-1.2 of the Bluetooth Assigned Numers document.
-.TP
-.BI voice " [voice]"
-With no
-.IR voice ,
-prints voice setting. Otherwise, sets voice setting to
-.IR voice .
-.I voice
-is a 16-bit hex number describing the voice setting.
-.TP
-.BI iac " [iac]"
-With no
-.IR iac ,
-prints the current IAC setting. Otherwise, sets the IAC to
-.IR iac .
-.TP
-.BI inqtpl " [level]"
-With no
-.IR level ,
-prints out the current inquiry transmit power level. Otherwise, sets
-inquiry transmit power level to
-.IR level .
-.TP
-.BI inqmode " [mode]"
-With no
-.IR mode ,
-prints out the current inquiry mode. Otherwise, sets inquiry mode to
-.IR mode .
-.TP
-.BI inqdata " [data]"
-With no
-.IR name ,
-prints out the current inquiry data. Otherwise, sets inquiry data to
-.IR data .
-.TP
-.BI inqtype " [type]"
-With no
-.IR type ,
-prints out the current inquiry scan type. Otherwise, sets inquiry scan type to
-.IR type .
-.TP
-\fBinqparams\fP [\fIwin\fP:\fIint\fP]
-With no
-.IR win : int ,
-prints inquiry scan window and interval. Otherwise, sets inquiry scan window
-to
-.I win
-slots and inquiry scan interval to
-.I int
-slots.
-.TP
-\fBpageparms\fP [\fIwin\fP:\fIint\fP]
-With no
-.IR win : int ,
-prints page scan window and interval. Otherwise, sets page scan window to
-.I win
-slots and page scan interval to
-.I int
-slots.
-.TP
-.BI pageto " [to]"
-With no
-.IR to ,
-prints page timeout. Otherwise, sets page timeout
-to .I
-to
-slots.
-.TP
-.BI afhmode " [mode]"
-With no
-.IR mode ,
-prints out the current AFH mode. Otherwise, sets AFH mode to
-.IR mode .
-.TP
-.BI sspmode " [mode]"
-With no
-.IR mode ,
-prints out the current Simple Pairing mode. Otherwise, sets Simple Pairing mode to
-.IR mode .
-.TP
-\fBaclmtu\fP \fImtu\fP:\fIpkt\fP
-Sets ACL MTU to
-to
-.I mtu
-bytes and ACL buffer size to
-.I pkt
-packets.
-.TP
-\fBscomtu\fP \fImtu\fP:\fIpkt\fP
-Sets SCO MTU to
-.I mtu
-bytes and SCO buffer size to
-.I pkt
-packets.
-.TP
-.BI delkey " <bdaddr>"
-This command deletes the stored link key for
-.I bdaddr
-from the device.
-.TP
-.BI oobdata
-Get local OOB data (invalidates previously read data).
-.TP
-.BI commands
-Display supported commands.
-.TP
-.BI features
-Display device features.
-.TP
-.BI version
-Display version information.
-.TP
-.BI revision
-Display revision information.
-.TP
-.BI lm " [mode]"
-With no
-.I mode
-, prints link mode.
-.B MASTER
-or
-.B SLAVE
-mean, respectively, to ask to become master or to remain slave when a
-connection request comes in. The additional keyword
-.B ACCEPT
-means that baseband connections will be accepted even if there are no
-listening
-.I AF_BLUETOOTH
-sockets.
-.I mode
-is
-.B NONE
-or a comma-separated list of keywords, where possible keywords are
-.B MASTER
-and
-.B "ACCEPT" .
-.B NONE
-sets link policy to the default behaviour of remaining slave and not accepting
-baseband connections when there are no listening
-.I AF_BLUETOOTH
-sockets. If
-.B MASTER
-is present, the device will ask to become master if a connection request comes
-in. If
-.B ACCEPT
-is present, the device will accept baseband connections even when there are no
-listening
-.I AF_BLUETOOTH
-sockets.
-.SH AUTHORS
-Written by Maxim Krasnyansky <maxk@qualcomm.com> and Marcel Holtmann <marcel@holtmann.org>
-.PP
-man page by Fabrizio Gennari <fabrizio.gennari@philips.com>
diff --git a/hciconfig.c b/hciconfig.c
deleted file mode 100644
index 12153475a041..000000000000
--- a/hciconfig.c
+++ /dev/null
@@ -1,2064 +0,0 @@
-/*
- *
- * BlueZ - Bluetooth protocol stack for Linux
- *
- * Copyright (C) 2000-2001 Qualcomm Incorporated
- * Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com>
- * Copyright (C) 2002-2010 Marcel Holtmann <marcel@holtmann.org>
- *
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#include <ctype.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <getopt.h>
-#include <sys/param.h>
-#include <sys/ioctl.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-
-#include "bluetooth/bluetooth.h"
-#include "bluetooth/hci.h"
-#include "bluetooth/hci_lib.h"
-
-#include "textfile.h"
-#include "util.h"
-#include "csr.h"
-
-static struct hci_dev_info di;
-static int all;
-
-static void print_dev_hdr(struct hci_dev_info *di);
-static void print_dev_info(int ctl, struct hci_dev_info *di);
-
-static void print_dev_list(int ctl, int flags)
-{
- struct hci_dev_list_req *dl;
- struct hci_dev_req *dr;
- int i;
-
- if (!(dl = malloc(HCI_MAX_DEV * sizeof(struct hci_dev_req) +
- sizeof(uint16_t)))) {
- perror("Can't allocate memory");
- exit(1);
- }
- dl->dev_num = HCI_MAX_DEV;
- dr = dl->dev_req;
-
- if (ioctl(ctl, HCIGETDEVLIST, (void *) dl) < 0) {
- perror("Can't get device list");
- free(dl);
- exit(1);
- }
-
- for (i = 0; i< dl->dev_num; i++) {
- di.dev_id = (dr+i)->dev_id;
- if (ioctl(ctl, HCIGETDEVINFO, (void *) &di) < 0)
- continue;
- print_dev_info(ctl, &di);
- }
-
- free(dl);
-}
-
-static void print_pkt_type(struct hci_dev_info *di)
-{
- char *str;
- str = hci_ptypetostr(di->pkt_type);
- printf("\tPacket type: %s\n", str);
- bt_free(str);
-}
-
-static void print_link_policy(struct hci_dev_info *di)
-{
- printf("\tLink policy: %s\n", hci_lptostr(di->link_policy));
-}
-
-static void print_link_mode(struct hci_dev_info *di)
-{
- char *str;
- str = hci_lmtostr(di->link_mode);
- printf("\tLink mode: %s\n", str);
- bt_free(str);
-}
-
-static void print_dev_features(struct hci_dev_info *di, int format)
-{
- printf("\tFeatures: 0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x "
- "0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x\n",
- di->features[0], di->features[1], di->features[2],
- di->features[3], di->features[4], di->features[5],
- di->features[6], di->features[7]);
-
- if (format) {
- char *tmp = lmp_featurestostr(di->features, "\t\t", 63);
- printf("%s\n", tmp);
- bt_free(tmp);
- }
-}
-
-static void print_le_states(uint64_t states)
-{
- int i;
- const char *le_states[] = {
- "Non-connectable Advertising State" ,
- "Scannable Advertising State",
- "Connectable Advertising State",
- "Directed Advertising State",
- "Passive Scanning State",
- "Active Scanning State",
- "Initiating State/Connection State in Master Role",
- "Connection State in the Slave Role",
- "Non-connectable Advertising State and Passive Scanning State combination",
- "Scannable Advertising State and Passive Scanning State combination",
- "Connectable Advertising State and Passive Scanning State combination",
- "Directed Advertising State and Passive Scanning State combination",
- "Non-connectable Advertising State and Active Scanning State combination",
- "Scannable Advertising State and Active Scanning State combination",
- "Connectable Advertising State and Active Scanning State combination",
- "Directed Advertising State and Active Scanning State combination",
- "Non-connectable Advertising State and Initiating State combination",
- "Scannable Advertising State and Initiating State combination",
- "Non-connectable Advertising State and Master Role combination",
- "Scannable Advertising State and Master Role combination",
- "Non-connectable Advertising State and Slave Role combination",
- "Scannable Advertising State and Slave Role combination",
- "Passive Scanning State and Initiating State combination",
- "Active Scanning State and Initiating State combination",
- "Passive Scanning State and Master Role combination",
- "Active Scanning State and Master Role combination",
- "Passive Scanning State and Slave Role combination",
- "Active Scanning State and Slave Role combination",
- "Initiating State and Master Role combination/Master Role and Master Role combination",
- NULL
- };
-
- printf("Supported link layer states:\n");
- for (i = 0; le_states[i]; i++) {
- const char *status;
-
- status = states & (1 << i) ? "YES" : "NO ";
- printf("\t%s %s\n", status, le_states[i]);
- }
-}
-
-static void cmd_rstat(int ctl, int hdev, char *opt)
-{
- /* Reset HCI device stat counters */
- if (ioctl(ctl, HCIDEVRESTAT, hdev) < 0) {
- fprintf(stderr, "Can't reset stats counters hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-}
-
-static void cmd_scan(int ctl, int hdev, char *opt)
-{
- struct hci_dev_req dr;
-
- dr.dev_id = hdev;
- dr.dev_opt = SCAN_DISABLED;
- if (!strcmp(opt, "iscan"))
- dr.dev_opt = SCAN_INQUIRY;
- else if (!strcmp(opt, "pscan"))
- dr.dev_opt = SCAN_PAGE;
- else if (!strcmp(opt, "piscan"))
- dr.dev_opt = SCAN_PAGE | SCAN_INQUIRY;
-
- if (ioctl(ctl, HCISETSCAN, (unsigned long) &dr) < 0) {
- fprintf(stderr, "Can't set scan mode on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-}
-
-static void cmd_le_addr(int ctl, int hdev, char *opt)
-{
- struct hci_request rq;
- le_set_random_address_cp cp;
- uint8_t status;
- int dd, err, ret;
-
- if (!opt)
- return;
-
- if (hdev < 0)
- hdev = hci_get_route(NULL);
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- err = -errno;
- fprintf(stderr, "Could not open device: %s(%d)\n",
- strerror(-err), -err);
- exit(1);
- }
-
- memset(&cp, 0, sizeof(cp));
-
- str2ba(opt, &cp.bdaddr);
-
- memset(&rq, 0, sizeof(rq));
- rq.ogf = OGF_LE_CTL;
- rq.ocf = OCF_LE_SET_RANDOM_ADDRESS;
- rq.cparam = &cp;
- rq.clen = LE_SET_RANDOM_ADDRESS_CP_SIZE;
- rq.rparam = &status;
- rq.rlen = 1;
-
- ret = hci_send_req(dd, &rq, 1000);
- if (status || ret < 0) {
- err = -errno;
- fprintf(stderr, "Can't set random address for hci%d: "
- "%s (%d)\n", hdev, strerror(-err), -err);
- }
-
- hci_close_dev(dd);
-}
-
-static void cmd_le_adv(int ctl, int hdev, char *opt)
-{
- struct hci_request rq;
- le_set_advertise_enable_cp advertise_cp;
- le_set_advertising_parameters_cp adv_params_cp;
- uint8_t status;
- int dd, ret;
-
- if (hdev < 0)
- hdev = hci_get_route(NULL);
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- perror("Could not open device");
- exit(1);
- }
-
- memset(&adv_params_cp, 0, sizeof(adv_params_cp));
- adv_params_cp.min_interval = htobs(0x0800);
- adv_params_cp.max_interval = htobs(0x0800);
- if (opt)
- adv_params_cp.advtype = atoi(opt);
- adv_params_cp.chan_map = 7;
-
- memset(&rq, 0, sizeof(rq));
- rq.ogf = OGF_LE_CTL;
- rq.ocf = OCF_LE_SET_ADVERTISING_PARAMETERS;
- rq.cparam = &adv_params_cp;
- rq.clen = LE_SET_ADVERTISING_PARAMETERS_CP_SIZE;
- rq.rparam = &status;
- rq.rlen = 1;
-
- ret = hci_send_req(dd, &rq, 1000);
- if (ret < 0)
- goto done;
-
- memset(&advertise_cp, 0, sizeof(advertise_cp));
- advertise_cp.enable = 0x01;
-
- memset(&rq, 0, sizeof(rq));
- rq.ogf = OGF_LE_CTL;
- rq.ocf = OCF_LE_SET_ADVERTISE_ENABLE;
- rq.cparam = &advertise_cp;
- rq.clen = LE_SET_ADVERTISE_ENABLE_CP_SIZE;
- rq.rparam = &status;
- rq.rlen = 1;
-
- ret = hci_send_req(dd, &rq, 1000);
-
-done:
- hci_close_dev(dd);
-
- if (ret < 0) {
- fprintf(stderr, "Can't set advertise mode on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (status) {
- fprintf(stderr,
- "LE set advertise enable on hci%d returned status %d\n",
- hdev, status);
- exit(1);
- }
-}
-
-static void cmd_no_le_adv(int ctl, int hdev, char *opt)
-{
- struct hci_request rq;
- le_set_advertise_enable_cp advertise_cp;
- uint8_t status;
- int dd, ret;
-
- if (hdev < 0)
- hdev = hci_get_route(NULL);
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- perror("Could not open device");
- exit(1);
- }
-
- memset(&advertise_cp, 0, sizeof(advertise_cp));
-
- memset(&rq, 0, sizeof(rq));
- rq.ogf = OGF_LE_CTL;
- rq.ocf = OCF_LE_SET_ADVERTISE_ENABLE;
- rq.cparam = &advertise_cp;
- rq.clen = LE_SET_ADVERTISE_ENABLE_CP_SIZE;
- rq.rparam = &status;
- rq.rlen = 1;
-
- ret = hci_send_req(dd, &rq, 1000);
-
- hci_close_dev(dd);
-
- if (ret < 0) {
- fprintf(stderr, "Can't set advertise mode on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (status) {
- fprintf(stderr, "LE set advertise enable on hci%d returned status %d\n",
- hdev, status);
- exit(1);
- }
-}
-
-static void cmd_le_states(int ctl, int hdev, char *opt)
-{
- le_read_supported_states_rp rp;
- struct hci_request rq;
- int err, dd;
-
- if (hdev < 0)
- hdev = hci_get_route(NULL);
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- memset(&rp, 0, sizeof(rp));
- memset(&rq, 0, sizeof(rq));
-
- rq.ogf = OGF_LE_CTL;
- rq.ocf = OCF_LE_READ_SUPPORTED_STATES;
- rq.rparam = &rp;
- rq.rlen = LE_READ_SUPPORTED_STATES_RP_SIZE;
-
- err = hci_send_req(dd, &rq, 1000);
-
- hci_close_dev(dd);
-
- if (err < 0) {
- fprintf(stderr, "Can't read LE supported states on hci%d:"
- " %s(%d)\n", hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (rp.status) {
- fprintf(stderr, "Read LE supported states on hci%d"
- " returned status %d\n", hdev, rp.status);
- exit(1);
- }
-
- print_le_states(rp.states);
-}
-
-static void cmd_iac(int ctl, int hdev, char *opt)
-{
- int s = hci_open_dev(hdev);
-
- if (s < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- if (opt) {
- int l = strtoul(opt, 0, 16);
- uint8_t lap[3];
- if (!strcasecmp(opt, "giac")) {
- l = 0x9e8b33;
- } else if (!strcasecmp(opt, "liac")) {
- l = 0x9e8b00;
- } else if (l < 0x9e8b00 || l > 0x9e8b3f) {
- printf("Invalid access code 0x%x\n", l);
- exit(1);
- }
- lap[0] = (l & 0xff);
- lap[1] = (l >> 8) & 0xff;
- lap[2] = (l >> 16) & 0xff;
- if (hci_write_current_iac_lap(s, 1, lap, 1000) < 0) {
- printf("Failed to set IAC on hci%d: %s\n", hdev, strerror(errno));
- exit(1);
- }
- } else {
- uint8_t lap[3 * MAX_IAC_LAP];
- int i, j;
- uint8_t n;
- if (hci_read_current_iac_lap(s, &n, lap, 1000) < 0) {
- printf("Failed to read IAC from hci%d: %s\n", hdev, strerror(errno));
- exit(1);
- }
- print_dev_hdr(&di);
- printf("\tIAC: ");
- for (i = 0; i < n; i++) {
- printf("0x");
- for (j = 3; j--; )
- printf("%02x", lap[j + 3 * i]);
- if (i < n - 1)
- printf(", ");
- }
- printf("\n");
- }
- close(s);
-}
-
-static void cmd_auth(int ctl, int hdev, char *opt)
-{
- struct hci_dev_req dr;
-
- dr.dev_id = hdev;
- if (!strcmp(opt, "auth"))
- dr.dev_opt = AUTH_ENABLED;
- else
- dr.dev_opt = AUTH_DISABLED;
-
- if (ioctl(ctl, HCISETAUTH, (unsigned long) &dr) < 0) {
- fprintf(stderr, "Can't set auth on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-}
-
-static void cmd_encrypt(int ctl, int hdev, char *opt)
-{
- struct hci_dev_req dr;
-
- dr.dev_id = hdev;
- if (!strcmp(opt, "encrypt"))
- dr.dev_opt = ENCRYPT_P2P;
- else
- dr.dev_opt = ENCRYPT_DISABLED;
-
- if (ioctl(ctl, HCISETENCRYPT, (unsigned long) &dr) < 0) {
- fprintf(stderr, "Can't set encrypt on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-}
-
-static void cmd_up(int ctl, int hdev, char *opt)
-{
- /* Start HCI device */
- if (ioctl(ctl, HCIDEVUP, hdev) < 0) {
- if (errno == EALREADY)
- return;
- fprintf(stderr, "Can't init device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-}
-
-static void cmd_down(int ctl, int hdev, char *opt)
-{
- /* Stop HCI device */
- if (ioctl(ctl, HCIDEVDOWN, hdev) < 0) {
- fprintf(stderr, "Can't down device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-}
-
-static void cmd_reset(int ctl, int hdev, char *opt)
-{
- /* Reset HCI device */
-#if 0
- if (ioctl(ctl, HCIDEVRESET, hdev) < 0 ){
- fprintf(stderr, "Reset failed for device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-#endif
- cmd_down(ctl, hdev, "down");
- cmd_up(ctl, hdev, "up");
-}
-
-static void cmd_ptype(int ctl, int hdev, char *opt)
-{
- struct hci_dev_req dr;
-
- dr.dev_id = hdev;
-
- if (hci_strtoptype(opt, &dr.dev_opt)) {
- if (ioctl(ctl, HCISETPTYPE, (unsigned long) &dr) < 0) {
- fprintf(stderr, "Can't set pkttype on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- print_dev_hdr(&di);
- print_pkt_type(&di);
- }
-}
-
-static void cmd_lp(int ctl, int hdev, char *opt)
-{
- struct hci_dev_req dr;
-
- dr.dev_id = hdev;
-
- if (hci_strtolp(opt, &dr.dev_opt)) {
- if (ioctl(ctl, HCISETLINKPOL, (unsigned long) &dr) < 0) {
- fprintf(stderr, "Can't set link policy on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- print_dev_hdr(&di);
- print_link_policy(&di);
- }
-}
-
-static void cmd_lm(int ctl, int hdev, char *opt)
-{
- struct hci_dev_req dr;
-
- dr.dev_id = hdev;
-
- if (hci_strtolm(opt, &dr.dev_opt)) {
- if (ioctl(ctl, HCISETLINKMODE, (unsigned long) &dr) < 0) {
- fprintf(stderr, "Can't set default link mode on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- print_dev_hdr(&di);
- print_link_mode(&di);
- }
-}
-
-static void cmd_aclmtu(int ctl, int hdev, char *opt)
-{
- struct hci_dev_req dr = { .dev_id = hdev };
- uint16_t mtu, mpkt;
-
- if (!opt)
- return;
-
- if (sscanf(opt, "%4hu:%4hu", &mtu, &mpkt) != 2)
- return;
-
- dr.dev_opt = htobl(htobs(mpkt) | (htobs(mtu) << 16));
-
- if (ioctl(ctl, HCISETACLMTU, (unsigned long) &dr) < 0) {
- fprintf(stderr, "Can't set ACL mtu on hci%d: %s(%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-}
-
-static void cmd_scomtu(int ctl, int hdev, char *opt)
-{
- struct hci_dev_req dr = { .dev_id = hdev };
- uint16_t mtu, mpkt;
-
- if (!opt)
- return;
-
- if (sscanf(opt, "%4hu:%4hu", &mtu, &mpkt) != 2)
- return;
-
- dr.dev_opt = htobl(htobs(mpkt) | (htobs(mtu) << 16));
-
- if (ioctl(ctl, HCISETSCOMTU, (unsigned long) &dr) < 0) {
- fprintf(stderr, "Can't set SCO mtu on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-}
-
-static void cmd_features(int ctl, int hdev, char *opt)
-{
- uint8_t features[8], max_page = 0;
- char *tmp;
- int i, dd;
-
- if (!(di.features[7] & LMP_EXT_FEAT)) {
- print_dev_hdr(&di);
- print_dev_features(&di, 1);
- return;
- }
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (hci_read_local_ext_features(dd, 0, &max_page, features, 1000) < 0) {
- fprintf(stderr, "Can't read extended features hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (max_page < 1 && (features[6] & LMP_SIMPLE_PAIR))
- max_page = 1;
-
- print_dev_hdr(&di);
- printf("\tFeatures%s: 0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x "
- "0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x\n",
- (max_page > 0) ? " page 0" : "",
- features[0], features[1], features[2], features[3],
- features[4], features[5], features[6], features[7]);
-
- tmp = lmp_featurestostr(di.features, "\t\t", 63);
- printf("%s\n", tmp);
- bt_free(tmp);
-
- for (i = 1; i <= max_page; i++) {
- if (hci_read_local_ext_features(dd, i, NULL,
- features, 1000) < 0)
- continue;
-
- printf("\tFeatures page %d: 0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x "
- "0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x\n", i,
- features[0], features[1], features[2], features[3],
- features[4], features[5], features[6], features[7]);
- }
-
- hci_close_dev(dd);
-}
-
-static void cmd_name(int ctl, int hdev, char *opt)
-{
- int dd;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (opt) {
- if (hci_write_local_name(dd, opt, 2000) < 0) {
- fprintf(stderr, "Can't change local name on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- char name[249];
- int i;
-
- if (hci_read_local_name(dd, sizeof(name), name, 1000) < 0) {
- fprintf(stderr, "Can't read local name on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- for (i = 0; i < 248 && name[i]; i++) {
- if ((unsigned char) name[i] < 32 || name[i] == 127)
- name[i] = '.';
- }
-
- name[248] = '\0';
-
- print_dev_hdr(&di);
- printf("\tName: '%s'\n", name);
- }
-
- hci_close_dev(dd);
-}
-
-/*
- * see http://www.bluetooth.org/assigned-numbers/baseband.htm --- all
- * strings are reproduced verbatim
- */
-static char *get_minor_device_name(int major, int minor)
-{
- switch (major) {
- case 0: /* misc */
- return "";
- case 1: /* computer */
- switch (minor) {
- case 0:
- return "Uncategorized";
- case 1:
- return "Desktop workstation";
- case 2:
- return "Server";
- case 3:
- return "Laptop";
- case 4:
- return "Handheld";
- case 5:
- return "Palm";
- case 6:
- return "Wearable";
- }
- break;
- case 2: /* phone */
- switch (minor) {
- case 0:
- return "Uncategorized";
- case 1:
- return "Cellular";
- case 2:
- return "Cordless";
- case 3:
- return "Smart phone";
- case 4:
- return "Wired modem or voice gateway";
- case 5:
- return "Common ISDN Access";
- case 6:
- return "Sim Card Reader";
- }
- break;
- case 3: /* lan access */
- if (minor == 0)
- return "Uncategorized";
- switch (minor / 8) {
- case 0:
- return "Fully available";
- case 1:
- return "1-17% utilized";
- case 2:
- return "17-33% utilized";
- case 3:
- return "33-50% utilized";
- case 4:
- return "50-67% utilized";
- case 5:
- return "67-83% utilized";
- case 6:
- return "83-99% utilized";
- case 7:
- return "No service available";
- }
- break;
- case 4: /* audio/video */
- switch (minor) {
- case 0:
- return "Uncategorized";
- case 1:
- return "Device conforms to the Headset profile";
- case 2:
- return "Hands-free";
- /* 3 is reserved */
- case 4:
- return "Microphone";
- case 5:
- return "Loudspeaker";
- case 6:
- return "Headphones";
- case 7:
- return "Portable Audio";
- case 8:
- return "Car Audio";
- case 9:
- return "Set-top box";
- case 10:
- return "HiFi Audio Device";
- case 11:
- return "VCR";
- case 12:
- return "Video Camera";
- case 13:
- return "Camcorder";
- case 14:
- return "Video Monitor";
- case 15:
- return "Video Display and Loudspeaker";
- case 16:
- return "Video Conferencing";
- /* 17 is reserved */
- case 18:
- return "Gaming/Toy";
- }
- break;
- case 5: /* peripheral */ {
- static char cls_str[48];
-
- cls_str[0] = '\0';
-
- switch (minor & 48) {
- case 16:
- strncpy(cls_str, "Keyboard", sizeof(cls_str));
- break;
- case 32:
- strncpy(cls_str, "Pointing device", sizeof(cls_str));
- break;
- case 48:
- strncpy(cls_str, "Combo keyboard/pointing device", sizeof(cls_str));
- break;
- }
- if ((minor & 15) && (strlen(cls_str) > 0))
- strcat(cls_str, "/");
-
- switch (minor & 15) {
- case 0:
- break;
- case 1:
- strncat(cls_str, "Joystick",
- sizeof(cls_str) - strlen(cls_str) - 1);
- break;
- case 2:
- strncat(cls_str, "Gamepad",
- sizeof(cls_str) - strlen(cls_str) - 1);
- break;
- case 3:
- strncat(cls_str, "Remote control",
- sizeof(cls_str) - strlen(cls_str) - 1);
- break;
- case 4:
- strncat(cls_str, "Sensing device",
- sizeof(cls_str) - strlen(cls_str) - 1);
- break;
- case 5:
- strncat(cls_str, "Digitizer tablet",
- sizeof(cls_str) - strlen(cls_str) - 1);
- break;
- case 6:
- strncat(cls_str, "Card reader",
- sizeof(cls_str) - strlen(cls_str) - 1);
- break;
- default:
- strncat(cls_str, "(reserved)",
- sizeof(cls_str) - strlen(cls_str) - 1);
- break;
- }
- if (strlen(cls_str) > 0)
- return cls_str;
- break;
- }
- case 6: /* imaging */
- if (minor & 4)
- return "Display";
- if (minor & 8)
- return "Camera";
- if (minor & 16)
- return "Scanner";
- if (minor & 32)
- return "Printer";
- break;
- case 7: /* wearable */
- switch (minor) {
- case 1:
- return "Wrist Watch";
- case 2:
- return "Pager";
- case 3:
- return "Jacket";
- case 4:
- return "Helmet";
- case 5:
- return "Glasses";
- }
- break;
- case 8: /* toy */
- switch (minor) {
- case 1:
- return "Robot";
- case 2:
- return "Vehicle";
- case 3:
- return "Doll / Action Figure";
- case 4:
- return "Controller";
- case 5:
- return "Game";
- }
- break;
- case 63: /* uncategorised */
- return "";
- }
- return "Unknown (reserved) minor device class";
-}
-
-static void cmd_class(int ctl, int hdev, char *opt)
-{
- static const char *services[] = { "Positioning",
- "Networking",
- "Rendering",
- "Capturing",
- "Object Transfer",
- "Audio",
- "Telephony",
- "Information" };
- static const char *major_devices[] = { "Miscellaneous",
- "Computer",
- "Phone",
- "LAN Access",
- "Audio/Video",
- "Peripheral",
- "Imaging",
- "Uncategorized" };
- int s = hci_open_dev(hdev);
-
- if (s < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- if (opt) {
- uint32_t cod = strtoul(opt, NULL, 16);
- if (hci_write_class_of_dev(s, cod, 2000) < 0) {
- fprintf(stderr, "Can't write local class of device on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- uint8_t cls[3];
- if (hci_read_class_of_dev(s, cls, 1000) < 0) {
- fprintf(stderr, "Can't read class of device on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- print_dev_hdr(&di);
- printf("\tClass: 0x%02x%02x%02x\n", cls[2], cls[1], cls[0]);
- printf("\tService Classes: ");
- if (cls[2]) {
- unsigned int i;
- int first = 1;
- for (i = 0; i < (sizeof(services) / sizeof(*services)); i++)
- if (cls[2] & (1 << i)) {
- if (!first)
- printf(", ");
- printf("%s", services[i]);
- first = 0;
- }
- } else
- printf("Unspecified");
- printf("\n\tDevice Class: ");
- if ((cls[1] & 0x1f) >= sizeof(major_devices) / sizeof(*major_devices))
- printf("Invalid Device Class!\n");
- else
- printf("%s, %s\n", major_devices[cls[1] & 0x1f],
- get_minor_device_name(cls[1] & 0x1f, cls[0] >> 2));
- }
-
- hci_close_dev(s);
-}
-
-static void cmd_voice(int ctl, int hdev, char *opt)
-{
- static char *icf[] = { "Linear",
- "u-Law",
- "A-Law",
- "Reserved" };
-
- static char *idf[] = { "1's complement",
- "2's complement",
- "Sign-Magnitude",
- "Reserved" };
-
- static char *iss[] = { "8 bit",
- "16 bit" };
-
- static char *acf[] = { "CVSD",
- "u-Law",
- "A-Law",
- "Reserved" };
-
- int s = hci_open_dev(hdev);
-
- if (s < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- if (opt) {
- uint16_t vs = htobs(strtoul(opt, NULL, 16));
- if (hci_write_voice_setting(s, vs, 2000) < 0) {
- fprintf(stderr, "Can't write voice setting on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- uint16_t vs;
- uint8_t ic;
- if (hci_read_voice_setting(s, &vs, 1000) < 0) {
- fprintf(stderr, "Can't read voice setting on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- vs = htobs(vs);
- ic = (vs & 0x0300) >> 8;
- print_dev_hdr(&di);
- printf("\tVoice setting: 0x%04x%s\n", vs,
- ((vs & 0x03fc) == 0x0060) ? " (Default Condition)" : "");
- printf("\tInput Coding: %s\n", icf[ic]);
- printf("\tInput Data Format: %s\n", idf[(vs & 0xc0) >> 6]);
-
- if (!ic) {
- printf("\tInput Sample Size: %s\n",
- iss[(vs & 0x20) >> 5]);
- printf("\t# of bits padding at MSB: %d\n",
- (vs & 0x1c) >> 2);
- }
- printf("\tAir Coding Format: %s\n", acf[vs & 0x03]);
- }
-
- hci_close_dev(s);
-}
-
-static void cmd_delkey(int ctl, int hdev, char *opt)
-{
- bdaddr_t bdaddr;
- uint8_t all;
- int dd;
-
- if (!opt)
- return;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (!strcasecmp(opt, "all")) {
- bacpy(&bdaddr, BDADDR_ANY);
- all = 1;
- } else {
- str2ba(opt, &bdaddr);
- all = 0;
- }
-
- if (hci_delete_stored_link_key(dd, &bdaddr, all, 1000) < 0) {
- fprintf(stderr, "Can't delete stored link key on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- hci_close_dev(dd);
-}
-
-static void cmd_oob_data(int ctl, int hdev, char *opt)
-{
- uint8_t hash[16], randomizer[16];
- int i, dd;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (hci_read_local_oob_data(dd, hash, randomizer, 1000) < 0) {
- fprintf(stderr, "Can't read local OOB data on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- print_dev_hdr(&di);
- printf("\tOOB Hash: ");
- for (i = 0; i < 16; i++)
- printf(" %02x", hash[i]);
- printf("\n\tRandomizer:");
- for (i = 0; i < 16; i++)
- printf(" %02x", randomizer[i]);
- printf("\n");
-
- hci_close_dev(dd);
-}
-
-static void cmd_commands(int ctl, int hdev, char *opt)
-{
- uint8_t cmds[64];
- char *str;
- int i, n, dd;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (hci_read_local_commands(dd, cmds, 1000) < 0) {
- fprintf(stderr, "Can't read support commands on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- print_dev_hdr(&di);
- for (i = 0; i < 64; i++) {
- if (!cmds[i])
- continue;
-
- printf("%s Octet %-2d = 0x%02x (Bit",
- i ? "\t\t ": "\tCommands:", i, cmds[i]);
- for (n = 0; n < 8; n++)
- if (cmds[i] & (1 << n))
- printf(" %d", n);
- printf(")\n");
- }
-
- str = hci_commandstostr(cmds, "\t", 71);
- printf("%s\n", str);
- bt_free(str);
-
- hci_close_dev(dd);
-}
-
-static void cmd_version(int ctl, int hdev, char *opt)
-{
- struct hci_version ver;
- char *hciver, *lmpver;
- int dd;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (hci_read_local_version(dd, &ver, 1000) < 0) {
- fprintf(stderr, "Can't read version info hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- hciver = hci_vertostr(ver.hci_ver);
- if (((di.type & 0x30) >> 4) == HCI_PRIMARY)
- lmpver = lmp_vertostr(ver.lmp_ver);
- else
- lmpver = pal_vertostr(ver.lmp_ver);
-
- print_dev_hdr(&di);
- printf("\tHCI Version: %s (0x%x) Revision: 0x%x\n"
- "\t%s Version: %s (0x%x) Subversion: 0x%x\n"
- "\tManufacturer: %s (%d)\n",
- hciver ? hciver : "n/a", ver.hci_ver, ver.hci_rev,
- (((di.type & 0x30) >> 4) == HCI_PRIMARY) ? "LMP" : "PAL",
- lmpver ? lmpver : "n/a", ver.lmp_ver, ver.lmp_subver,
- bt_compidtostr(ver.manufacturer), ver.manufacturer);
-
- if (hciver)
- bt_free(hciver);
- if (lmpver)
- bt_free(lmpver);
-
- hci_close_dev(dd);
-}
-
-static void cmd_inq_tpl(int ctl, int hdev, char *opt)
-{
- int dd;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (opt) {
- int8_t level = atoi(opt);
-
- if (hci_write_inquiry_transmit_power_level(dd, level, 2000) < 0) {
- fprintf(stderr, "Can't set inquiry transmit power level on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- int8_t level;
-
- if (hci_read_inq_response_tx_power_level(dd, &level, 1000) < 0) {
- fprintf(stderr, "Can't read inquiry transmit power level on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- print_dev_hdr(&di);
- printf("\tInquiry transmit power level: %d\n", level);
- }
-
- hci_close_dev(dd);
-}
-
-static void cmd_inq_mode(int ctl, int hdev, char *opt)
-{
- int dd;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (opt) {
- uint8_t mode = atoi(opt);
-
- if (hci_write_inquiry_mode(dd, mode, 2000) < 0) {
- fprintf(stderr, "Can't set inquiry mode on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- uint8_t mode;
-
- if (hci_read_inquiry_mode(dd, &mode, 1000) < 0) {
- fprintf(stderr, "Can't read inquiry mode on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- print_dev_hdr(&di);
- printf("\tInquiry mode: ");
- switch (mode) {
- case 0:
- printf("Standard Inquiry\n");
- break;
- case 1:
- printf("Inquiry with RSSI\n");
- break;
- case 2:
- printf("Inquiry with RSSI or Extended Inquiry\n");
- break;
- default:
- printf("Unknown (0x%02x)\n", mode);
- break;
- }
- }
-
- hci_close_dev(dd);
-}
-
-static void cmd_inq_data(int ctl, int hdev, char *opt)
-{
- int i, dd;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (opt) {
- uint8_t fec = 0, data[HCI_MAX_EIR_LENGTH];
- char tmp[3];
- int i, size;
-
- memset(data, 0, sizeof(data));
-
- memset(tmp, 0, sizeof(tmp));
- size = (strlen(opt) + 1) / 2;
- if (size > HCI_MAX_EIR_LENGTH)
- size = HCI_MAX_EIR_LENGTH;
-
- for (i = 0; i < size; i++) {
- memcpy(tmp, opt + (i * 2), 2);
- data[i] = strtol(tmp, NULL, 16);
- }
-
- if (hci_write_ext_inquiry_response(dd, fec, data, 2000) < 0) {
- fprintf(stderr, "Can't set extended inquiry response on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- uint8_t fec, data[HCI_MAX_EIR_LENGTH], len, type, *ptr;
- char *str;
-
- if (hci_read_ext_inquiry_response(dd, &fec, data, 1000) < 0) {
- fprintf(stderr, "Can't read extended inquiry response on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- print_dev_hdr(&di);
- printf("\tFEC %s\n\t\t", fec ? "enabled" : "disabled");
- for (i = 0; i < HCI_MAX_EIR_LENGTH; i++)
- printf("%02x%s%s", data[i], (i + 1) % 8 ? "" : " ",
- (i + 1) % 16 ? " " : (i < 239 ? "\n\t\t" : "\n"));
-
- ptr = data;
- while (*ptr) {
- len = *ptr++;
- type = *ptr++;
- switch (type) {
- case 0x01:
- printf("\tFlags:");
- for (i = 0; i < len - 1; i++)
- printf(" 0x%2.2x", *((uint8_t *) (ptr + i)));
- printf("\n");
- break;
- case 0x02:
- case 0x03:
- printf("\t%s service classes:",
- type == 0x02 ? "Shortened" : "Complete");
- for (i = 0; i < (len - 1) / 2; i++) {
- uint16_t val = get_le16((ptr + (i * 2)));
- printf(" 0x%4.4x", val);
- }
- printf("\n");
- break;
- case 0x08:
- case 0x09:
- str = malloc(len);
- if (str) {
- snprintf(str, len, "%s", ptr);
- for (i = 0; i < len - 1; i++) {
- if ((unsigned char) str[i] < 32 || str[i] == 127)
- str[i] = '.';
- }
- printf("\t%s local name: \'%s\'\n",
- type == 0x08 ? "Shortened" : "Complete", str);
- free(str);
- }
- break;
- case 0x0a:
- printf("\tTX power level: %d\n", *((int8_t *) ptr));
- break;
- case 0x10:
- printf("\tDevice ID with %d bytes data\n",
- len - 1);
- break;
- default:
- printf("\tUnknown type 0x%02x with %d bytes data\n",
- type, len - 1);
- break;
- }
-
- ptr += (len - 1);
- }
-
- printf("\n");
- }
-
- hci_close_dev(dd);
-}
-
-static void cmd_inq_type(int ctl, int hdev, char *opt)
-{
- int dd;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (opt) {
- uint8_t type = atoi(opt);
-
- if (hci_write_inquiry_scan_type(dd, type, 2000) < 0) {
- fprintf(stderr, "Can't set inquiry scan type on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- uint8_t type;
-
- if (hci_read_inquiry_scan_type(dd, &type, 1000) < 0) {
- fprintf(stderr, "Can't read inquiry scan type on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- print_dev_hdr(&di);
- printf("\tInquiry scan type: %s\n",
- type == 1 ? "Interlaced Inquiry Scan" : "Standard Inquiry Scan");
- }
-
- hci_close_dev(dd);
-}
-
-static void cmd_inq_parms(int ctl, int hdev, char *opt)
-{
- struct hci_request rq;
- int s;
-
- if ((s = hci_open_dev(hdev)) < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- memset(&rq, 0, sizeof(rq));
-
- if (opt) {
- unsigned int window, interval;
- write_inq_activity_cp cp;
-
- if (sscanf(opt,"%4u:%4u", &window, &interval) != 2) {
- printf("Invalid argument format\n");
- exit(1);
- }
-
- rq.ogf = OGF_HOST_CTL;
- rq.ocf = OCF_WRITE_INQ_ACTIVITY;
- rq.cparam = &cp;
- rq.clen = WRITE_INQ_ACTIVITY_CP_SIZE;
-
- cp.window = htobs((uint16_t) window);
- cp.interval = htobs((uint16_t) interval);
-
- if (window < 0x12 || window > 0x1000)
- printf("Warning: inquiry window out of range!\n");
-
- if (interval < 0x12 || interval > 0x1000)
- printf("Warning: inquiry interval out of range!\n");
-
- if (hci_send_req(s, &rq, 2000) < 0) {
- fprintf(stderr, "Can't set inquiry parameters name on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- uint16_t window, interval;
- read_inq_activity_rp rp;
-
- rq.ogf = OGF_HOST_CTL;
- rq.ocf = OCF_READ_INQ_ACTIVITY;
- rq.rparam = &rp;
- rq.rlen = READ_INQ_ACTIVITY_RP_SIZE;
-
- if (hci_send_req(s, &rq, 1000) < 0) {
- fprintf(stderr, "Can't read inquiry parameters on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- if (rp.status) {
- printf("Read inquiry parameters on hci%d returned status %d\n",
- hdev, rp.status);
- exit(1);
- }
- print_dev_hdr(&di);
-
- window = btohs(rp.window);
- interval = btohs(rp.interval);
- printf("\tInquiry interval: %u slots (%.2f ms), window: %u slots (%.2f ms)\n",
- interval, (float)interval * 0.625, window, (float)window * 0.625);
- }
-
- hci_close_dev(s);
-}
-
-static void cmd_page_parms(int ctl, int hdev, char *opt)
-{
- struct hci_request rq;
- int s;
-
- if ((s = hci_open_dev(hdev)) < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- memset(&rq, 0, sizeof(rq));
-
- if (opt) {
- unsigned int window, interval;
- write_page_activity_cp cp;
-
- if (sscanf(opt,"%4u:%4u", &window, &interval) != 2) {
- printf("Invalid argument format\n");
- exit(1);
- }
-
- rq.ogf = OGF_HOST_CTL;
- rq.ocf = OCF_WRITE_PAGE_ACTIVITY;
- rq.cparam = &cp;
- rq.clen = WRITE_PAGE_ACTIVITY_CP_SIZE;
-
- cp.window = htobs((uint16_t) window);
- cp.interval = htobs((uint16_t) interval);
-
- if (window < 0x12 || window > 0x1000)
- printf("Warning: page window out of range!\n");
-
- if (interval < 0x12 || interval > 0x1000)
- printf("Warning: page interval out of range!\n");
-
- if (hci_send_req(s, &rq, 2000) < 0) {
- fprintf(stderr, "Can't set page parameters name on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- uint16_t window, interval;
- read_page_activity_rp rp;
-
- rq.ogf = OGF_HOST_CTL;
- rq.ocf = OCF_READ_PAGE_ACTIVITY;
- rq.rparam = &rp;
- rq.rlen = READ_PAGE_ACTIVITY_RP_SIZE;
-
- if (hci_send_req(s, &rq, 1000) < 0) {
- fprintf(stderr, "Can't read page parameters on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- if (rp.status) {
- printf("Read page parameters on hci%d returned status %d\n",
- hdev, rp.status);
- exit(1);
- }
- print_dev_hdr(&di);
-
- window = btohs(rp.window);
- interval = btohs(rp.interval);
- printf("\tPage interval: %u slots (%.2f ms), "
- "window: %u slots (%.2f ms)\n",
- interval, (float)interval * 0.625,
- window, (float)window * 0.625);
- }
-
- hci_close_dev(s);
-}
-
-static void cmd_page_to(int ctl, int hdev, char *opt)
-{
- struct hci_request rq;
- int s;
-
- if ((s = hci_open_dev(hdev)) < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- memset(&rq, 0, sizeof(rq));
-
- if (opt) {
- unsigned int timeout;
- write_page_timeout_cp cp;
-
- if (sscanf(opt,"%5u", &timeout) != 1) {
- printf("Invalid argument format\n");
- exit(1);
- }
-
- rq.ogf = OGF_HOST_CTL;
- rq.ocf = OCF_WRITE_PAGE_TIMEOUT;
- rq.cparam = &cp;
- rq.clen = WRITE_PAGE_TIMEOUT_CP_SIZE;
-
- cp.timeout = htobs((uint16_t) timeout);
-
- if (timeout < 0x01 || timeout > 0xFFFF)
- printf("Warning: page timeout out of range!\n");
-
- if (hci_send_req(s, &rq, 2000) < 0) {
- fprintf(stderr, "Can't set page timeout on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- uint16_t timeout;
- read_page_timeout_rp rp;
-
- rq.ogf = OGF_HOST_CTL;
- rq.ocf = OCF_READ_PAGE_TIMEOUT;
- rq.rparam = &rp;
- rq.rlen = READ_PAGE_TIMEOUT_RP_SIZE;
-
- if (hci_send_req(s, &rq, 1000) < 0) {
- fprintf(stderr, "Can't read page timeout on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- if (rp.status) {
- printf("Read page timeout on hci%d returned status %d\n",
- hdev, rp.status);
- exit(1);
- }
- print_dev_hdr(&di);
-
- timeout = btohs(rp.timeout);
- printf("\tPage timeout: %u slots (%.2f ms)\n",
- timeout, (float)timeout * 0.625);
- }
-
- hci_close_dev(s);
-}
-
-static void cmd_afh_mode(int ctl, int hdev, char *opt)
-{
- int dd;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (opt) {
- uint8_t mode = atoi(opt);
-
- if (hci_write_afh_mode(dd, mode, 2000) < 0) {
- fprintf(stderr, "Can't set AFH mode on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- uint8_t mode;
-
- if (hci_read_afh_mode(dd, &mode, 1000) < 0) {
- fprintf(stderr, "Can't read AFH mode on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- print_dev_hdr(&di);
- printf("\tAFH mode: %s\n", mode == 1 ? "Enabled" : "Disabled");
- }
-
- hci_close_dev(dd);
-}
-
-static void cmd_ssp_mode(int ctl, int hdev, char *opt)
-{
- int dd;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (opt) {
- uint8_t mode = atoi(opt);
-
- if (hci_write_simple_pairing_mode(dd, mode, 2000) < 0) {
- fprintf(stderr, "Can't set Simple Pairing mode on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
- } else {
- uint8_t mode;
-
- if (hci_read_simple_pairing_mode(dd, &mode, 1000) < 0) {
- fprintf(stderr, "Can't read Simple Pairing mode on hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- print_dev_hdr(&di);
- printf("\tSimple Pairing mode: %s\n",
- mode == 1 ? "Enabled" : "Disabled");
- }
-
- hci_close_dev(dd);
-}
-
-static void print_rev_ericsson(int dd)
-{
- struct hci_request rq;
- unsigned char buf[102];
-
- memset(&rq, 0, sizeof(rq));
- rq.ogf = OGF_VENDOR_CMD;
- rq.ocf = 0x000f;
- rq.cparam = NULL;
- rq.clen = 0;
- rq.rparam = &buf;
- rq.rlen = sizeof(buf);
-
- if (hci_send_req(dd, &rq, 1000) < 0) {
- printf("\nCan't read revision info: %s (%d)\n",
- strerror(errno), errno);
- return;
- }
-
- printf("\t%s\n", buf + 1);
-}
-
-static void print_rev_csr(int dd, uint16_t rev)
-{
- uint16_t buildid, chipver, chiprev, maxkeylen, mapsco;
-
- if (csr_read_varid_uint16(dd, 0, CSR_VARID_BUILDID, &buildid) < 0) {
- printf("\t%s\n", csr_buildidtostr(rev));
- return;
- }
-
- printf("\t%s\n", csr_buildidtostr(buildid));
-
- if (!csr_read_varid_uint16(dd, 1, CSR_VARID_CHIPVER, &chipver)) {
- if (csr_read_varid_uint16(dd, 2, CSR_VARID_CHIPREV, &chiprev) < 0)
- chiprev = 0;
- printf("\tChip version: %s\n", csr_chipvertostr(chipver, chiprev));
- }
-
- if (!csr_read_varid_uint16(dd, 3, CSR_VARID_MAX_CRYPT_KEY_LENGTH, &maxkeylen))
- printf("\tMax key size: %d bit\n", maxkeylen * 8);
-
- if (!csr_read_pskey_uint16(dd, 4, CSR_PSKEY_HOSTIO_MAP_SCO_PCM, 0x0000, &mapsco))
- printf("\tSCO mapping: %s\n", mapsco ? "PCM" : "HCI");
-}
-
-static void print_rev_digianswer(int dd)
-{
- struct hci_request rq;
- unsigned char req[] = { 0x07 };
- unsigned char buf[102];
-
- memset(&rq, 0, sizeof(rq));
- rq.ogf = OGF_VENDOR_CMD;
- rq.ocf = 0x000e;
- rq.cparam = req;
- rq.clen = sizeof(req);
- rq.rparam = &buf;
- rq.rlen = sizeof(buf);
-
- if (hci_send_req(dd, &rq, 1000) < 0) {
- printf("\nCan't read revision info: %s (%d)\n",
- strerror(errno), errno);
- return;
- }
-
- printf("\t%s\n", buf + 1);
-}
-
-static void print_rev_broadcom(uint16_t hci_rev, uint16_t lmp_subver)
-{
- printf("\tFirmware %d.%d / %d\n",
- hci_rev & 0xff, lmp_subver >> 8, lmp_subver & 0xff);
-}
-
-static void print_rev_avm(uint16_t hci_rev, uint16_t lmp_subver)
-{
- if (lmp_subver == 0x01)
- printf("\tFirmware 03.%d.%d\n", hci_rev >> 8, hci_rev & 0xff);
- else
- printf("\tUnknown type\n");
-}
-
-static void cmd_revision(int ctl, int hdev, char *opt)
-{
- struct hci_version ver;
- int dd;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- return;
- }
-
- if (hci_read_local_version(dd, &ver, 1000) < 0) {
- fprintf(stderr, "Can't read version info for hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- return;
- }
-
- print_dev_hdr(&di);
- switch (ver.manufacturer) {
- case 0:
- case 37:
- case 48:
- print_rev_ericsson(dd);
- break;
- case 10:
- print_rev_csr(dd, ver.hci_rev);
- break;
- case 12:
- print_rev_digianswer(dd);
- break;
- case 15:
- print_rev_broadcom(ver.hci_rev, ver.lmp_subver);
- break;
- case 31:
- print_rev_avm(ver.hci_rev, ver.lmp_subver);
- break;
- default:
- printf("\tUnsupported manufacturer\n");
- break;
- }
-
- hci_close_dev(dd);
-
- return;
-}
-
-static void cmd_block(int ctl, int hdev, char *opt)
-{
- bdaddr_t bdaddr;
- int dd;
-
- if (!opt)
- return;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- str2ba(opt, &bdaddr);
-
- if (ioctl(dd, HCIBLOCKADDR, &bdaddr) < 0) {
- perror("ioctl(HCIBLOCKADDR)");
- exit(1);
- }
-
- hci_close_dev(dd);
-}
-
-static void cmd_unblock(int ctl, int hdev, char *opt)
-{
- bdaddr_t bdaddr;
- int dd;
-
- if (!opt)
- return;
-
- dd = hci_open_dev(hdev);
- if (dd < 0) {
- fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
- hdev, strerror(errno), errno);
- exit(1);
- }
-
- if (!strcasecmp(opt, "all"))
- bacpy(&bdaddr, BDADDR_ANY);
- else
- str2ba(opt, &bdaddr);
-
- if (ioctl(dd, HCIUNBLOCKADDR, &bdaddr) < 0) {
- perror("ioctl(HCIUNBLOCKADDR)");
- exit(1);
- }
-
- hci_close_dev(dd);
-}
-
-static void print_dev_hdr(struct hci_dev_info *di)
-{
- static int hdr = -1;
- char addr[18];
-
- if (hdr == di->dev_id)
- return;
- hdr = di->dev_id;
-
- ba2str(&di->bdaddr, addr);
-
- printf("%s:\tType: %s Bus: %s\n", di->name,
- hci_typetostr((di->type & 0x30) >> 4),
- hci_bustostr(di->type & 0x0f));
- printf("\tBD Address: %s ACL MTU: %d:%d SCO MTU: %d:%d\n",
- addr, di->acl_mtu, di->acl_pkts,
- di->sco_mtu, di->sco_pkts);
-}
-
-static void print_dev_info(int ctl, struct hci_dev_info *di)
-{
- struct hci_dev_stats *st = &di->stat;
- char *str;
-
- print_dev_hdr(di);
-
- str = hci_dflagstostr(di->flags);
- printf("\t%s\n", str);
- bt_free(str);
-
- printf("\tRX bytes:%d acl:%d sco:%d events:%d errors:%d\n",
- st->byte_rx, st->acl_rx, st->sco_rx, st->evt_rx, st->err_rx);
-
- printf("\tTX bytes:%d acl:%d sco:%d commands:%d errors:%d\n",
- st->byte_tx, st->acl_tx, st->sco_tx, st->cmd_tx, st->err_tx);
-
- if (all && !hci_test_bit(HCI_RAW, &di->flags)) {
- print_dev_features(di, 0);
-
- if (((di->type & 0x30) >> 4) == HCI_PRIMARY) {
- print_pkt_type(di);
- print_link_policy(di);
- print_link_mode(di);
-
- if (hci_test_bit(HCI_UP, &di->flags)) {
- cmd_name(ctl, di->dev_id, NULL);
- cmd_class(ctl, di->dev_id, NULL);
- }
- }
-
- if (hci_test_bit(HCI_UP, &di->flags))
- cmd_version(ctl, di->dev_id, NULL);
- }
-
- printf("\n");
-}
-
-static struct {
- char *cmd;
- void (*func)(int ctl, int hdev, char *opt);
- char *opt;
- char *doc;
-} command[] = {
- { "up", cmd_up, 0, "Open and initialize HCI device" },
- { "down", cmd_down, 0, "Close HCI device" },
- { "reset", cmd_reset, 0, "Reset HCI device" },
- { "rstat", cmd_rstat, 0, "Reset statistic counters" },
- { "auth", cmd_auth, 0, "Enable Authentication" },
- { "noauth", cmd_auth, 0, "Disable Authentication" },
- { "encrypt", cmd_encrypt, 0, "Enable Encryption" },
- { "noencrypt", cmd_encrypt, 0, "Disable Encryption" },
- { "piscan", cmd_scan, 0, "Enable Page and Inquiry scan" },
- { "noscan", cmd_scan, 0, "Disable scan" },
- { "iscan", cmd_scan, 0, "Enable Inquiry scan" },
- { "pscan", cmd_scan, 0, "Enable Page scan" },
- { "ptype", cmd_ptype, "[type]", "Get/Set default packet type" },
- { "lm", cmd_lm, "[mode]", "Get/Set default link mode" },
- { "lp", cmd_lp, "[policy]", "Get/Set default link policy" },
- { "name", cmd_name, "[name]", "Get/Set local name" },
- { "class", cmd_class, "[class]", "Get/Set class of device" },
- { "voice", cmd_voice, "[voice]", "Get/Set voice setting" },
- { "iac", cmd_iac, "[iac]", "Get/Set inquiry access code" },
- { "inqtpl", cmd_inq_tpl, "[level]", "Get/Set inquiry transmit power level" },
- { "inqmode", cmd_inq_mode, "[mode]", "Get/Set inquiry mode" },
- { "inqdata", cmd_inq_data, "[data]", "Get/Set inquiry data" },
- { "inqtype", cmd_inq_type, "[type]", "Get/Set inquiry scan type" },
- { "inqparms", cmd_inq_parms, "[win:int]", "Get/Set inquiry scan window and interval" },
- { "pageparms", cmd_page_parms, "[win:int]", "Get/Set page scan window and interval" },
- { "pageto", cmd_page_to, "[to]", "Get/Set page timeout" },
- { "afhmode", cmd_afh_mode, "[mode]", "Get/Set AFH mode" },
- { "sspmode", cmd_ssp_mode, "[mode]", "Get/Set Simple Pairing Mode" },
- { "aclmtu", cmd_aclmtu, "<mtu:pkt>", "Set ACL MTU and number of packets" },
- { "scomtu", cmd_scomtu, "<mtu:pkt>", "Set SCO MTU and number of packets" },
- { "delkey", cmd_delkey, "<bdaddr>", "Delete link key from the device" },
- { "oobdata", cmd_oob_data, 0, "Get local OOB data" },
- { "commands", cmd_commands, 0, "Display supported commands" },
- { "features", cmd_features, 0, "Display device features" },
- { "version", cmd_version, 0, "Display version information" },
- { "revision", cmd_revision, 0, "Display revision information" },
- { "block", cmd_block, "<bdaddr>", "Add a device to the blacklist" },
- { "unblock", cmd_unblock, "<bdaddr>", "Remove a device from the blacklist" },
- { "lerandaddr", cmd_le_addr, "<bdaddr>", "Set LE Random Address" },
- { "leadv", cmd_le_adv, "[type]", "Enable LE advertising"
- "\n\t\t\t0 - Connectable undirected advertising (default)"
- "\n\t\t\t3 - Non connectable undirected advertising"},
- { "noleadv", cmd_no_le_adv, 0, "Disable LE advertising" },
- { "lestates", cmd_le_states, 0, "Display the supported LE states" },
- { NULL, NULL, 0 }
-};
-
-static void usage(void)
-{
- int i;
-
- printf("hciconfig - HCI device configuration utility\n");
- printf("Usage:\n"
- "\thciconfig\n"
- "\thciconfig [-a] hciX [command ...]\n");
- printf("Commands:\n");
- for (i = 0; command[i].cmd; i++)
- printf("\t%-10s %-8s\t%s\n", command[i].cmd,
- command[i].opt ? command[i].opt : " ",
- command[i].doc);
-}
-
-static struct option main_options[] = {
- { "help", 0, 0, 'h' },
- { "all", 0, 0, 'a' },
- { 0, 0, 0, 0 }
-};
-
-int main(int argc, char *argv[])
-{
- int opt, ctl, i, cmd = 0;
-
- while ((opt = getopt_long(argc, argv, "ah", main_options, NULL)) != -1) {
- switch (opt) {
- case 'a':
- all = 1;
- break;
-
- case 'h':
- default:
- usage();
- exit(0);
- }
- }
-
- argc -= optind;
- argv += optind;
- optind = 0;
-
- /* Open HCI socket */
- if ((ctl = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI)) < 0) {
- perror("Can't open HCI socket.");
- exit(1);
- }
-
- if (argc < 1) {
- print_dev_list(ctl, 0);
- exit(0);
- }
-
- di.dev_id = atoi(argv[0] + 3);
- argc--; argv++;
-
- if (ioctl(ctl, HCIGETDEVINFO, (void *) &di)) {
- perror("Can't get device info");
- exit(1);
- }
-
- while (argc > 0) {
- for (i = 0; command[i].cmd; i++) {
- if (strncmp(command[i].cmd,
- *argv, strlen(command[i].cmd)))
- continue;
-
- if (command[i].opt) {
- argc--; argv++;
- }
-
- command[i].func(ctl, di.dev_id, *argv);
- cmd = 1;
- break;
- }
-
- if (command[i].cmd == 0)
- fprintf(stderr, "Warning: unknown command - \"%s\"\n",
- *argv);
-
- argc--; argv++;
- }
-
- if (!cmd)
- print_dev_info(ctl, &di);
-
- close(ctl);
- return 0;
-}
diff --git a/textfile.c b/textfile.c
deleted file mode 100644
index 7267f3a773bd..000000000000
--- a/textfile.c
+++ /dev/null
@@ -1,475 +0,0 @@
-/*
- *
- * BlueZ - Bluetooth protocol stack for Linux
- *
- * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
- *
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#include <ctype.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <sys/param.h>
-
-#include "textfile.h"
-
-static int create_dirs(const char *filename, const mode_t mode)
-{
- struct stat st;
- char dir[PATH_MAX + 1], *prev, *next;
- int err;
-
- err = stat(filename, &st);
- if (!err && S_ISREG(st.st_mode))
- return 0;
-
- memset(dir, 0, PATH_MAX + 1);
- strcat(dir, "/");
-
- prev = strchr(filename, '/');
-
- while (prev) {
- next = strchr(prev + 1, '/');
- if (!next)
- break;
-
- if (next - prev == 1) {
- prev = next;
- continue;
- }
-
- strncat(dir, prev + 1, next - prev);
- mkdir(dir, mode);
-
- prev = next;
- }
-
- return 0;
-}
-
-int create_file(const char *filename, const mode_t mode)
-{
- int fd;
-
- create_dirs(filename, S_IRUSR | S_IWUSR | S_IXUSR);
-
- fd = open(filename, O_RDWR | O_CREAT, mode);
- if (fd < 0)
- return fd;
-
- close(fd);
-
- return 0;
-}
-
-int create_name(char *buf, size_t size, const char *path, const char *address, const char *name)
-{
- return snprintf(buf, size, "%s/%s/%s", path, address, name);
-}
-
-static inline char *find_key(char *map, size_t size, const char *key, size_t len, int icase)
-{
- char *ptr = map;
- size_t ptrlen = size;
-
- while (ptrlen > len + 1) {
- int cmp = (icase) ? strncasecmp(ptr, key, len) : strncmp(ptr, key, len);
- if (cmp == 0) {
- if (ptr == map && *(ptr + len) == ' ')
- return ptr;
-
- if ((*(ptr - 1) == '\r' || *(ptr - 1) == '\n') &&
- *(ptr + len) == ' ')
- return ptr;
- }
-
- if (icase) {
- char *p1 = memchr(ptr + 1, tolower(*key), ptrlen - 1);
- char *p2 = memchr(ptr + 1, toupper(*key), ptrlen - 1);
-
- if (!p1)
- ptr = p2;
- else if (!p2)
- ptr = p1;
- else
- ptr = (p1 < p2) ? p1 : p2;
- } else
- ptr = memchr(ptr + 1, *key, ptrlen - 1);
-
- if (!ptr)
- return NULL;
-
- ptrlen = size - (ptr - map);
- }
-
- return NULL;
-}
-
-static inline int write_key_value(int fd, const char *key, const char *value)
-{
- char *str;
- size_t size;
- int err = 0;
-
- size = strlen(key) + strlen(value) + 2;
-
- str = malloc(size + 1);
- if (!str)
- return ENOMEM;
-
- sprintf(str, "%s %s\n", key, value);
-
- if (write(fd, str, size) < 0)
- err = -errno;
-
- free(str);
-
- return err;
-}
-
-static char *strnpbrk(const char *s, ssize_t len, const char *accept)
-{
- const char *p = s;
- const char *end;
-
- end = s + len - 1;
-
- while (p <= end && *p) {
- const char *a = accept;
-
- while (*a) {
- if (*p == *a)
- return (char *) p;
- a++;
- }
-
- p++;
- }
-
- return NULL;
-}
-
-static int write_key(const char *pathname, const char *key, const char *value, int icase)
-{
- struct stat st;
- char *map, *off, *end, *str;
- off_t size;
- size_t base;
- int fd, len, err = 0;
-
- fd = open(pathname, O_RDWR);
- if (fd < 0)
- return -errno;
-
- if (flock(fd, LOCK_EX) < 0) {
- err = -errno;
- goto close;
- }
-
- if (fstat(fd, &st) < 0) {
- err = -errno;
- goto unlock;
- }
-
- size = st.st_size;
-
- if (!size) {
- if (value) {
- lseek(fd, size, SEEK_SET);
- err = write_key_value(fd, key, value);
- }
- goto unlock;
- }
-
- map = mmap(NULL, size, PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_LOCKED, fd, 0);
- if (!map || map == MAP_FAILED) {
- err = -errno;
- goto unlock;
- }
-
- len = strlen(key);
- off = find_key(map, size, key, len, icase);
- if (!off) {
- munmap(map, size);
- if (value) {
- lseek(fd, size, SEEK_SET);
- err = write_key_value(fd, key, value);
- }
- goto unlock;
- }
-
- base = off - map;
-
- end = strnpbrk(off, size, "\r\n");
- if (!end) {
- err = -EILSEQ;
- goto unmap;
- }
-
- if (value && ((ssize_t) strlen(value) == end - off - len - 1) &&
- !strncmp(off + len + 1, value, end - off - len - 1))
- goto unmap;
-
- len = strspn(end, "\r\n");
- end += len;
-
- len = size - (end - map);
- if (!len) {
- munmap(map, size);
- if (ftruncate(fd, base) < 0) {
- err = -errno;
- goto unlock;
- }
- lseek(fd, base, SEEK_SET);
- if (value)
- err = write_key_value(fd, key, value);
-
- goto unlock;
- }
-
- if (len < 0 || len > size) {
- err = -EILSEQ;
- goto unmap;
- }
-
- str = malloc(len);
- if (!str) {
- err = -errno;
- goto unmap;
- }
-
- memcpy(str, end, len);
-
- munmap(map, size);
- if (ftruncate(fd, base) < 0) {
- err = -errno;
- free(str);
- goto unlock;
- }
- lseek(fd, base, SEEK_SET);
- if (value)
- err = write_key_value(fd, key, value);
-
- if (write(fd, str, len) < 0)
- err = -errno;
-
- free(str);
-
- goto unlock;
-
-unmap:
- munmap(map, size);
-
-unlock:
- flock(fd, LOCK_UN);
-
-close:
- fdatasync(fd);
-
- close(fd);
- errno = -err;
-
- return err;
-}
-
-static char *read_key(const char *pathname, const char *key, int icase)
-{
- struct stat st;
- char *map, *off, *end, *str = NULL;
- off_t size; size_t len;
- int fd, err = 0;
-
- fd = open(pathname, O_RDONLY);
- if (fd < 0)
- return NULL;
-
- if (flock(fd, LOCK_SH) < 0) {
- err = -errno;
- goto close;
- }
-
- if (fstat(fd, &st) < 0) {
- err = -errno;
- goto unlock;
- }
-
- size = st.st_size;
-
- map = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
- if (!map || map == MAP_FAILED) {
- err = -errno;
- goto unlock;
- }
-
- len = strlen(key);
- off = find_key(map, size, key, len, icase);
- if (!off) {
- err = -EILSEQ;
- goto unmap;
- }
-
- end = strnpbrk(off, size - (off - map), "\r\n");
- if (!end) {
- err = -EILSEQ;
- goto unmap;
- }
-
- str = malloc(end - off - len);
- if (!str) {
- err = -EILSEQ;
- goto unmap;
- }
-
- memset(str, 0, end - off - len);
- strncpy(str, off + len + 1, end - off - len - 1);
-
-unmap:
- munmap(map, size);
-
-unlock:
- flock(fd, LOCK_UN);
-
-close:
- close(fd);
- errno = -err;
-
- return str;
-}
-
-int textfile_put(const char *pathname, const char *key, const char *value)
-{
- return write_key(pathname, key, value, 0);
-}
-
-int textfile_del(const char *pathname, const char *key)
-{
- return write_key(pathname, key, NULL, 0);
-}
-
-char *textfile_get(const char *pathname, const char *key)
-{
- return read_key(pathname, key, 0);
-}
-
-int textfile_foreach(const char *pathname, textfile_cb func, void *data)
-{
- struct stat st;
- char *map, *off, *end, *key, *value;
- off_t size; size_t len;
- int fd, err = 0;
-
- fd = open(pathname, O_RDONLY);
- if (fd < 0)
- return -errno;
-
- if (flock(fd, LOCK_SH) < 0) {
- err = -errno;
- goto close;
- }
-
- if (fstat(fd, &st) < 0) {
- err = -errno;
- goto unlock;
- }
-
- size = st.st_size;
-
- map = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
- if (!map || map == MAP_FAILED) {
- err = -errno;
- goto unlock;
- }
-
- off = map;
-
- while (size - (off - map) > 0) {
- end = strnpbrk(off, size - (off - map), " ");
- if (!end) {
- err = -EILSEQ;
- break;
- }
-
- len = end - off;
-
- key = malloc(len + 1);
- if (!key) {
- err = -errno;
- break;
- }
-
- memset(key, 0, len + 1);
- memcpy(key, off, len);
-
- off = end + 1;
-
- if (size - (off - map) < 0) {
- err = -EILSEQ;
- free(key);
- break;
- }
-
- end = strnpbrk(off, size - (off - map), "\r\n");
- if (!end) {
- err = -EILSEQ;
- free(key);
- break;
- }
-
- len = end - off;
-
- value = malloc(len + 1);
- if (!value) {
- err = -errno;
- free(key);
- break;
- }
-
- memset(value, 0, len + 1);
- memcpy(value, off, len);
-
- func(key, value, data);
-
- free(key);
- free(value);
-
- off = end + 1;
- }
-
- munmap(map, size);
-
-unlock:
- flock(fd, LOCK_UN);
-
-close:
- close(fd);
- errno = -err;
-
- return 0;
-}
diff --git a/textfile.h b/textfile.h
deleted file mode 100644
index f01629e43ab6..000000000000
--- a/textfile.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *
- * BlueZ - Bluetooth protocol stack for Linux
- *
- * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
- *
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-int create_file(const char *filename, const mode_t mode);
-int create_name(char *buf, size_t size, const char *path,
- const char *address, const char *name);
-
-int textfile_put(const char *pathname, const char *key, const char *value);
-int textfile_del(const char *pathname, const char *key);
-char *textfile_get(const char *pathname, const char *key);
-
-typedef void (*textfile_cb) (char *key, char *value, void *data);
-
-int textfile_foreach(const char *pathname, textfile_cb func, void *data);
diff --git a/util.h b/util.h
deleted file mode 100644
index 604dc3be461c..000000000000
--- a/util.h
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- *
- * BlueZ - Bluetooth protocol stack for Linux
- *
- * Copyright (C) 2012-2014 Intel Corporation. All rights reserved.
- *
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <stdint.h>
-#include <stdlib.h>
-#include <alloca.h>
-#include <byteswap.h>
-#include <string.h>
-
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-#define le16_to_cpu(val) (val)
-#define le32_to_cpu(val) (val)
-#define le64_to_cpu(val) (val)
-#define cpu_to_le16(val) (val)
-#define cpu_to_le32(val) (val)
-#define cpu_to_le64(val) (val)
-#define be16_to_cpu(val) bswap_16(val)
-#define be32_to_cpu(val) bswap_32(val)
-#define be64_to_cpu(val) bswap_64(val)
-#define cpu_to_be16(val) bswap_16(val)
-#define cpu_to_be32(val) bswap_32(val)
-#define cpu_to_be64(val) bswap_64(val)
-#elif __BYTE_ORDER == __BIG_ENDIAN
-#define le16_to_cpu(val) bswap_16(val)
-#define le32_to_cpu(val) bswap_32(val)
-#define le64_to_cpu(val) bswap_64(val)
-#define cpu_to_le16(val) bswap_16(val)
-#define cpu_to_le32(val) bswap_32(val)
-#define cpu_to_le64(val) bswap_64(val)
-#define be16_to_cpu(val) (val)
-#define be32_to_cpu(val) (val)
-#define be64_to_cpu(val) (val)
-#define cpu_to_be16(val) (val)
-#define cpu_to_be32(val) (val)
-#define cpu_to_be64(val) (val)
-#else
-#error "Unknown byte order"
-#endif
-
-#define get_unaligned(ptr) \
-__extension__ ({ \
- struct __attribute__((packed)) { \
- __typeof__(*(ptr)) __v; \
- } *__p = (__typeof__(__p)) (ptr); \
- __p->__v; \
-})
-
-#define put_unaligned(val, ptr) \
-do { \
- struct __attribute__((packed)) { \
- __typeof__(*(ptr)) __v; \
- } *__p = (__typeof__(__p)) (ptr); \
- __p->__v = (val); \
-} while (0)
-
-#define PTR_TO_UINT(p) ((unsigned int) ((uintptr_t) (p)))
-#define UINT_TO_PTR(u) ((void *) ((uintptr_t) (u)))
-
-#define PTR_TO_INT(p) ((int) ((intptr_t) (p)))
-#define INT_TO_PTR(u) ((void *) ((intptr_t) (u)))
-
-#define new0(type, count) \
- (type *) (__extension__ ({ \
- size_t __n = (size_t) (count); \
- size_t __s = sizeof(type); \
- void *__p; \
- __p = btd_malloc(__n * __s); \
- memset(__p, 0, __n * __s); \
- __p; \
- }))
-
-#define newa(t, n) ((t*) alloca(sizeof(t)*(n)))
-#define malloc0(n) (calloc((n), 1))
-
-char *strdelimit(char *str, char *del, char c);
-int strsuffix(const char *str, const char *suffix);
-
-void *btd_malloc(size_t size);
-
-typedef void (*util_debug_func_t)(const char *str, void *user_data);
-
-void util_debug(util_debug_func_t function, void *user_data,
- const char *format, ...)
- __attribute__((format(printf, 3, 4)));
-
-void util_hexdump(const char dir, const unsigned char *buf, size_t len,
- util_debug_func_t function, void *user_data);
-
-unsigned char util_get_dt(const char *parent, const char *name);
-
-uint8_t util_get_uid(unsigned int *bitmap, uint8_t max);
-void util_clear_uid(unsigned int *bitmap, uint8_t id);
-
-const char *bt_uuid16_to_str(uint16_t uuid);
-const char *bt_uuid32_to_str(uint32_t uuid);
-const char *bt_uuidstr_to_str(const char *uuid);
-const char *bt_appear_to_str(uint16_t appearance);
-
-static inline int8_t get_s8(const void *ptr)
-{
- return *((int8_t *) ptr);
-}
-
-static inline uint8_t get_u8(const void *ptr)
-{
- return *((uint8_t *) ptr);
-}
-
-static inline uint16_t get_le16(const void *ptr)
-{
- return le16_to_cpu(get_unaligned((const uint16_t *) ptr));
-}
-
-static inline uint16_t get_be16(const void *ptr)
-{
- return be16_to_cpu(get_unaligned((const uint16_t *) ptr));
-}
-
-static inline uint32_t get_le32(const void *ptr)
-{
- return le32_to_cpu(get_unaligned((const uint32_t *) ptr));
-}
-
-static inline uint32_t get_be32(const void *ptr)
-{
- return be32_to_cpu(get_unaligned((const uint32_t *) ptr));
-}
-
-static inline uint64_t get_le64(const void *ptr)
-{
- return le64_to_cpu(get_unaligned((const uint64_t *) ptr));
-}
-
-static inline uint64_t get_be64(const void *ptr)
-{
- return be64_to_cpu(get_unaligned((const uint64_t *) ptr));
-}
-
-static inline void put_le16(uint16_t val, void *dst)
-{
- put_unaligned(cpu_to_le16(val), (uint16_t *) dst);
-}
-
-static inline void put_be16(uint16_t val, const void *ptr)
-{
- put_unaligned(cpu_to_be16(val), (uint16_t *) ptr);
-}
-
-static inline void put_le32(uint32_t val, void *dst)
-{
- put_unaligned(cpu_to_le32(val), (uint32_t *) dst);
-}
-
-static inline void put_be32(uint32_t val, void *dst)
-{
- put_unaligned(cpu_to_be32(val), (uint32_t *) dst);
-}
-
-static inline void put_le64(uint64_t val, void *dst)
-{
- put_unaligned(cpu_to_le64(val), (uint64_t *) dst);
-}
-
-static inline void put_be64(uint64_t val, void *dst)
-{
- put_unaligned(cpu_to_be64(val), (uint64_t *) dst);
-}