This is the firmware for the LaOS - Laser Open Source project. You can use it to drive a laser cutter. For hardware and more information, look at our wiki: http://wiki.laoslaser.org

Dependencies:   EthernetNetIf mbed

Committer:
fablabtruck
Date:
Fri Jun 08 09:26:40 2012 +0000
Revision:
0:3852426a5068
svn revision 379

Who changed what in which revision?

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