/* * FreeRTOS Kernel V10.3.0 * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * the Software, and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * http://www.FreeRTOS.org * http://aws.amazon.com/freertos * * 1 tab == 4 spaces! */ /* Implements a simplistic WEB server. Every time a connection is made and data is received a dynamic page that shows the current TCP/IP statistics is generated and returned. The connection is then closed. */ /*------------------------------------------------------------------------------*/ /* PROTOTYPES */ /*------------------------------------------------------------------------------*/ /* Standard includes. */ #include #include /* Scheduler includes. */ #include "FreeRTOS.h" #include "task.h" #include "semphr.h" /* Demo includes. */ #include "BasicWEB.h" /* lwIP includes. */ #include "lwip/api.h" #include "lwip/tcpip.h" #include "lwip/memp.h" #include "lwip/stats.h" #include "netif/loopif.h" #include "lcd.h" #include "httpd.h" #define lwipTCP_STACK_SIZE 600 /*------------------------------------------------------------------------------*/ /* GLOBALS */ /*------------------------------------------------------------------------------*/ static struct netif EMAC_if; /*------------------------------------------------------------------------------*/ /* FUNCTIONS */ /*------------------------------------------------------------------------------*/ void vlwIPInit( void ) { /* Initialize lwIP and its interface layer. */ sys_init(); mem_init(); memp_init(); pbuf_init(); netif_init(); ip_init(); sys_set_state(( signed char * ) "lwIP", lwipTCP_STACK_SIZE); tcpip_init( NULL, NULL ); sys_set_default_state(); } /*------------------------------------------------------------*/ void vBasicWEBServer( void *pvParameters ) { struct ip_addr xIpAddr, xNetMast, xGateway; extern err_t ethernetif_init( struct netif *netif ); /* Parameters are not used - suppress compiler error. */ ( void ) pvParameters; /* Create and configure the EMAC interface. */ IP4_ADDR( &xIpAddr, emacIPADDR0, emacIPADDR1, emacIPADDR2, emacIPADDR3 ); IP4_ADDR( &xNetMast, emacNET_MASK0, emacNET_MASK1, emacNET_MASK2, emacNET_MASK3 ); IP4_ADDR( &xGateway, emacGATEWAY_ADDR0, emacGATEWAY_ADDR1, emacGATEWAY_ADDR2, emacGATEWAY_ADDR3 ); netif_add( &EMAC_if, &xIpAddr, &xNetMast, &xGateway, NULL, ethernetif_init, tcpip_input ); /* make it the default interface */ netif_set_default( &EMAC_if ); /* bring it up */ netif_set_up(&EMAC_if); /* Initialize HTTP */ httpd_init(); /* Nothing else to do. No point hanging around. */ vTaskDelete( NULL ); }