#ifndef __tftp_h__ #define __tftp_h__ #include "socketUdp.h" #define TFTP_FRAMES \ TFTP_FRAME(1,ReadRequest) \ TFTP_FRAME(2,WriteRequest) \ TFTP_FRAME(3,DataPacket) \ TFTP_FRAME(4,Acknowledgement) \ TFTP_FRAME(5,Error) \ TFTP_FRAME(6,OptionAcknowledgement) \ /**/ struct Tftp { struct ReadRequest { U8 request[0]; }; struct WriteRequest { U8 request[0]; }; struct DataPacket { Ube16 block; U8 data[0]; }; struct Acknowledgement { Ube16 block; }; struct OptionAcknowledgement { U8 response[0]; }; struct Error { Ube16 code; U8 response[0]; }; Ube16 opcode; #define TFTP_FRAME(i,name) name as ## name[0]; TFTP_FRAMES #undef TFTP_FRAME #define TFTP_FRAME(i,name) static const U8 id ## name= i; TFTP_FRAMES #undef TFTP_FRAME }; struct TftpClient { SocketUdp sock; bool readFile(EthernetCapable *ec,U8*ptr,U8 *filename); }; #endif /* __tftp_h__ */