Hallo zusammen,
ich habe eine kleine Frage zum uIP Stack bzw zu dessen Nutzung. Ich habe
gerade versucht, nach dem Beispiel von Simon Kuepers, einen kleinen
Webserver in Betrieb zu nehmen.
Hierzu meine Funktionen, die hier evtl interessant sind:
1 | void eth_listen(void)
|
2 | {
|
3 | eth_flag = 0;
|
4 | uip_listen(HTONS(500));
|
5 | uip_listen(HTONS(80));
|
6 | }
|
1 | void statemachine(void)
|
2 | {
|
3 | if (uip_connected())
|
4 | {
|
5 | rs232_puts("statemachine connected");
|
6 | eth_flag = uipflag_connected;
|
7 | }
|
8 | else if (uip_newdata() || uip_acked())
|
9 | {
|
10 | rs232_puts("statemachine new ack");
|
11 | switch(uip_conn->lport)
|
12 | {
|
13 | case HTONS(500):
|
14 | irgendwasanderes(uip_appdata);
|
15 | break;
|
16 |
|
17 | case HTONS(80):
|
18 | http_server(uip_appdata);
|
19 | break;
|
20 |
|
21 | default: break;
|
22 | }
|
23 | }
|
24 | else if (uip_rexmit())
|
25 | {
|
26 | rs232_puts("statemachine rexmit");
|
27 | //schau ma mal später
|
28 | uip_abort();
|
29 | }
|
30 | }
|
Doch leider gelange ich nie in die zweite Bedingung der Statemachine.
Weder "acked" noch "newdata" treten ein. Sobald ich von Seiten des PCs
eine GET Anfrage auf den µC schicke, komme ich in die erste Bedinung,
danach sendet der PC nur noch "[TCP] Rtransmission] GET / HHTP/1.1".
Wenn ich mir mal uip_appdata ausgeben lasse, sobald ich ein "connected"
habe, ist das nur ein String mit '\0' beginnend.
Was mach ich da falsch? Das sollte doch prinzipiell funktionieren, oder?