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);