Цитата
В таких случаях выкладывают часть кода для анализа - то,
Я думаю не имеет смысла выкладывать часть, которая относится к lwip, там я ничего не менял
CODE
void netconn_thread(void const *argument)
{
HAL_GPIO_WritePin(GPIOE, USB_PWR_GPIO_Pin, GPIO_PIN_SET);
HAL_Delay(10000);
struct netconn *conn, *newconn;
err_t err;
conn = netconn_new(NETCONN_TCP);
if(conn != NULL) {
err = netconn_bind(conn, NULL, 20020);
if(err == ERR_OK) {
netconn_listen(conn);
for(;;) {
err = netconn_accept(conn, &newconn);
connNoErr = true;
//netconn_set_recvtimeout(newconn, 50);
while((!ERR_IS_FATAL(netconn_err(newconn)))&(connNoErr)) {
recv_and_resp_netconn(newconn);
}
//if(err != ERR_OK)
//continue;
netconn_close(newconn);
netconn_delete(newconn);
}
} else {
debug("Can not bind netconn");
}
} else {
debug("Can not create netconn");
}
}
static void recv_and_resp_netconn(struct netconn *conn)
{
struct netbuf *inbuf;
err_t res;
char *buf;
u16_t buflen;
uint8_t type;
uint8_t buff_img[165000];
res = netconn_recv(conn, &inbuf);
if(res == ERR_OK) {
netbuf_data(inbuf, (void**)&buf, &buflen);
if(buflen >= sizeof(packet_tx_t)) {
uint8_t buffer[buflen];
memcpy(&buffer, buf, buflen);
search_object_t *packet = (search_object_t *)&buffer[1];
if(packet->header.cmd != PB_PVS_CMD_LED) {
pb_menu_process(buff_img, IMAGE_SIZE, buffer, buflen, packet->header.cmd);
}
packet_rx_t *packet_rx = (packet_rx_t *)&buff_img[1];
if(packet->header.cmd) {
if(packet->header.cmd == CMD_GET_SCAN) {
size_t size_rx;
if(packet_rx->status) {
size_rx = 20;
} else {
size_rx = IMAGE_SIZE + 14;
};
static uint32_t lt1, lt2, ltd, lt, ltpr;
//taskENTER_CRITICAL();
lt1 = xTaskGetTickCount();
netconn_write(conn, buff_img, size_rx, NETCONN_NOCOPY);
lt2 = xTaskGetTickCount();
ltd = lt2-lt1;
//taskEXIT_CRITICAL();
debug("qwerty\t%u", ltd);
} else {
netconn_write(conn, buff_img, 80, NETCONN_NOCOPY);
}
}
memset(buff_img, 0, 20);
}
} else {
debug("Error receiver : %d", res);
connNoErr = false;
}
netbuf_delete(inbuf);
}
И еще, раз возникает retransmission, то есть мой девайс не может дождаться ответа от хоста, может можно как-то увеличить это время?
Сообщение отредактировал IgorKossak - Dec 4 2017, 08:37
Причина редактирования: [codebox] для длинного кода. [code]-для короткого!!!