在线时间285 小时
UID3419421
注册时间2017-8-30
NXP金币0
该用户从未签到
高级会员
- 积分
- 750
- 最后登录
- 2021-1-25
|
大家好!在看SDK_2.2_LPC54608J512\boards\lpcxpresso54608\demo_apps\lwip\lwip_udpecho这个demo的时候,demo的功能是如何接收上位机发来的数据:ethernetif_input(&fsl_netif0)。现在我想往上位机发数据,按照demo里的思路,应该是参照 ethernetif_input(&fsl_netif0)写一个类似ethernetif_output(&fsl_netif0)的函数。跟踪 ethernetif_input这个函数以及主函数调用的位置
1.netif_add(&fsl_netif0, &fsl_netif0_ipaddr, &fsl_netif0_netmask, &fsl_netif0_gw, NULL, ethernetif_init, ethernet_input);
2.void ethernetif_input(struct netif *netif)
{
struct pbuf *p;
LWIP_ASSERT("netif != NULL", (netif != NULL));
/* move received packet into a new pbuf */
while ((p = low_level_input(netif)) != NULL)
{
/* pass all packets to ethernet_input, which decides what packets it supports */
if (netif->input(p, netif) != ERR_OK)
{
LWIP_DEBUGF(NETIF_DEBUG, ("ethernetif_input: IP input error\n"));
pbuf_free(p);
p = NULL;
}
}
}
其实是调用了netif->input(p, netif) 这个函数,也就是 netif_input_fn input。对应的netif这个结构体也有netif_output_fn output这个输出函数。相当于发送数据用该函数即可。
修改主函数中调用位置的时候发现netif_add这个函数的原型是
truct netif *netif_add(struct netif *netif,
#if LWIP_IPV4
const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw,
#endif /* LWIP_IPV4 */
void *state, netif_init_fn init, netif_input_fn input)
这里面用的是input 如果我想改为输出output ,那么参数类型就不对。请问如何修改函数,发送数据??
|
|