Re: [PATCH] hciconfig: add LE_SET_ADVERTISE_ENABLE cmd

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for reviewing. I'll update and send again.

On 08/19/2010 12:36 PM, Claudio Takahasi wrote:
Hi Briglia,

On Thu, Aug 19, 2010 at 12:43 PM, Anderson Briglia
<anderson.briglia@xxxxxxxxxxxxx>  wrote:
This patch implements two new hciconfig commands: leadv and noleadv.
These new hciconfig flags are responsible to LE_SET_ADVERTISE_ENABLE
command implementation.
---
  lib/hci.c         |    1 +
  lib/hci.h         |    1 +
  tools/hciconfig.c |   46 ++++++++++++++++++++++++++++++++++++++++++++++
  3 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/lib/hci.c b/lib/hci.c
index 3304daa..64ac5f2 100644
--- a/lib/hci.c
+++ b/lib/hci.c
@@ -188,6 +188,7 @@ static hci_map dev_flags_map[] = {
        { "INQUIRY", HCI_INQUIRY },
        { "AUTH",    HCI_AUTH    },
        { "ENCRYPT", HCI_ENCRYPT },
+       { "LEADV",   HCI_LE_ADV  },
        { NULL }
  };

diff --git a/lib/hci.h b/lib/hci.h
index 512dab9..8b9d33f 100644
--- a/lib/hci.h
+++ b/lib/hci.h
@@ -73,6 +73,7 @@ enum {
        HCI_INQUIRY,

        HCI_RAW,
+       HCI_LE_ADV,
  };
I prefer this small change in another commit, it needs your previous
kernel patch to work/test properly.

  /* HCI ioctl defines */
diff --git a/tools/hciconfig.c b/tools/hciconfig.c
index 87dd127..ba12a8a 100644
--- a/tools/hciconfig.c
+++ b/tools/hciconfig.c
@@ -149,6 +149,50 @@ static void cmd_scan(int ctl, int hdev, char *opt)
        }
  }

+static void cmd_le_adv(int ctl, int hdev, char *opt)
+{
+
No empty line here!

+       struct hci_request rq;
+       le_set_advertise_enable_cp advertise_cp;
+       uint8_t status;
+       uint8_t enable;
"enable" can be declared in the same line of "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);
+       }
+
+       enable = 0x01;
+       if (!strcmp(opt, "noleadv"))
+               enable = 0x00;
+
+       memset(&advertise_cp, 0, sizeof(advertise_cp));
+       advertise_cp.enable = enable;
+
+       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, 100);
+
No empty line here.
+       if (status || ret<  0) {
+               errno = EIO;
No need to set errno. hci_send_req sets errno when needed.

Claudio

+               fprintf(stderr, "Can't set advertise mode on hci%d: %s (%d)\n",
+                                               hdev, strerror(errno), errno);
+       }
+
+       hci_close_dev(dd);
+}
+
  static void cmd_iac(int ctl, int hdev, char *opt)
  {
        int s = hci_open_dev(hdev);
@@ -1728,6 +1772,8 @@ static struct {
        { "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" },
+       { "leadv",      cmd_le_adv,     0,              "Enable LE advertising" },
+       { "noleadv",    cmd_le_adv,     0,              "Disable LE advertising" },
        { NULL, NULL, 0 }
  };

--
1.7.0.4

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux