Heiko Greiner / Mbed 2 deprecated eth_v16_prob

Dependencies:   mbed

Fork of eth_v13 by Heiko Greiner

Revision:
2:8f5bacfef390
Parent:
1:f45d6c8ec0a9
Child:
3:79dc3337d9da
--- a/main.cpp	Tue Mar 18 18:30:45 2014 +0000
+++ b/main.cpp	Tue Mar 18 22:51:18 2014 +0000
@@ -1,46 +1,48 @@
 #include "mbed.h"
 #include "w5100.h"
-#include "UDPSocket.h"
 #include "ipaddr.h"
+#include "TCPSocket.h"
+#include  "html.h"
+#include "sstream"
 
 extern W5100Class W5100;
 Serial pc(D1, D0);
 Timer sendStatusTimer;
 Timer pollUDPTimer;
-Ticker callUDPSocket;
-UDPSocket testsocket1(0);
+Ticker tickTCP;
+
+int globalCounter = 0;
 
 DigitalOut myled(LED1);
 
-void exFunction(UDPSocketEvent var)
+TCPSocket tcpTest(0);
+
+void handler(void)
 {
     char buf[1000];
-    int len=0;
-    int rcvPort = 0;
-    uint8_t mac[6];
-    int udpPort = 33;
+    int size;
+    
+    size = tcpTest.recv(buf, sizeof(buf));
+    buf[size] = 0;
+    //pc.printf("\n%s\n\n", buf);
 
-    // empfangene Daten anzeigen
-    len = testsocket1.recvfrom(buf, sizeof(buf) , mac, &rcvPort);
-    pc.printf("\n========\nNachricht von : %d.%d.%d.%d:%d\n", mac[0], mac[1], mac[2], mac[3], rcvPort);
-    buf[len]=0; // letztes Zeichen eine null, damit es das Stringende erkannt wird
-    pc.printf("%s\n", buf);
+    tcpTest.send(html_head, sizeof(html_head));
+    tcpTest.send(buf, 100);    
+    tcpTest.send(html_foot, sizeof(html_foot));    
+    
+    tcpTest.close();
+    wait_ms(10);
+    tcpTest.listen();
 
-    // Led blinken lassen
-    myled = !myled;
-    
-    // empfangene Daten zurücksenden
-    testsocket1.sendto(buf, len, mac, udpPort);
 }
 
 int main()
 {
-    int udpPort=33;
+    int _socket = 0;
 
     IpAddr localhost(192,168,1,68);
     IpAddr netmask(255,255,255,0);
     IpAddr gateway(192,168,1,1);
-    IpAddr tempIP;
 
     wait(5);
 
@@ -65,57 +67,24 @@
     gateway.getIP(u);
     W5100.setGatewayIp(u);
 
-    // init testSocket
-    int socketNr = 0;
-    testsocket1.bind(exFunction, udpPort);
-    callUDPSocket.attach(&testsocket1, &UDPSocket::poll, 0.1);
-
     // Sendetimer starten (und anschließend per Polling abfragen)
     pc.printf("Sendetimer starten.\n");
     sendStatusTimer.start();
-    pollUDPTimer.start();
+
+
+    // TCP starten
+    tcpTest.setOnEvent(handler);
+    tcpTest.bind(80);
+    tcpTest.listen();
+    tickTCP.attach(&tcpTest, &TCPSocket::poll, 0.1);
+
 
     while(1) {
 
         // nach Ablauf der Wartezeit die STatusinformationen per Serieller Schnittstelle senden
         if (sendStatusTimer.read_ms() >= 2000) {
-            sendStatusTimer.reset();    // Timer schnellst möglich neu starten
-
-            pc.printf("\n----------------------------------------------------.\n");
-
-            W5100.getMACAddress(mac);
-            pc.printf("MAC Addr is : %02d:%02d:%02d:%02d:%02d:%02d.\n", mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);
-
-            W5100.getIPAddress(mac);
-            pc.printf("IP Addr is : %d.%d.%d.%d\n", mac[0],mac[1],mac[2],mac[3]);
-
-            W5100.getGatewayIp(mac);
-            pc.printf("GW Addr is : %d.%d.%d.%d\n", mac[0],mac[1],mac[2],mac[3]);
-
-
-            printf("socket:%d SnMR:%02x SnIR:%02x SnSR:%02x\n", socketNr,
-                   W5100.readSnMR(socketNr), W5100.readSnIR(socketNr), W5100.readSnSR(socketNr));
-
-            W5100.readSnDIPR(socketNr, mac);
-            pc.printf("Sn_DIPR: %d.%d.%d.%d Sn_DPORT: %d\n", mac[0], mac[1], mac[2], mac[3], W5100.readSnDPORT(socketNr));
-
-            W5100.readSnDHAR(socketNr, mac);
-            pc.printf("Sn_DHAR: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
-
-            pc.printf("Sn_RX_RSR:%d, Sn_RX_RD:%d, Sn_RX_WR:%d\n",
-                      W5100.readSnRX_RSR(socketNr), W5100.readSnRX_RD(socketNr), W5100.readSnRX_WR(socketNr));
-
-            pc.printf("Sn_TX_FSR:%d, Sn_TX_RD:%d, Sn_TX_WR:%d\n",
-                      W5100.readSnTX_FSR(socketNr), W5100.readSnTX_RD(socketNr), W5100.readSnTX_WR(socketNr));
-
+            sendStatusTimer.reset();
+            pc.printf("SnSR = %x\n",W5100.readSnSR(_socket));
         }
-
-        /*
-        if (pollUDPTimer.read_ms() >= 200) {
-            pollUDPTimer.reset();
-            testsocket1.poll();
-        }
-        */
-
     }
 }