for znrobotics workshop

Dependencies:   DHT22 HTTPClient SDFileSystem WIZnet_Library mbed

Fork of archlink_Temperture_dweetio by Kevin Lee

This program is for seeed arch link, using wiznet w550 ethernet interface. not compatible with mbed ethernet interface.

main.cpp

Committer:
Kevin_Lee
Date:
2015-06-30
Revision:
1:0f6a216263aa
Parent:
0:29bbc7eec5e1
Child:
2:8b304d2b4ca5

File content as of revision 1:0f6a216263aa:

#include "mbed.h"
#include "SDFileSystem.h"
#include "BLE.h"
#include "WIZnetInterface.h"


#define USE_DHCP 1
#define LOOPBACKPORT  5000
int W5500_Test(void);

SPI spi(SPI_PSELMOSI0, SPI_PSELMISO0, SPI_PSELSCK0);
WIZnetInterface ethernet(&spi, p24, p17); // Spi ,cs, reset
int ret, dummy, lv = 1;
const char * IP_Addr      = "192.168.21.247";
const char * IP_Subnet    = "255.255.255.0";
const char * IP_Gateway   = "192.168.21.2";
unsigned char MAC_Addr[6] = {0x00,0x08,0xDC,0x1C,0xAA,0xCA};
 

DigitalOut myled(LED1);
//Arch Link
Serial pc(USBTX, USBRX);  /* uart */


int main() {
    char buffer[256];
    wait(1);
    pc.baud(115200);
    wait(1);
    printf("helloworld\r\n");
    
    if(W5500_Test() == 0) {
        printf("W5500 tested OK \r\n");
        
        TCPSocketServer server;
        
        server.bind(LOOPBACKPORT);
        server.listen();
        while(1) {
            printf("\nWait for new connection...\r\n");
            TCPSocketConnection client;
            server.accept(client);
            client.set_blocking(false,0); // Timeout = 0.
            printf("Connection from: %s\r\n",client.get_address());
            while (client.is_connected() == true) {
                int n = client.receive(buffer,sizeof(buffer));
                if (n > 0) {
                    client.send_all(buffer,n);
                } else {
                }
                if (client.is_fin_received()) {
                    client.close();
                } else {
                }
                
            }
            printf("Disconnected.\r\n");
            
        }
    }
    
    while(1) {
        myled = 1;
        printf("light1\r\n");
        wait(3);
        myled = 0;
        printf("light0\r\n");
        wait(3);
    }
}

int W5500_Test(void)
{
    mbed_mac_address((char *)MAC_Addr); //Use mbed mac addres
    wait(1);
    printf("Start to test ethernet!\r\n");
    
    #if USE_DHCP
    printf("use DHCP\r\n");
    ret = ethernet.init(MAC_Addr);
    #else
    printf("do NOT use DHCP\r\n");
    int ret = ethernet.init(MAC_Addr,IP_Addr,IP_Subnet,IP_Gateway);
    #endif
    
    if (!ret) {
        pc.printf("Initialized, MAC: %s\r\n", ethernet.getMACAddress());
        ret = ethernet.connect();
        if (!ret) {
            pc.printf("IP: %s, MASK: %s, GW: %s\r\n",
                      ethernet.getIPAddress(), ethernet.getNetworkMask(), ethernet.getGateway());
            return 0;
        } else {
            pc.printf("Error ethernet.connect() - ret = %d\r\n", ret);
            //exit(0);
            return -1;
        }
    } else {
        pc.printf("Error ethernet.init() - ret = %d\r\n", ret);
        //exit(0);
        return -1;
    }
    /*
    TCPSocketServer server;
    server.bind(LOOPBACKPORT);
    server.listen();
    
    while (1) {
        pc.printf("\nWait for new connection...\r\n");
        TCPSocketConnection client;
        server.accept(client);
        client.set_blocking(false, 0); // Timeout=0.
        pc.printf("Connection from: %s\r\n", client.get_address());
        while (client.is_connected() == true) {
            int n = client.receive(buffer, sizeof(buffer));
            if(n > 0)
                client.send_all(buffer, n);
            if(client.is_fin_received())
                client.close();
        }
        pc.printf("Disconnected.\r\n");
    }*/
}