* fixe up ifxmips patch for eeprom emulation to work with lantiq target
[openwrt/openwrt.git] / package / uboot-lantiq / patches / 310-fix-httpd.patch
1 --- a/board/infineon/easy50712/danube.c
2 +++ b/board/infineon/easy50712/danube.c
3 @@ -354,7 +354,7 @@ int do_http_upgrade(const unsigned char
4 }
5 /* write the image to the flash */
6 puts("http ugrade ...\n");
7 - sprintf(buf, "era ${kernel_addr} +0x%x; cp.b ${ram_addr} ${kernel_addr} 0x%x", size, size);
8 + sprintf(buf, "era ${kernel_addr} +0x%lx; cp.b ${ram_addr} ${kernel_addr} 0x%lx", size, size);
9 return run_command(buf, 0);
10 }
11
12 --- a/common/main.c
13 +++ b/common/main.c
14 @@ -273,6 +273,10 @@ static __inline__ int abortboot(int boot
15
16 void main_loop (void)
17 {
18 +#ifdef CONFIG_CMD_HTTPD
19 + int ret;
20 +#endif
21 +
22 #ifndef CONFIG_SYS_HUSH_PARSER
23 static char lastcommand[CONFIG_SYS_CBSIZE] = { 0, };
24 int len;
25 @@ -403,12 +407,22 @@ void main_loop (void)
26 # endif
27
28 # ifndef CONFIG_SYS_HUSH_PARSER
29 - run_command (s, 0);
30 + ret = run_command (s, 0);
31 # else
32 - parse_string_outer(s, FLAG_PARSE_SEMICOLON |
33 + ret = parse_string_outer(s, FLAG_PARSE_SEMICOLON |
34 FLAG_EXIT_FROM_LOOP);
35 # endif
36
37 +# ifdef CONFIG_CMD_HTTPD
38 + if (ret != 0) {
39 + printf("Failed to execute bootcmd "
40 + "(maybe invalid u-boot environment?), "
41 + "starting httpd to update firmware...\n");
42 + NetLoopHttpd();
43 + }
44 +# endif
45 +
46 +
47 # ifdef CONFIG_AUTOBOOT_KEYED
48 disable_ctrlc(prev); /* restore Control C checking */
49 # endif
50 --- a/include/configs/easy50712.h
51 +++ b/include/configs/easy50712.h
52 @@ -114,4 +114,7 @@
53
54 #define CONFIG_CMD_HTTPD /* enable upgrade via HTTPD */
55
56 +#define CONFIG_IPADDR 192.168.0.119
57 +#define CONFIG_ETHADDR 00:01:02:03:04:05
58 +
59 #endif /* __CONFIG_H */
60 --- a/lib_mips/time.c
61 +++ b/lib_mips/time.c
62 @@ -29,6 +29,8 @@ static unsigned long timestamp;
63 /* how many counter cycles in a jiffy */
64 #define CYCLES_PER_JIFFY (CONFIG_SYS_MIPS_TIMER_FREQ + CONFIG_SYS_HZ / 2) / CONFIG_SYS_HZ
65
66 +unsigned long ifx_get_cpuclk(void);
67 +
68 /*
69 * timer without interrupts
70 */
71 --- a/net/httpd.c
72 +++ b/net/httpd.c
73 @@ -35,12 +35,14 @@ HttpdHandler (void)
74 }
75 }
76
77 +#if 0
78 static void
79 HttpdTimeout (void)
80 {
81 puts ("T ");
82 NetSetTimeout (TIMEOUT * 1000, HttpdTimeout);
83 }
84 +#endif
85
86 void
87 HttpdStart (void)
88 --- a/net/net.c
89 +++ b/net/net.c
90 @@ -1966,7 +1966,7 @@ NetSendHttpd(void)
91 void
92 NetReceiveHttpd(volatile uchar * inpkt, int len)
93 {
94 - memcpy(uip_buf, inpkt, len);
95 + memcpy(uip_buf, (const void *)inpkt, len);
96 uip_len = len;
97 if(BUF->type == htons(UIP_ETHTYPE_IP)) {
98 uip_arp_ipin();
99 @@ -1989,6 +1989,7 @@ NetLoopHttpd(void)
100 unsigned long long tout = 0;
101 bd_t *bd = gd->bd;
102 unsigned short int ip[2];
103 + struct uip_eth_addr eaddr;
104
105 #ifdef CONFIG_NET_MULTI
106 NetRestarted = 0;
107 @@ -2039,6 +2040,15 @@ restart:
108 eth_getenv_enetaddr("ethaddr", NetOurEther);
109 #endif
110
111 + eaddr.addr[0] = NetOurEther[0];
112 + eaddr.addr[1] = NetOurEther[1];
113 + eaddr.addr[2] = NetOurEther[2];
114 + eaddr.addr[3] = NetOurEther[3];
115 + eaddr.addr[4] = NetOurEther[4];
116 + eaddr.addr[5] = NetOurEther[5];
117 +
118 + uip_setethaddr(eaddr);
119 +
120 NetCopyIP(&NetOurIP, &bd->bi_ip_addr);
121 NetOurGatewayIP = getenv_IPaddr ("gatewayip");
122 NetOurSubnetMask= getenv_IPaddr ("netmask");
123 @@ -2072,6 +2082,14 @@ restart:
124 tout = t1;
125 }
126 }
127 +
128 + if (ctrlc()) {
129 + eth_halt();
130 + puts ("\nAbort\n");
131 + return (-1);
132 + }
133 +
134 +
135 if(!httpd_upload_complete)
136 continue;
137 printf("Bytes transferred = %ld (%lx hex)\n",
138 --- a/net/uip-0.9/fsdata.c
139 +++ b/net/uip-0.9/fsdata.c
140 @@ -1,199 +1,108 @@
141 -static const char data_flashing_html[] = {
142 - /* /flashing.html */
143 - 0x2f, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
144 - 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
145 - 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
146 - 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x30,
147 - 0x2e, 0x39, 0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
148 - 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63,
149 - 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69,
150 - 0x70, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74, 0x65,
151 - 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74,
152 - 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa,
153 - 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x3c, 0x62,
154 - 0x6f, 0x64, 0x79, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d,
155 - 0x22, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x20, 0x30,
156 - 0x70, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x3b, 0x20, 0x68,
157 - 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x31, 0x30, 0x30, 0x25,
158 - 0x3b, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23,
159 - 0x66, 0x66, 0x66, 0x3b, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67,
160 - 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f,
161 - 0x72, 0x3a, 0x20, 0x23, 0x66, 0x62, 0x62, 0x30, 0x33, 0x34,
162 - 0x3b, 0x22, 0x3e, 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
163 - 0x3e, 0x3c, 0x68, 0x31, 0x3e, 0x55, 0x70, 0x67, 0x72, 0x61,
164 - 0x64, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65,
165 - 0x6d, 0x20, 0x2e, 0x2e, 0x2e, 0x2e, 0x3c, 0x2f, 0x68, 0x31,
166 - 0x3e, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e,
167 - 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c, 0x2f, 0x68,
168 - 0x74, 0x6d, 0x6c, 0x3e, 0xa, };
169 -
170 -static const char data_fail_html[] = {
171 - /* /fail.html */
172 - 0x2f, 0x66, 0x61, 0x69, 0x6c, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
173 - 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
174 - 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
175 - 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x30,
176 - 0x2e, 0x39, 0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
177 - 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63,
178 - 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69,
179 - 0x70, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74, 0x65,
180 - 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74,
181 - 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa,
182 - 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x9,
183 - 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x9, 0x9, 0x3c,
184 - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x9, 0x9, 0x9,
185 - 0x4c, 0x61, 0x46, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x20, 0x46,
186 - 0x61, 0x69, 0x6c, 0x73, 0x61, 0x66, 0x65, 0x20, 0x55, 0x49,
187 - 0xa, 0x9, 0x9, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65,
188 - 0x3e, 0xa, 0x9, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa,
189 - 0x9, 0x9, 0x3c, 0x68, 0x31, 0x3e, 0x46, 0x6c, 0x61, 0x73,
190 - 0x68, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65,
191 - 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0xa, 0x9, 0x9, 0x45,
192 - 0x52, 0x52, 0x4f, 0x52, 0x20, 0x2d, 0x20, 0x74, 0x68, 0x65,
193 - 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x79, 0x6f, 0x75,
194 - 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x20,
195 - 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20,
196 - 0x70, 0x61, 0x73, 0x73, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66,
197 - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x50,
198 - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x20, 0x6d, 0x61, 0x6b, 0x65,
199 - 0x20, 0x73, 0x75, 0x72, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x75,
200 - 0x73, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x66, 0x66, 0x69,
201 - 0x63, 0x69, 0x61, 0x6c, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74,
202 - 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64,
203 - 0x20, 0x62, 0x79, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
204 - 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x2e,
205 - 0x66, 0x6f, 0x6e, 0x6f, 0x73, 0x66, 0x65, 0x72, 0x61, 0x2e,
206 - 0x6f, 0x72, 0x67, 0x2f, 0xa, 0x9, 0x3c, 0x2f, 0x62, 0x6f,
207 - 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c,
208 - 0x3e, 0xa, };
209 -
210 -static const char data_404_html[] = {
211 - /* /404.html */
212 - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
213 - 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34,
214 - 0x30, 0x34, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f,
215 - 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53,
216 - 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50,
217 - 0x2f, 0x30, 0x2e, 0x39, 0x20, 0x28, 0x68, 0x74, 0x74, 0x70,
218 - 0x3a, 0x2f, 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73,
219 - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f,
220 - 0x75, 0x69, 0x70, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e,
221 - 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
222 - 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c,
223 - 0xd, 0xa, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
224 - 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f,
225 - 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65,
226 - 0x22, 0x3e, 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e,
227 - 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, 0x20,
228 - 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x66,
229 - 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x3c,
230 - 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0x3c, 0x2f,
231 - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c, 0x2f, 0x68, 0x74, 0x6d,
232 - 0x6c, 0x3e, };
233 -
234 -static const char data_index_html[] = {
235 - /* /index.html */
236 - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
237 - 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
238 - 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
239 - 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x30,
240 - 0x2e, 0x39, 0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
241 - 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63,
242 - 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69,
243 - 0x70, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74, 0x65,
244 - 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74,
245 - 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa,
246 - 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x9,
247 - 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x9, 0x9, 0x3c,
248 - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x9, 0x9, 0x9,
249 - 0x4c, 0x61, 0x46, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x20, 0x46,
250 - 0x61, 0x69, 0x6c, 0x73, 0x61, 0x66, 0x65, 0x20, 0x55, 0x49,
251 - 0xa, 0x9, 0x9, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65,
252 - 0x3e, 0xa, 0x9, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e,
253 - 0xa, 0x9, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x73, 0x74,
254 - 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6d, 0x61, 0x72, 0x67, 0x69,
255 - 0x6e, 0x3a, 0x20, 0x30, 0x70, 0x74, 0x20, 0x61, 0x75, 0x74,
256 - 0x6f, 0x3b, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a,
257 - 0x31, 0x30, 0x30, 0x25, 0x3b, 0x20, 0x63, 0x6f, 0x6c, 0x6f,
258 - 0x72, 0x3a, 0x20, 0x23, 0x30, 0x30, 0x30, 0x3b, 0x20, 0x62,
259 - 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d,
260 - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x66, 0x62,
261 - 0x62, 0x30, 0x33, 0x34, 0x3b, 0x22, 0x3e, 0xa, 0x9, 0x9,
262 - 0x3c, 0x68, 0x31, 0x3e, 0x4c, 0x61, 0x46, 0x6f, 0x6e, 0x65,
263 - 0x72, 0x61, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x73, 0x61, 0x66,
264 - 0x65, 0x20, 0x55, 0x49, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0xa,
265 - 0x9, 0x9, 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65,
266 - 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x70, 0x6f, 0x73, 0x74,
267 - 0x22, 0x20, 0x65, 0x6e, 0x63, 0x74, 0x79, 0x70, 0x65, 0x3d,
268 - 0x22, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74,
269 - 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x2d, 0x64, 0x61, 0x74, 0x61,
270 - 0x22, 0x3e, 0xa, 0x9, 0x9, 0x9, 0x3c, 0x69, 0x6e, 0x70,
271 - 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x66, 0x69,
272 - 0x6c, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x66, 0x69,
273 - 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x3e, 0xa, 0x9, 0x9,
274 - 0x9, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79,
275 - 0x70, 0x65, 0x3d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x3e,
276 - 0xa, 0x9, 0x9, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e,
277 - 0xa, 0x9, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa,
278 - 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, };
279 -
280 -static const char data_flash_html[] = {
281 - /* /flash.html */
282 - 0x2f, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
283 - 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
284 - 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
285 - 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x30,
286 - 0x2e, 0x39, 0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
287 - 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63,
288 - 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69,
289 - 0x70, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74, 0x65,
290 - 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74,
291 - 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa,
292 - 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x9,
293 - 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x9, 0x9, 0x3c,
294 - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x9, 0x9, 0x9,
295 - 0x4c, 0x61, 0x46, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x20, 0x46,
296 - 0x61, 0x69, 0x6c, 0x73, 0x61, 0x66, 0x65, 0x20, 0x55, 0x49,
297 - 0xa, 0x9, 0x9, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65,
298 - 0x3e, 0xa, 0x9, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e,
299 - 0xa, 0x9, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x73, 0x74,
300 - 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6d, 0x61, 0x72, 0x67, 0x69,
301 - 0x6e, 0x3a, 0x20, 0x30, 0x70, 0x74, 0x20, 0x61, 0x75, 0x74,
302 - 0x6f, 0x3b, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a,
303 - 0x31, 0x30, 0x30, 0x25, 0x3b, 0x20, 0x63, 0x6f, 0x6c, 0x6f,
304 - 0x72, 0x3a, 0x20, 0x23, 0x30, 0x30, 0x30, 0x3b, 0x20, 0x62,
305 - 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d,
306 - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x66, 0x62,
307 - 0x62, 0x30, 0x33, 0x34, 0x3b, 0x22, 0x3e, 0xa, 0x9, 0x9,
308 - 0x3c, 0x68, 0x31, 0x3e, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x69,
309 - 0x6e, 0x67, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0xa, 0x9, 0x9,
310 - 0x54, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
311 - 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x77, 0x20, 0x74, 0x72,
312 - 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x66, 0x6c,
313 - 0x61, 0x73, 0x68, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68,
314 - 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x70,
315 - 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x2c, 0x20, 0x74, 0x68,
316 - 0x65, 0x20, 0x6c, 0x65, 0x64, 0x73, 0x20, 0x77, 0x69, 0x6c,
317 - 0x6c, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x74, 0x6f,
318 - 0x20, 0x62, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0xa, 0xa, 0x9,
319 - 0x9, 0x41, 0x66, 0x74, 0x65, 0x72, 0x20, 0x61, 0x20, 0x73,
320 - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x6c,
321 - 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68,
322 - 0x65, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x77, 0x69, 0x6c, 0x6c,
323 - 0x20, 0x72, 0x65, 0x62, 0x6f, 0x6f, 0x74, 0xa, 0x9, 0x3c,
324 - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68,
325 - 0x74, 0x6d, 0x6c, 0x3e, 0xa, };
326 -
327 -const struct fsdata_file file_flashing_html[] = {{NULL, data_flashing_html, data_flashing_html + 15, sizeof(data_flashing_html) - 15}};
328 +static const char data_flashing_html[] =
329 +"HTTP/1.0 200 OK\n"
330 +"Server: uIP/0.9 (http://dunkels.com/adam/uip/)\n"
331 +"Content-type: text/html\n"
332 +"\n"
333 +"<html>\n"
334 +"\t<head>\n"
335 +"\t\t<title>\n"
336 +"\t\t\tFailsafe UI\n"
337 +"\t\t</title>\n"
338 +"\t</head>\n"
339 +"\t<body>\n"
340 +"\t\t<center><h1>Upgrading system...</h1></center>\n"
341 +"\t</body>\n"
342 +"</html>\n";
343 +
344 +static const char data_fail_html[] =
345 +"HTTP/1.0 200 OK\n"
346 +"Server: uIP/0.9 (http://dunkels.com/adam/uip/)\n"
347 +"Content-type: text/html\n"
348 +"\n"
349 +"<html>\n"
350 +"\t<head>\n"
351 +"\t\t<title>\n"
352 +"\t\t\tFailsafe UI\n"
353 +"\t\t</title>\n"
354 +"\t</head>\n"
355 +"\t<body>\n"
356 +"\t\t<h1>Flashing failed</h1>\n"
357 +"\t\tERROR - the image you uploaded failed to pass verification.<br>\n"
358 +"\t\tPlease make sure to use an official update provided by http://lantiq.com/\n"
359 +"\t</body>\n"
360 +"</html>\n";
361 +
362 +static const char data_404_html[] =
363 +"HTTP/1.0 404 File not found\n"
364 +"Server: uIP/0.9 (http://dunkels.com/adam/uip/)\n"
365 +"Content-type: text/html\n"
366 +"\n"
367 +"<html>\n"
368 +"\t<head>\n"
369 +"\t\t<title>\n"
370 +"\t\t\tFailsafe UI\n"
371 +"\t\t</title>\n"
372 +"\t</head>\n"
373 +"\t<body>\n"
374 +"\t\t<center><h1>404 - file not found</h1></center>\n"
375 +"\t</body>\n"
376 +"</html>\n";
377 +
378 +static const char data_index_html[] =
379 +"HTTP/1.0 200 OK\n"
380 +"Server: uIP/0.9 (http://dunkels.com/adam/uip/)\n"
381 +"Content-type: text/html\n"
382 +"\n"
383 +"<html>\n"
384 +"\t<head>\n"
385 +"\t\t<title>\n"
386 +"\t\t\tFailsafe UI\n"
387 +"\t\t</title>\n"
388 +"\t</head>\n"
389 +"\t<body>\n"
390 +"\t\t<h1>Failsafe UI</h1>\n"
391 +"\t\t<form method=\"post\" enctype=\"multipart/form-data\">\n"
392 +"\t\t\t<input type=file name=firmware>\n"
393 +"\t\t\t<input type=submit>\n"
394 +"\t\t</form>\n"
395 +"\t</body>\n"
396 +"</html>\n";
397 +
398 +static const char data_flash_html[] =
399 +"HTTP/1.0 200 OK\n"
400 +"Server: uIP/0.9 (http://dunkels.com/adam/uip/)\n"
401 +"Content-type: text/html\n"
402 +"\n"
403 +"<html>\n"
404 +"\t<head>\n"
405 +"\t\t<title>\n"
406 +"\t\t\tFailsafe UI\n"
407 +"\t\t</title>\n"
408 +"\t</head>\n"
409 +"\t<body>\n"
410 +"\t\t<h1>Flashing...</h1>\n"
411 +"\t\tThe system is now trying to flash. If there is a problem, the LEDs will "
412 +"start to blink.<br>\n"
413 +"\n"
414 +"\t\tAfter a successful update the box will reboot\n"
415 +"\t</body>\n"
416 +"</html>\n";
417 +
418 +const struct fsdata_file file_flashing_html[] =
419 +{{NULL, "/flashing.html", data_flashing_html, sizeof(data_flashing_html)}};
420 +
421 +const struct fsdata_file file_fail_html[] =
422 +{{file_flashing_html, "/fail.html", data_fail_html, sizeof(data_fail_html)}};
423
424 -const struct fsdata_file file_fail_html[] = {{file_flashing_html, data_fail_html, data_fail_html + 11, sizeof(data_fail_html) - 11}};
425 +const struct fsdata_file file_404_html[] =
426 +{{file_fail_html, "/404.html", data_404_html, sizeof(data_404_html)}};
427
428 -const struct fsdata_file file_404_html[] = {{file_fail_html, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}};
429 +const struct fsdata_file file_index_html[] =
430 +{{file_404_html, "/index.html", data_index_html, sizeof(data_index_html)}};
431
432 -const struct fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}};
433 -
434 -const struct fsdata_file file_flash_html[] = {{file_index_html, data_flash_html, data_flash_html + 12, sizeof(data_flash_html) - 12}};
435 +const struct fsdata_file file_flash_html[] =
436 +{{file_index_html, "/flash.html", data_flash_html, sizeof(data_flash_html)}};
437
438 #define FS_ROOT file_flash_html
439
440 -#define FS_NUMFILES 5
441 \ No newline at end of file
442 +#define FS_NUMFILES 5
443 --- a/net/uip-0.9/httpd.c
444 +++ b/net/uip-0.9/httpd.c
445 @@ -130,7 +130,7 @@ httpd_appcall(void)
446 if(!fs_open((const char *)&uip_appdata[4], &fsfile))
447 {
448 PRINTLN("couldn't open file");
449 - fs_open(file_index_html.name, &fsfile);
450 + fs_open(file_404_html.name, &fsfile);
451 }
452 }
453 hs->script = 0;
454 @@ -141,7 +141,7 @@ httpd_appcall(void)
455 if(hs->state == HTTP_FIRMWARE)
456 {
457 unsigned char *start = (unsigned char*)uip_appdata;
458 - char *clen = strstr(start, "Content-Length:");
459 + char *clen = strstr((char *)start, "Content-Length:");
460 int len = 0;
461 unsigned char *next, *end;
462 unsigned char *boundary_start;
463 @@ -150,14 +150,14 @@ httpd_appcall(void)
464 if(clen)
465 {
466 clen += sizeof("Content-Length:");
467 - next = strstr(clen, eol);
468 + next = (unsigned char *)strstr(clen, eol);
469 if(next)
470 {
471 len = atoi(clen);
472 next++;
473 printf("expecting %d bytes\n", len);
474 upload_data = httpd_upload_data = (unsigned char *)do_http_tmp_address();
475 - printf("received data will be stored at 0x%08X\n", upload_data);
476 + printf("received data will be stored at %p\n", upload_data);
477 if(!upload_data)
478 {
479 printf("failed to allocate memory\n");
480 @@ -174,14 +174,14 @@ httpd_appcall(void)
481 uip_close();
482 return;
483 }
484 - boundary_start = strstr(next, "---");
485 + boundary_start = (unsigned char *)strstr((char *)next, "---");
486 if(!boundary_start)
487 {
488 uip_close();
489 return;
490 }
491 - end = strstr(boundary_start, eol);
492 - if(!eol)
493 + end = (unsigned char *)strstr((char *)boundary_start, eol);
494 + if(!end)
495 {
496 uip_close();
497 return;
498 @@ -189,13 +189,13 @@ httpd_appcall(void)
499 boundary_len = end - boundary_start;
500 memcpy(boundary, boundary_start, boundary_len);
501 boundary[boundary_len] = 0;
502 - next = strstr(boundary_start, "name=\"firmware\";");
503 + next = (unsigned char *)strstr((char *)boundary_start, "name=\"firmware\";");
504 if(!next)
505 {
506 uip_close();
507 return;
508 }
509 - next = strstr(next, eol2);
510 + next = (unsigned char *)strstr((char *)next, eol2);
511 if(!next)
512 {
513 printf("could not find start of data\n");
514 @@ -259,7 +259,6 @@ httpd_appcall(void)
515 {
516 if(upload_running)
517 {
518 - int i;
519 httpd_upload_complete = 1;
520 // for(i = 0; i < hs->upload_total; i++)
521 // printf("%c", httpd_upload_data[i]);
522 @@ -267,7 +266,7 @@ httpd_appcall(void)
523 uip_close();
524 }
525 }
526 - uip_send(hs->dataptr, hs->count);
527 + uip_send((unsigned char *)hs->dataptr, hs->count);
528 }
529 break;
530