mirror of https://github.com/ARMmbed/mbed-os.git
lwipstack: add start dhcp and static ip functions
parent
1b797bbd16
commit
d40c19bc73
|
|
@ -41,7 +41,7 @@ int IPStackInterface::start_dhcp(uint timeout)
|
|||
|
||||
int IPStackInterface::start_static_ip(const char *ip, const char *netmask, const char *gw)
|
||||
{
|
||||
return lwip_start_static_ip();
|
||||
return lwip_start_static_ip(ip, netmask, gw);
|
||||
}
|
||||
|
||||
const char * IPStackInterface::get_mac_address()
|
||||
|
|
|
|||
|
|
@ -509,7 +509,7 @@ int lwip_bringdown(void)
|
|||
netif_set_down(&lwip_netif);
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
/* LWIP error remapping */
|
||||
static int lwip_err_remap(err_t err) {
|
||||
|
|
@ -537,6 +537,46 @@ static int lwip_err_remap(err_t err) {
|
|||
}
|
||||
}
|
||||
|
||||
int lwip_start_dhcp(unsigned int timeout)
|
||||
{
|
||||
err_t err = NSAPI_ERROR_DNS_FAILURE;
|
||||
#if LWIP_IPV4
|
||||
err = dhcp_start(&lwip_netif);
|
||||
if (err) {
|
||||
return NSAPI_ERROR_DHCP_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
// If doesn't have address
|
||||
if (!lwip_get_ip_addr(true, &lwip_netif)) {
|
||||
err = sys_arch_sem_wait(&lwip_netif_has_addr, timeout);
|
||||
if (err == SYS_ARCH_TIMEOUT) {
|
||||
return NSAPI_ERROR_DHCP_FAILURE;
|
||||
}
|
||||
lwip_connected = true;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
int lwip_start_static_ip(const char *ip, const char *netmask, const char *gw)
|
||||
{
|
||||
|
||||
#if LWIP_IPV4
|
||||
ip4_addr_t ip_addr;
|
||||
ip4_addr_t netmask_addr;
|
||||
ip4_addr_t gw_addr;
|
||||
|
||||
if (!inet_aton(ip, &ip_addr) ||
|
||||
!inet_aton(netmask, &netmask_addr) ||
|
||||
!inet_aton(gw, &gw_addr)) {
|
||||
return NSAPI_ERROR_PARAMETER;
|
||||
}
|
||||
|
||||
netif_set_addr(&lwip_netif, &ip_addr, &netmask_addr, &gw_addr);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
/* LWIP network stack implementation */
|
||||
static int lwip_gethostbyname(nsapi_stack_t *stack, const char *host, nsapi_addr_t *addr, nsapi_version_t version)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -34,6 +34,9 @@ char *lwip_get_ip_address(char *buf, int buflen);
|
|||
char *lwip_get_netmask(char *buf, int buflen);
|
||||
char *lwip_get_gateway(char *buf, int buflen);
|
||||
|
||||
int lwip_start_dhcp(unsigned int timeout);
|
||||
int lwip_start_static_ip(const char *ip, const char *netmask, const char *gw);
|
||||
|
||||
extern nsapi_stack_t lwip_stack;
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue