AnsweredAssumed Answered

Porting GT202 IAR demo app for FRDM-K22 to be used instead with CW10.6 and K60

Question asked by chinniwhites on Jan 22, 2015
Latest reply on Jan 23, 2015 by soledad

Here is an example of porting the web_hvac MQX demo app to use GT202.

https://community.freescale.com/docs/DOC-102702


I wish to instead to do similar with K60 and CW10.6


Goal is to use same webpages that fuel Ethernet jack to also for wifi also.  I had gotten the Athero_4100P and Ethenet jack to host same pages using TWR-K60 and TWR-ATH-4100P with the help of a Freescale FAE.  I made my custom K60 board with GT202 instead of Atheros_4100P as the latter was EOL.


Has someone accomplished similar and tell me whether this is possible with the current GT202 MQX4.1 drivers?


Help launching web servers on both interfaces would also be appreciated.  Here is my current HTTP_Task


void HTTP_task(uint32_t initial_data)

{

    int32                               error;

    uint32                              server[BSP_ENET_DEVICE_COUNT];

    extern const HTTPSRV_CGI_LINK_STRUCT cgi_lnk_tbl[];

    extern const TFS_DIR_ENTRY           tfs_data[];

    HTTPSRV_PARAM_STRUCT                 params[BSP_ENET_DEVICE_COUNT];

    uint32                              ip_addr[BSP_ENET_DEVICE_COUNT];   

    uint32                              i = 0;

    char*                                indexes[BSP_ENET_DEVICE_COUNT];

    uint8                                  n_devices = BSP_ENET_DEVICE_COUNT;

   

    #if !HTTP_USE_ONE_SERVER

    uint_8 n_servers = BSP_ENET_DEVICE_COUNT;

    #else

    uint8 n_servers = 1;

    #endif

   

    /* Install ramdisk - MFS init */

    //Ram_disk_start();

 

    /* RTCS init */

    rtcs_init();

    ip_addr[0] = ENET_IPADDR;

   

    /* Start HTTP server on each interface */

       for (i = 0; (i < n_devices) && (n_devices != 0); i++)

       {

           indexes[i] = (char*) _mem_alloc_zero(sizeof("\\index_x.html"));

           if (indexes[i] == NULL)

           {

               printf("\n Failed to allocate memory.");

               _task_block();

           }

       }

      

       /* Install trivial file system. HTTP server pages are stored there. */

       error = _io_tfs_install("tfs:", tfs_data);

      

       /* Start HTTP server on each interface */

       for (i = 0; i < n_servers; i++)

       {

           _mem_zero(&params[i], sizeof(HTTPSRV_PARAM_STRUCT));

           params[i].af = HTTP_INET_AF;  //IPv4, IPv6 or from config.h

 

           #if RTCSCFG_ENABLE_IP6

           /* Set interface number here. Zero is any. */

           params[i].ipv6_scope_id = HTTP_SCOPE_ID;

           #endif

 

           sprintf(indexes[i], "\\index.html", i);

           params[i].root_dir = "tfs:";

           params[i].index_page = indexes[i];

           params[i].auth_table = auth_realms;

           printf("Starting http server No.%d on IP", i);

           /*

           ** If there is only one server listen on any IP address

           ** so address can change in runtime (DHCP etc.).

           ** Otherwise we will use static IP for server.

           */

           if (HTTP_INET_AF & AF_INET)

           {

               #if RTCSCFG_ENABLE_IP4

               if ((i == 0) && (n_servers == 1))

               {

                   params[i].ipv4_address.s_addr = INADDR_ANY;

               }

               else

               {

                   params[i].ipv4_address.s_addr = ip_addr[i];

               }

               /* Print active IPv4 address */

               printf(" %d.%d.%d.%d", IPBYTES(ip_addr[i]));

               #endif

           }

           if (HTTP_INET_AF & AF_INET6)

           {

               #if RTCSCFG_ENABLE_IP6

               IPCFG6_GET_ADDR_DATA data;

               char prn_addr6[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")];

              

               ipcfg6_get_addr_info_n(0, 0, &data);

 

               if(inet_ntop(AF_INET6, &(data.ip_addr), prn_addr6, sizeof(prn_addr6)))

               {

                   /* Print active IPv6 address */

                   printf("%s %s", (HTTP_INET_AF & AF_INET) ? " and" : "", prn_addr6);

               }

               #endif

           }

           /*

           ** Maximum default number of available sockets in RTCS is six.

           ** Maximum of two are used for HTTP server as listening sockets (one for IPv4 and one for IPv6).

           ** So we take two of sockets and use them for sessions.

           */

           params[i].max_ses = 2;

           params[i].cgi_lnk_tbl = (HTTPSRV_CGI_LINK_STRUCT*) cgi_lnk_tbl;

 

           /* There are a lot of static data in CGIs so we have to set large enough stack for script handler */

           params[i].script_stack = 2000;

           server[i] = HTTPSRV_init(&params[i]);

          

           printf("...");

           if (server[i] == RTCS_ERROR)

           {

               printf("[FAIL]\n");

           }

           else

           {

               printf("[OK]\n");

           }

       }  

 

   /*******************************

   *

   * START YOUR CODING HERE

   *

   ********************************/  

        

   for (;;) 

   {

       //_task_destroy(t1);

       //_sched_yield();

       _task_block();

      

       /*

       for(;;){

       

       }

       */

   }

}

Outcomes