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

📄 app.c

📁 GNU环境下uC/OS-II的移植代码:BSP & OS部分
💻 C
📖 第 1 页 / 共 4 页
字号:
#endif  /* APP_FS_EN */


/*
*********************************************************************************************************
*                                        INITIALIZE TCP/IP STACK
*********************************************************************************************************
*/

#if APP_TCPIP_EN
static  void  App_InitTCPIP (void)
{
    NET_ERR      err;
    CPU_INT08U  *pmac;


    APP_TRACE_DEBUG(("Initialize TCP/IP stack...\n"));

    pmac = (CPU_INT08U *)mon_getenv("ETHERADD");
    NetASCII_Str_to_MAC(pmac, NetIF_MAC_Addr, &err);

    err = Net_Init();
    if (err != NET_ERR_NONE) {
        APP_TRACE_DEBUG(("Net_Init() failed: error #%d, line #%d.\n", err, __LINE__));
        while (DEF_YES) {
            ;
        }
    }

#if APP_DHCPc_EN
    APP_TRACE_DEBUG(("    IP address  = 0.0.0.0\n"));
    APP_TRACE_DEBUG(("    IP mask     = 0.0.0.0\n"));
    APP_TRACE_DEBUG(("    IP gateway  = 0.0.0.0\n"));
    APP_TRACE_DEBUG(("    MAC address = %s\n", pmac));

    NetIP_CfgAddrThisHost(NET_IP_ADDR_THIS_HOST, NET_IP_ADDR_NONE);
    NetIP_CfgAddrDfltGateway(NET_IP_ADDR_NONE);

#else  /* APP_DHCPc_EN */
    App_IP_Addr        = NetASCII_Str_to_IP(APP_CFG_IP_ADDR_STR_THIS_HOST,    &err);
    App_IP_Mask        = NetASCII_Str_to_IP(APP_CFG_IP_ADDR_STR_NET_MASK,     &err);
    App_IP_DfltGateway = NetASCII_Str_to_IP(APP_CFG_IP_ADDR_STR_DFLT_GATEWAY, &err);
    App_IP_DNS_Srvr    = NetASCII_Str_to_IP(APP_CFG_IP_ADDR_STR_DNS_SRVR,     &err);
    App_IP_NTP_Srvr    = NetASCII_Str_to_IP(APP_CFG_IP_ADDR_STR_NTP_SRVR,     &err);
    App_Clk_UTC_Offset = APP_CFG_CLK_UTC_OFFSET;
    NetIP_CfgAddrThisHost(App_IP_Addr, App_IP_Mask);
    NetIP_CfgAddrDfltGateway(App_IP_DfltGateway);

    APP_TRACE_DEBUG(("    IP address  = %s\n", APP_CFG_IP_ADDR_STR_THIS_HOST));
    APP_TRACE_DEBUG(("    IP mask     = %s\n", APP_CFG_IP_ADDR_STR_NET_MASK));
    APP_TRACE_DEBUG(("    IP gateway  = %s\n", APP_CFG_IP_ADDR_STR_DFLT_GATEWAY));
    APP_TRACE_DEBUG(("    MAC address = %s\n", pmac));

   (void)&App_IP_DNS_Srvr;
   (void)&App_IP_NTP_Srvr;

#endif  /* APP_DHCPc_EN */
}
#endif  /* APP_TCPIP_EN */


#if APP_DHCPc_EN
/*
*********************************************************************************************************
*                                        INITIALIZE DHCP CLIENT
*********************************************************************************************************
*/

