Back to home page

OSCL-LXR

 
 

    


0001 /*
0002    BlueZ - Bluetooth protocol stack for Linux
0003    Copyright (C) 2015  Intel Coropration
0004 
0005    This program is free software; you can redistribute it and/or modify
0006    it under the terms of the GNU General Public License version 2 as
0007    published by the Free Software Foundation;
0008 
0009    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
0010    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0011    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
0012    IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
0013    CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
0014    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
0015    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
0016    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
0017 
0018    ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
0019    COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
0020    SOFTWARE IS DISCLAIMED.
0021 */
0022 
0023 struct mgmt_pending_cmd {
0024     struct list_head list;
0025     u16 opcode;
0026     int index;
0027     void *param;
0028     size_t param_len;
0029     struct sock *sk;
0030     struct sk_buff *skb;
0031     void *user_data;
0032     int (*cmd_complete)(struct mgmt_pending_cmd *cmd, u8 status);
0033 };
0034 
0035 struct sk_buff *mgmt_alloc_skb(struct hci_dev *hdev, u16 opcode,
0036                    unsigned int size);
0037 int mgmt_send_event_skb(unsigned short channel, struct sk_buff *skb, int flag,
0038             struct sock *skip_sk);
0039 int mgmt_send_event(u16 event, struct hci_dev *hdev, unsigned short channel,
0040             void *data, u16 data_len, int flag, struct sock *skip_sk);
0041 int mgmt_cmd_status(struct sock *sk, u16 index, u16 cmd, u8 status);
0042 int mgmt_cmd_complete(struct sock *sk, u16 index, u16 cmd, u8 status,
0043               void *rp, size_t rp_len);
0044 
0045 struct mgmt_pending_cmd *mgmt_pending_find(unsigned short channel, u16 opcode,
0046                        struct hci_dev *hdev);
0047 struct mgmt_pending_cmd *mgmt_pending_find_data(unsigned short channel,
0048                         u16 opcode,
0049                         struct hci_dev *hdev,
0050                         const void *data);
0051 void mgmt_pending_foreach(u16 opcode, struct hci_dev *hdev,
0052               void (*cb)(struct mgmt_pending_cmd *cmd, void *data),
0053               void *data);
0054 struct mgmt_pending_cmd *mgmt_pending_add(struct sock *sk, u16 opcode,
0055                       struct hci_dev *hdev,
0056                       void *data, u16 len);
0057 struct mgmt_pending_cmd *mgmt_pending_new(struct sock *sk, u16 opcode,
0058                       struct hci_dev *hdev,
0059                       void *data, u16 len);
0060 void mgmt_pending_free(struct mgmt_pending_cmd *cmd);
0061 void mgmt_pending_remove(struct mgmt_pending_cmd *cmd);