会往netconn的接收邮箱中发送消息(对于netconn而言,只有接收邮箱,没有发送邮箱,发送是不需要邮箱的) sys_mbox_trypost(&conn->recvmbox, buf) 在以下函数中完成 api_lib.c中的netconn_recv,对于udp最后会调用netconn_recv_data 最后会调用sys_arch_mbox_fetch(&conn->recvmbox, &buf, conn->recv_timeout)...
LWIP_netbuf_netconn函数
const void *dataptr; int len; u8_t apiflags; } w; struct { // 函数do_recv的参数 u16_t len; } r; } msg; }; 这个结构体只包含了两个字段:描述连接信息的conn和枚举类型msg。在api_msg_msg中保存conn字段是必须的,因为conn结构中包含了与该连接相关的信箱和信号量等信息,协议栈进程要用这些信...
结构tail:尾部的netbuf结构无netbuf_data()获取一个指向netbuf结构中的数据的指针err_tnetbuf_data(structnetbuf*buf,void**dataptr,u16_t*len)err_tnetbuf_data(structnetbuf*buf,void**dataptr,u16_t*len)ERR_OK:数据被正确地获取ERR_BUF:有错误发生,数据未能被正确地获取netbuf_next()修改netbuf中的...
*port = netbuf_fromport(buf);u16_trecv = netbuf_copy(buf, data, (u16_t)size);netbuf_delete(buf);returnrecv; } 开发者ID:infinnovation,项目名称:mbed-os,代码行数:18,代码来源:lwip_stack.c 示例3: data_udp_send_mpu9150_data
5. /** pointer to the actual data in the buffer */ 6. void *payload; 7. 8. /** 9. * total length of this buffer and all next buffers in chain 10. * belonging to the same packet. 11. * 12. * For non-queue packet chains this is the invariant: 13. * p->tot_len == p...
接收函数会获取协议栈分配的netbuf指针——netconn_recv(conn, &buf); 获取数据和长度——netbuf_data(bufrx, (void *)&drcv, &dlen);!!!netbuf有可能有好几个,可能需要遍历。 释放netbuf结构体(同时释放netbuf结构体和pbuf内存)——netbuf_delete(bufrx); ...
LWIP_netbuf_netconn函数
*port = netbuf_fromport(buf);u16_trecv = netbuf_copy(buf, data, (u16_t)size);netbuf_delete(buf);returnrecv; } 开发者ID:infinnovation,项目名称:mbed-os,代码行数:18,代码来源:lwip_stack.c 示例3: data_udp_send_mpu9150_data
struct ip_addr *ipaddr; u16_t *port; u8_t local; } ad; struct { // 函数 do_write 的参数 const void *dataptr; int len; u8_t apiflags; } w; struct { // 函数 do_recv 的参数 u16_t len; } r; } msg; }; 这个结构体只包含了两个字段:描述连接信息的 conn 和枚举类型 msg。在...