ethernetNetif

Fork of EthernetNetif by Don DeGregori

Revision:
0:005eb30e83da
diff -r 000000000000 -r 005eb30e83da EthernetNetif.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EthernetNetif.h	Tue Jun 05 00:06:50 2012 +0000
@@ -0,0 +1,106 @@
+00001 
+00002 /*
+00003 Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
+00004  
+00005 Permission is hereby granted, free of charge, to any person obtaining a copy
+00006 of this software and associated documentation files (the "Software"), to deal
+00007 in the Software without restriction, including without limitation the rights
+00008 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+00009 copies of the Software, and to permit persons to whom the Software is
+00010 furnished to do so, subject to the following conditions:
+00011  
+00012 The above copyright notice and this permission notice shall be included in
+00013 all copies or substantial portions of the Software.
+00014  
+00015 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+00016 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+00017 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+00018 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+00019 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+00020 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+00021 THE SOFTWARE.
+00022 */
+00023 
+00024 /** \file
+00025 Ethernet network interface header file
+00026 */
+00027 
+00028 #ifndef ETHERNETNETIF_H
+00029 #define ETHERNETNETIF_H
+00030 
+00031 struct netif;
+00032 
+00033 #include "mbed.h"
+00034 
+00035 #include "if/lwip/LwipNetIf.h"
+00036 #include "lwip/dhcp.h"
+00037 
+00038 ///Ethernet network interface return codes
+00039 enum EthernetErr
+00040 {
+00041   __ETH_MIN = -0xFFFF,
+00042   ETH_TIMEOUT, ///<Timeout during setup
+00043   ETH_OK = 0 ///<Success
+00044 };
+00045 
+00046 ///Ethernet network interface
+00047 /**
+00048 This class provides Ethernet connectivity to the stack
+00049 */
+00050 class EthernetNetIf : public LwipNetIf
+00051 {
+00052 public:
+00053   ///Instantiates the Interface and register it against the stack, DHCP will be used
+00054   /**
+00055   * An optional hostname can be specified which will be passed to the DHCP server.
+00056   * Examples without and with hostname specified:
+00057   *
+00058   * @code
+00059   * EthernetNetIf eth();
+00060   * @endcode
+00061   * @code
+00062   * EthernetNetIf eth("mbedSE");
+00063   * @endcode
+00064   */
+00065   EthernetNetIf(const char* hostname = NULL); //W/ DHCP
+00066 
+00067   ///Instantiates the Interface and register it against the stack, DHCP will not be used
+00068   /**
+00069   IpAddr is a container class that can be constructed with either 4 bytes or no parameters for a null IP address.
+00070   */
+00071   EthernetNetIf(IpAddr ip, IpAddr netmask, IpAddr gateway, IpAddr dns); //W/o DHCP
+00072   virtual ~EthernetNetIf();
+00073   
+00074   ///Brings the interface up
+00075   /**
+00076   Uses DHCP if necessary
+00077   @param timeout_ms : You can set the timeout parameter in milliseconds, if not it defaults to 15s
+00078   @return : ETH_OK on success or ETH_TIMEOUT on timeout
+00079   */
+00080   EthernetErr setup(int timeout_ms = 15000);
+00081 
+00082   virtual void poll();
+00083   
+00084   ///Returns an array containing the hardware address
+00085   const char* getHwAddr() const;
+00086   
+00087 private:
+00088   Timer m_ethArpTimer;
+00089   Timer m_dhcpCoarseTimer;
+00090   Timer m_dhcpFineTimer;
+00091   Timer m_igmpTimer;
+00092     
+00093   bool m_useDhcp;
+00094 
+00095   netif* m_pNetIf;
+00096   
+00097   IpAddr m_netmask;
+00098   IpAddr m_gateway;
+00099   
+00100   const char* m_hostname;
+00101   dhcp* m_pDhcp;
+00102   bool m_setup;
+00103 };
+00104 
+00105 #endif
+00106