Michael Spencer / Mbed 2 deprecated LaOS

Dependencies:   mbed

Committer:
Michael J. Spencer
Date:
Wed Mar 05 06:14:02 2014 -0800
Revision:
1:f5ac63519541
Initial commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Michael J. Spencer 1:f5ac63519541 1 /*
Michael J. Spencer 1:f5ac63519541 2 * EthSetup.cpp
Michael J. Spencer 1:f5ac63519541 3 * Setup ethernet interface, based on config file
Michael J. Spencer 1:f5ac63519541 4 * Read IP, Gateway, DNS and port for server.
Michael J. Spencer 1:f5ac63519541 5 * if IP is not defined, or dhcp is set, use dhcp for Ethernet
Michael J. Spencer 1:f5ac63519541 6 *
Michael J. Spencer 1:f5ac63519541 7 * Copyright (c) 2011 Peter Brier
Michael J. Spencer 1:f5ac63519541 8 *
Michael J. Spencer 1:f5ac63519541 9 * This file is part of the LaOS project (see: http://wiki.protospace.nl/index.php/LaOS)
Michael J. Spencer 1:f5ac63519541 10 *
Michael J. Spencer 1:f5ac63519541 11 * LaOS is free software: you can redistribute it and/or modify
Michael J. Spencer 1:f5ac63519541 12 * it under the terms of the GNU General Public License as published by
Michael J. Spencer 1:f5ac63519541 13 * the Free Software Foundation, either version 3 of the License, or
Michael J. Spencer 1:f5ac63519541 14 * (at your option) any later version.
Michael J. Spencer 1:f5ac63519541 15 *
Michael J. Spencer 1:f5ac63519541 16 * LaOS is distributed in the hope that it will be useful,
Michael J. Spencer 1:f5ac63519541 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Michael J. Spencer 1:f5ac63519541 18 * MERCHANTABILITY or FpITNESS FOR A PARTICULAR PURPOSE. See the
Michael J. Spencer 1:f5ac63519541 19 * GNU General Public License for more details.
Michael J. Spencer 1:f5ac63519541 20 *
Michael J. Spencer 1:f5ac63519541 21 * You should have received a copy of the GNU General Public License
Michael J. Spencer 1:f5ac63519541 22 * along with LaOS. If not, see <http://www.gnu.org/licenses/>.
Michael J. Spencer 1:f5ac63519541 23 *
Michael J. Spencer 1:f5ac63519541 24 */
Michael J. Spencer 1:f5ac63519541 25 #include "EthConfig.h"
Michael J. Spencer 1:f5ac63519541 26
Michael J. Spencer 1:f5ac63519541 27 // Ethernet connection status inputs (from phy) and outputs (to leds)
Michael J. Spencer 1:f5ac63519541 28 #define ETH_LINK (1<<25)
Michael J. Spencer 1:f5ac63519541 29 #define ETH_SPEED (1<<26)
Michael J. Spencer 1:f5ac63519541 30 PortIn eth_conn(Port1, ETH_LINK | ETH_SPEED); // p25: link, 0=connected, 1=NC, p26: speed, 0=100mbit, 1=10mbit
Michael J. Spencer 1:f5ac63519541 31
Michael J. Spencer 1:f5ac63519541 32
Michael J. Spencer 1:f5ac63519541 33 /**
Michael J. Spencer 1:f5ac63519541 34 *** Return Speed status, true==100mbps
Michael J. Spencer 1:f5ac63519541 35 **/
Michael J. Spencer 1:f5ac63519541 36 bool EthSpeed(void)
Michael J. Spencer 1:f5ac63519541 37 {
Michael J. Spencer 1:f5ac63519541 38 int s = eth_conn.read();
Michael J. Spencer 1:f5ac63519541 39 return !(s & ETH_SPEED) && !(s & ETH_LINK);
Michael J. Spencer 1:f5ac63519541 40 }
Michael J. Spencer 1:f5ac63519541 41
Michael J. Spencer 1:f5ac63519541 42 /**
Michael J. Spencer 1:f5ac63519541 43 *** Return Link status, true==connected
Michael J. Spencer 1:f5ac63519541 44 **/
Michael J. Spencer 1:f5ac63519541 45 bool EthLink(void)
Michael J. Spencer 1:f5ac63519541 46 {
Michael J. Spencer 1:f5ac63519541 47 int s = eth_conn.read();
Michael J. Spencer 1:f5ac63519541 48 return !(s & ETH_LINK);
Michael J. Spencer 1:f5ac63519541 49 }
Michael J. Spencer 1:f5ac63519541 50
Michael J. Spencer 1:f5ac63519541 51 #define IP(x) IpAddr(x[0], x[1], x[2], x[3])
Michael J. Spencer 1:f5ac63519541 52
Michael J. Spencer 1:f5ac63519541 53
Michael J. Spencer 1:f5ac63519541 54 /**
Michael J. Spencer 1:f5ac63519541 55 *** EthConfig
Michael J. Spencer 1:f5ac63519541 56 **/
Michael J. Spencer 1:f5ac63519541 57 EthernetNetIf * EthConfig()
Michael J. Spencer 1:f5ac63519541 58 {
Michael J. Spencer 1:f5ac63519541 59 EthernetNetIf *eth;
Michael J. Spencer 1:f5ac63519541 60 if ( cfg->dhcp )
Michael J. Spencer 1:f5ac63519541 61 {
Michael J. Spencer 1:f5ac63519541 62 printf("DHCP...\n");
Michael J. Spencer 1:f5ac63519541 63 eth = new EthernetNetIf();
Michael J. Spencer 1:f5ac63519541 64 }
Michael J. Spencer 1:f5ac63519541 65 else
Michael J. Spencer 1:f5ac63519541 66 {
Michael J. Spencer 1:f5ac63519541 67 printf("FIXED IP...\n");
Michael J. Spencer 1:f5ac63519541 68 eth = new EthernetNetIf(IP(cfg->ip), IP(cfg->nm), IP(cfg->gw), IP(cfg->dns));
Michael J. Spencer 1:f5ac63519541 69 }
Michael J. Spencer 1:f5ac63519541 70 printf("Ethernet Setup...\n");
Michael J. Spencer 1:f5ac63519541 71 if ( eth->setup() == ETH_TIMEOUT )
Michael J. Spencer 1:f5ac63519541 72 {
Michael J. Spencer 1:f5ac63519541 73 printf("Timeout!\n");
Michael J. Spencer 1:f5ac63519541 74 delete eth;
Michael J. Spencer 1:f5ac63519541 75 eth = new EthernetNetIf(IP(cfg->ip), IP(cfg->nm), IP(cfg->gw), IP(cfg->dns));
Michael J. Spencer 1:f5ac63519541 76 }
Michael J. Spencer 1:f5ac63519541 77
Michael J. Spencer 1:f5ac63519541 78 IpAddr myip = eth->getIp();
Michael J. Spencer 1:f5ac63519541 79 cfg->ip[0] = myip[0];
Michael J. Spencer 1:f5ac63519541 80 cfg->ip[1] = myip[1];
Michael J. Spencer 1:f5ac63519541 81 cfg->ip[2] = myip[2];
Michael J. Spencer 1:f5ac63519541 82 cfg->ip[3] = myip[3];
Michael J. Spencer 1:f5ac63519541 83
Michael J. Spencer 1:f5ac63519541 84 printf("mbed IP Address is %d.%d.%d.%d\r\n", myip[0], myip[1], myip[2], myip[3]);
Michael J. Spencer 1:f5ac63519541 85 return eth;
Michael J. Spencer 1:f5ac63519541 86 }