]> git.sur5r.net Git - freertos/blob - Demo/lwIP_AVR32_UC3/NETWORK/BasicTFTP/BasicTFTP.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / lwIP_AVR32_UC3 / NETWORK / BasicTFTP / BasicTFTP.h
1 /*This file has been prepared for Doxygen automatic documentation generation.*/\r
2 /*! \file *********************************************************************\r
3  *\r
4  * \brief Basic TFTP Server for AVR32 UC3.\r
5  *\r
6  * - Compiler:           GNU GCC for AVR32\r
7  * - Supported devices:  All AVR32 devices can be used.\r
8  * - AppNote:\r
9  *\r
10  * \author               Atmel Corporation: http://www.atmel.com \n\r
11  *                       Support and FAQ: http://support.atmel.no/\r
12  *\r
13  *****************************************************************************/\r
14 \r
15 /* Copyright (c) 2007, Atmel Corporation All rights reserved.\r
16  *\r
17  * Redistribution and use in source and binary forms, with or without\r
18  * modification, are permitted provided that the following conditions are met:\r
19  *\r
20  * 1. Redistributions of source code must retain the above copyright notice,\r
21  * this list of conditions and the following disclaimer.\r
22  *\r
23  * 2. Redistributions in binary form must reproduce the above copyright notice,\r
24  * this list of conditions and the following disclaimer in the documentation\r
25  * and/or other materials provided with the distribution.\r
26  *\r
27  * 3. The name of ATMEL may not be used to endorse or promote products derived\r
28  * from this software without specific prior written permission.\r
29  *\r
30  * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED\r
31  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
32  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND\r
33  * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,\r
34  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
35  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
36  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r
37  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
38  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r
39  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
40  */\r
41 \r
42 \r
43 #ifndef BASIC_TFTP_SERVER_H\r
44 #define BASIC_TFTP_SERVER_H\r
45 \r
46 #include "portmacro.h"\r
47 \r
48 /* tftp_support.h */\r
49 \r
50 /*\r
51  * File transfer modes\r
52  */\r
53 #define TFTP_NETASCII   0              // Text files\r
54 #define TFTP_OCTET      1              // Binary files\r
55 \r
56 /*\r
57  * Errors\r
58  */\r
59 \r
60 // These initial 7 are passed across the net in "ERROR" packets.\r
61 #define TFTP_ENOTFOUND   1   /* file not found */\r
62 #define TFTP_EACCESS     2   /* access violation */\r
63 #define TFTP_ENOSPACE    3   /* disk full or allocation exceeded */\r
64 #define TFTP_EBADOP      4   /* illegal TFTP operation */\r
65 #define TFTP_EBADID      5   /* unknown transfer ID */\r
66 #define TFTP_EEXISTS     6   /* file already exists */\r
67 #define TFTP_ENOUSER     7   /* no such user */\r
68 // These extensions are return codes in our API, *never* passed on the net.\r
69 #define TFTP_TIMEOUT     8   /* operation timed out */\r
70 #define TFTP_NETERR      9   /* some sort of network error */\r
71 #define TFTP_INVALID    10   /* invalid parameter */\r
72 #define TFTP_PROTOCOL   11   /* protocol violation */\r
73 #define TFTP_TOOLARGE   12   /* file is larger than buffer */\r
74 \r
75 #define TFTP_TIMEOUT_PERIOD  5          // Seconds between retries\r
76 #define TFTP_TIMEOUT_MAX    50          // Max timeouts over all blocks\r
77 #define TFTP_RETRIES_MAX     5          // retries per block before giving up\r
78 \r
79 /* netdb.h */\r
80 // Internet services\r
81 struct servent {\r
82 char *s_name; /* official service name */\r
83 char **s_aliases; /* alias list */\r
84 int s_port; /* port number */\r
85 char *s_proto; /* protocol to use */\r
86 };\r
87 \r
88 /* arpa/tftp.h */\r
89 \r
90 /*\r
91  * Trivial File Transfer Protocol (IEN-133)\r
92  */\r
93 #define SEGSIZE   512   /* data segment size */\r
94 \r
95 /*\r
96  * Packet types.\r
97  */\r
98 \r
99 #define th_block  th_u.tu_block\r
100 #define th_code   th_u.tu_code\r
101 #define th_stuff  th_u.tu_stuff\r
102 #define th_msg    th_data\r
103 \r
104 /*\r
105  * Error codes.\r
106  */\r
107 #define EUNDEF    0   /* not defined */\r
108 #define ENOTFOUND 1   /* file not found */\r
109 #define EACCESS   2   /* access violation */\r
110 #define ENOSPACE  3   /* disk full or allocation exceeded */\r
111 #define EBADOP    4   /* illegal TFTP operation */\r
112 #define EBADID    5   /* unknown transfer ID */\r
113 #define EEXISTS   6   /* file already exists */\r
114 #define ENOUSER   7   /* no such user */\r
115 \r
116 \r
117 \r
118 #define RRQ 01      /* read request */\r
119 #define WRQ 02      /* write request */\r
120 #define DATA  03      /* data packet */\r
121 #define ACK 04      /* acknowledgement */\r
122 #define ERROR 05      /* error code */\r
123 \r
124 #if __ICCAVR32__\r
125 #pragma pack(1)\r
126 #endif\r
127 struct  tftphdr {\r
128   short th_opcode;    /* packet type */\r
129   union {\r
130     unsigned short  tu_block; /* block # */\r
131     short tu_code;  /* error code */\r
132     char  tu_stuff[1];  /* request packet stuff */\r
133   }\r
134 #if __GNUC__\r
135  __attribute__ ((packed))\r
136 #endif \r
137    th_u;\r
138   char  th_data[1];   /* data or error string */\r
139 }\r
140 #if __GNUC__\r
141 __attribute__ ((packed))\r
142 #endif \r
143 ;\r
144 #if __ICCAVR32__\r
145 #pragma pack()\r
146 #endif\r
147 \r
148 /* The function that implements the TFTP server task. */\r
149 portTASK_FUNCTION_PROTO( vBasicTFTPServer, pvParameters );\r
150 \r
151 \r
152 \r
153 #endif\r
154 \r