Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from this space and version 3.03.00

...

Code Block
languagecpp
linenumberstrue
#include  <cpu_core.h>
#include  <lib_mem.h>
#include  <Source/net.h>
#include  <Source/net_ascii.h>
#include  <IF/net_if.h>
#include  <IF/net_if_wifi.h>

#ifdef NET_IPv4_MODULE_EN
#include  <IP/IPv4/net_ipv4.h>
#endif

#ifdef NET_IPv6_MODULE_EN
#include  <IP/IPv6/net_ipv6.h>
#endif

#include  <Cfg/Template/net_dev_cfg.h>                      /* Device configuration header.           */
#include  <Dev/Ether/Template/net_dev_ether_template_dma.h> /* Device driver header.                  */
#include  <Dev/WiFi/Template/net_dev_wifi_template_spi.h>   /* Device driver header.                  */
#include  <Dev/Ether/PHY/Generic/net_phy.h>                 /* PHY driver header.                     */
#include  <Dev/WiFi/Manager/Generic/net_wifi_mgr.h>
#include  <BSP/Template/net_bsp_ether.h>                    /* BSP header.                            */
#include  <BSP/Template/net_bsp_wifi.h>                     /* BSP header.                            */
  
  
CPU_BOOLEAN  AppInit_TCPIP_MultipleIF (void)
{
#ifdef NET_IPv4_MODULE_EN
    NET_IPv4_ADDR       addr_ipv4;
    NET_IPv4_ADDR       msk_ipv4;
    NET_IPv4_ADDR       gateway_ipv4;
#endif
#ifdef NET_IPv6_MODULE_EN
    CPU_BOOLEAN         cfg_result;
#if (NET_IPv6_CFG_ADDR_AUTO_CFG_EN == DEF_DISABLED)
    NET_FLAGS           ipv6_flags;
    NET_IPv6_ADDR       addr_ipv6;
#endif
#endif
    NET_IF_NBR          if_nbr_ether;
    NET_IF_NBR          if_nbr_wifi;
    NET_IF_WIFI_AP      ap[10];
    NET_IF_WIFI_SSID   *p_ssid;
    NET_IF_WIFI_SSID    ssid;
    NET_IF_WIFI_PSK     psk;
    CPU_INT16U          ctn;
    CPU_INT16U          i;
    CPU_INT16S          result;
    CPU_BOOLEAN         found;
    NET_ERR             err_net;

                                                                /* -------- INITIALIZEINIT NETWORK TASKS & OBJECTS -------- */
    err_net = Net_Init(&NetRxTaskCfg,
                       &NetTxDeallocTaskCfg,
                       &NetTmrTaskCfg);
    if (err_net != NET_ERR_NONE) {
        return (DEF_FAIL);
    }

   
                                                            /* -------------- ADD  ADD ETHERNET INTERFACE -------------- */
    if_nbr_ether = NetIF_Add((void    *)&NetIF_API_Ether,           
                         (void    *)&NetDev_API_TemplateEtherDMA,  /* Device driver API                              */
   
                         (void    *)&NetDev_BSP_BoardDev_Nbr,      /* BSP API                                        */
                             (void    *)&NetDev_Cfg_Ether_1,           /* Device configuration                           */
  
                          (void    *)&NetPhy_API_Generic,           /* PHY driver API                                 */
   
                         (void    *)&NetPhy_Cfg_Ether_1,           /* PHY configuration                              */
  
                                     &err_net);
    if (err_net != NET_IF_ERR_NONE) {
        return (DEF_FAIL);
    }
   
                                                            /* ------------- START ETHERNET INTERFACE ------------- */
    NetIF_Start(if_nbr_ether, &err_net);                        /* Makes the interfaceIF ready to receiveRX and transmitTX.       */
    if (err_net != NET_IF_ERR_NONE) {
        return (DEF_FAIL);
    }

#ifdef NET_IPv4_MODULE_EN

                                                               /* --------- CONFIGURECFG IPV4 STATIC ADDRESSESADDR ---------- */
                                                                /* For Dynamic IPv4 configurationcfg, µC/DHCPc is required */
   
                                                            /* Update IPv4 AddressesAddr following your network ...     */
                                                                /* ... network requirements.              */
                     */
    NetASCII_Str_to_NetASCII_Str_to_IP("10.10.10.64",                           /* Convert Host IPv4 string addressaddr to 32 bit address.  addr*/
                       &addr_ipv4,
                        NET_IPv4_ADDR_SIZE,
                       &err_net);
    NetASCII_Str_to_IP("255.255.255.0",                         /* Convert IPv4 mask string to 32 bit addressaddr.          */
                       &msk_ipv4,
                        NET_IPv4_ADDR_SIZE,
                       &err_net);
    NetASCII_Str_to_IP("10.10.10.1",                            /* Convert Gateway string address to 32 bit addressaddr.    */
                       &gateway_ipv4,
                        NET_IPv4_ADDR_SIZE,
                       &err_net);
    NetIPv4_CfgAddrAdd(if_nbr_ether,                            /* Add a statically-configured IPv4 host address,   ... */
                       addr_ipv4,                               /* ... host addr, subnet mask, & default gateway to the        ... */
                       msk_ipv4,                                /* ... interface.default gateway to                           the IF.          */
                       gateway_ipv4,
                      &err_net);
    if (err_net != NET_IPv4_ERR_NONE) {
        return (DEF_FAIL);
    }
#endif

#ifdef NET_IPv6_MODULE_EN
#if (NET_IPv6_CFG_ADDR_AUTO_CFG_EN == DEF_ENABLED)
                                                            /* ----- CONFIGURESTART IPV6 STATICSTATELESS LINK LOCAL ADDRESS -AUTO-CFG ---- */
    NetIPv6_AddrAutoCfgHookSet(if_nbr_ether,                /* Set Hook to received Auto-Cfg result.  */
                              &App_AutoCfgResult,
    /* IPv6 Autoconfiguration is not yet supported.         */           &err_net);
    
    cfg_result = NetIPv6_AddrAutoCfgEn(if_nbr_ether,        /* Enable and Start Auto-Cfg process.     */
                       /* DHCPv6c is not yet available.           DEF_YES,
            */                          &err_net);
    if (cfg_result == DEF_FAIL) {
        return (DEF_FAIL);
    }
    
#else
        /* TODO Update IPv6 Address following your network ...  */                                          /* --- CFG IPV6 STATIC LINK LOCAL ADDR -- */
             /*  ... requirements.                                    */     NetASCII_Str_to_IP("fe80::1111:1111",   /* DHCPv6c is not yet available.          */
    /* Convert IPv6 string address to 128 bit address.      */                        &addr_ipv6,                  /* TODO Update IPv6 Addr following  NET_IPv6_ADDR_SIZE,your...*/
                        &err_net);     NetIPv6_CfgAddrAdd(if_nbr_ether,                               /* Add a statically-configured IPv6 host address to ...... network requirements.              */
    NetASCII_Str_to_IP("fe80::1111:1111",                  &addr_ipv6, /* Convert IPv6 string to 128 bit addr.   */
                   /* ... the interface. &addr_ipv6,
                        NET_IPv6_ADDR_SIZE,
        */               &err_net);
 
    ipv6_flags = 64,0;                                         
    DEF_BIT_SET(ipv6_flags, NET_IPv6_FLAG_BLOCK_EN);        /* Set Addr Cfg as blocking.              */
    DEF_BIT_SET(ipv6_flags, NET_IPv6_FLAG_DAD_EN);          /* Enable DAD with Addr Configuration.    */
 
    cfg_result = NetIPv6_CfgAddrAdd(if_nbr_ether,           /* Add a statically-configured IPv6 ...   */
                                   &addr_ipv6,              /* ...  host address to the interface.    */
                                    64,
                                    ipv6_flags,
                                   &err_net);
    if (errcfg_netresult !== NET_IPv6_ERR_NONEDEF_FAIL) {
        return (DEF_FAIL);
    }
#endif

  #endif
                                                             /* -------------- ADD WIRELESS INTERFACE ----- INTERFACE --------- */
    if_nbr_wifi = NetIF_Add((void    *)&NetIF_API_WiFi,
                            (void    *)&NetDev_API_TemplateWiFiSpi,    /* Change following your Device driver API.        */
                            (void    *)&NetDev_BSP_WiFi,               /* Change for your BSP API.                        */

                           (void    *)&NetDev_Cfg_WiFi_1,             /* Change for Device configuration.                */
  
                         (void    *)&NetWiFiMgr_API_Generic,
                     
                  DEF_NULL,           DEF_NULL,
                            &err_net);
    if (err_net != NET_IF_ERR_NONE) {
        return (DEF_FAIL);
    }
  
                                                             /* ------------- START WIRELESS INTERFACE ------------- */
    NetIF_Start(if_nbr_wifi, &err_net);                         /* Makes the interfaceIF ready to receiveRX and transmitTX.       */
    if (err_net != NET_IF_ERR_NONE) {
        return (DEF_FAIL);
    }

   
                                                            /* ------------ SCAN FOR WIRELESS NETWORKS ------------ */
    ctn = NetIF_WiFi_Scan(if_nbr_wifi,
                          ap,                                   /* Access point table.                                  */
                          10,                                   /* Access point table size.          /* Access point table size.               */
                          DEF_NULL,                             /* Hidden SSID.                                         */
                          NET_IF_WIFI_CH_ALL,                   /* Channel to scan.                                     */
                         &err_net);
    if (err_net != NET_IF_WIFI_ERR_NONE) {
        return (DEF_FAIL);
    }

   
                                                            /* --------- ANALYSE WIRELESS NETWORKS FOUND ---------- */
    found = DEF_NO;
    for (i = 0; i < ctn - 1; i++) {                             /* Browse table of access point found.                  */
        p_ssid = &ap[i].SSID;
        result = Str_Cmp_N((CPU_CHAR *)p_ssid,                  /* Search for a specific Wireless Network SSID.          specific WiFi Network SSID*/
                                      "Wifi_AP_SSID",           /* Change for your WiFi Network SSID.                   */
                                       NET_IF_WIFI_STR_LEN_MAX_SSID);
        if (result == 0) {
            found = DEF_YES;
            break;
        }
    }
    if (found == DEF_NO) {
        return (DEF_FAIL);
    }

   
                                                            /* ------------- JOIN A WIRELESS NETWORK -------------- */
    Mem_Clr(&ssid, sizeof(ssid));
    Mem_Clr(&psk,  sizeof(psk));
    Str_Copy_N((CPU_CHAR *)&ssid,
                           "Wifi_AP_SSID",                      /* Change for your WiFi Network SSID.                   */
                            12);                                /* SSID string length.                                  */
    Str_Copy_N((CPU_CHAR *)&psk,
                           "Password",                          /* Change for your WiFi Network Password.        /* Change for your WiFi Network Password. */
                            8);                                 /* PSK string length.                                   */
    NetIF_WiFi_Join(if_nbr_wifi, 
                    ap[i].NetType,                              /* WiFi Network type.                                   */
                    NET_IF_WIFI_DATA_RATE_AUTO,                 /* Data rate.                                           */
                    ap[i].SecurityType,                         /* WiFi Network security type.                          */
                    NET_IF_WIFI_PWR_LEVEL_HI,               /* Power level.            /* Power level.             */
                    ssid,       */                     ssid,       /* WiFi Network SSID.                     */
       /* WiFi Network SSID.          psk,                         */           /* WiFi Network PSK.       psk,               */
                   &err_net);
    /* WiFi Network PSK. if (err_net != NET_IF_WIFI_ERR_NONE) {
        return (DEF_FAIL);
    }
#ifdef NET_IPv4_MODULE_EN
                 */                    &err_net);     if (err_net != NET_IF_WIFI_ERR_NONE) {         return (DEF_FAIL);     }

#ifdef NET_IPv4_MODULE_EN
   /* -------- CFG IPV4 STATIC ADDR -------- */
                                                            /* --------- CONFIGURE IPV4 STATIC ADDRESSES ---------- */For Dynamic IPv4 cfg, DHCPc is required*/
                                                            /* Update IPv4 Addr following your  ...   */
    /* For Dynamic IPv4 configuration, µC/DHCPc is required */                                                /* ... network requirements.              */*
Update IPv4 Addresses following your network ... NetASCII_Str_to_IP("192.168.1.10",     */                 /* Convert IPv4 string addr to 32 bit addr*/
                        &addr_ipv4,
              /* ... requirements.        NET_IPv4_ADDR_SIZE,
                           */&err_net);
    NetASCII_Str_to_IP("192255.168255.1255.100",                          /* Convert Host IPv4Mask string address to 32 bit addressaddr.    */
                       &addrmsk_ipv4,
                        NET_IPv4_ADDR_SIZE,
                       &err_net);
    NetASCII_Str_to_IP("255192.255168.2551.01",                         /* Convert IPv4 maskGateway string to 32 bit address.         addr. */
                       &mskgateway_ipv4,
                        NET_IPv4_ADDR_SIZE,
                       &err_net);
    NetASCIINetIPv4_StrCfgAddrAdd(if_to_IP("192.168.1.1",  nbr_wifi,                         /* ConvertAdd Gatewaya stringstatically-configured address to 32 bit addressIPv4 ...    */
                       &gatewayaddr_ipv4,                          NET_IPv4_ADDR_SIZE,
       /* ... host addr, subnet mask, &    ...   */
         &err_net);     NetIPv4_CfgAddrAdd(if_nbr_wifi,         msk_ipv4,                    /* Add a statically-configured IPv4 host address,  /* ... */default gateway to the IF.         */
           addr_ipv4,            gateway_ipv4,
                  /* ... subnet mask, & default gateway to the      &err_net);
  ... */ if (err_net != NET_IPv4_ERR_NONE) {
        return (DEF_FAIL);
    }
#endif
  msk_ipv4,    #ifdef NET_IPv6_MODULE_EN
#if (NET_IPv6_CFG_ADDR_AUTO_CFG_EN == DEF_ENABLED)
                           /* ... interface.                               /* ---- START IPV6 STATELESS AUTO-CFG ---  */
       NetIPv6_AddrAutoCfgHookSet(if_nbr_wifi,                gateway_ipv4, /* Set hook to received Auto-Cfg result.    */
           &err_net);     if (err_net != NET_IPv4_ERR_NONE) {         return (DEF_FAIL);&App_AutoCfgResult,     } #endif  #ifdef NET_IPv6_MODULE_EN   /* TODO update ptr to hook defined in App.*/
                              &err_net);
    
    cfg_result = NetIPv6_AddrAutoCfgEn(if_nbr_wifi,         /*  /* ----- CONFIGURE IPV6 STATIC LINK LOCAL ADDRESS ----- */Enable and Start Auto-Cfg process.     */
                                       DEF_YES,
                         /* IPv6 Autoconfiguration is not yet supported.       &err_net);
 */   if (cfg_result == DEF_FAIL) {
        return (DEF_FAIL);
    }
    
#else
                                    /* DHCPv6c is not yet available.                   /* --- CFG IPV6 STATIC */LINK LOCAL ADDR -- */
                                                            /* DHCPv6c Updateis IPv6not Addressyet followingavailable. your network ...       */
                                                            /* Update IPv6 Addr /*following your ... requirements.   */
                                */                            /* ... network requirements.              */
      
    NetASCII_Str_to_IP("fe80::4444:1111",        /* See Note #5.        /* Convert IPv6 string to 128 bit addr.   */
                      */ &addr_ipv6,
   NetASCII_Str_to_IP("fe80::4444:1111",                       /* Convert IPv6 string address to 128 bit address.NET_IPv6_ADDR_SIZE,
              */         &err_net);
 
    ipv6_flags = 0;
     &addr_ipv6,
DEF_BIT_SET(ipv6_flags, NET_IPv6_FLAG_BLOCK_EN);        /* Set Address Configuration as blocking. */
        DEF_BIT_SET(ipv6_flags, NET_IPv6_FLAG_ADDR_SIZE,DAD_EN);          /* Enable DAD with Address Configuration. */
 
     &err_net);
   cfg_result = NetIPv6_CfgAddrAdd(if_nbr_wifi,            /* Add a statically-configured IPv6 ...   */
         /* Add a statically-configured IPv6 host address to ... */                 &addr_ipv6,      &addr_ipv6,        /* ... host address to the interface.     */
           /* ... the interface.                      64,
            */                        64,ipv6_flags,
                                   &err_net);
    if (errcfg_netresult !== NET_IPv6_ERR_NONEDEF_FAIL) {
        return (DEF_FAIL);
    }
#endif

    return (DEF_OK);
}

 

 

Info

Refer to the sample codes in section Ethernet Sample Application and WiFi Sample Application for more details on the diverse function calls.