You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by bt...@apache.org on 2020/12/30 02:10:13 UTC
[incubator-nuttx] 01/02: sim/host/hcisocket: add avail/close
interface
This is an automated email from the ASF dual-hosted git repository.
btashton pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit 2ca99ed1bebaeb099a9a371ce1cb03bb624643a0
Author: chao.an <an...@xiaomi.com>
AuthorDate: Wed Dec 23 13:54:59 2020 +0800
sim/host/hcisocket: add avail/close interface
Change-Id: I3d96f62c4c3c7d703bfec74952953bee4aef9c7c
Signed-off-by: chao.an <an...@xiaomi.com>
---
arch/sim/src/sim/up_hcisocket.c | 2 +-
arch/sim/src/sim/up_hcisocket_host.c | 57 ++++++++++++++++++++++++++++++++++++
arch/sim/src/sim/up_hcisocket_host.h | 4 ++-
3 files changed, 61 insertions(+), 2 deletions(-)
diff --git a/arch/sim/src/sim/up_hcisocket.c b/arch/sim/src/sim/up_hcisocket.c
index e95d625..d686304 100644
--- a/arch/sim/src/sim/up_hcisocket.c
+++ b/arch/sim/src/sim/up_hcisocket.c
@@ -177,7 +177,7 @@ int bthcisock_register(int dev_id)
*
****************************************************************************/
-int bthcisock_loop()
+int bthcisock_loop(void)
{
uint8_t type;
int len;
diff --git a/arch/sim/src/sim/up_hcisocket_host.c b/arch/sim/src/sim/up_hcisocket_host.c
index d785c42..33fc114 100644
--- a/arch/sim/src/sim/up_hcisocket_host.c
+++ b/arch/sim/src/sim/up_hcisocket_host.c
@@ -63,6 +63,43 @@ struct sockaddr_hci
****************************************************************************/
/****************************************************************************
+ * Name: bthcisock_host_avail
+ *
+ * Description:
+ * Monitor the host user channel to see if I/O is possible on socket.
+ *
+ * Input Parameters:
+ * fd: Host Bluetooth socket fd
+ *
+ * Returned Value:
+ * TRUE is returned on I/O available
+ *
+ ****************************************************************************/
+
+int bthcisock_host_avail(int fd)
+{
+ struct timeval tv;
+ fd_set fdset;
+
+ /* We can't do anything if we failed to open the user channel */
+
+ if (fd < 0)
+ {
+ return 0;
+ }
+
+ /* Wait for data on the user channel (or a timeout) */
+
+ tv.tv_sec = 0;
+ tv.tv_usec = 0;
+
+ FD_ZERO(&fdset);
+ FD_SET(fd, &fdset);
+
+ return select(fd + 1, &fdset, NULL, NULL, &tv) > 0;
+}
+
+/****************************************************************************
* Name: bthcisock_host_send
*
* Description:
@@ -190,3 +227,23 @@ int bthcisock_host_open(int dev_idx)
return fd;
}
+
+/****************************************************************************
+ * Name: bthcisock_host_close
+ *
+ * Description:
+ * Close a User Channel HCI socket on the Host for the given device idx.
+ *
+ * Input Parameters:
+ * fd: The resources associated with the open user channel are freed.
+ *
+ * Returned Value:
+ * Zero is returned on success; a negated errno value is returned on any
+ * failure.
+ *
+ ****************************************************************************/
+
+int bthcisock_host_close(int fd)
+{
+ return close(fd);
+}
diff --git a/arch/sim/src/sim/up_hcisocket_host.h b/arch/sim/src/sim/up_hcisocket_host.h
index 5ba3a13..411902a 100644
--- a/arch/sim/src/sim/up_hcisocket_host.h
+++ b/arch/sim/src/sim/up_hcisocket_host.h
@@ -32,8 +32,10 @@
* Public Function Prototypes
****************************************************************************/
+int bthcisock_host_open(int dev_idx);
int bthcisock_host_send(int fd, uint8_t pkt_type, uint8_t *data, size_t len);
int bthcisock_host_read(int fd, uint8_t *type, void *buf, size_t len);
-int bthcisock_host_open(int dev_idx);
+int bthcisock_host_avail(int fd);
+int bthcisock_host_close(int fd);
#endif /* _ARCH_SIM_SRC_SIM_HCISOCKET_HOST_H_ */