Cómo cargar archivos usando el protocolo TFTP en la pila de protocolos LWIP en STM32F4
El proceso básico es el anterior, pero el parámetro struct udp_pcb *upcb en la función tftp_send_message() tiene una estructura de datos muy compleja
struct udp_pcb {
/* Miembros comunes para todos los tipos de PCB */
IP_PCB;
/* Miembros de PCB específicos del protocolo */
struct udp_pcb *next;
u8_t flags;
/* Los puertos están organizados en orden de bytes del host*/
u16_t puerto_local, puerto_remoto;
#if LWIP_IGMP
/* Interfaz de red saliente para paquetes multicast */
struct ip_addr multicast_ip;
#endif /* LWIP_IGMP */
#if LWIP_UDPLITE
/* Sólo para UDP_LITE */
u16_t chksum_len_rx, chksum_len_tx;
#endif /* LWIP_UDPLITE */
/* Recibir devolución de llamada function
* El orden de bytes de addr y puerto es el mismo que en pcb
* Si ya no se usa pbuf, la función de devolución de llamada es responsable de liberarlo
*.
*
* Nota: 'addr' apunta a pbuf 'p', por lo que liberar ese pbuf
* también invalidará 'addr'.
*
* @param arg Parámetros proporcionados por el usuario (udp_pcb.recv_arg)
* @param pcb udp_pcb que recibe datos
* @param p El buffer del paquete recibido
* @param addr La dirección IP remota del paquete recibido
* @param port El puerto remoto del paquete recibido
p >*/
void (* recv)(void *arg, struct udp_pcb *pcb, struct pbuf *p,
struct ip_addr *addr, u16_t port); /p>
/* Parámetros proporcionados por el usuario para la devolución de llamada de recv*/
void *recv_arg
};