You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2021/11/04 18:30:06 UTC
[incubator-nuttx] 06/06: socket_rpmsg: use ns_bound to send SYNC
packet
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit 022c06766aa4b3c291d37f33a4f8360cf0160b71
Author: ligd <li...@xiaomi.com>
AuthorDate: Tue Oct 19 19:39:42 2021 +0800
socket_rpmsg: use ns_bound to send SYNC packet
Signed-off-by: ligd <li...@xiaomi.com>
---
net/rpmsg/rpmsg_sockif.c | 35 ++++++++++++++++++-----------------
1 file changed, 18 insertions(+), 17 deletions(-)
diff --git a/net/rpmsg/rpmsg_sockif.c b/net/rpmsg/rpmsg_sockif.c
index 0252ac4..e41610d 100644
--- a/net/rpmsg/rpmsg_sockif.c
+++ b/net/rpmsg/rpmsg_sockif.c
@@ -402,6 +402,17 @@ static inline void rpmsg_socket_destroy_ept(
rpmsg_socket_unlock(&conn->recvlock);
}
+static void rpmsg_socket_ns_bound(struct rpmsg_endpoint *ept)
+{
+ FAR struct rpmsg_socket_conn_s *conn = ept->priv;
+ struct rpmsg_socket_sync_s msg;
+
+ msg.cmd = RPMSG_SOCKET_CMD_SYNC;
+ msg.size = circbuf_size(&conn->recvbuf);
+
+ rpmsg_send(&conn->ept, &msg, sizeof(msg));
+}
+
static void rpmsg_socket_ns_unbind(FAR struct rpmsg_endpoint *ept)
{
rpmsg_socket_destroy_ept(ept->priv);
@@ -421,6 +432,7 @@ static void rpmsg_socket_device_created(FAR struct rpmsg_device *rdev,
if (strcmp(conn->rpaddr.rp_cpu, rpmsg_get_cpuname(rdev)) == 0)
{
conn->ept.priv = conn;
+ conn->ept.ns_bound_cb = rpmsg_socket_ns_bound;
snprintf(buf, sizeof(buf), "%s%s", RPMSG_SOCKET_NAME_PREFIX,
conn->rpaddr.rp_name);
@@ -441,19 +453,6 @@ static void rpmsg_socket_device_destroy(FAR struct rpmsg_device *rdev,
}
}
-static void rpmsg_socket_device_connect(FAR struct rpmsg_device *rdev,
- FAR void *priv, FAR const char *name,
- uint32_t dest)
-{
- FAR struct rpmsg_socket_conn_s *conn = priv;
- struct rpmsg_socket_sync_s msg;
-
- msg.cmd = RPMSG_SOCKET_CMD_SYNC;
- msg.size = circbuf_size(&conn->recvbuf);
-
- rpmsg_send(&conn->ept, &msg, sizeof(msg));
-}
-
static void rpmsg_socket_ns_bind(FAR struct rpmsg_device *rdev,
FAR void *priv, FAR const char *name,
uint32_t dest)
@@ -503,6 +502,8 @@ static void rpmsg_socket_ns_bind(FAR struct rpmsg_device *rdev,
return;
}
+ rpmsg_socket_ns_bound(&new->ept);
+
strcpy(new->rpaddr.rp_cpu, rpmsg_get_cpuname(rdev));
strcpy(new->rpaddr.rp_name, name + RPMSG_SOCKET_NAME_PREFIX_LEN);
@@ -664,7 +665,7 @@ static int rpmsg_socket_connect_internal(FAR struct socket *psock)
ret = rpmsg_register_callback(conn,
rpmsg_socket_device_created,
rpmsg_socket_device_destroy,
- rpmsg_socket_device_connect);
+ NULL);
if (ret < 0)
{
return ret;
@@ -685,7 +686,7 @@ static int rpmsg_socket_connect_internal(FAR struct socket *psock)
rpmsg_unregister_callback(conn,
rpmsg_socket_device_created,
rpmsg_socket_device_destroy,
- rpmsg_socket_device_connect);
+ NULL);
}
}
@@ -752,7 +753,7 @@ static int rpmsg_socket_accept(FAR struct socket *psock,
rpmsg_register_callback(conn,
rpmsg_socket_device_created,
rpmsg_socket_device_destroy,
- rpmsg_socket_device_connect);
+ NULL);
if (conn->sendsize == 0)
{
@@ -1272,7 +1273,7 @@ static int rpmsg_socket_close(FAR struct socket *psock)
rpmsg_unregister_callback(conn,
rpmsg_socket_device_created,
rpmsg_socket_device_destroy,
- rpmsg_socket_device_connect);
+ NULL);
}
rpmsg_socket_destroy_ept(conn);