Zoltan Hudak
/
TcpServer_ENC28J60
Simple TCP/IP Server using the UIPEthernet library for ENC28J60 Ethernet boards.
main.cpp@4:f7aed299f625, 2019-09-03 (annotated)
- Committer:
- hudakz
- Date:
- Tue Sep 03 09:47:09 2019 +0000
- Revision:
- 4:f7aed299f625
- Parent:
- 3:3a4fc577ecaa
- Child:
- 5:8a0f9cab7f1f
Updated to use the latest version of the UIPEthernet library.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hudakz | 0:837203c8d865 | 1 | /* |
hudakz | 0:837203c8d865 | 2 | * Simple TcpServer using the UIPEthernet library for ENC28J60 Ethernet boards. |
hudakz | 0:837203c8d865 | 3 | * |
hudakz | 0:837203c8d865 | 4 | */ |
hudakz | 3:3a4fc577ecaa | 5 | #include "mbed.h" |
hudakz | 3:3a4fc577ecaa | 6 | #include "UipEthernet.h" |
hudakz | 3:3a4fc577ecaa | 7 | #include "TcpServer.h" |
hudakz | 3:3a4fc577ecaa | 8 | #include "TcpClient.h" |
hudakz | 0:837203c8d865 | 9 | |
hudakz | 3:3a4fc577ecaa | 10 | #define IP "192.168.1.35" |
hudakz | 3:3a4fc577ecaa | 11 | #define GATEWAY "192.168.1.1" |
hudakz | 3:3a4fc577ecaa | 12 | #define NETMASK "255.255.255.0" |
hudakz | 4:f7aed299f625 | 13 | #define PORT 80 |
hudakz | 0:837203c8d865 | 14 | |
hudakz | 3:3a4fc577ecaa | 15 | const uint8_t MAC[6] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 }; |
hudakz | 3:3a4fc577ecaa | 16 | UipEthernet net(MAC, D11, D12, D13, D10); // mac, mosi, miso, sck, cs |
hudakz | 3:3a4fc577ecaa | 17 | TcpServer server; // Ethernet server |
hudakz | 3:3a4fc577ecaa | 18 | TcpClient* client; |
hudakz | 3:3a4fc577ecaa | 19 | uint8_t recvData[1024]; |
hudakz | 3:3a4fc577ecaa | 20 | const char sendData[] = "Data received OK"; |
hudakz | 0:837203c8d865 | 21 | |
hudakz | 3:3a4fc577ecaa | 22 | /** |
hudakz | 3:3a4fc577ecaa | 23 | * @brief |
hudakz | 3:3a4fc577ecaa | 24 | * @note |
hudakz | 3:3a4fc577ecaa | 25 | * @param |
hudakz | 3:3a4fc577ecaa | 26 | * @retval |
hudakz | 3:3a4fc577ecaa | 27 | */ |
hudakz | 0:837203c8d865 | 28 | int main(void) |
hudakz | 0:837203c8d865 | 29 | { |
hudakz | 3:3a4fc577ecaa | 30 | printf("Starting ...\r\n"); |
hudakz | 3:3a4fc577ecaa | 31 | |
hudakz | 3:3a4fc577ecaa | 32 | //net.set_network(IP, NETMASK, GATEWAY); // include this to use static IP address |
hudakz | 3:3a4fc577ecaa | 33 | net.connect(); |
hudakz | 3:3a4fc577ecaa | 34 | |
hudakz | 3:3a4fc577ecaa | 35 | // Show the network address |
hudakz | 3:3a4fc577ecaa | 36 | const char* ip = net.get_ip_address(); |
hudakz | 3:3a4fc577ecaa | 37 | const char* netmask = net.get_netmask(); |
hudakz | 3:3a4fc577ecaa | 38 | const char* gateway = net.get_gateway(); |
hudakz | 3:3a4fc577ecaa | 39 | |
hudakz | 3:3a4fc577ecaa | 40 | printf("IP address: %s\r\n", ip ? ip : "None"); |
hudakz | 3:3a4fc577ecaa | 41 | printf("Netmask: %s\r\n", netmask ? netmask : "None"); |
hudakz | 3:3a4fc577ecaa | 42 | printf("Gateway: %s\r\n\r\n", gateway ? gateway : "None"); |
hudakz | 3:3a4fc577ecaa | 43 | |
hudakz | 3:3a4fc577ecaa | 44 | /* Open the server on ethernet stack */ |
hudakz | 3:3a4fc577ecaa | 45 | server.open(&net); |
hudakz | 3:3a4fc577ecaa | 46 | |
hudakz | 3:3a4fc577ecaa | 47 | /* Bind the HTTP port (TCP 80) to the server */ |
hudakz | 3:3a4fc577ecaa | 48 | server.bind(PORT); |
hudakz | 0:837203c8d865 | 49 | |
hudakz | 3:3a4fc577ecaa | 50 | /* Can handle 5 simultaneous connections */ |
hudakz | 3:3a4fc577ecaa | 51 | server.listen(5); |
hudakz | 3:3a4fc577ecaa | 52 | |
hudakz | 3:3a4fc577ecaa | 53 | while (true) { |
hudakz | 3:3a4fc577ecaa | 54 | client = server.accept(); |
hudakz | 3:3a4fc577ecaa | 55 | |
hudakz | 3:3a4fc577ecaa | 56 | if (client) { |
hudakz | 3:3a4fc577ecaa | 57 | size_t recvLen; |
hudakz | 0:837203c8d865 | 58 | |
hudakz | 3:3a4fc577ecaa | 59 | printf("\r\n----------------------------------\r\n"); |
hudakz | 3:3a4fc577ecaa | 60 | printf("Client with IP address %s connected.\n\r", client->getpeername()); |
hudakz | 3:3a4fc577ecaa | 61 | if ((recvLen = client->available()) > 0) { |
hudakz | 3:3a4fc577ecaa | 62 | printf("%d bytes received:\r\n", recvLen); |
hudakz | 3:3a4fc577ecaa | 63 | client->recv(recvData, recvLen); |
hudakz | 3:3a4fc577ecaa | 64 | for (int i = 0; i < recvLen; i++) |
hudakz | 3:3a4fc577ecaa | 65 | printf(" 0x%.2X", recvData[i]); |
hudakz | 3:3a4fc577ecaa | 66 | printf("\r\n"); |
hudakz | 3:3a4fc577ecaa | 67 | client->send((uint8_t*)sendData, strlen(sendData)); |
hudakz | 3:3a4fc577ecaa | 68 | printf("%s\r\n", sendData); |
hudakz | 0:837203c8d865 | 69 | } |
hudakz | 3:3a4fc577ecaa | 70 | |
hudakz | 3:3a4fc577ecaa | 71 | printf("Client with IP address %s disconnected.\r\n", client->getpeername()); |
hudakz | 3:3a4fc577ecaa | 72 | client->close(); |
hudakz | 0:837203c8d865 | 73 | } |
hudakz | 0:837203c8d865 | 74 | } |
hudakz | 3:3a4fc577ecaa | 75 | } |