Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: lwip-eth lwip-sys lwip
Fork of LWIPInterface by
Diff: LWIPInterface.cpp
- Revision:
- 5:2c7d2186543c
- Parent:
- 4:a7349bd7776c
- Child:
- 8:cef01e812975
--- a/LWIPInterface.cpp Mon Feb 29 23:01:54 2016 +0000
+++ b/LWIPInterface.cpp Wed Mar 02 17:21:54 2016 +0000
@@ -31,9 +31,9 @@
/* TCP/IP and Network Interface Initialisation */
-static LWIPInterface *iface = 0;
static struct netif netif;
+static char ip_addr[NS_IP_SIZE] = "\0";
static char mac_addr[NS_MAC_SIZE] = "\0";
static Semaphore tcpip_inited(0);
@@ -52,9 +52,7 @@
static void netif_status_callback(struct netif *netif) {
if (netif_is_up(netif)) {
- iface->setIPAddress (inet_ntoa(netif->ip_addr));
- iface->setNetworkMask(inet_ntoa(netif->netmask));
- iface->setGateway (inet_ntoa(netif->gw));
+ strcpy(ip_addr, inet_ntoa(netif->ip_addr));
netif_up.release();
}
}
@@ -86,44 +84,19 @@
// LWIPInterface implementation
int32_t LWIPInterface::connect()
{
- // Only one instance of LWIP is currently supported
- if (iface) {
- return NS_ERROR_DEVICE_ERROR;
- }
-
- iface = this;
-
// Set up network
set_mac_address();
-
- if (getDHCP()) {
- init_netif(0, 0, 0);
- } else {
- ip_addr_t ip_n, mask_n, gateway_n;
- inet_aton(getIPAddress(), &ip_n);
- inet_aton(getNetworkMask(), &mask_n);
- inet_aton(getGateway(), &gateway_n);
- init_netif(&ip_n, &mask_n, &gateway_n);
- }
+ init_netif(0, 0, 0);
// Connect to network
eth_arch_enable_interrupts();
- if (getDHCP()) {
- dhcp_start(&netif);
+ dhcp_start(&netif);
- // Wait for an IP Address
- // -1: error, 0: timeout
- if (netif_up.wait(LWIP_TIMEOUT) < 0) {
- return NS_ERROR_TIMEOUT;
- }
- } else {
- netif_set_up(&netif);
-
- // Wait for the link up
- if (netif_linked.wait(LWIP_TIMEOUT) < 0) {
- return NS_ERROR_TIMEOUT;
- }
+ // Wait for an IP Address
+ // -1: error, 0: timeout
+ if (netif_up.wait(LWIP_TIMEOUT) < 0) {
+ return NS_ERROR_TIMEOUT;
}
return 0;
@@ -131,18 +104,19 @@
int32_t LWIPInterface::disconnect()
{
- if (getDHCP()) {
- dhcp_release(&netif);
- dhcp_stop(&netif);
- } else {
- netif_set_down(&netif);
- }
+ dhcp_release(&netif);
+ dhcp_stop(&netif);
eth_arch_disable_interrupts();
return 0;
}
+const char *LWIPInterface::getIPAddress()
+{
+ return ip_addr;
+}
+
const char *LWIPInterface::getMACAddress()
{
return mac_addr;
