From 4f32352b05190a3f70828c38f4a4f25655bb696e Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 3 Jul 2005 13:13:17 +0000 Subject: Move CSR panic and fault code reading to the bccmd tool --- tools/bccmd.c | 42 +++++++++++++++++++++++++++++++++++++++--- tools/hciconfig.c | 12 +----------- 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/tools/bccmd.c b/tools/bccmd.c index 5e358b01..df39a3df 100644 --- a/tools/bccmd.c +++ b/tools/bccmd.c @@ -95,14 +95,50 @@ static int cmd_clock(int dd, int argc, char *argv[]) return 0; } +static int cmd_panicarg(int dd, int argc, char *argv[]) +{ + uint16_t error = 0; + int err; + + err = csr_read_varid_uint16(dd, 5, CSR_VARID_PANIC_ARG, &error); + if (err < 0) { + errno = -err; + return -1; + } + + printf("Panic code: 0x%02x (%s)\n", error, + error < 0x100 ? "valid" : "invalid"); + + return 0; +} + +static int cmd_faultarg(int dd, int argc, char *argv[]) +{ + uint16_t error = 0; + int err; + + err = csr_read_varid_uint16(dd, 5, CSR_VARID_FAULT_ARG, &error); + if (err < 0) { + errno = -err; + return -1; + } + + printf("Fault code: 0x%02x (%s)\n", error, + error < 0x100 ? "valid" : "invalid"); + + return 0; +} + static struct { char *str; int (*func)(int dd, int argc, char **argv); char *arg; char *doc; } commands[] = { - { "keylen", cmd_keylen, "", "Get current crypt key length" }, - { "clock", cmd_clock, "", "Get local Bluetooth clock" }, + { "keylen", cmd_keylen, "", "Get current crypt key length" }, + { "clock", cmd_clock, "", "Get local Bluetooth clock" }, + { "panicarg", cmd_panicarg, "", "Get panic code argument" }, + { "faultarg", cmd_faultarg, "", "Get fault code argument" }, { NULL }, }; @@ -116,7 +152,7 @@ static void usage(void) printf("Commands:\n"); for (i = 0; commands[i].str; i++) - printf("\t%s\t%-8s\t%s\n", commands[i].str, + printf("\t%-10s%-8s\t%s\n", commands[i].str, commands[i].arg, commands[i].doc); } diff --git a/tools/hciconfig.c b/tools/hciconfig.c index f6c932e4..4dfb57a7 100644 --- a/tools/hciconfig.c +++ b/tools/hciconfig.c @@ -1173,7 +1173,7 @@ static void print_rev_ericsson(int dd) static void print_rev_csr(int dd, uint16_t rev) { - uint16_t buildid, chipver, chiprev, maxkeylen, mapsco, error; + 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)); @@ -1193,16 +1193,6 @@ static void print_rev_csr(int dd, uint16_t rev) if (!csr_read_pskey_uint16(dd, 4, CSR_PSKEY_HOSTIO_MAP_SCO_PCM, &mapsco)) printf("\tSCO mapping: %s\n", mapsco ? "PCM" : "HCI"); - - if (!csr_read_varid_uint16(dd, 5, CSR_VARID_PANIC_ARG, &error)) { - if (error < 0x0100) - printf("\tPanic code: 0x%02x\n", error); - } - - if (!csr_read_varid_uint16(dd, 6, CSR_VARID_FAULT_ARG, &error)) { - if (error < 0x0100) - printf("\tFault code: 0x%02x\n", error); - } } static void print_rev_digianswer(int dd) -- cgit