/** * @file wm_netif2.1.3.h * * @brief netif213 module * * @author WinnerMicro * * Copyright (c) 2014 Winner Microelectronics Co., Ltd. */ #ifndef WM_NETIF2_0_3_H #define WM_NETIF2_0_3_H #include "wm_config.h" #include "wm_type_def.h" #include "wm_sockets.h" #include "wm_wifi.h" #include "wm_params.h" /** MACRO for callback EVENT to join AP or create soft-AP successfully */ #define NETIF_WIFI_JOIN_SUCCESS 0x1 /** MACRO for callback EVENT to fail to join AP */ #define NETIF_WIFI_JOIN_FAILED 0x2 /** MACRO for callback EVENT to disconnect from AP or destroy soft-AP */ #define NETIF_WIFI_DISCONNECTED 0x3 /** MACRO for callbck EVENT to get IP address */ #define NETIF_IP_NET_UP 0x4 /** MACRO for callback EVNET to create AP successfully */ #define NETIF_WIFI_SOFTAP_SUCCESS 0x5 /** MACRO for callback EVNET to create soft-AP failed */ #define NETIF_WIFI_SOFTAP_FAILED 0x6 /** MACRO for callback EVNET to close soft-AP */ #define NETIF_WIFI_SOFTAP_CLOSED 0x7 /** MACRO for callback EVNET to inform soft ap's net */ #define NETIF_IP_NET2_UP 0x8 #define NETIF_IPV6_NET_UP 0x9 /** These are the values for ip_addr_t.type */ #define IPADDR_TYPE_V4 0U #define IPADDR_TYPE_V6 6U #define IPADDR_TYPE_ANY 46U #define IPV6_ADDR_MAX_NUM 3 #if 0 struct ip_addr { u32_t addr; }; typedef struct ip_addr ip_addr_t; #endif #if 0 struct ip4_addr { u32_t addr; }; typedef struct ip4_addr ip4_addr_t; struct ip6_addr { u32_t addr[4]; }; typedef struct ip6_addr ip6_addr_t; #if (TLS_CONFIG_IPV4 && TLS_CONFIG_IPV6) typedef struct _ip_addr { union { ip6_addr_t ip6; ip4_addr_t ip4; } u_addr; u8_t type; } ip_addr_t; #else #if TLS_CONFIG_IPV4 typedef ip4_addr_t ip_addr_t; #else typedef ip6_addr_t ip_addr_t; #endif #endif #endif struct tls_ethif { ip_addr_t ip_addr; ip_addr_t netmask; ip_addr_t gw; #if TLS_CONFIG_IPV6 ip_addr_t ip6_addr[IPV6_ADDR_MAX_NUM]; #endif ip_addr_t dns1; ip_addr_t dns2; u8 status; //0:net down; 1:net up #if TLS_CONFIG_IPV6 u8 ipv6_status[IPV6_ADDR_MAX_NUM]; //0:net down; 1:net up #endif }; //type defination of netif status changed callback. typedef void (*tls_netif_status_event_fn)(u8 status); /** * @defgroup APP_APIs APP APIs * @brief APP APIs */ /** * @addtogroup APP_APIs * @{ */ /** * @defgroup NETIF_APIs NETIF APIs * @brief network interface APIs */ /** * @addtogroup NETIF_APIs * @{ */ /** * @brief This function is used to initialize TCP/IP Stack * * @param[in] None * * @retval 0 success * @retval other failed * * @note None */ int tls_ethernet_init(void); /** * @brief This function is used to get IP information stored in tls_ethif struct * * @param[in] None * * @retval tls_ethif * Pointer to struct tls_ethif * * @note None */ struct tls_ethif * tls_netif_get_ethif(void); /** * @brief This function is used to set tls_ethif status * * @param[in] status net status, 0-up, 1-down * * @return None * * @note None */ void tls_netif_set_status(u8 status); /** * @brief This function is used to start DHCP Client * * @param[in] None * * @retval 0 success * @retval Minus failed * * @note None */ err_t tls_dhcp_start(void); /** * @brief This function is used to stop DHCP client * * @param[in] None * * @retval 0 success * @retval Minus failed * * @note None */ err_t tls_dhcp_stop(void); /** * @brief This function is used to change IP information * * @param[in] *ipaddr IP address * @param[in] *netmask netmask * @param[in] *gw default gateway * * @retval 0 success * @retval Minus failed * * @note None */ err_t tls_netif_set_addr(ip_addr_t *ipaddr, ip_addr_t *netmask, ip_addr_t *gw); /** * @brief This function is used to set dns servers * * @param[in] numdns index of the DNS server to set must be < DNS_MAX_SERVERS * @param[in] *dnsserver IP address of the DNS server to set * * @return None * * @note None */ void tls_netif_dns_setserver(u8 numdns, ip_addr_t *dnsserver); /** * @brief This function is used to bring up an interface,available for processing traffic * * @param[in] None * * @retval 0 success * @retval Minus failed * * @note None */ err_t tls_netif_set_up(void); /** * @brief This function is used to bring down an interface,disabling any traffic processing * * @param[in] None * * @retval 0 success * @retval Minus failed * * @note None */ err_t tls_netif_set_down(void); /** * @brief This function is used to add netif status changed callback to event list,if exists, do nothing * * @param[in] event_fn pointer to tls_netif_status_event_fn * * @retval 0 success * @retval Minus failed * * @note None */ err_t tls_netif_add_status_event(tls_netif_status_event_fn event_fn); /** * @brief This function is used to remove netif status changed callback function from event list,if not exists, do nothing * * @param[in] event_fn pointer to tls_netif_status_event_fn * * @retval 0 success * @retval Minus failed * * @note None */ err_t tls_netif_remove_status_event(tls_netif_status_event_fn event_fn); /** * @brief This function is used to get pointer of netif * * @param[in] None * * @retval pointer of netif * * @note None */ struct netif *tls_get_netif(void); #if TLS_CONFIG_AP /** * @brief Start DHCP Server for a network interface * * * @retval DHCPS_ERR_SUCCESS - No error * @retval DHCPS_ERR_MEM - Out of memory * @retval DHCPS_ERR_LINKDOWN - The NI is inactive * * @note None */ INT8S tls_dhcps_start(void); /** * @brief This function is used to stop DHCP Server * * @param[in] None * * @retval None * * @note None */ void tls_dhcps_stop(void); /** * @brief Start the dns server's service * * * @retval DHCPS_ERR_SUCCESS - No error * @retval DHCPS_ERR_MEM - Out of memory * @retval DHCPS_ERR_LINKDOWN - The NI is inactive * @retval DNSS_ERR_PARAM - Input parameter error * * @note None */ INT8S tls_dnss_start(INT8U * DnsName); /** * @brief Stop the dns server's service * * @param[in] None * * @retval None * * @note None */ void tls_dnss_stop(void); /** * @brief Get station's ip address by mac address * * @param[in] mac station's mac address * * @retval ip_addr station's ip address * * @note None */ ip_addr_t *tls_dhcps_getip(const u8_t *mac); /** * @brief Get station's mac address by ip address * * @param[in] ip station's ip address * * @retval u8* station's mac address * * @note None */ u8 *tls_dhcps_getmac(const ip_addr_t *ip); #endif //TLS_CONFIG_AP #if TLS_CONFIG_RMMS /** * @brief Start remote manager server. * * * @retval DHCPS_ERR_SUCCESS - No error * @retval DHCPS_ERR_MEM - Out of memory * @retval DHCPS_ERR_LINKDOWN - The NIF is inactive * * @note None */ INT8S tls_rmms_start(void); /** * @brief Disable remote manager server * * @param[in] None * * @retval None * * @note None */ void tls_rmms_stop(void); #endif #if TLS_CONFIG_AP /** * @brief This is used to bring up an interface for APSTA,available for processing traffic * * @param[in] None * * @retval 0 success * @retval Minus failed * * @note Can only be used at APSTA mode */ err_t tls_netif2_set_up(void); /** * @brief This function is used to bring down an interface for APSTA, disabling any traffic processing * * @param[in] None * * @retval 0 success * @retval Minus failed * * @note Can only be used at APSTA mode */ err_t tls_netif2_set_down(void); /** * @brief This function is used to change IP information for a network interface for APSTA * * @param[in] *ipaddr IP address * @param[in] *netmask netmask * @param[in] *gw default gateway * * @retval 0 success * @retval Minus failed * * @note Can only be used at APSTA mode */ err_t tls_netif2_set_addr(ip_addr_t *ipaddr, ip_addr_t *netmask, ip_addr_t *gw); /*************************************************************************** * Function: tls_dhcps_setdns * Description: Set dhcp server's dns address. * * Input: numdns: the index of the DNS server to set must be less than DNS_MAX_SERVERS * * Output: None * * Return: None * * Date : 2015-3-10 ****************************************************************************/ /** * @brief Set dhcp server's dns address * * @param[in] numdns the index of the DNS server to set must be less than DNS_MAX_SERVERS * * @retval None * * @note Can only be used at APSTA mode */ void tls_dhcps_setdns(u8_t numdns); #endif /** * @} */ /** * @} */ #endif //WM_NETIF_H