2015-02-05 02:28:56

by An, Tedd

[permalink] [raw]
Subject: [RFC 1/2] Bluetooth: Add led_off callback to manually turn off the LED before closing device

From: Tedd Ho-Jeong An <[email protected]>

This callback allows a vendor to send the vendor specific command, for example
turn off the LED, before cloing the hci interface.

Signed-off-by: Tedd Ho-Jeong An <[email protected]>
---
include/net/bluetooth/hci_core.h | 1 +
net/bluetooth/hci_core.c | 4 ++++
2 files changed, 5 insertions(+)

diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index 52863c3..99a9ecd 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -377,6 +377,7 @@ struct hci_dev {
void (*notify)(struct hci_dev *hdev, unsigned int evt);
void (*hw_error)(struct hci_dev *hdev, u8 code);
int (*set_bdaddr)(struct hci_dev *hdev, const bdaddr_t *bdaddr);
+ int (*led_off)(struct hci_dev *hdev);
};

#define HCI_PHY_HANDLE(handle) (handle & 0xff)
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 3322d3f..329f117 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -1591,6 +1591,10 @@ static int hci_dev_do_close(struct hci_dev *hdev)
{
BT_DBG("%s %p", hdev->name, hdev);

+ /* allows vendors to send the command before close the device */
+ if (!test_bit(HCI_UNREGISTER, &hdev->dev_flags) && hdev->led_off)
+ hdev->led_off(hdev);
+
cancel_delayed_work(&hdev->power_off);

hci_req_cancel(hdev, ENODEV);
--
1.9.1



2015-02-05 08:50:21

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [RFC 1/2] Bluetooth: Add led_off callback to manually turn off the LED before closing device

Hi Tedd,

> This callback allows a vendor to send the vendor specific command, for example
> turn off the LED, before cloing the hci interface.
>
> Signed-off-by: Tedd Ho-Jeong An <[email protected]>
> ---
> include/net/bluetooth/hci_core.h | 1 +
> net/bluetooth/hci_core.c | 4 ++++
> 2 files changed, 5 insertions(+)
>
> diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
> index 52863c3..99a9ecd 100644
> --- a/include/net/bluetooth/hci_core.h
> +++ b/include/net/bluetooth/hci_core.h
> @@ -377,6 +377,7 @@ struct hci_dev {
> void (*notify)(struct hci_dev *hdev, unsigned int evt);
> void (*hw_error)(struct hci_dev *hdev, u8 code);
> int (*set_bdaddr)(struct hci_dev *hdev, const bdaddr_t *bdaddr);
> + int (*led_off)(struct hci_dev *hdev);
> };

so I actually wonder if this is not better called shutdown() and we ensure that it is always called before close() callback. The name led_off() seems to be pretty specific.

Regards

Marcel