From 0738cf5e684464d157816be73c0b19efb7dd4fc7 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 8 Sep 2005 00:24:52 +0000 Subject: Support volatile changes of the BD_ADDR for CSR chips --- test/bdaddr.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'test/bdaddr.c') diff --git a/test/bdaddr.c b/test/bdaddr.c index 5331a8dc..57d9b005 100644 --- a/test/bdaddr.c +++ b/test/bdaddr.c @@ -41,6 +41,8 @@ #include #include +static int transient = 0; + #define OCF_ERICSSON_WRITE_BD_ADDR 0x000d typedef struct { bdaddr_t bdaddr; @@ -113,6 +115,9 @@ static int csr_write_bd_addr(int dd, bdaddr_t *bdaddr) unsigned char cp[254], rp[254]; struct hci_request rq; + if (transient) + cmd[14] = 0x08; + cmd[16] = bdaddr->b[2]; cmd[17] = 0x00; cmd[18] = bdaddr->b[0]; @@ -160,6 +165,9 @@ static int csr_reset_device(int dd) unsigned char cp[254], rp[254]; struct hci_request rq; + if (transient) + cmd[6] = 0x02; + memset(&cp, 0, sizeof(cp)); cp[0] = 0xc2; memcpy(cp + 1, cmd, sizeof(cmd)); @@ -222,12 +230,13 @@ static void usage(void) { printf("bdaddr - Utility for changing the Bluetooth device address\n\n"); printf("Usage:\n" - "\tbdaddr [-i ] [-r] [new bdaddr]\n"); + "\tbdaddr [-i ] [-r] [-t] [new bdaddr]\n"); } static struct option main_options[] = { { "device", 1, 0, 'i' }, { "reset", 0, 0, 'r' }, + { "transient", 0, 0, 't' }, { "help", 0, 0, 'h' }, { 0, 0, 0, 0 } }; @@ -242,7 +251,7 @@ int main(int argc, char *argv[]) bacpy(&bdaddr, BDADDR_ANY); - while ((opt=getopt_long(argc, argv, "+i:rh", main_options, NULL)) != -1) { + while ((opt=getopt_long(argc, argv, "+i:rth", main_options, NULL)) != -1) { switch (opt) { case 'i': dev = hci_devid(optarg); @@ -256,6 +265,10 @@ int main(int argc, char *argv[]) reset = 1; break; + case 't': + transient = 1; + break; + case 'h': default: usage(); -- cgit