#include #include #include #include #include #include #include #include #include #include "web.h" #include "fs.h" #include "ui.h" #include "sys.h" #include "power.h" #include "cfg.h" //https://embedded-rd.blog.csdn.net/article/details/109643188 extern void lwip_sys_init(void); static int net_init(const char *ip, int port) { #define SERVER_PORT 8080 #define BUFF_SIZE 128 int sock, client_fd; struct sockaddr_in server_addr, client_addr; socklen_t client_addr_len; char buff[BUFF_SIZE]; int bytes_read; int ret; /* ??socket */ sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == -1) { rt_kprintf("socket create failed!\n"); return -1; } /* ??????? */ server_addr.sin_family = AF_INET; server_addr.sin_port = htons(port); server_addr.sin_addr.s_addr = inet_addr(ip); /* ??????? */ ret = bind(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)); if (ret == -1) { rt_kprintf("bind failed!\n"); goto __exit; } /* ?????? */ ret = listen(sock, 5); if (ret == -1) { rt_kprintf("listen failed!\n"); goto __exit; } rt_kprintf("TCP server waiting for client on port %d...\n", port); /* ??????? */ client_addr_len = sizeof(client_addr); client_fd = accept(sock, (struct sockaddr *)&client_addr, &client_addr_len); if (client_fd == -1) { rt_kprintf("accept failed!\n"); goto __exit; } rt_kprintf("Client accepted!\n"); /* ????????? */ while (1) { bytes_read = recv(client_fd, buff, BUFF_SIZE, 0); if (bytes_read <= 0) { rt_kprintf("recv failed, errno=%d\n", errno); break; } /* ????????????? */ ret = send(client_fd, buff, bytes_read, 0); if (ret < 0) { rt_kprintf("send failed, errno=%d\n", errno); break; } } __exit: if (client_fd >= 0) close(client_fd); if (sock >= 0) close(sock); return ret; } static int sd_mount(void) { int r=1,n=0; while(n<10) { r = mmcsd_wait_cd_changed(500); if(r==MMCSD_HOST_PLUGED) { r = fs_mount("sd", 1); } else if(r==MMCSD_HOST_UNPLUGED) { r = fs_mount("sd", 0); } if(r<=0) break; n++; } return r; } static int user_init(void) { //ui_init(); sd_mount(); power_init(); web_init(); return 0; } int main(void) { sys_init(); user_init(); while (1) { sleep(10); } }