Merge pull request #4212 from xiangxistu/master

[add] a new function to manage internet check.
This commit is contained in:
Bernard Xiong 2020-12-31 14:54:16 +08:00 committed by GitHub
commit a6343273b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 7 deletions

View File

@ -10,6 +10,12 @@ config RT_USING_SAL
if RT_USING_SAL
config SAL_INTERNET_CHECK
bool "Enable the ability that check internet status"
default y
help
The ability that check internet status is provided by RT-Thread.
if RT_USING_LWIP || AT_USING_SOCKET
menu "protocol stack implement"

View File

@ -901,8 +901,8 @@ static void netdev_list_if(void)
{
rt_kprintf("%d", netdev->hwaddr[index]);
}
}
}
@ -911,8 +911,10 @@ static void netdev_list_if(void)
else rt_kprintf(" DOWN");
if (netdev->flags & NETDEV_FLAG_LINK_UP) rt_kprintf(" LINK_UP");
else rt_kprintf(" LINK_DOWN");
#ifdef SAL_INTERNET_CHECK
if (netdev->flags & NETDEV_FLAG_INTERNET_UP) rt_kprintf(" INTERNET_UP");
else rt_kprintf(" INTERNET_DOWN");
#endif
if (netdev->flags & NETDEV_FLAG_DHCP) rt_kprintf(" DHCP_ENABLE");
else rt_kprintf(" DHCP_DISABLE");
if (netdev->flags & NETDEV_FLAG_ETHARP) rt_kprintf(" ETHARP");

View File

@ -21,7 +21,9 @@
#include <sal.h>
#include <netdev.h>
#ifdef SAL_INTERNET_CHECK
#include <ipc/workqueue.h>
#endif
/* check system workqueue stack size */
#if RT_SYSTEM_WORKQUEUE_STACKSIZE < 1536
@ -45,7 +47,7 @@ struct sal_socket_table
struct sal_netdev_res_table
{
struct addrinfo *res;
struct netdev *netdev;
struct netdev *netdev;
};
#ifdef SAL_USING_TLS
@ -131,7 +133,7 @@ int sal_init(void)
/*init the dev_res table */
rt_memset(sal_dev_res_tbl, 0, sizeof(sal_dev_res_tbl));
/* create sal socket lock */
rt_mutex_init(&sal_core_lock, "sal_lock", RT_IPC_FLAG_FIFO);
@ -142,6 +144,7 @@ int sal_init(void)
}
INIT_COMPONENT_EXPORT(sal_init);
#ifdef SAL_INTERNET_CHECK
/* check SAL network interface device internet status */
static void check_netdev_internet_up_work(struct rt_work *work, void *work_data)
{
@ -271,6 +274,7 @@ __exit:
skt_ops->closesocket(sockfd);
}
}
#endif /* SAL_INTERNET_CHECK */
/**
* This function will check SAL network interface device internet status.
@ -279,10 +283,12 @@ __exit:
*/
int sal_check_netdev_internet_up(struct netdev *netdev)
{
RT_ASSERT(netdev);
#ifdef SAL_INTERNET_CHECK
/* workqueue for network connect */
struct rt_delayed_work *net_work = RT_NULL;
RT_ASSERT(netdev);
net_work = (struct rt_delayed_work *)rt_calloc(1, sizeof(struct rt_delayed_work));
if (net_work == RT_NULL)
@ -293,7 +299,7 @@ int sal_check_netdev_internet_up(struct netdev *netdev)
rt_delayed_work_init(net_work, check_netdev_internet_up_work, (void *)netdev);
rt_work_submit(&(net_work->work), RT_TICK_PER_SECOND);
#endif /* SAL_INTERNET_CHECK */
return 0;
}
@ -1138,7 +1144,7 @@ int sal_getaddrinfo(const char *nodename,
}
RT_ASSERT((i < SAL_SOCKETS_NUM));
}
return ret;