forked from xuos/xiuos
				
			modify webserver function using mongoose.a(compile using arm-none-eabi-gcc (15:6.3.1+svn253039-1build1) 6.3.1 20170620)
This commit is contained in:
		
							parent
							
								
									9a97e9dd94
								
							
						
					
					
						commit
						9bc206fd0b
					
				| 
						 | 
					@ -22,9 +22,13 @@ extern void ApplicationOtaTaskInit(void);
 | 
				
			||||||
extern int OtaTask(void);
 | 
					extern int OtaTask(void);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef USE_MONGOOSE
 | 
				
			||||||
 | 
					extern int webserver(void);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(void)
 | 
					int main(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    printf("Hello, world! \n");
 | 
					    printf("\nHello, world!\n");
 | 
				
			||||||
    FrameworkInit();
 | 
					    FrameworkInit();
 | 
				
			||||||
#ifdef APPLICATION_OTA
 | 
					#ifdef APPLICATION_OTA
 | 
				
			||||||
    ApplicationOtaTaskInit();
 | 
					    ApplicationOtaTaskInit();
 | 
				
			||||||
| 
						 | 
					@ -33,6 +37,11 @@ int main(void)
 | 
				
			||||||
#ifdef OTA_BY_PLATFORM
 | 
					#ifdef OTA_BY_PLATFORM
 | 
				
			||||||
    OtaTask();
 | 
					    OtaTask();
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef USE_MONGOOSE
 | 
				
			||||||
 | 
					    webserver();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
// int cppmain(void);
 | 
					// int cppmain(void);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,6 @@
 | 
				
			||||||
menuconfig USE_MONGOOSE
 | 
					menuconfig USE_MONGOOSE
 | 
				
			||||||
    bool "Use mongoose as webserver"
 | 
					    bool "Use mongoose as webserver"
 | 
				
			||||||
    default n
 | 
					    default y
 | 
				
			||||||
 | 
					    select BSP_USING_SDIO
 | 
				
			||||||
 | 
					    select BSP_USING_W5500
 | 
				
			||||||
 | 
					    select BSP_USING_ETHERNET
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,3 @@
 | 
				
			||||||
SRC_FILES += project.c
 | 
					SRC_FILES += webserver_project.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include $(KERNEL_ROOT)/compiler.mk
 | 
					include $(KERNEL_ROOT)/compiler.mk
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					mongoose.a基于工具链arm-none-eabi-gcc (15:6.3.1+svn253039-1build1) 6.3.1 20170620编译而来,若使用的arm工具链版本存在差异或使用的是RISC-V工具链,则需重新编译mongoose.a,避免遇到异常问题。
 | 
				
			||||||
| 
						 | 
					@ -1,3 +0,0 @@
 | 
				
			||||||
SRC_FILES += mongoose.c 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
include $(KERNEL_ROOT)/compiler.mk
 | 
					 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -8,6 +8,26 @@
 | 
				
			||||||
//    any other URI serves static files from s_root_dir
 | 
					//    any other URI serves static files from s_root_dir
 | 
				
			||||||
// Data and results are JSON strings
 | 
					// Data and results are JSON strings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file webserver_project.c
 | 
				
			||||||
 | 
					* @brief support webserver_project for XiUOS
 | 
				
			||||||
 | 
					* @version 3.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2023-11-07
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*************************************************
 | 
				
			||||||
 | 
					File name: webserver_project.c
 | 
				
			||||||
 | 
					Description: support webserver_project for XiUOS
 | 
				
			||||||
 | 
					Others: 
 | 
				
			||||||
 | 
					History: 
 | 
				
			||||||
 | 
					1. Date: 2023-11-07
 | 
				
			||||||
 | 
					Author: AIIT XUOS Lab
 | 
				
			||||||
 | 
					Modification: 
 | 
				
			||||||
 | 
					1、support xishutong-arm32 board, using W5500 to support webserver.
 | 
				
			||||||
 | 
					*************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "ip_addr.h"
 | 
					#include "ip_addr.h"
 | 
				
			||||||
#include "mongoose.h"
 | 
					#include "mongoose.h"
 | 
				
			||||||
#include "netdev.h"
 | 
					#include "netdev.h"
 | 
				
			||||||
| 
						 | 
					@ -19,11 +39,12 @@ static const char* s_root_dir = "webserver";
 | 
				
			||||||
static const char* s_enable_hexdump = "no";
 | 
					static const char* s_enable_hexdump = "no";
 | 
				
			||||||
static const char* s_ssi_pattern = "#.html";
 | 
					static const char* s_ssi_pattern = "#.html";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const char* device_type = "Edu-ARM32";
 | 
					static const char* device_type = "xishutong-arm32";
 | 
				
			||||||
static const char* web_version = "XUOS Webserver 1.0";
 | 
					static const char* web_version = "XiUOS WebServer 1.0";
 | 
				
			||||||
static int enable_4g = 0;
 | 
					static int enable_4g = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct netdev* p_netdev;
 | 
					static struct netdev* p_netdev;
 | 
				
			||||||
 | 
					static pthread_t tid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct config {
 | 
					static struct config {
 | 
				
			||||||
    char *ip, *mask, *gw, *dns;
 | 
					    char *ip, *mask, *gw, *dns;
 | 
				
			||||||
| 
						 | 
					@ -104,11 +125,11 @@ static void fn(struct mg_connection* c, int ev, void* ev_data, void* fn_data)
 | 
				
			||||||
    (void)fn_data;
 | 
					    (void)fn_data;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void* do_webserver_demo(void* none)
 | 
					static void* do_webserver(void* args)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    p_netdev = netdev_get_by_name("wz");
 | 
					    p_netdev = netdev_get_by_name("wz");
 | 
				
			||||||
    if (p_netdev == NULL) {
 | 
					    if (p_netdev == NULL) {
 | 
				
			||||||
        MG_INFO(("Did nto find wz netdev, use default.\n"));
 | 
					        MG_INFO(("Did not find wz netdev, use default.\n"));
 | 
				
			||||||
        p_netdev = NETDEV_DEFAULT;
 | 
					        p_netdev = NETDEV_DEFAULT;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    MG_INFO(("Use Netdev %s", p_netdev->name));
 | 
					    MG_INFO(("Use Netdev %s", p_netdev->name));
 | 
				
			||||||
| 
						 | 
					@ -119,7 +140,7 @@ static void* do_webserver_demo(void* none)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    struct mg_mgr mgr; // Event manager
 | 
					    struct mg_mgr mgr; // Event manager
 | 
				
			||||||
    // mg_log_set(MG_LL_INFO); // Set to 3 to enable debug
 | 
					    // mg_log_set(MG_LL_INFO); // Set to 3 to enable debug
 | 
				
			||||||
    mg_log_set(MG_LL_DEBUG); // Set to 3 to enable debug
 | 
					    mg_log_set(MG_LL_ERROR); // Set to 3 to enable debug
 | 
				
			||||||
    mg_mgr_init(&mgr); // Initialise event manager
 | 
					    mg_mgr_init(&mgr); // Initialise event manager
 | 
				
			||||||
    mg_http_listen(&mgr, s_http_addr, fn, NULL); // Create HTTP listener
 | 
					    mg_http_listen(&mgr, s_http_addr, fn, NULL); // Create HTTP listener
 | 
				
			||||||
    for (;;)
 | 
					    for (;;)
 | 
				
			||||||
| 
						 | 
					@ -128,15 +149,24 @@ static void* do_webserver_demo(void* none)
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int webserver_demo(int argc, char* argv[])
 | 
					int webserver(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    pthread_t tid = -1;
 | 
					    char* params[3] = {"LwipNetworkActive", "-e", "1"};
 | 
				
			||||||
 | 
					    extern void LwipNetworkActive(int argc, char* argv[]);
 | 
				
			||||||
 | 
					    LwipNetworkActive(3, params);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pthread_attr_t attr;
 | 
					    pthread_attr_t attr;
 | 
				
			||||||
    attr.schedparam.sched_priority = 30;
 | 
					    attr.schedparam.sched_priority = 30;
 | 
				
			||||||
    attr.stacksize = 0x2000;
 | 
					    attr.stacksize = 0x2000;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PrivTaskCreate(&tid, &attr, do_webserver_demo, NULL);
 | 
					    char task_name[] = "do_webserver";
 | 
				
			||||||
 | 
					    pthread_args_t args;
 | 
				
			||||||
 | 
					    args.pthread_name = task_name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    PrivTaskCreate(&tid, &attr, &do_webserver, (void *)&args);
 | 
				
			||||||
 | 
					    PrivTaskStartup(&tid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(5), Webserver, webserver_demo, webserver for project);
 | 
					SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(5), 
 | 
				
			||||||
 | 
					    Webserver, webserver, webserver for project);
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					* Copyright (c) 2020 AIIT XUOS Lab
 | 
				
			||||||
 | 
					* XiUOS is licensed under Mulan PSL v2.
 | 
				
			||||||
 | 
					* You can use this software according to the terms and conditions of the Mulan PSL v2.
 | 
				
			||||||
 | 
					* You may obtain a copy of Mulan PSL v2 at:
 | 
				
			||||||
 | 
					*        http://license.coscl.org.cn/MulanPSL2
 | 
				
			||||||
 | 
					* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 | 
				
			||||||
 | 
					* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 | 
				
			||||||
 | 
					* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 | 
				
			||||||
 | 
					* See the Mulan PSL v2 for more details.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* @file lorawan_gateway_update.c
 | 
				
			||||||
 | 
					* @brief support lorawan-gateway update function
 | 
				
			||||||
 | 
					* @version 3.0 
 | 
				
			||||||
 | 
					* @author AIIT XUOS Lab
 | 
				
			||||||
 | 
					* @date 2023-11-29
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*************************************************
 | 
				
			||||||
 | 
					File name: lorawan_gateway_update.c
 | 
				
			||||||
 | 
					Description: support lorawan-gateway update function
 | 
				
			||||||
 | 
					Others: 
 | 
				
			||||||
 | 
					History: 
 | 
				
			||||||
 | 
					1. Date: 2023-11-29
 | 
				
			||||||
 | 
					Author: AIIT XUOS Lab
 | 
				
			||||||
 | 
					Modification: 
 | 
				
			||||||
 | 
					1、first version.
 | 
				
			||||||
 | 
					*************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,6 +25,7 @@ menuconfig BSP_USING_ETHERNET
 | 
				
			||||||
menuconfig BSP_USING_W5500
 | 
					menuconfig BSP_USING_W5500
 | 
				
			||||||
    bool "Using W5500 ethernet device"
 | 
					    bool "Using W5500 ethernet device"
 | 
				
			||||||
    default n
 | 
					    default n
 | 
				
			||||||
 | 
					    select BSP_USING_ETHERNET
 | 
				
			||||||
    select BSP_USING_LWIP
 | 
					    select BSP_USING_LWIP
 | 
				
			||||||
    select BSP_USING_SPI
 | 
					    select BSP_USING_SPI
 | 
				
			||||||
    select BSP_USING_SPI1
 | 
					    select BSP_USING_SPI1
 | 
				
			||||||
| 
						 | 
					@ -55,7 +56,7 @@ menuconfig BSP_USING_SPI
 | 
				
			||||||
 | 
					
 | 
				
			||||||
menuconfig BSP_USING_SDRAM
 | 
					menuconfig BSP_USING_SDRAM
 | 
				
			||||||
    bool "Using SDRAM IS42S16400J"
 | 
					    bool "Using SDRAM IS42S16400J"
 | 
				
			||||||
    default y
 | 
					    default n
 | 
				
			||||||
    if BSP_USING_SDRAM
 | 
					    if BSP_USING_SDRAM
 | 
				
			||||||
        source "$BSP_DIR/third_party_driver/sdram/Kconfig"
 | 
					        source "$BSP_DIR/third_party_driver/sdram/Kconfig"
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -303,7 +303,7 @@ static int GpioPinIndex(uint16_t pin)
 | 
				
			||||||
    int ret = 0;
 | 
					    int ret = 0;
 | 
				
			||||||
    for (; ret <= MAX_PIN_INDEX; ret++) { // ret must be 16-bit
 | 
					    for (; ret <= MAX_PIN_INDEX; ret++) { // ret must be 16-bit
 | 
				
			||||||
        if ((0x0001U << ret) & pin) {
 | 
					        if ((0x0001U << ret) & pin) {
 | 
				
			||||||
            KPrintf("the int pin is %d\n", ret);
 | 
					            // KPrintf("the int pin is %d\n", ret);
 | 
				
			||||||
            return ret;
 | 
					            return ret;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -214,9 +214,9 @@ static struct SdioDevDone dev_done = {
 | 
				
			||||||
static int MountSDCardFs(enum FilesystemType fs_type)
 | 
					static int MountSDCardFs(enum FilesystemType fs_type)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (MountFilesystem(SDIO_BUS_NAME, SDIO_DEVICE_NAME, SDIO_DRIVER_NAME, fs_type, "/") == 0)
 | 
					    if (MountFilesystem(SDIO_BUS_NAME, SDIO_DEVICE_NAME, SDIO_DRIVER_NAME, fs_type, "/") == 0)
 | 
				
			||||||
        KPrintf("Sd card mount to '/'");
 | 
					        KPrintf("Sd card mount to '/'\n");
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        KPrintf("Sd card mount to '/' failed!");
 | 
					        KPrintf("Sd card mount to '/' failed!\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -291,7 +291,7 @@ int MountSDCard()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int sd_card_task = 0;
 | 
					    int sd_card_task = 0;
 | 
				
			||||||
    sd_card_task = KTaskCreate("sd_card", SdCardTask, NONE,
 | 
					    sd_card_task = KTaskCreate("sd_card", SdCardTask, NONE,
 | 
				
			||||||
        SD_CARD_STACK_SIZE, 8);
 | 
					        SD_CARD_STACK_SIZE, 17);
 | 
				
			||||||
    if (sd_card_task < 0) {
 | 
					    if (sd_card_task < 0) {
 | 
				
			||||||
        KPrintf("sd_card_task create failed ...%s %d.\n", __FUNCTION__, __LINE__);
 | 
					        KPrintf("sd_card_task create failed ...%s %d.\n", __FUNCTION__, __LINE__);
 | 
				
			||||||
        return ERROR;
 | 
					        return ERROR;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -78,7 +78,7 @@ char lwip_eth0_gwaddr[20] = { 192, 168, 130, 1 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
char lwip_eth1_ipaddr[20] = { 192, 168, 131, 88 };
 | 
					char lwip_eth1_ipaddr[20] = { 192, 168, 131, 88 };
 | 
				
			||||||
char lwip_eth1_netmask[20] = { 255, 255, 254, 0 };
 | 
					char lwip_eth1_netmask[20] = { 255, 255, 254, 0 };
 | 
				
			||||||
char lwip_eth1_gwaddr[20] = { 192, 168, 130, 1 };
 | 
					char lwip_eth1_gwaddr[20] = { 192, 168, 131, 1 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
char lwip_flag = 0;
 | 
					char lwip_flag = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -256,11 +256,11 @@ err_t sys_mbox_new(sys_mbox_t* mbox, int size)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif /* SYS_STATS */
 | 
					#endif /* SYS_STATS */
 | 
				
			||||||
    if (*mbox < 0) {
 | 
					    if (*mbox < 0) {
 | 
				
			||||||
        lw_print("lw: [%s] alloc %d mbox %p failed\n", __func__, size, mbox);
 | 
					        lw_error("lw: [%s] alloc %d mbox %p failed\n", __func__, size, mbox);
 | 
				
			||||||
        return ERR_MEM;
 | 
					        return ERR_MEM;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    lw_print("lw: [%s] alloc %d mbox %p ok!\n", __func__, size, mbox);
 | 
					    // lw_print("lw: [%s] alloc %d mbox %p ok!\n", __func__, size, mbox);
 | 
				
			||||||
    return ERR_OK;
 | 
					    return ERR_OK;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue