From 3f80e39695b0681efbea09cd222705514e412fe8 Mon Sep 17 00:00:00 2001 From: songyanguang <345810377@qq.com> Date: Tue, 20 Aug 2024 10:11:27 +0800 Subject: [PATCH] rndis waits for LWIPServer in thread. --- .../drivers/usb/usb_service/usb_host.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/usb/usb_service/usb_host.c b/Ubiquitous/XiZi_AIoT/services/drivers/usb/usb_service/usb_host.c index 709b2097c..623c6b53e 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/usb/usb_service/usb_host.c +++ b/Ubiquitous/XiZi_AIoT/services/drivers/usb/usb_service/usb_host.c @@ -37,7 +37,7 @@ int ipc_rndis_server_init(void *para) /* IPC lwip client */ struct Session *g_session_lwip = NULL; -int ipc_lwip_client_init(void) +int ipc_lwip_client_init(void *para) { struct Session *session; @@ -46,10 +46,11 @@ int ipc_lwip_client_init(void) printf("No memory to alloc for LWIPServer session\r\n"); return -ENOMEM; } - if(connect_session(session, "LWIPServer", 4096) < 0) { - printf("connect LWIPServer session failed\n"); - return -1; + + while (connect_session(session, "LWIPServer", 4096) < 0) { + usb_osal_msleep(1000); } + printf("connect LWIPServer session success.\r\n"); g_session_lwip = session; return 0; @@ -63,12 +64,17 @@ int lwip_rndis_data_recv(void *dataptr, size_t len) void ipc_rndis_init(void){ int tid; + int tid_client; - ipc_lwip_client_init(); tid = thread(ipc_rndis_server_init, "ipc_rndis_server", NULL); if(tid < 0){ printf("create thread ipc_rndis_server failed.\r\n"); } + + tid_client = thread(ipc_lwip_client_init, "ipc_rndis_lwip_client", NULL); + if(tid < 0){ + printf("create thread ipc_rndis_server failed.\r\n"); + } } static void usb_init(int id) @@ -93,7 +99,7 @@ int main(int argc, char* argv[]) return -EINVAL; } } - printf("usb3 id % init.\n", id); + printf("main usb3 id(%d) init.\r\n", id); usb_init(id); ipc_rndis_init();