diff options
| -rw-r--r-- | tools/bccmd.8 | 3 | ||||
| -rw-r--r-- | tools/bccmd.c | 36 | 
2 files changed, 39 insertions, 0 deletions
| diff --git a/tools/bccmd.8 b/tools/bccmd.8 index a51be28e..58e8814f 100644 --- a/tools/bccmd.8 +++ b/tools/bccmd.8 @@ -23,6 +23,9 @@ devices. If run without the <command> argument, a short help page will be diapla  Specify a particular device to operate on. If not specified, default is the first available device.  .SH COMMANDS  .TP +.BI builddef +Get build definitions +.TP  .BI keylen\ <handle>  Get current crypt key length  .TP diff --git a/tools/bccmd.c b/tools/bccmd.c index e476165e..4d32c089 100644 --- a/tools/bccmd.c +++ b/tools/bccmd.c @@ -42,6 +42,41 @@  #include "csr.h" +static int cmd_builddef(int dd, int argc, char *argv[]) +{ +	uint8_t buf[8]; +	uint16_t seqnum = 0x4711, def = 0x0000, nextdef = 0x0000; +	int err = 0; + +	printf("Build definitions:"); + +	while (1) { +		memset(buf, 0, sizeof(buf)); +		buf[0] = def & 0xff; +		buf[1] = def >> 8; + +		err = csr_read_varid_complex(dd, seqnum++, +				CSR_VARID_GET_NEXT_BUILDDEF, buf, sizeof(buf)); +		if (err < 0) { +			errno = -err; +			break; +		} + +		nextdef = buf[2] | (buf[3] << 8); + +		if (nextdef == 0x0000) +			break; + +		def = nextdef; + +		printf(" %s (0x%02x)", csr_builddeftostr(def), def); +	} + +	printf("\n"); + +	return err; +} +  static int cmd_keylen(int dd, int argc, char *argv[])  {  	uint8_t buf[8]; @@ -171,6 +206,7 @@ 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"            }, | 
