“5d79aca2da147761939d8268ee7b5a7e2ef40f08”上不存在“.travis.yml”
提交 d6fb6fec 编写于 作者: 还_没_想_好's avatar 还_没_想_好 提交者: 还_没_想_好

[components][drivers][wlan] 1.修复异步调用 dhcp 无法停止的bug 2.支持解挂载 lwip 协议

上级 3b252d5b
...@@ -181,14 +181,10 @@ static void netif_set_connected(void *parameter) ...@@ -181,14 +181,10 @@ static void netif_set_connected(void *parameter)
netifapi_netif_common(eth_dev->netif, netif_set_link_up, NULL); netifapi_netif_common(eth_dev->netif, netif_set_link_up, NULL);
#ifdef LWIP_USING_DHCPD #ifdef LWIP_USING_DHCPD
{ {
char netif_name[8]; char netif_name[RT_NAME_MAX];
int i;
rt_memset(netif_name, 0, sizeof(netif_name)); rt_memset(netif_name, 0, sizeof(netif_name));
for (i = 0; i < sizeof(eth_dev->netif->name); i++) rt_memcpy(netif_name, eth_dev->netif->name, sizeof(eth_dev->netif->name));
{
netif_name[i] = eth_dev->netif->name[i];
}
dhcpd_start(netif_name); dhcpd_start(netif_name);
} }
#endif #endif
...@@ -196,24 +192,24 @@ static void netif_set_connected(void *parameter) ...@@ -196,24 +192,24 @@ static void netif_set_connected(void *parameter)
} }
else else
{ {
if (wlan->mode == RT_WLAN_STATION) LOG_D("F:%s L:%d set linkdown", __FUNCTION__, __LINE__);
{ netifapi_netif_common(eth_dev->netif, netif_set_link_down, NULL);
LOG_D("F:%s L:%d dhcp stop run", __FUNCTION__, __LINE__); rt_timer_stop(&lwip_prot->timer);
netifapi_netif_common(eth_dev->netif, netif_set_link_down, NULL);
#ifdef RT_LWIP_DHCP #ifdef RT_LWIP_DHCP
{ {
ip_addr_t ip_addr = { 0 }; ip_addr_t ip_addr = { 0 };
dhcp_stop(eth_dev->netif); dhcp_stop(eth_dev->netif);
netif_set_addr(eth_dev->netif, &ip_addr, &ip_addr, &ip_addr); netif_set_addr(eth_dev->netif, &ip_addr, &ip_addr, &ip_addr);
}
#endif
rt_timer_stop(&lwip_prot->timer);
} }
else if (wlan->mode == RT_WLAN_AP) #endif
#ifdef LWIP_USING_DHCPD
{ {
LOG_D("F:%s L:%d dhcpd stop run", __FUNCTION__, __LINE__); char netif_name[RT_NAME_MAX];
netifapi_netif_common(eth_dev->netif, netif_set_link_down, NULL); rt_memset(netif_name, 0, sizeof(netif_name));
rt_memcpy(netif_name, lwip_prot->eth.netif->name, sizeof(lwip_prot->eth.netif->name));
dhcpd_stop(netif_name);
} }
#endif
} }
} }
...@@ -421,7 +417,7 @@ const static struct rt_device_ops wlan_lwip_ops = ...@@ -421,7 +417,7 @@ const static struct rt_device_ops wlan_lwip_ops =
static struct rt_wlan_prot *rt_wlan_lwip_protocol_register(struct rt_wlan_prot *prot, struct rt_wlan_device *wlan) static struct rt_wlan_prot *rt_wlan_lwip_protocol_register(struct rt_wlan_prot *prot, struct rt_wlan_device *wlan)
{ {
struct eth_device *eth = RT_NULL; struct eth_device *eth = RT_NULL;
static rt_uint8_t id = 0; rt_uint8_t id = 0;
char eth_name[4], timer_name[16]; char eth_name[4], timer_name[16];
rt_device_t device = RT_NULL; rt_device_t device = RT_NULL;
struct lwip_prot_des *lwip_prot; struct lwip_prot_des *lwip_prot;
...@@ -501,8 +497,30 @@ static struct rt_wlan_prot *rt_wlan_lwip_protocol_register(struct rt_wlan_prot * ...@@ -501,8 +497,30 @@ static struct rt_wlan_prot *rt_wlan_lwip_protocol_register(struct rt_wlan_prot *
static void rt_wlan_lwip_protocol_unregister(struct rt_wlan_prot *prot, struct rt_wlan_device *wlan) static void rt_wlan_lwip_protocol_unregister(struct rt_wlan_prot *prot, struct rt_wlan_device *wlan)
{ {
/*TODO*/ struct lwip_prot_des *lwip_prot = (struct lwip_prot_des *)prot;
LOG_D("F:%s L:%d is run wlan:0x%08x", __FUNCTION__, __LINE__, wlan); LOG_D("F:%s L:%d is run wlan:0x%08x", __FUNCTION__, __LINE__, wlan);
#if !defined(RT_USING_LWIP141)
wlan->prot = RT_NULL;
if (lwip_prot == RT_NULL)
{
return;
}
#ifdef LWIP_USING_DHCPD
{
char netif_name[RT_NAME_MAX];
rt_memset(netif_name, 0, sizeof(netif_name));
rt_memcpy(netif_name, lwip_prot->eth.netif->name, sizeof(lwip_prot->eth.netif->name));
dhcpd_stop(netif_name);
}
#endif
eth_device_deinit(&lwip_prot->eth);
rt_device_close((rt_device_t)wlan);
rt_timer_detach(&lwip_prot->timer);
wlan->netdev = RT_NULL;
rt_free(lwip_prot);
#endif
} }
static struct rt_wlan_prot_ops ops = static struct rt_wlan_prot_ops ops =
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册