[add] the function of set [internet up] status, activate the callback.
This commit is contained in:
parent
c44e5165be
commit
865e34650c
@ -186,6 +186,7 @@ void netdev_low_level_set_gw(struct netdev *netdev, const ip_addr_t *gw);
|
|||||||
void netdev_low_level_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_t *dns_server);
|
void netdev_low_level_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_t *dns_server);
|
||||||
void netdev_low_level_set_status(struct netdev *netdev, rt_bool_t is_up);
|
void netdev_low_level_set_status(struct netdev *netdev, rt_bool_t is_up);
|
||||||
void netdev_low_level_set_link_status(struct netdev *netdev, rt_bool_t is_up);
|
void netdev_low_level_set_link_status(struct netdev *netdev, rt_bool_t is_up);
|
||||||
|
void netdev_low_level_set_internet_status(struct netdev *netdev, rt_bool_t is_up);
|
||||||
void netdev_low_level_set_dhcp_status(struct netdev *netdev, rt_bool_t is_enable);
|
void netdev_low_level_set_dhcp_status(struct netdev *netdev, rt_bool_t is_enable);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -828,6 +828,34 @@ void netdev_low_level_set_link_status(struct netdev *netdev, rt_bool_t is_up)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function will set network interface device active internet status.
|
||||||
|
* @NOTE it can only be called in the network interface device driver.
|
||||||
|
*
|
||||||
|
* @param netdev the network interface device to change
|
||||||
|
* @param is_up the new internet status
|
||||||
|
*/
|
||||||
|
void netdev_low_level_set_internet_status(struct netdev *netdev, rt_bool_t is_up)
|
||||||
|
{
|
||||||
|
if (netdev && netdev_is_internet_up(netdev) != is_up)
|
||||||
|
{
|
||||||
|
if (is_up)
|
||||||
|
{
|
||||||
|
netdev->flags |= NETDEV_FLAG_INTERNET_UP;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
netdev->flags &= ~NETDEV_FLAG_INTERNET_UP;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* execute network interface device status change callback function */
|
||||||
|
if (netdev->status_callback)
|
||||||
|
{
|
||||||
|
netdev->status_callback(netdev, is_up ? NETDEV_CB_STATUS_INTERNET_UP : NETDEV_CB_STATUS_INTERNET_DOWN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function will set network interface device DHCP status.
|
* This function will set network interface device DHCP status.
|
||||||
* @NOTE it can only be called in the network interface device driver.
|
* @NOTE it can only be called in the network interface device driver.
|
||||||
|
@ -261,12 +261,12 @@ __exit:
|
|||||||
if (result > 0)
|
if (result > 0)
|
||||||
{
|
{
|
||||||
LOG_D("Set network interface device(%s) internet status up.", netdev->name);
|
LOG_D("Set network interface device(%s) internet status up.", netdev->name);
|
||||||
netdev->flags |= NETDEV_FLAG_INTERNET_UP;
|
netdev_low_level_set_internet_status(netdev, RT_TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG_D("Set network interface device(%s) internet status down.", netdev->name);
|
LOG_D("Set network interface device(%s) internet status down.", netdev->name);
|
||||||
netdev->flags &= ~NETDEV_FLAG_INTERNET_UP;
|
netdev_low_level_set_internet_status(netdev, RT_FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sockfd >= 0)
|
if (sockfd >= 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user