diff options
-rw-r--r-- | tools/bccmd.8 | 3 | ||||
-rw-r--r-- | tools/bccmd.c | 76 |
2 files changed, 55 insertions, 24 deletions
diff --git a/tools/bccmd.8 b/tools/bccmd.8 index c3c93f76..28cbe880 100644 --- a/tools/bccmd.8 +++ b/tools/bccmd.8 @@ -87,6 +87,9 @@ Revert to channel hopping .BI rttxdata1\ <decimal\ freq\ MHz>\ <level> TXData1 radio test .TP +.BI radiotest\ <decimal\ freq\ MHz>\ <level>\ <id> +Run radio tests, tests 4, 6 and 7 are transmit tests +.TP .BI memtypes Get memory types .TP diff --git a/tools/bccmd.c b/tools/bccmd.c index 8d65a454..efce49d8 100644 --- a/tools/bccmd.c +++ b/tools/bccmd.c @@ -551,6 +551,33 @@ static int cmd_rttxdata1(int transport, int argc, char *argv[]) return transport_write(transport, CSR_VARID_RADIOTEST, array, 8); } +static int cmd_radiotest(int transport, int argc, char *argv[]) +{ + uint8_t array[8]; + uint16_t freq, level, test; + + OPT_HELP(3, NULL); + + freq = atoi(argv[0]); + + if (!strncasecmp(argv[1], "0x", 2)) + level = strtol(argv[1], NULL, 16); + else + level = atoi(argv[1]); + + test = atoi(argv[2]); + + memset(array, 0, sizeof(array)); + array[0] = test & 0xff; + array[1] = test >> 8; + array[2] = freq & 0xff; + array[3] = freq >> 8; + array[4] = level & 0xff; + array[5] = level >> 8; + + return transport_write(transport, CSR_VARID_RADIOTEST, array, 8); +} + static int cmd_memtypes(int transport, int argc, char *argv[]) { uint8_t array[8]; @@ -1043,29 +1070,30 @@ static struct { char *arg; char *doc; } commands[] = { - { "builddef", cmd_builddef, "", "Get build definitions" }, - { "keylen", cmd_keylen, "<handle>", "Get current crypt key length" }, - { "clock", cmd_clock, "", "Get local Bluetooth clock" }, - { "rand", cmd_rand, "", "Get random number" }, - { "chiprev", cmd_chiprev, "", "Get chip revision" }, - { "buildname", cmd_buildname, "", "Get the full build name" }, - { "panicarg", cmd_panicarg, "", "Get panic code argument" }, - { "faultarg", cmd_faultarg, "", "Get fault code argument" }, - { "coldreset", cmd_coldreset, "", "Perform cold reset" }, - { "warmreset", cmd_warmreset, "", "Perform warm reset" }, - { "disabletx", cmd_disabletx, "", "Disable TX on the device" }, - { "enabletx", cmd_enabletx, "", "Enable TX on the device" }, - { "singlechan",cmd_singlechan,"<channel>", "Lock radio on specific channel" }, - { "hoppingon", cmd_hoppingon, "", "Revert to channel hopping" }, - { "rttxdata1", cmd_rttxdata1, "<freq> <level>","TXData1 radio test" }, - { "memtypes", cmd_memtypes, NULL, "Get memory types" }, - { "psget", cmd_psget, "<key>", "Get value for PS key" }, - { "psset", cmd_psset, "<key> <value>", "Set value for PS key" }, - { "psclr", cmd_psclr, "<key>", "Clear value for PS key" }, - { "pslist", cmd_pslist, NULL, "List all PS keys" }, - { "psread", cmd_psread, NULL, "Read all PS keys" }, - { "psload", cmd_psload, "<file>", "Load all PS keys from PSR file" }, - { "pscheck", cmd_pscheck, "<file>", "Check PSR file" }, + { "builddef", cmd_builddef, "", "Get build definitions" }, + { "keylen", cmd_keylen, "<handle>", "Get current crypt key length" }, + { "clock", cmd_clock, "", "Get local Bluetooth clock" }, + { "rand", cmd_rand, "", "Get random number" }, + { "chiprev", cmd_chiprev, "", "Get chip revision" }, + { "buildname", cmd_buildname, "", "Get the full build name" }, + { "panicarg", cmd_panicarg, "", "Get panic code argument" }, + { "faultarg", cmd_faultarg, "", "Get fault code argument" }, + { "coldreset", cmd_coldreset, "", "Perform cold reset" }, + { "warmreset", cmd_warmreset, "", "Perform warm reset" }, + { "disabletx", cmd_disabletx, "", "Disable TX on the device" }, + { "enabletx", cmd_enabletx, "", "Enable TX on the device" }, + { "singlechan",cmd_singlechan,"<channel>", "Lock radio on specific channel" }, + { "hoppingon", cmd_hoppingon, "", "Revert to channel hopping" }, + { "rttxdata1", cmd_rttxdata1, "<freq> <level>", "TXData1 radio test" }, + { "radiotest", cmd_radiotest, "<freq> <level> <id>", "Run radio tests" }, + { "memtypes", cmd_memtypes, NULL, "Get memory types" }, + { "psget", cmd_psget, "<key>", "Get value for PS key" }, + { "psset", cmd_psset, "<key> <value>", "Set value for PS key" }, + { "psclr", cmd_psclr, "<key>", "Clear value for PS key" }, + { "pslist", cmd_pslist, NULL, "List all PS keys" }, + { "psread", cmd_psread, NULL, "Read all PS keys" }, + { "psload", cmd_psload, "<file>", "Load all PS keys from PSR file" }, + { "pscheck", cmd_pscheck, "<file>", "Check PSR file" }, { NULL } }; @@ -1088,7 +1116,7 @@ static void usage(void) printf("Commands:\n"); for (i = 0; commands[i].str; i++) - printf("\t%-10s %-14s\t%s\n", commands[i].str, + printf("\t%-10s %-20s\t%s\n", commands[i].str, commands[i].arg ? commands[i].arg : " ", commands[i].doc); printf("\n"); |