for znrobotics workshop
Dependencies: DHT22 HTTPClient SDFileSystem WIZnet_Library mbed
Fork of archlink_Temperture_dweetio by
This program is for seeed arch link, using wiznet w550 ethernet interface. not compatible with mbed ethernet interface.
main.cpp@1:0f6a216263aa, 2015-06-30 (annotated)
- Committer:
- Kevin_Lee
- Date:
- Tue Jun 30 05:41:58 2015 +0000
- Revision:
- 1:0f6a216263aa
- Parent:
- 0:29bbc7eec5e1
- Child:
- 2:8b304d2b4ca5
new project
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Kevin_Lee | 0:29bbc7eec5e1 | 1 | #include "mbed.h" |
Kevin_Lee | 0:29bbc7eec5e1 | 2 | #include "SDFileSystem.h" |
Kevin_Lee | 0:29bbc7eec5e1 | 3 | #include "BLE.h" |
Kevin_Lee | 0:29bbc7eec5e1 | 4 | #include "WIZnetInterface.h" |
Kevin_Lee | 0:29bbc7eec5e1 | 5 | |
Kevin_Lee | 0:29bbc7eec5e1 | 6 | |
Kevin_Lee | 1:0f6a216263aa | 7 | #define USE_DHCP 1 |
Kevin_Lee | 0:29bbc7eec5e1 | 8 | #define LOOPBACKPORT 5000 |
Kevin_Lee | 0:29bbc7eec5e1 | 9 | int W5500_Test(void); |
Kevin_Lee | 1:0f6a216263aa | 10 | |
Kevin_Lee | 0:29bbc7eec5e1 | 11 | SPI spi(SPI_PSELMOSI0, SPI_PSELMISO0, SPI_PSELSCK0); |
Kevin_Lee | 0:29bbc7eec5e1 | 12 | WIZnetInterface ethernet(&spi, p24, p17); // Spi ,cs, reset |
Kevin_Lee | 0:29bbc7eec5e1 | 13 | int ret, dummy, lv = 1; |
Kevin_Lee | 0:29bbc7eec5e1 | 14 | const char * IP_Addr = "192.168.21.247"; |
Kevin_Lee | 0:29bbc7eec5e1 | 15 | const char * IP_Subnet = "255.255.255.0"; |
Kevin_Lee | 0:29bbc7eec5e1 | 16 | const char * IP_Gateway = "192.168.21.2"; |
Kevin_Lee | 0:29bbc7eec5e1 | 17 | unsigned char MAC_Addr[6] = {0x00,0x08,0xDC,0x1C,0xAA,0xCA}; |
Kevin_Lee | 0:29bbc7eec5e1 | 18 | |
Kevin_Lee | 0:29bbc7eec5e1 | 19 | |
Kevin_Lee | 0:29bbc7eec5e1 | 20 | DigitalOut myled(LED1); |
Kevin_Lee | 0:29bbc7eec5e1 | 21 | //Arch Link |
Kevin_Lee | 0:29bbc7eec5e1 | 22 | Serial pc(USBTX, USBRX); /* uart */ |
Kevin_Lee | 0:29bbc7eec5e1 | 23 | |
Kevin_Lee | 0:29bbc7eec5e1 | 24 | |
Kevin_Lee | 0:29bbc7eec5e1 | 25 | int main() { |
Kevin_Lee | 1:0f6a216263aa | 26 | char buffer[256]; |
Kevin_Lee | 0:29bbc7eec5e1 | 27 | wait(1); |
Kevin_Lee | 0:29bbc7eec5e1 | 28 | pc.baud(115200); |
Kevin_Lee | 0:29bbc7eec5e1 | 29 | wait(1); |
Kevin_Lee | 0:29bbc7eec5e1 | 30 | printf("helloworld\r\n"); |
Kevin_Lee | 0:29bbc7eec5e1 | 31 | |
Kevin_Lee | 0:29bbc7eec5e1 | 32 | if(W5500_Test() == 0) { |
Kevin_Lee | 0:29bbc7eec5e1 | 33 | printf("W5500 tested OK \r\n"); |
Kevin_Lee | 1:0f6a216263aa | 34 | |
Kevin_Lee | 1:0f6a216263aa | 35 | TCPSocketServer server; |
Kevin_Lee | 1:0f6a216263aa | 36 | |
Kevin_Lee | 1:0f6a216263aa | 37 | server.bind(LOOPBACKPORT); |
Kevin_Lee | 1:0f6a216263aa | 38 | server.listen(); |
Kevin_Lee | 1:0f6a216263aa | 39 | while(1) { |
Kevin_Lee | 1:0f6a216263aa | 40 | printf("\nWait for new connection...\r\n"); |
Kevin_Lee | 1:0f6a216263aa | 41 | TCPSocketConnection client; |
Kevin_Lee | 1:0f6a216263aa | 42 | server.accept(client); |
Kevin_Lee | 1:0f6a216263aa | 43 | client.set_blocking(false,0); // Timeout = 0. |
Kevin_Lee | 1:0f6a216263aa | 44 | printf("Connection from: %s\r\n",client.get_address()); |
Kevin_Lee | 1:0f6a216263aa | 45 | while (client.is_connected() == true) { |
Kevin_Lee | 1:0f6a216263aa | 46 | int n = client.receive(buffer,sizeof(buffer)); |
Kevin_Lee | 1:0f6a216263aa | 47 | if (n > 0) { |
Kevin_Lee | 1:0f6a216263aa | 48 | client.send_all(buffer,n); |
Kevin_Lee | 1:0f6a216263aa | 49 | } else { |
Kevin_Lee | 1:0f6a216263aa | 50 | } |
Kevin_Lee | 1:0f6a216263aa | 51 | if (client.is_fin_received()) { |
Kevin_Lee | 1:0f6a216263aa | 52 | client.close(); |
Kevin_Lee | 1:0f6a216263aa | 53 | } else { |
Kevin_Lee | 1:0f6a216263aa | 54 | } |
Kevin_Lee | 1:0f6a216263aa | 55 | |
Kevin_Lee | 1:0f6a216263aa | 56 | } |
Kevin_Lee | 1:0f6a216263aa | 57 | printf("Disconnected.\r\n"); |
Kevin_Lee | 1:0f6a216263aa | 58 | |
Kevin_Lee | 1:0f6a216263aa | 59 | } |
Kevin_Lee | 0:29bbc7eec5e1 | 60 | } |
Kevin_Lee | 0:29bbc7eec5e1 | 61 | |
Kevin_Lee | 0:29bbc7eec5e1 | 62 | while(1) { |
Kevin_Lee | 0:29bbc7eec5e1 | 63 | myled = 1; |
Kevin_Lee | 0:29bbc7eec5e1 | 64 | printf("light1\r\n"); |
Kevin_Lee | 0:29bbc7eec5e1 | 65 | wait(3); |
Kevin_Lee | 0:29bbc7eec5e1 | 66 | myled = 0; |
Kevin_Lee | 0:29bbc7eec5e1 | 67 | printf("light0\r\n"); |
Kevin_Lee | 0:29bbc7eec5e1 | 68 | wait(3); |
Kevin_Lee | 0:29bbc7eec5e1 | 69 | } |
Kevin_Lee | 0:29bbc7eec5e1 | 70 | } |
Kevin_Lee | 0:29bbc7eec5e1 | 71 | |
Kevin_Lee | 0:29bbc7eec5e1 | 72 | int W5500_Test(void) |
Kevin_Lee | 0:29bbc7eec5e1 | 73 | { |
Kevin_Lee | 0:29bbc7eec5e1 | 74 | mbed_mac_address((char *)MAC_Addr); //Use mbed mac addres |
Kevin_Lee | 0:29bbc7eec5e1 | 75 | wait(1); |
Kevin_Lee | 0:29bbc7eec5e1 | 76 | printf("Start to test ethernet!\r\n"); |
Kevin_Lee | 0:29bbc7eec5e1 | 77 | |
Kevin_Lee | 0:29bbc7eec5e1 | 78 | #if USE_DHCP |
Kevin_Lee | 0:29bbc7eec5e1 | 79 | printf("use DHCP\r\n"); |
Kevin_Lee | 0:29bbc7eec5e1 | 80 | ret = ethernet.init(MAC_Addr); |
Kevin_Lee | 0:29bbc7eec5e1 | 81 | #else |
Kevin_Lee | 0:29bbc7eec5e1 | 82 | printf("do NOT use DHCP\r\n"); |
Kevin_Lee | 0:29bbc7eec5e1 | 83 | int ret = ethernet.init(MAC_Addr,IP_Addr,IP_Subnet,IP_Gateway); |
Kevin_Lee | 0:29bbc7eec5e1 | 84 | #endif |
Kevin_Lee | 0:29bbc7eec5e1 | 85 | |
Kevin_Lee | 0:29bbc7eec5e1 | 86 | if (!ret) { |
Kevin_Lee | 0:29bbc7eec5e1 | 87 | pc.printf("Initialized, MAC: %s\r\n", ethernet.getMACAddress()); |
Kevin_Lee | 0:29bbc7eec5e1 | 88 | ret = ethernet.connect(); |
Kevin_Lee | 0:29bbc7eec5e1 | 89 | if (!ret) { |
Kevin_Lee | 0:29bbc7eec5e1 | 90 | pc.printf("IP: %s, MASK: %s, GW: %s\r\n", |
Kevin_Lee | 0:29bbc7eec5e1 | 91 | ethernet.getIPAddress(), ethernet.getNetworkMask(), ethernet.getGateway()); |
Kevin_Lee | 0:29bbc7eec5e1 | 92 | return 0; |
Kevin_Lee | 0:29bbc7eec5e1 | 93 | } else { |
Kevin_Lee | 0:29bbc7eec5e1 | 94 | pc.printf("Error ethernet.connect() - ret = %d\r\n", ret); |
Kevin_Lee | 0:29bbc7eec5e1 | 95 | //exit(0); |
Kevin_Lee | 0:29bbc7eec5e1 | 96 | return -1; |
Kevin_Lee | 0:29bbc7eec5e1 | 97 | } |
Kevin_Lee | 0:29bbc7eec5e1 | 98 | } else { |
Kevin_Lee | 0:29bbc7eec5e1 | 99 | pc.printf("Error ethernet.init() - ret = %d\r\n", ret); |
Kevin_Lee | 0:29bbc7eec5e1 | 100 | //exit(0); |
Kevin_Lee | 0:29bbc7eec5e1 | 101 | return -1; |
Kevin_Lee | 0:29bbc7eec5e1 | 102 | } |
Kevin_Lee | 0:29bbc7eec5e1 | 103 | /* |
Kevin_Lee | 0:29bbc7eec5e1 | 104 | TCPSocketServer server; |
Kevin_Lee | 0:29bbc7eec5e1 | 105 | server.bind(LOOPBACKPORT); |
Kevin_Lee | 0:29bbc7eec5e1 | 106 | server.listen(); |
Kevin_Lee | 0:29bbc7eec5e1 | 107 | |
Kevin_Lee | 0:29bbc7eec5e1 | 108 | while (1) { |
Kevin_Lee | 0:29bbc7eec5e1 | 109 | pc.printf("\nWait for new connection...\r\n"); |
Kevin_Lee | 0:29bbc7eec5e1 | 110 | TCPSocketConnection client; |
Kevin_Lee | 0:29bbc7eec5e1 | 111 | server.accept(client); |
Kevin_Lee | 0:29bbc7eec5e1 | 112 | client.set_blocking(false, 0); // Timeout=0. |
Kevin_Lee | 0:29bbc7eec5e1 | 113 | pc.printf("Connection from: %s\r\n", client.get_address()); |
Kevin_Lee | 0:29bbc7eec5e1 | 114 | while (client.is_connected() == true) { |
Kevin_Lee | 0:29bbc7eec5e1 | 115 | int n = client.receive(buffer, sizeof(buffer)); |
Kevin_Lee | 0:29bbc7eec5e1 | 116 | if(n > 0) |
Kevin_Lee | 0:29bbc7eec5e1 | 117 | client.send_all(buffer, n); |
Kevin_Lee | 0:29bbc7eec5e1 | 118 | if(client.is_fin_received()) |
Kevin_Lee | 0:29bbc7eec5e1 | 119 | client.close(); |
Kevin_Lee | 0:29bbc7eec5e1 | 120 | } |
Kevin_Lee | 0:29bbc7eec5e1 | 121 | pc.printf("Disconnected.\r\n"); |
Kevin_Lee | 0:29bbc7eec5e1 | 122 | }*/ |
Kevin_Lee | 0:29bbc7eec5e1 | 123 | } |