Пытаюсь иниицировать передачу. Приходит пакет-команда "дай данных", в обработчике пакета вызываю функцию
Код
err_t recv_callback(void *arg, struct tcp_pcb *tpcb,
struct pbuf *p, err_t err)
if (!p) {
tcp_close(tpcb);
tcp_recv(tpcb, NULL);
return ERR_OK;
}
/* indicate that the packet has been received */
tcp_recved(tpcb, p->len);
///// ТУТ ОБРАБОТАЛИ КОМАНДУ И ВЫЯСНИЛИ ЧТО НАДО ЧИТАТЬ/////
for (i=0;i<10;++) // Запускаем передачу 10 раз
if (tcp_sndbuf(tpcb) > p->len) { //Проверили что есть место
tcp_write(tpcb, tcptrx->curr_addr, step, 1); //Пищем пакет длины step
tcptrx->curr_addr=tcptrx->curr_addr+step; // Инкерементим Step
xil_printf(" Curr Addr : 0x"); putnum(tcptrx->curr_addr);xil_printf("\r\n");
}
}
struct pbuf *p, err_t err)
if (!p) {
tcp_close(tpcb);
tcp_recv(tpcb, NULL);
return ERR_OK;
}
/* indicate that the packet has been received */
tcp_recved(tpcb, p->len);
///// ТУТ ОБРАБОТАЛИ КОМАНДУ И ВЫЯСНИЛИ ЧТО НАДО ЧИТАТЬ/////
for (i=0;i<10;++) // Запускаем передачу 10 раз
if (tcp_sndbuf(tpcb) > p->len) { //Проверили что есть место
tcp_write(tpcb, tcptrx->curr_addr, step, 1); //Пищем пакет длины step
tcptrx->curr_addr=tcptrx->curr_addr+step; // Инкерементим Step
xil_printf(" Curr Addr : 0x"); putnum(tcptrx->curr_addr);xil_printf("\r\n");
}
}
В консоли вижу пробегание счетчика адресов, но на приемной стороне ничего не появляется.
Мне кажется, что я неправильно инициирую передачу. Как сделать это правильно? Чтобы сначала закончить обработку принятого pbuf а потом начать свою передачу?