Только что сам разобрался с uIP

) Выложу код на всякий случай. Вдруг кому пригодится.
Разрабатываю на Stellaris DK-LM3S9D96. uIP 1.0
Инициализация:
Код
void udp_init()
{
struct uip_udp_conn *udp_conn;
udp_conn = uip_udp_new(0, 0);
if (udp_conn == 0)
return;
udp_conn->appstate = 0;
uip_udp_bind(udp_conn, HTONS(DEFAULT_UDP_PORT));
}
Callback. process_msg записывает в структуру outputMsg содержимое и выходной размер outputLen
Код
void udp_appcall(void)
{
if (uip_newdata())
{
if (uip_udp_conn->lport == HTONS(DEFAULT_UDP_PORT))
{
static struct uip_udpip_hdr *hdr;
hdr = (struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN];
uip_ipaddr_copy(&uip_udp_conn->ripaddr, hdr->srcipaddr);
uip_udp_conn->rport = hdr->srcport;
inputLen = bMIN(uip_datalen(), sizeof(tRawUdpMessage));
memcpy((char *)&inMsg, (char *)uip_appdata, inputLen);
process_msg(&inMsg, &inputLen, &outMsg, &outputLen);
memcpy((char *)uip_appdata(), (char *)&outMsg, outputLen);
uip_slen = outputLen;
uip_process(UIP_UDP_SEND_CONN);
}
}
}
P.S: Просьба модераторам объединить 2 сообщения.
Цитата(ElectronicsLab @ Aug 20 2013, 14:31)

А как сделать так, чтобы независимо слать данные с МК на комп? Чтобы через WireShark видеть что что-то шлется..?
Юзайте uip_poll(). Вот что по этому поводу говорит мануал:
http://www.gaisler.com/doc/net/uip-0.9/doc/html/main.htmlЦитата
The polling event has two purposes. The first is to let the application periodically know that a connection is idle, which allows the application to close connections that have been idle for too long. The other purpose is to let the application send new data that has been produced. The application can only send data when invoked by uIP, and therefore the poll event is the only way to send data on an otherwise idle connection.
Сообщение отредактировал kramener - Sep 20 2013, 13:49