static  void  App_InitDHCPc (void)
{
    NET_ERR      err;
    CPU_INT08U  *opt;
    CPU_INT08U   buf[16];
    CPU_INT08U   param_req_list[] = {DHCP_OPT_HOST_NAME,
                                     DHCP_OPT_DOMAIN_NAME,
                                     DHCP_OPT_DOMAIN_NAME_SERVER,
                                     DHCP_OPT_NETWORK_TIME_PROTOCOL_SERVER,
                                     DHCP_OPT_TIME_OFFSET};



    DHCPc_SetMacAddr(NetIF_MAC_Addr);
    DHCPc_SetClientID(0x01, NetIF_MAC_Addr, NET_IF_ADDR_SIZE);
    DHCPc_SetVendorClassID("YourCompany", 11);
    DHCPc_SetParamReqList(param_req_list, sizeof(param_req_list) / sizeof(param_req_list[0]));

    APP_TRACE_DEBUG(("Get DHCP lease... "));
    err = DHCPc_Start();
    if (err != DHCPc_ERR_NONE) {
        APP_TRACE_DEBUG(("failed!\n"));
        while (DEF_YES) {
            ;                                                   /* Can't obtain a DHCP lease: nothing to do!            */
        }
    }

    APP_TRACE_DEBUG(("success!\n"));

    DHCPc_CfgStack();

    DHCPc_Print(DHCPc_GetHdr());

                                                                /* Must Mem_Copy because header may be misaliged.       */
    Mem_Copy(&App_IP_Addr,
             &(DHCPc_GetHdr()->yiaddr),
              sizeof(DHCPc_GetHdr()->yiaddr));
    App_IP_Addr            = NET_UTIL_NET_TO_HOST_32(App_IP_Addr);

    opt = DHCPc_GetOpt(DHCP_OPT_SUBNET_MASK);
    if (opt != (void *)0) {
        Mem_Copy(&App_IP_Mask,        (void *)(opt + 2), *(CPU_INT08U *)(opt + 1));
        App_IP_Mask        = NET_UTIL_NET_TO_HOST_32(App_IP_Mask);
    }

    opt = DHCPc_GetOpt(DHCP_OPT_ROUTER);
    if (opt != (void *)0) {
        Mem_Copy(&App_IP_DfltGateway, (void *)(opt + 2), *(CPU_INT08U *)(opt + 1));
        App_IP_DfltGateway = NET_UTIL_NET_TO_HOST_32(App_IP_DfltGateway);
    }

    opt = DHCPc_GetOpt(DHCP_OPT_DOMAIN_NAME_SERVER);
    if (opt != (void *)0) {
        Mem_Copy(&App_IP_DNS_Srvr,    (void *)(opt + 2), *(CPU_INT08U *)(opt + 1));
        App_IP_DNS_Srvr    = NET_UTIL_NET_TO_HOST_32(App_IP_DNS_Srvr);
    }

    opt = DHCPc_GetOpt(DHCP_OPT_NETWORK_TIME_PROTOCOL_SERVER);
    if (opt != (void *)0) {
        Mem_Copy(&App_IP_NTP_Srvr,    (void *)(opt + 2), *(CPU_INT08U *)(opt + 1));
        App_IP_NTP_Srvr = NET_UTIL_NET_TO_HOST_32(App_IP_NTP_Srvr);
    }

    opt = DHCPc_GetOpt(DHCP_OPT_TIME_OFFSET);
    if (opt != (void *)0) {
        Mem_Copy(&App_Clk_UTC_Offset, (void *)(opt + 2), *(CPU_INT08U *)(opt + 1));
        App_Clk_UTC_Offset = NET_UTIL_NET_TO_HOST_32(App_Clk_UTC_Offset);
    }


    NetASCII_IP_to_Str(App_IP_Addr,        buf, DEF_NO, &err);
    APP_TRACE_DEBUG(("DHCP IP address : %s\n", buf));

    NetASCII_IP_to_Str(App_IP_Mask,        buf, DEF_NO, &err);
    APP_TRACE_DEBUG(("DHCP IP mask    : %s\n", buf));

    NetASCII_IP_to_Str(App_IP_DfltGateway, buf, DEF_NO, &err);
    APP_TRACE_DEBUG(("DHCP IP gateway : %s\n", buf));

    NetASCII_IP_to_Str(App_IP_DNS_Srvr,    buf, DEF_NO, &err);
    APP_TRACE_DEBUG(("DHCP DNS server : %s\n", buf));

    NetASCII_IP_to_Str(App_IP_NTP_Srvr,    buf, DEF_NO, &err);
    APP_TRACE_DEBUG(("DHCP NTP server : %s\n", buf));

    APP_TRACE_DEBUG(("DHCP UTC offset : %d\n", App_Clk_UTC_Offset));

   (void)&App_IP_DNS_Srvr;
   (void)&App_IP_NTP_Srvr;
   (void)&App_Clk_UTC_Offset;
}
#endif  /* APP_DHCPc_EN */


