Example #1
0
/************************************************************************
* NAME: fapp_benchrx_cmd
*
* DESCRIPTION: Start RX Benchmark server. 
************************************************************************/
void fapp_benchrx_cmd( fnet_shell_desc_t desc, int argc, char ** argv )
{
    fnet_address_family_t family;

    family = AF_SUPPORTED;            
        
    /* TCP */
    if((argc == 1)||(argc == 2 && fnet_strcasecmp("tcp", argv[1]) == 0)) 
    {
        fapp_bench_tcp_rx(desc, family);
    }
    /* UDP */
    else if(((argc == 2) || (argc == 3)) && fnet_strcasecmp("udp", argv[1]) == 0) 
    {
        fnet_ip4_addr_t multicast_address = 0;
        
        if(argc == 3) /* Multicast group address.*/
        {
            if((fnet_inet_aton(argv[2], (struct in_addr *) &multicast_address) == FNET_ERR) || !FNET_IP4_ADDR_IS_MULTICAST(multicast_address))
            {
                fnet_shell_println(desc, FAPP_PARAM_ERR, argv[2]);
                return;
            }
        }
        
        fapp_bench_udp_rx(desc, family, multicast_address);
    }
    else
    {
        fnet_shell_println(desc, FAPP_PARAM_ERR, argv[1]);
    }
}
Example #2
0
/************************************************************************
* NAME: fapp_netif_info_print
*
* DESCRIPTION: Print detailed address information about default
*              network interface.
************************************************************************/
void fapp_netif_info_print( fnet_shell_desc_t desc, fnet_netif_desc_t netif)
{
    fnet_char_t name[FNET_NETIF_NAMELEN];

    fnet_netif_get_name(netif, name, sizeof(name));
    fnet_shell_println(desc, FAPP_SHELL_INFO_FORMAT_S, "Interface", name);
    
    fapp_netif_addr_print(desc, AF_SUPPORTED, netif, FNET_TRUE);
#if FNET_CFG_IP4
    {    
        fnet_ip4_addr_t ip_addr;
        fnet_char_t     ip_str[FNET_IP4_ADDR_STR_SIZE];
          
        ip_addr = fnet_netif_get_ip4_subnet_mask(netif);
        fnet_inet_ntoa(*(struct in_addr *)( &ip_addr), ip_str);
        fnet_shell_println(desc, FAPP_SHELL_INFO_FORMAT_S, "IPv4 Subnet mask", ip_str);
        
        ip_addr = fnet_netif_get_ip4_gateway(netif);
        fnet_inet_ntoa(*(struct in_addr *)( &ip_addr), ip_str);
        fnet_shell_println(desc, FAPP_SHELL_INFO_FORMAT_S, "IPv4 Gateway", ip_str);
      
    #if FNET_CFG_DNS
        ip_addr = fnet_netif_get_ip4_dns(netif);    
        fnet_inet_ntoa(*(struct in_addr *)( &ip_addr), ip_str);
        fnet_shell_println(desc, FAPP_SHELL_INFO_FORMAT_S, "IPv4 DNS", ip_str);
    #endif
    }
#endif /* FNET_CFG_IP4 */
}
Example #3
0
/************************************************************************
* NAME: fapp_fs_dir_cmd
*
* DESCRIPTION: Displays a list of files and subdirectories in a directory.
*************************************************************************/
static void fapp_fs_dir_cmd( fnet_shell_desc_t desc, fnet_index_t argc, fnet_char_t **argv )
{
    struct fnet_fs_dirent ep;
    FNET_FS_DIR dir;
    FNET_COMP_UNUSED_ARG(argc);
    FNET_COMP_UNUSED_ARG(argv);

    /* Open dir */
    dir = fnet_fs_opendir(fapp_fs_current_path);
 
    if (dir)
    {
        /* Print the dir content. */
        while ((fnet_fs_readdir (dir, &ep))==FNET_OK)
        {
            fnet_shell_println(desc, FAPP_FS_DIR_STR, (ep.d_type == DT_DIR)?"<DIR>":"<FILE>", ep.d_size, ep.d_name);
        }
            
        /* Close dir */
        fnet_fs_closedir(dir);    
    }
    else
    {
        fnet_shell_println(desc, FAPP_FS_DIR_ERR);
    }
}
Example #4
0
/************************************************************************
* NAME: fapp_mem_erase_all
*
* DESCRIPTION: 
************************************************************************/
void fapp_mem_erase_all(fnet_shell_desc_t desc)
{
    fnet_uint32_t                   addr;
    const struct fapp_mem_region    *region = fapp_mem_regions;
    
    fnet_uint32_t log_start_addr;
    fnet_size_t   log_erase_size;
    fnet_size_t   log_skip_size;

   	/* Check all regions if it has erase function. */
   	while(region->description)
	{
        if((region->erase) && (region->erase_size))
        {
            addr = region->address;
            
            log_start_addr = addr;
            log_erase_size = 0u;
            log_skip_size = 0u;
            
            while(addr < (region->address+region->size)) 
            {
                if(fapp_mem_erase((void *)addr, region->erase_size) == FNET_OK)
                {
                    if(log_skip_size)
                    {
                        fnet_shell_println(desc, FAPP_MEM_ERASE_SKIPPED, log_start_addr, log_start_addr+log_skip_size-1u); 
                        log_skip_size = 0u;
                        log_start_addr = addr;
                    }
                    
                    log_erase_size += region->erase_size;
                }
                else
                {
                    if(log_erase_size)
                    {
                        fnet_shell_println(desc, FAPP_MEM_ERASE_ERASED, log_start_addr, log_start_addr+log_erase_size-1u); 
                        log_erase_size = 0u;
                        log_start_addr = addr;
                    }
                    
                    log_skip_size += region->erase_size;
                }
                addr+=region->erase_size;
            }
            
            if(log_erase_size)
            {
                fnet_shell_println(desc, FAPP_MEM_ERASE_ERASED, log_start_addr, log_start_addr+log_erase_size-1u);
            }
            else
            {
                fnet_shell_println(desc, FAPP_MEM_ERASE_SKIPPED, log_start_addr, log_start_addr+log_skip_size-1u); 
            }
    	}
    	region++;
	}
}
Example #5
0
/************************************************************************
* NAME: fapp_netif_addr_print
*
* DESCRIPTION: Print Interface IP addresses. 
************************************************************************/
void fapp_netif_addr_print(fnet_shell_desc_t desc, fnet_address_family_t family, fnet_netif_desc_t netif, fnet_bool_t print_type)
{
	fnet_char_t    ip_str[FNET_IP_ADDR_STR_SIZE]={0};
    
#if FNET_CFG_IP4
    if((family & AF_INET)==AF_INET)
    {
        fnet_ip4_addr_t local_ip;
        
        local_ip = fnet_netif_get_ip4_addr(netif);
        fnet_shell_printf(desc, FAPP_SHELL_INFO_FORMAT_S, "IPv4 Address", fnet_inet_ntoa(*(struct in_addr *)(&local_ip), ip_str) ); 
        if(print_type)
        {
            fnet_shell_println(desc," <%s>", fnet_netif_get_ip4_addr_automatic(netif) ? "automatic" : "manual");
        }
        else
        {
            fnet_shell_println(desc, "");  
        }
    }
#endif /* FNET_CFG_IP4 */
#if FNET_CFG_IP6
    if((family & AF_INET6)==AF_INET6)
    {
        fnet_bool_t                 result;
        fnet_index_t                n;
        fnet_netif_ip6_addr_info_t  addr_info;
        
        /* Print all assigned IPv6 addreses.*/
        n=0u;
        for(;;) 
        {
            result = fnet_netif_get_ip6_addr (netif, n, &addr_info);
            
            if(result == FNET_TRUE)
            {
                fnet_inet_ntop(AF_INET6, (fnet_uint8_t*)(&addr_info.address), ip_str, sizeof(ip_str));
                            
                fnet_shell_printf(desc, FAPP_SHELL_INFO_FORMAT_S, "IPv6 Address", ip_str);
                if(print_type)
                {
                    fnet_shell_println(desc," <%s> ScopeID:%d", (addr_info.type == FNET_NETIF_IP6_ADDR_TYPE_AUTOCONFIGURABLE)  ? "autoconfigurable" : "manual", fnet_netif_get_scope_id(netif)); 
                }
                else
                {
                    fnet_shell_println(desc,"");    
                }
            }
            else
            {
               break;
            }

            n++;
        }
    }
#endif /* FNET_CFG_IP6 */
}
Example #6
0
/************************************************************************
* NAME: fapp_boot
*
* DESCRIPTION: 
************************************************************************/
static void fapp_boot(fnet_shell_desc_t desc)
{
/* Bootloader. */
#if FAPP_CFG_BOOTLOADER  

    /* The bootloader wait some time for a key over a serial connection.*/
    /* The wait time is given by the boot_delay parameter.*/
    fnet_time_t delay;

    const struct boot_mode *mode;

    mode = fapp_boot_mode_by_index (fapp_params_boot_config.mode);    
        

    if(mode->handler)
    {
        delay = fapp_params_boot_config.delay;
        
        fnet_shell_printf(desc, FAPP_BOOT_STR, mode->name, delay);

        while(delay > 0u)
        {
            delay--;
            if( fnet_shell_getchar(desc) != FNET_ERR)
            {
                break;
            }
                
            fnet_timer_delay(FNET_TIMER_TICK_IN_SEC); /* 1 sec. delay. */
            fnet_shell_printf(desc, "\b\b\b\b %3d", delay);
        }
       
        fnet_shell_println(desc, "");
       
        if(delay == 0u)
        {
            /* Auto-start*/
            mode->handler(desc);
        }
    }
    else
#endif    
    {
        /* Default startup script. */
        #if FAPP_CFG_STARTUP_SCRIPT_ENABLED
            fnet_shell_println(desc, "Startup script: %s", FAPP_CFG_STARTUP_SCRIPT);
            fnet_shell_script(desc, FAPP_CFG_STARTUP_SCRIPT );
        #endif
    }
    
    FNET_COMP_UNUSED_ARG(desc);
}
Example #7
0
/************************************************************************
* NAME: fapp_fs_init
*
* DESCRIPTION: File Explorer initialization function.
************************************************************************/
static void fapp_fs_init( fnet_shell_desc_t desc )
{
    /* Format exp shell prompt */
    fnet_snprintf( FAPP_FS_PROMPT_STR, sizeof(FAPP_FS_PROMPT_STR), "%s%s%s",
                  &FAPP_FS_PROMPT_STR_HEADER[0],
                  &fapp_fs_current_path[0],
                  &FAPP_FS_PROMPT_STR_TRAILER[0]);
        
    fnet_shell_println(desc, "\n%s", FAPP_DELIMITER_STR);
    fnet_shell_println(desc, "  File Explorer started.");
    fnet_shell_println(desc, "  Enter 'help' for command list.");
    fnet_shell_println(desc, "%s\n", FAPP_DELIMITER_STR);
}
Example #8
0
/************************************************************************
* NAME: fapp_http_cmd
*
* DESCRIPTION: Run HTTP server.
*************************************************************************/
void fapp_http_cmd( fnet_shell_desc_t desc, int argc, char ** argv )
{
    struct fnet_http_params params;
    fnet_http_desc_t http_desc;

    FNET_COMP_UNUSED_ARG(desc);

    if(argc == 1) /* By default is "init".*/
    {
        fnet_memset_zero(&params, sizeof(struct fnet_http_params));
        
        params.root_path = FAPP_HTTP_MOUNT_NAME;    /* Root directory path */
        params.index_path = FAPP_HTTP_INDEX_FILE;   /* Index file path, relative to the root_path */
    #if FNET_CFG_HTTP_SSI
        params.ssi_table = fapp_ssi_table;
    #endif
    #if FNET_CFG_HTTP_CGI            
        params.cgi_table = fapp_cgi_table;
    #endif        
    #if FNET_CFG_HTTP_AUTHENTICATION_BASIC
        params.auth_table = fapp_auth_table;
    #endif  
    #if FNET_CFG_HTTP_POST
        params.post_table = fapp_post_table;
    #endif       

        /* Enable HTTP server */
        http_desc = fnet_http_init(&params);
        if(http_desc != FNET_ERR)
        {
            fnet_shell_println(desc, FAPP_DELIMITER_STR);
            fnet_shell_println(desc, " HTTP server started.");
            fapp_netif_addr_print(desc, AF_SUPPORTED, fapp_default_netif, FNET_FALSE);
            fnet_shell_println(desc, FAPP_DELIMITER_STR);
            
            fapp_http_desc = http_desc;
        }
        else
        {
            fnet_shell_println(desc, FAPP_INIT_ERR, "HTTP");
        }
    }
    else if(argc == 2 && fnet_strcasecmp(&FAPP_COMMAND_RELEASE[0], argv[1]) == 0) /* [release] */
    {
        fapp_http_release();
    }
    else
    {
        fnet_shell_println(desc, FAPP_PARAM_ERR, argv[1]);
    }
}
Example #9
0
/************************************************************************
* NAME: fapp_dhcp_cmd
*
* DESCRIPTION: Enable DHCP client. 
************************************************************************/
void fapp_dhcp_cmd( fnet_shell_desc_t desc, fnet_index_t argc, fnet_char_t ** argv )
{
    struct              fnet_dhcp_params dhcp_params;
    fnet_dhcp_desc_t    dhcp_desc;
    fnet_netif_desc_t   netif = fnet_netif_get_default();

    if(argc == 1u    /* By default is "init".*/
#if 0 /* DHCP reboot feature not used too much. */
    || fnet_strcasecmp(&FAPP_DHCP_COMMAND_REBOOT[0], argv[1]) == 0
#endif    
    ) /* [reboot] */
    {
               
        fnet_memset_zero(&dhcp_params, sizeof(struct fnet_dhcp_params));

        fapp_dhcp_discover_counter = FAPP_CFG_DHCP_CMD_DISCOVER_MAX; /* reset counter.*/
        
#if 0 /* DHCP reboot feature not used too much. */
        if(fnet_strcasecmp(&FAPP_DHCP_COMMAND_REBOOT[0], argv[1]) == 0) /* [reboot] */
            dhcp_params.requested_ip_address.s_addr = fnet_netif_get_ip4_addr(netif);
#endif            

        fapp_dhcp_ip_old = fnet_netif_get_ip4_addr(netif); /* Save ip to restore if cancelled. */
        
        /* Enable DHCP client */
        dhcp_desc = fnet_dhcp_init(netif, &dhcp_params);
        if(dhcp_desc != FNET_ERR)
        {
            fapp_dhcp_desc = dhcp_desc;

            /* Register DHCP event handlers. */
            fnet_dhcp_handler_updated_set(fapp_dhcp_desc, fapp_dhcp_handler_updated, (void *)desc);
            fnet_dhcp_handler_discover_set(fapp_dhcp_desc, fapp_dhcp_handler_discover, (void *)desc);
            
            fnet_shell_println(desc, FAPP_TOCANCEL_STR);
            fnet_shell_block(desc, fapp_dhcp_on_ctrlc); /* Block shell. */
        }
        else
        {
            fnet_shell_println(desc, FAPP_INIT_ERR, "DHCP");
        }
    }
    else if((argc == 2u) && (fnet_strcasecmp(&FAPP_COMMAND_RELEASE[0], argv[1]) == 0)) /* [release] */
    {
        fapp_dhcp_release();
    }
    else
    {
        fnet_shell_println(desc, FAPP_PARAM_ERR, argv[1]);
    }
}
Example #10
0
static void fapp_save_cmd ( fnet_shell_desc_t desc, fnet_index_t argc, fnet_char_t ** argv )
{
    (void)argc;
	(void)argv;

    if(fapp_params_to_flash() == FNET_OK)
    {
        fnet_shell_println(desc, FAPP_SAVE_STR);
    }
    else
    {
        fnet_shell_script_release(desc);   /* Critical error. Clear script. */
        fnet_shell_println(desc, FAPP_SAVE_FAILED_STR);
    }
}
Example #11
0
void fapp_debug_cmd( fnet_shell_desc_t desc, fnet_index_t argc, fnet_char_t ** argv )
{
    FNET_COMP_UNUSED_ARG(desc);
    FNET_COMP_UNUSED_ARG(argc);
    FNET_COMP_UNUSED_ARG(argv);

    /* Put here you debugging information.*/
#if 0
    fnet_fec_debug_mii_print_regs(fnet_netif_get_default());
#endif

#if 0
    {
        fnet_index_t    i = 0;
        fnet_ip6_addr_t addr_dns;
        fnet_uint8_t    ip_str[FNET_IP_ADDR_STR_SIZE]={0};
        
        while(fnet_netif_get_ip6_dns(fnet_netif_get_default(), i, &addr_dns ) == FNET_TRUE)
        {
            fnet_inet_ntop(AF_INET6, (fnet_uint8_t*)(&addr_dns), ip_str, sizeof(ip_str));
            fnet_shell_println(desc, "DNS[%d]=%s", i, ip_str);
            i++;
        }
    }
#endif

#if 0 /* Test ctacrypt library.*/
    extern void ctaocrypt_test(void);
    
    ctaocrypt_test();
#endif
}
Example #12
0
/************************************************************************
* NAME: fapp_show
*
* DESCRIPTION: Shows all system settings.
************************************************************************/
void fapp_get_cmd( fnet_shell_desc_t desc, int argc, char ** argv )
{
    int index;

    if(argc == 1) /* Print all prameters. */
    {
        for (index = 0; index < FAPP_SET_CMD_NUM; ++index)
        {
            fnet_shell_printf(desc, FAPP_GET_OPT_FORMAT, fapp_setget_cmd_table[index].option);
            fapp_setget_cmd_table[index].get(desc);
        }
    }
    else /* Print one parameter. */
    {
       
        for (index = 0; index < FAPP_SET_CMD_NUM; index++)
        {
            if(fnet_strcasecmp(fapp_setget_cmd_table[index].option, argv[1]) == 0)
            {
                fnet_shell_printf(desc, FAPP_GET_OPT_FORMAT, fapp_setget_cmd_table[index].option);
                fapp_setget_cmd_table[index].get(desc);
                return;
            }
        }

        fnet_shell_println(desc, FAPP_PARAM_ERR, argv[1]);
    }
    
}
Example #13
0
/************************************************************************
* NAME: fapp_dhcp_on_ctrlc
*
* DESCRIPTION:
************************************************************************/
static void fapp_dhcp_on_ctrlc(fnet_shell_desc_t desc)
{
    /* Release DHCP. */
    fapp_dhcp_release();
    /* Restore old ip address, as DHCP set it to zero. */
    fnet_netif_set_ip4_addr( fnet_netif_get_default(), fapp_dhcp_ip_old );
    fnet_shell_println( desc, FAPP_CANCELLED_STR);  
}
Example #14
0
static void fapp_get_ip(fnet_shell_desc_t desc, fnet_ip4_addr_t (*get_address)( fnet_netif_desc_t netif_desc ))
{
    char ip_str[FNET_IP4_ADDR_STR_SIZE];
    struct in_addr addr;
    addr.s_addr = get_address(fapp_default_netif);
    fnet_inet_ntoa(addr, ip_str);
    fnet_shell_println(desc, FAPP_GET_SOPT_FORMAT, ip_str);
}
Example #15
0
void fapp_mem_cmd ( fnet_shell_desc_t desc, fnet_index_t argc, fnet_char_t **argv )
{
    const struct fapp_mem_region *mem = fapp_mem_regions;
	const struct fapp_mem_region_reserved *region_reserved = fapp_mem_regions_reserved;

    FNET_COMP_UNUSED_ARG(desc);
    FNET_COMP_UNUSED_ARG(argc);
    FNET_COMP_UNUSED_ARG(argv);

    /* Print memory types. */
	fnet_shell_println(desc, FAPP_MEM_HEADER, "Memory type");
	fnet_shell_println(desc, FAPP_MEM_DELIMITER);
	while(mem->description)
	{
	    fnet_shell_println(desc, MEM_STR, mem->description, mem->address,	
					        mem->address + mem->size - 1u);
	    mem++;
	}

    /* Print protected/reserved memory regions.*/
	fnet_shell_println(desc, FAPP_MEM_HEADER, "Reserved");
	fnet_shell_println(desc, FAPP_MEM_DELIMITER);
	while(region_reserved->description)
	{
	    fnet_shell_println(desc, MEM_STR, region_reserved->description, region_reserved->address,	
									region_reserved->address + region_reserved->size - 1u);
	    region_reserved++;
	}
    fnet_shell_println(desc, "");	

}
Example #16
0
/************************************************************************
* NAME: fapp_dhcp_info
*
* DESCRIPTION:
*************************************************************************/
void fapp_dhcp_info(fnet_shell_desc_t desc)
{
    fnet_char_t     ip_str[FNET_IP4_ADDR_STR_SIZE];
    fnet_bool_t     dhcp_is_enabled = fnet_dhcp_is_enabled(fapp_dhcp_desc);

    fnet_shell_println(desc, FAPP_SHELL_INFO_FORMAT_S, "DHCP Client", fapp_enabled_str[dhcp_is_enabled]);

    if(dhcp_is_enabled && (fnet_netif_get_ip4_addr_type(fnet_netif_get_default()) == FNET_NETIF_IP_ADDR_TYPE_DHCP))
    {
        struct fnet_dhcp_options options;

        fnet_dhcp_get_options(fapp_dhcp_desc, &options);

        fnet_inet_ntoa(*(struct in_addr *)( &options.dhcp_server), ip_str);
        fnet_shell_println(desc, FAPP_SHELL_INFO_FORMAT_S, "DHCP Server", ip_str);
        fnet_shell_println(desc, FAPP_SHELL_INFO_FORMAT_D, "Lease Time", fnet_ntohl(options.lease_time));
    }
}
Example #17
0
static void fapp_set_cmd_mac(fnet_shell_desc_t desc, char *value)
{
    fnet_mac_addr_t macaddr;

    if((fnet_str_to_mac(value, macaddr) != FNET_OK) ||
            (fnet_netif_set_hw_addr(fapp_default_netif, macaddr, sizeof(fnet_mac_addr_t)) != FNET_OK))
    {
            fnet_shell_println(desc, FAPP_PARAM_ERR, value);
    }
}
Example #18
0
static void fapp_set_cmd_image_type(fnet_shell_desc_t desc, char *value )
{
    struct image_type *type = fapp_tftp_image_type_by_name (value);

    if(type == 0)
        fnet_shell_println(desc, FAPP_PARAM_ERR, value);
    else
        fapp_params_tftp_config.file_type = type->index;
        
}
Example #19
0
static void fapp_set_cmd_boot(fnet_shell_desc_t desc, char *value )
{
    const struct boot_mode *mode = fapp_boot_mode_by_name (value);

    if(mode == 0)
        fnet_shell_println(desc, FAPP_PARAM_ERR, value);
    else
        fapp_params_boot_config.mode = mode->index;    

}
Example #20
0
static void fapp_get_cmd_mac(fnet_shell_desc_t desc)
{
    char mac_str[FNET_MAC_ADDR_STR_SIZE];
    fnet_mac_addr_t macaddr;

    fnet_netif_get_hw_addr(fapp_default_netif, macaddr, sizeof(fnet_mac_addr_t));
    fnet_mac_to_str(macaddr, mac_str);

    fnet_shell_println(desc, FAPP_GET_SOPT_FORMAT, mac_str);
}
Example #21
0
/************************************************************************
* NAME: fapp_dhcp_info
*
* DESCRIPTION:
*************************************************************************/
void fapp_dhcp_info(fnet_shell_desc_t desc)
{
    fnet_char_t     ip_str[FNET_IP4_ADDR_STR_SIZE];
    fnet_bool_t     dhcp_enabled = fnet_dhcp_enabled(fapp_dhcp_desc);
    fnet_bool_t     address_automatic = fnet_netif_get_ip4_addr_automatic(fnet_netif_get_default());
    
    fnet_shell_println(desc, FAPP_SHELL_INFO_FORMAT_S, "DHCP Client", dhcp_enabled ? FAPP_SHELL_INFO_ENABLED : FAPP_SHELL_INFO_DISABLED);

    if(dhcp_enabled && address_automatic)
    {
        struct fnet_dhcp_options options;

        fnet_dhcp_get_options(fapp_dhcp_desc, &options);

        fnet_inet_ntoa(*(struct in_addr *)( &options.dhcp_server), ip_str);
        fnet_shell_println(desc, FAPP_SHELL_INFO_FORMAT_S, "DHCP Server", ip_str);
        fnet_shell_println(desc, FAPP_SHELL_INFO_FORMAT_D, "Lease Time", fnet_ntohl(options.lease_time));
    }
}
Example #22
0
static void fapp_set_cmd_bootdelay(fnet_shell_desc_t desc, char *value )
{
    unsigned long delay;
    char *p = 0;

    delay = fnet_strtoul(value,&p,0);
    if ((delay == 0) && (p == value))
        fnet_shell_println(desc, FAPP_PARAM_ERR, value); /* Print error mesage. */
    else
        fapp_params_boot_config.delay = delay;     
}
Example #23
0
static void fapp_set_cmd_tftp(fnet_shell_desc_t desc, char *value )
{
    struct sockaddr s_addr; 
    
    if(fnet_inet_ptos(value, &s_addr) == FNET_ERR)
    {
        fnet_shell_println(desc, FAPP_PARAM_ERR, value); /* Print error. */
    }
    
    fapp_params_tftp_config.server_addr = s_addr;
}
Example #24
0
static void fapp_set_cmd_raw(fnet_shell_desc_t desc, char *value )
{
    unsigned long address;
    char *p = 0;

    address = fnet_strtoul(value,&p,16);
    if ((address == 0) && (p == value))
        fnet_shell_println(desc, FAPP_PARAM_ERR, value); /* Print error mesage. */
    else
        fapp_params_tftp_config.file_raw_address = address;     
}
Example #25
0
/************************************************************************
* NAME: fapp_dhcp_handler_updated
*
* DESCRIPTION: Event handler on new IP from DHCP client. 
************************************************************************/
static void fapp_dhcp_handler_updated(fnet_dhcp_desc_t dhcp_desc, fnet_netif_desc_t netif, void *shl_desc )
{
    fnet_shell_desc_t desc = (fnet_shell_desc_t) shl_desc;

    fapp_dhcp_discover_counter = -1; /* Infinite for future. */
    
    /* Optionally, unregister DHCP event handlers, just to do not 
     * disturb a user. */
    fnet_dhcp_handler_updated_set(dhcp_desc, 0, 0);
    fnet_dhcp_handler_discover_set(dhcp_desc, 0, 0);
    
    fnet_shell_unblock((fnet_shell_desc_t)shl_desc); /* Unblock the shell. */
   
    /* Print updated parameters info. */
    fnet_shell_println( desc, "\n%s", FAPP_DELIMITER_STR);
    fnet_shell_println( desc, FAPP_DHCP_NEWIP_STR);
    fnet_shell_println( desc, FAPP_DELIMITER_STR);

    fapp_netif_info_print( desc, netif );   
}
Example #26
0
static void fapp_set_ip(fnet_shell_desc_t desc, char *value, void (*set_ip)( fnet_netif_desc_t netif_desc, fnet_ip4_addr_t ipaddr ) )
{
    fnet_ip4_addr_t addr;

    if(fnet_inet_aton(value, (struct in_addr *) &addr) == FNET_OK)
    {
        set_ip(fapp_default_netif, addr);
    }
    else
    {
        fnet_shell_println(desc, FAPP_PARAM_ERR, value);
    };
}
Example #27
0
/************************************************************************
* NAME: fapp_dhcp_handler_discover
*
* DESCRIPTION: Event handler on new IP from DHCP client.
************************************************************************/
static void fapp_dhcp_handler_discover( fnet_netif_desc_t netif,void *shl_desc )
{
    fnet_shell_desc_t desc = (fnet_shell_desc_t) shl_desc;
    FNET_COMP_UNUSED_ARG(netif);

    if(fapp_dhcp_discover_counter-- == 0)
    {
        fnet_shell_unblock((fnet_shell_desc_t)shl_desc);
        fapp_dhcp_on_ctrlc((fnet_shell_desc_t)shl_desc); /* Cancel DHCP.*/
    }
    else
        fnet_shell_println(desc, FAPP_DHCP_DISCOVER_STR);
}
Example #28
0
/************************************************************************
* NAME: fapp_bench_print_results
*
* DESCRIPTION: Print Benchmark results. 
************************************************************************/
static void fapp_bench_print_results (fnet_shell_desc_t desc)
{
/* Print benchmark results.*/
    unsigned long interval = fnet_timer_get_interval(fapp_bench.first_time, fapp_bench.last_time);
    
    fnet_shell_println(desc, "Results:");
    
    if(fapp_bench.remote_bytes == 0)
    {
        fnet_shell_println(desc, "\t%d bytes in %d.%d seconds = %d Kbits/sec\n", fapp_bench.bytes, 
            ((interval*FNET_TIMER_PERIOD_MS)/1000),
            ((interval*FNET_TIMER_PERIOD_MS)%1000)/100,
            (interval == 0) ? -1 : (int)((fapp_bench.bytes*8/**(1000*//FNET_TIMER_PERIOD_MS/*)*/)/interval)/*/1000*/); 
    }
    else /* UDP TX only */
    {
        fnet_shell_println(desc, "\t%d [%d] bytes in %d.%d seconds = %d [%d] Kbits/sec\n", fapp_bench.bytes, fapp_bench.remote_bytes, 
            ((interval*FNET_TIMER_PERIOD_MS)/1000),
            ((interval*FNET_TIMER_PERIOD_MS)%1000)/100,
            (interval == 0) ? -1 : (int)((fapp_bench.bytes*8/**(1000*//FNET_TIMER_PERIOD_MS/*)*/)/interval)/*/1000*/,
            (interval == 0) ? -1 : (int)((fapp_bench.remote_bytes*8/**(1000*//FNET_TIMER_PERIOD_MS/*)*/)/interval)/*/1000*/);     
    }
}
Example #29
0
/************************************************************************
* NAME: fapp_ping_handler
*
* DESCRIPTION:
************************************************************************/
static void fapp_ping_handler (fnet_error_t result, fnet_size_t packet_count, struct sockaddr *target_addr, fnet_uint32_t cookie)
{
    fnet_char_t                ip_str[FNET_IP_ADDR_STR_SIZE];
    fnet_shell_desc_t   desc = (fnet_shell_desc_t)cookie;
    
    if(result == FNET_ERR_OK)
    {
        fnet_shell_println(desc, FAPP_PING_STR_REPLY, fnet_inet_ntop(target_addr->sa_family, target_addr->sa_data, ip_str, sizeof(ip_str)));
    }    
    else if(result == FNET_ERR_TIMEDOUT)
    {
        fnet_shell_println(desc, FAPP_PING_STR_TIMEOUT);
    }
    else
    {
        fnet_shell_println(desc, "Error = %d", result);
    }   
         
    if(packet_count == 0U)
    {
        fnet_shell_unblock(desc); /* Unblock the shell. */    
    } 
}
Example #30
0
/************************************************************************
* NAME: fapp_benchrx_cmd
*
* DESCRIPTION: Start RX Benchmark server. 
************************************************************************/
void fapp_benchrx_cmd( fnet_shell_desc_t desc, int argc, char ** argv )
{
    fnet_address_family_t family;

    family = AF_SUPPORTED;            
        
    /* TCP */
    if((argc == 1)||(argc == 2 && fnet_strcasecmp("tcp", argv[1]) == 0)) 
    {
        fapp_bench_tcp_rx(desc, family);
    }
    /* UDP */
    else if(((argc == 2) || (argc == 3)) && fnet_strcasecmp("udp", argv[1]) == 0) 
    {
        struct sockaddr multicast_address;
        struct sockaddr *multicast_address_p = FNET_NULL;
       
        if(argc == 3) /* Multicast group address.*/
        {
            if((fnet_inet_ptos(argv[2], &multicast_address) == FNET_ERR)    /* Convert from string to address.*/
                || !fnet_socket_addr_is_multicast(&multicast_address)       /* Check if address is multicast.*/
                || ((family & multicast_address.sa_family)==0) )                /* Check supported family.*/
            {
                fnet_shell_println(desc, FAPP_PARAM_ERR, argv[2]);
                return;
            }   
            
            multicast_address_p = &multicast_address;
        }
        
        fapp_bench_udp_rx(desc, family, multicast_address_p);
    }
    else
    {
        fnet_shell_println(desc, FAPP_PARAM_ERR, argv[1]);
    }
}