CODE
err_t tcp_recv_cb(void *arg, struct tcp_pcb *tpcb,
struct pbuf *p, err_t err)
{
return ERR_OK;
}
void tcp_err_cb(void *arg, err_t err)
{
Err = err;
arg_ = arg;
}
err_t tcp_poll_cb(void *arg, struct tcp_pcb *tpcb)
{
return ERR_OK;
}
err_t tcp_accept_cb(void *arg, struct tcp_pcb *newpcb, err_t err)
{
tcp_arg(tcp_pcb_, tcp_pcb_);
tcp_recv(tcp_pcb_,tcp_recv_cb);
tcp_err(tcp_pcb_,tcp_err_cb);
tcp_poll(tcp_pcb_, tcp_poll_cb, 10);
return ERR_OK;
}
err_t tcp_connected_cb(void *arg, struct tcp_pcb *tpcb, err_t err)
{
return ERR_OK;
}
…………………………………………………………………
To_IP_ADDRESS[0] = 169;
To_IP_ADDRESS[1] = 254;
To_IP_ADDRESS[2] = 248;
To_IP_ADDRESS[3] = 45;
My_IP_ADDRESS[0] = 169;
My_IP_ADDRESS[1] = 254;
My_IP_ADDRESS[2] = 61;
My_IP_ADDRESS[3] = 18;
IP4_ADDR(&To_ipaddr, To_IP_ADDRESS[0], To_IP_ADDRESS[1], To_IP_ADDRESS[2], To_IP_ADDRESS[3]);
IP4_ADDR(&My_ipaddr, My_IP_ADDRESS[0], My_IP_ADDRESS[1], My_IP_ADDRESS[2], My_IP_ADDRESS[3]);
tcp_pcb_ = tcp_new();
tcp_setprio(tcp_pcb_,TCP_PRIO_NORMAL);
Err = tcp_bind(tcp_pcb_,&My_ipaddr,2323);
tcp_accept(tcp_pcb_,tcp_accept_cb);
Err = tcp_connect(tcp_pcb_,&To_ipaddr,2324,tcp_connected_cb);
while (1)
{
/* USER CODE END WHILE */
MX_LWIP_Process();
/* USER CODE BEGIN 3 */
}
struct pbuf *p, err_t err)
{
return ERR_OK;
}
void tcp_err_cb(void *arg, err_t err)
{
Err = err;
arg_ = arg;
}
err_t tcp_poll_cb(void *arg, struct tcp_pcb *tpcb)
{
return ERR_OK;
}
err_t tcp_accept_cb(void *arg, struct tcp_pcb *newpcb, err_t err)
{
tcp_arg(tcp_pcb_, tcp_pcb_);
tcp_recv(tcp_pcb_,tcp_recv_cb);
tcp_err(tcp_pcb_,tcp_err_cb);
tcp_poll(tcp_pcb_, tcp_poll_cb, 10);
return ERR_OK;
}
err_t tcp_connected_cb(void *arg, struct tcp_pcb *tpcb, err_t err)
{
return ERR_OK;
}
…………………………………………………………………
To_IP_ADDRESS[0] = 169;
To_IP_ADDRESS[1] = 254;
To_IP_ADDRESS[2] = 248;
To_IP_ADDRESS[3] = 45;
My_IP_ADDRESS[0] = 169;
My_IP_ADDRESS[1] = 254;
My_IP_ADDRESS[2] = 61;
My_IP_ADDRESS[3] = 18;
IP4_ADDR(&To_ipaddr, To_IP_ADDRESS[0], To_IP_ADDRESS[1], To_IP_ADDRESS[2], To_IP_ADDRESS[3]);
IP4_ADDR(&My_ipaddr, My_IP_ADDRESS[0], My_IP_ADDRESS[1], My_IP_ADDRESS[2], My_IP_ADDRESS[3]);
tcp_pcb_ = tcp_new();
tcp_setprio(tcp_pcb_,TCP_PRIO_NORMAL);
Err = tcp_bind(tcp_pcb_,&My_ipaddr,2323);
tcp_accept(tcp_pcb_,tcp_accept_cb);
Err = tcp_connect(tcp_pcb_,&To_ipaddr,2324,tcp_connected_cb);
while (1)
{
/* USER CODE END WHILE */
MX_LWIP_Process();
/* USER CODE BEGIN 3 */
}
Результат смотрю и в Wireshark и в дебагере. Ни какая колбек функция не вызывается. ARP запрос и, соответствующий ответ поступают в Wireshark в тот момент, когда в программе на модуле соединение закрывается, tcp_pcb_.state равно CLOSED. Принимающая программа запущена, она работала с модулем на LPC с TCP_ARM_L.lib.
Все примеры, которые я нашёл это или эхо клиент, сервер или протоколы высокого уровня, а мне нужно просто гонять бинарные буфера между модулем и компьютером. Помогите поднять соединение.