#if APP_DNSc_EN
/*
*********************************************************************************************************
*                                            TEST DNS CLIENT
*********************************************************************************************************
*/

static  void  App_TestDNSc (void)
{
    CPU_INT32U  dns_test;
    CPU_INT08U  buf[16];
    NET_ERR     err;


    dns_test = DNSc_GetHostByName("192.168.0.3");
    NetASCII_IP_to_Str(NET_UTIL_NET_TO_HOST_32(dns_test), buf, DEF_NO, &err);
    APP_TRACE_DEBUG(("gethostbyname (\"192.168.0.3\") = %s.\n", buf));
    if (dns_test == 0) {
        APP_TRACE_DEBUG(("Error: %s.\n", DNSc_GetLastErrMsg()));
    }

    dns_test = DNSc_GetHostByName("www.jidec.com");
    NetASCII_IP_to_Str(NET_UTIL_NET_TO_HOST_32(dns_test), buf, DEF_NO, &err);
    APP_TRACE_DEBUG(("gethostbyname (\"www.jidec.com\") = %s.\n", buf));
    if (dns_test == 0) {
        APP_TRACE_DEBUG(("Error: %s.\n", DNSc_GetLastErrMsg()));
    }

    dns_test = DNSc_GetHostByName("www.micrium.com");
    NetASCII_IP_to_Str(NET_UTIL_NET_TO_HOST_32(dns_test), buf, DEF_NO, &err);
    APP_TRACE_DEBUG(("gethostbyname (\"www.micrium.com\") = %s.\n", buf));
    if (dns_test == 0) {
        APP_TRACE_DEBUG(("Error: %s.\n", DNSc_GetLastErrMsg()));
    }

    dns_test = DNSc_GetHostByName("345345ssbn5");
    NetASCII_IP_to_Str(NET_UTIL_NET_TO_HOST_32(dns_test), buf, DEF_NO, &err);
    APP_TRACE_DEBUG(("gethostbyname (\"345345ssbn5\") = %s.\n", buf));
    if (dns_test == 0) {
        APP_TRACE_DEBUG(("Error: %s.\n", DNSc_GetLastErrMsg()));
    }
}
#endif  /* APP_DNSc_EN */


#if APP_FTPc_EN
/*
*********************************************************************************************************
*                                            TEST FTP CLIENT
*********************************************************************************************************
*/

#define FTPc_TEST_BUF_SIZE  (2048 * 1024)
static  CPU_INT08U   FTPc_TestBuf[FTPc_TEST_BUF_SIZE];

static  void  App_TestFTPc (void)
{
    NET_IP_ADDR   server_addr;
    CPU_INT16U    server_port;
    CPU_CHAR     *username;
    CPU_CHAR     *password;
    CPU_INT08U   *buf;

    CPU_BOOLEAN   result;
    NET_ERR       net_err;


    APP_TRACE_DEBUG(("Test FTP client...\n"));

    server_addr =  NetASCII_Str_to_IP("192.168.0.2", &net_err);
    server_port =  1021;
    username    = "anonymous";
    password    = "test@test.com";
    buf         = (CPU_INT08U *)0x10000000;

    result = FTPc_Open(server_addr, server_port, username, password, &net_err);
    if (result == DEF_FAIL) {
        APP_TRACE_DEBUG(("FTPc_Open() failed.\n"));
        return;
    }

    APP_TRACE_DEBUG(("FTPc: Sending %d bytes...\n", FTPc_TEST_BUF_SIZE));
    result = FTPc_SendBuf("upload/test", buf, FTPc_TEST_BUF_SIZE, DEF_NO, &net_err);
    if (result == DEF_FAIL) {
        APP_TRACE_DEBUG(("FTPc_SendBuf() failed.\n"));
        FTPc_Close(&net_err);
        return;
    }

    APP_TRACE_DEBUG(("FTPc: Receiving %d bytes...\n", FTPc_TEST_BUF_SIZE));
    result = FTPc_RecvFile("download/test", "test", &net_err);
    if (result == DEF_FAIL) {
        APP_TRACE_DEBUG(("FTPc_RecvFile() failed.\n"));
        FTPc_Close(&net_err);
        return;
    }

    APP_TRACE_DEBUG(("FTPc: Sending %d bytes...\n", FTPc_TEST_BUF_SIZE));
    result = FTPc_SendFile("upload/test", "test", DEF_NO, &net_err);
    if (result == DEF_FAIL) {
        APP_TRACE_DEBUG(("FTPc_SendFile() failed.\n"));
        FTPc_Close(&net_err);
        return;
    }

    APP_TRACE_DEBUG(("FTPc: Receiving %d bytes...\n", FTPc_TEST_BUF_SIZE));
    result = FTPc_RecvBuf("download/test", FTPc_TestBuf, FTPc_TEST_BUF_SIZE, &net_err);
    if (result == DEF_FAIL) {
        APP_TRACE_DEBUG(("FTPc_RecvBuf() failed.\n"));
        FTPc_Close(&net_err);
        return;
    }

    APP_TRACE_DEBUG(("FTPc: Comparing %d bytes... ", FTPc_TEST_BUF_SIZE));
    result = Mem_Cmp(buf, FTPc_TestBuf, FTPc_TEST_BUF_SIZE);
    if (result == DEF_FAIL) {
        APP_TRACE_DEBUG(("FAILED!\n"));
    } else {
        APP_TRACE_DEBUG(("SUCCESS!\n"));
    }

    result = FTPc_Close(&net_err);
    if (result == DEF_FAIL) {
        APP_TRACE_DEBUG(("FTPc_Close() failed.\n"));
    }

}
#endif  /* APP_FTPc_EN */


#if APP_POP3c_EN

#define  BUFFER_SIZE 2000
#define  POP3c_TEST_SERVER_IP  "0.0.0.0"
#define  POP3c_TEST_USER       ""
#define  POP3c_TEST_PASS       ""

void  App_TestPOP3c (void)
{
    NET_IP_ADDR  ip_server;
    NET_ERR      errMsg;
    NET_SOCK_ID  socket;
    CPU_INT32U   message_qty;
    CPU_INT32U   mailbox_size;
    CPU_INT32U   i;
    CPU_INT32U   j;
    CPU_INT32U   message_size;
    CPU_CHAR     message_buffer[BUFFER_SIZE];
    POP3c_MSG    mail_struct;


    ip_server = NetASCII_Str_to_IP(POP3c_TEST_SERVER_IP, &errMsg);
    if (errMsg != NET_ASCII_ERR_NONE) {
        APP_TRACE_DEBUG(("Error - NetASCII_Str_to_IP: %d\n", errMsg));
        return;
    }

    APP_TRACE_DEBUG(("Connecting...\n"));
    socket = POP3c_Connect(ip_server, 0, &errMsg);
    if (errMsg == POP3c_ERR_NONE) {
        APP_TRACE_DEBUG(("Connected to server (socket: %d)\n", socket));
    } else {
        APP_TRACE_DEBUG(("Error - POP3c_Connect: %d\n", errMsg));
        return;
    }

    POP3c_Authenticate(socket, POP3c_TEST_USER, POP3c_TEST_PASS, &errMsg);
    if (errMsg != POP3c_ERR_NONE) {
        APP_TRACE_DEBUG(("Error - POP3c_Authenticate: %d\n", &errMsg));
        return;
    }

⌨️ 快捷键说明

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