New IPC interface, lwip receives data from rndis.

This commit is contained in:
songyanguang
2024-08-14 17:22:54 +08:00
parent b53ba2e4b4
commit 059da067df
10 changed files with 151 additions and 8 deletions
@@ -42,6 +42,7 @@ INC_DIR = -I$(KERNEL_ROOT)/services/drivers/usb/ \
-I$(KERNEL_ROOT)/services/lib/memory \
-I$(KERNEL_ROOT)/services/lib/serial \
-I$(KERNEL_ROOT)/services/lib/usyscall \
-I$(KERNEL_ROOT)/services/net/libnet \
-I$(KERNEL_ROOT)/services/boards/$(BOARD) \
-I$(KERNEL_ROOT)/services/app
@@ -1,6 +1,7 @@
include $(KERNEL_ROOT)/services/drivers/usb/components/usb.mk
objs = usb_host.o
objs += $(KERNEL_ROOT)/services/net/libnet/lwip_rndis_service.o
all: ${objs}
@echo "generate $^"
@@ -1,7 +1,9 @@
#include "usb_host.h"
#include "usb_mem.h"
#include "usyscall.h"
#include "libipc.h"
#include "rndis_service.h"
#include "lwip_rndis_service.h"
/* IPC rndis server */
int IPC_DO_SERVE_FUNC(Ipc_usbh_rndis_eth_tx)(void *dataptr, size_t *tot_len){
@@ -28,9 +30,32 @@ int ipc_rndis_server_init(void)
return 0;
}
/* IPC lwip client */
struct Session *g_session_lwip = NULL;
int ipc_lwip_client_init(void)
{
struct Session *session;
session = usb_malloc(sizeof(struct Session));
if(connect_session(session, "LWIPServer", 4096) < 0) {
printf("connect session failed\n");
return -1;
}
g_session_lwip = session;
return 0;
}
int lwip_rndis_data_recv(void *dataptr, size_t len)
{
struct Session* session = g_session_lwip;
return ipc_lwip_rndis_data_recv(session, dataptr, len);
}
/* usb main*/
int main(){
ipc_lwip_client_init();
ipc_rndis_server_init();
return 0;
}