Loading include/net/nfc/hci.h +3 −0 Original line number Diff line number Diff line Loading @@ -200,6 +200,9 @@ int nfc_hci_set_param(struct nfc_hci_dev *hdev, u8 gate, u8 idx, const u8 *param, size_t param_len); int nfc_hci_send_cmd(struct nfc_hci_dev *hdev, u8 gate, u8 cmd, const u8 *param, size_t param_len, struct sk_buff **skb); int nfc_hci_send_cmd_async(struct nfc_hci_dev *hdev, u8 gate, u8 cmd, const u8 *param, size_t param_len, data_exchange_cb_t cb, void *cb_context); int nfc_hci_send_response(struct nfc_hci_dev *hdev, u8 gate, u8 response, const u8 *param, size_t param_len); int nfc_hci_send_event(struct nfc_hci_dev *hdev, u8 gate, u8 event, Loading net/nfc/hci/command.c +33 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,20 @@ #include "hci.h" static int nfc_hci_execute_cmd_async(struct nfc_hci_dev *hdev, u8 pipe, u8 cmd, const u8 *param, size_t param_len, data_exchange_cb_t cb, void *cb_context) { pr_debug("exec cmd async through pipe=%d, cmd=%d, plen=%zd\n", pipe, cmd, param_len); /* TODO: Define hci cmd execution delay. Should it be the same * for all commands? */ return nfc_hci_hcp_message_tx(hdev, pipe, NFC_HCI_HCP_COMMAND, cmd, param, param_len, cb, cb_context, 3000); } /* * HCI command execution completion callback. * err will be a standard linux error (may be converted from HCI response) Loading Loading @@ -60,7 +74,8 @@ static int nfc_hci_execute_cmd(struct nfc_hci_dev *hdev, u8 pipe, u8 cmd, hcp_ew.exec_complete = false; hcp_ew.result_skb = NULL; pr_debug("through pipe=%d, cmd=%d, plen=%zd\n", pipe, cmd, param_len); pr_debug("exec cmd sync through pipe=%d, cmd=%d, plen=%zd\n", pipe, cmd, param_len); /* TODO: Define hci cmd execution delay. Should it be the same * for all commands? Loading Loading @@ -138,6 +153,23 @@ int nfc_hci_send_cmd(struct nfc_hci_dev *hdev, u8 gate, u8 cmd, } EXPORT_SYMBOL(nfc_hci_send_cmd); int nfc_hci_send_cmd_async(struct nfc_hci_dev *hdev, u8 gate, u8 cmd, const u8 *param, size_t param_len, data_exchange_cb_t cb, void *cb_context) { u8 pipe; pr_debug("\n"); pipe = hdev->gate2pipe[gate]; if (pipe == NFC_HCI_INVALID_PIPE) return -EADDRNOTAVAIL; return nfc_hci_execute_cmd_async(hdev, pipe, cmd, param, param_len, cb, cb_context); } EXPORT_SYMBOL(nfc_hci_send_cmd_async); int nfc_hci_set_param(struct nfc_hci_dev *hdev, u8 gate, u8 idx, const u8 *param, size_t param_len) { Loading Loading
include/net/nfc/hci.h +3 −0 Original line number Diff line number Diff line Loading @@ -200,6 +200,9 @@ int nfc_hci_set_param(struct nfc_hci_dev *hdev, u8 gate, u8 idx, const u8 *param, size_t param_len); int nfc_hci_send_cmd(struct nfc_hci_dev *hdev, u8 gate, u8 cmd, const u8 *param, size_t param_len, struct sk_buff **skb); int nfc_hci_send_cmd_async(struct nfc_hci_dev *hdev, u8 gate, u8 cmd, const u8 *param, size_t param_len, data_exchange_cb_t cb, void *cb_context); int nfc_hci_send_response(struct nfc_hci_dev *hdev, u8 gate, u8 response, const u8 *param, size_t param_len); int nfc_hci_send_event(struct nfc_hci_dev *hdev, u8 gate, u8 event, Loading
net/nfc/hci/command.c +33 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,20 @@ #include "hci.h" static int nfc_hci_execute_cmd_async(struct nfc_hci_dev *hdev, u8 pipe, u8 cmd, const u8 *param, size_t param_len, data_exchange_cb_t cb, void *cb_context) { pr_debug("exec cmd async through pipe=%d, cmd=%d, plen=%zd\n", pipe, cmd, param_len); /* TODO: Define hci cmd execution delay. Should it be the same * for all commands? */ return nfc_hci_hcp_message_tx(hdev, pipe, NFC_HCI_HCP_COMMAND, cmd, param, param_len, cb, cb_context, 3000); } /* * HCI command execution completion callback. * err will be a standard linux error (may be converted from HCI response) Loading Loading @@ -60,7 +74,8 @@ static int nfc_hci_execute_cmd(struct nfc_hci_dev *hdev, u8 pipe, u8 cmd, hcp_ew.exec_complete = false; hcp_ew.result_skb = NULL; pr_debug("through pipe=%d, cmd=%d, plen=%zd\n", pipe, cmd, param_len); pr_debug("exec cmd sync through pipe=%d, cmd=%d, plen=%zd\n", pipe, cmd, param_len); /* TODO: Define hci cmd execution delay. Should it be the same * for all commands? Loading Loading @@ -138,6 +153,23 @@ int nfc_hci_send_cmd(struct nfc_hci_dev *hdev, u8 gate, u8 cmd, } EXPORT_SYMBOL(nfc_hci_send_cmd); int nfc_hci_send_cmd_async(struct nfc_hci_dev *hdev, u8 gate, u8 cmd, const u8 *param, size_t param_len, data_exchange_cb_t cb, void *cb_context) { u8 pipe; pr_debug("\n"); pipe = hdev->gate2pipe[gate]; if (pipe == NFC_HCI_INVALID_PIPE) return -EADDRNOTAVAIL; return nfc_hci_execute_cmd_async(hdev, pipe, cmd, param, param_len, cb, cb_context); } EXPORT_SYMBOL(nfc_hci_send_cmd_async); int nfc_hci_set_param(struct nfc_hci_dev *hdev, u8 gate, u8 idx, const u8 *param, size_t param_len) { Loading