⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dnsetshow.c

📁 motorola 针对coldfire 5275 评估板的Dbug bootloader源程序
💻 C
字号:
/*
 * File:        dnsetshow.c
 * Purpose:     Set/show commands related to network downloads
 *
 * Notes:
 */
#include "src/include/dbug.h"
#include "src/uif/net/net.h"

#ifdef DBUG_NETWORK

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

const char IPFMT[] = "%d.%d.%d.%d\n";
const char SETERR3[] = "Error: Invalid IP address: %s\n";

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

int
ip_convert_address (char *ipstring, uint8 ipaddr[])
{
    int i,j,k,l;

    l = strlen(ipstring);

    for (i = 0; i < l; i++)
    {
        if ((ipstring[i] != '.') && ((ipstring[i] < '0') ||
            (ipstring[i] > '9')))
        {
            return 0;
        }
    }
    /* the characters in the string are at least valid */
    j = 0;
    k = 0;
    for (i = 0; i < l; i++)
    {
        if (ipstring[i] != '.')
        {
            if  (++j > 3)   /* number of digits in portion */
                return 0;
        }
        else
        {
            if (++k > 3)    /* number of periods */
                return 0;

            if (j == 0)     /* number of digits in portion */
                return 0;
            else
                j = 0;
        }
    }

    /* at this point, all the pieces are good, form ip_address */
    k = 0; j = 0;
    for (i = 0; i < l; i++)
    {
        if (ipstring[i] != '.')
        {
            k = (k * 10) + ipstring[i] - '0';
        }
        else
        {
            ipaddr[j++] = (unsigned char)k;
            k = 0;
        }
    }
    ipaddr[j] = (uint8)k;
    return 1;
}

/********************************************************************/
void
uif_setcmd_server (int argc, char **argv)
{
    uint8 netaddr[4];   /* IP address */

    (void)argc;

    if (argv[2] == NULL)
    {
        board_get_server(netaddr);
        printf(IPFMT,
            netaddr[0],
            netaddr[1],
            netaddr[2],
            netaddr[3]);
        return;
    }
    if (!ip_convert_address(argv[2],netaddr))
    {
        printf(SETERR3,argv[2]);
        return;
    }
    board_set_server(netaddr);
}

/********************************************************************/
void
uif_setcmd_client (int argc, char **argv)
{
    uint8 netaddr[4];   /* IP address */

    (void)argc;

    if (argv[2] == NULL)
    {
        board_get_client(netaddr);
        printf(IPFMT,
            netaddr[0],
            netaddr[1],
            netaddr[2],
            netaddr[3]);
        return;
    }
    if (!ip_convert_address(argv[2],netaddr))
    {
        printf(SETERR3,argv[2]);
        return;
    }
    board_set_client(netaddr);
}

/********************************************************************/
void
uif_setcmd_gateway (int argc, char **argv)
{
    uint8 netaddr[4];   /* IP address */

    (void)argc;

    if (argv[2] == NULL)
    {
        board_get_gateway(netaddr);
        printf(IPFMT,
            netaddr[0],
            netaddr[1],
            netaddr[2],
            netaddr[3]);
        return;
    }
    if (!ip_convert_address(argv[2],netaddr))
    {
        printf(SETERR3,argv[2]);
        return;
    }
    board_set_gateway(netaddr);
}

/********************************************************************/
void
uif_setcmd_netmask (int argc, char **argv)
{
    uint8 netaddr[4];   /* IP address */

    (void)argc;

    if (argv[2] == NULL)
    {
        board_get_netmask(netaddr);
        printf(IPFMT,
            netaddr[0],
            netaddr[1],
            netaddr[2],
            netaddr[3]);
        return;
    }
    if (!ip_convert_address(argv[2],netaddr))
    {
        printf(SETERR3,argv[2]);
        return;
    }
    board_set_netmask(netaddr);
}

/********************************************************************/
void
uif_setcmd_filename (int argc, char **argv)
{
    char fn[128];

    (void)argc;

    if (argv[2] == NULL)
    {
        board_get_filename(fn);
        printf("%s\n",fn);
        return;
    }
    board_set_filename(argv[2]);
}

/********************************************************************/
void
uif_setcmd_filetype (int argc, char **argv)
{
    (void)argc;

    if (argv[2] == NULL)
    {
        switch (board_get_filetype())
        {
            case UIF_DLIO_COFF:
                printf("COFF\n");
                break;
            case UIF_DLIO_SREC:
                printf("S-Record\n");
                break;
            case UIF_DLIO_ELF:
                printf("ELF\n");
                break;
            case UIF_DLIO_IMAGE:
                printf("Image\n");
                break;
            default:
/*              board_set_filetype(DOWNLOAD_SREC); */
                printf("Unknown\n");
                break;
        }
        return;
    }

    if (strncasecmp(argv[2],"image",1) == 0)
    {
        board_set_filetype(UIF_DLIO_IMAGE);
        return;
    }
    if (strncasecmp(argv[2],"srecord",1) == 0)
    {
        board_set_filetype(UIF_DLIO_SREC);
        return;
    }
    if (strncasecmp(argv[2],"coff",1) == 0)
    {
        board_set_filetype(UIF_DLIO_COFF);
        return;
    }
    if (strncasecmp(argv[2],"elf",1) == 0)
    {
        board_set_filetype(UIF_DLIO_ELF);
        return;
    }
    printf("Error: Invalid Filetype: %s\n",argv[2]);
}

/********************************************************************/
#if 0
void
uif_setcmd_autoboot (int argc, char **argv)
{
    (void)argc;

    if (argv[2] == NULL)
    {
        if (board_get_autoboot())
        {
            printf("On\n");
        }
        else
        {
            printf("Off\n");
        }
        return;
    }

    if (strncasecmp(argv[2],"on",2) == 0)
    {
        board_set_autoboot(1);
    }
    else
    {
        board_set_autoboot(0);
    }
}
#endif
/********************************************************************/

#endif /* #ifdef DBUG_NETWORK */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -