RX72N ENvision Kit ----(LANケーブル)---インターネット接続可能なルータ
|(USB(ECN1, CN8)) |
PC---------------(LANケーブル)------------+
#include <stdio.h>
#include <string.h>
#include "r_smc_entry.h"
#include "platform.h"
#include "r_cmt_rx_if.h"
#include "r_sci_rx_if.h"
#include "r_t4_itcpip.h"
#include "r_t4_rx_config.h"
#include "Pin.h"
#include "r_sci_rx_pinset.h"
#include "r_ether_rx_pinset.h"
#include "r_sys_time_rx_if.h"
#if 1
/* Please turn off this section if you would use old r_t4_rx. */
#include "r_tsip_rx_if.h"
#endif
#define DEBUG_PRINT 1
void main(void);
void cmt_callback(void *arg);
void sci_callback(void *arg);
void my_sw_charput_function(char *data);
char my_sw_charget_function(void);
static sci_hdl_t sci_handle;
static UB guc_event[T4_CFG_SYSTEM_CHANNEL_NUMBER];
static DHCP* gpt_dhcp[T4_CFG_SYSTEM_CHANNEL_NUMBER];
static UW tcpudp_work[14800];
void main(void)
{
uint32_t cmt_channel;
R_CMT_CreatePeriodic(10, cmt_callback, &cmt_channel);
sci_cfg_t my_sci_config;
int32_t size;
#if 1
/* Please turn off this section if you would use old r_t4_rx. */
R_TSIP_Open(NULL, NULL);
#endif
/* Set up the configuration data structure for asynchronous (UART) operation. */
my_sci_config.async.baud_rate = 115200;
my_sci_config.async.clk_src = SCI_CLK_INT;
my_sci_config.async.data_size = SCI_DATA_8BIT;
my_sci_config.async.parity_en = SCI_PARITY_OFF;
my_sci_config.async.parity_type = SCI_EVEN_PARITY;
my_sci_config.async.stop_bits = SCI_STOPBITS_1;
my_sci_config.async.int_priority = 15; /* disable 0 - low 1 - 15 high */
R_Pins_Create();
R_SCI_Open(SCI_CH2, SCI_MODE_ASYNC, &my_sci_config, sci_callback, &sci_handle);
R_SCI_PinSet_SCI2();
R_ETHER_PinSet_ETHERC0_MII();
printf("Hello World\n");
R_SYS_TIME_Open();
/* start LAN controller */
lan_open();
/* initialize TCP/IP */
size = tcpudp_get_ramsize();
if (size > (sizeof(tcpudp_work)))
{
while (1);
}
tcpudp_open(tcpudp_work);
while(1);
}
void cmt_callback(void *arg)
{
if(PORT4.PIDR.BIT.B0 == 1)
{
PORT4.PODR.BIT.B0 = 0;
}
else
{
PORT4.PODR.BIT.B0 = 1;
}
}
void sci_callback(void *arg)
{
}
void my_sw_charput_function(char *data)
{
uint32_t arg = 0;
/* do not call printf()->charput in interrupt context */
do
{
R_SCI_Control(sci_handle, SCI_CMD_TX_Q_BYTES_FREE, (void*)&arg);
}
while (SCI_CFG_CH2_TX_BUFSIZ != arg);
R_SCI_Send(sci_handle, (uint8_t*)&data, 1);
}
char my_sw_charget_function(void)
{
return 0;
}
ER system_callback(UB channel, UW eventid, VP param)
{
#if defined(DEBUG_PRINT)
uint8_t* ev_tbl[] =
{
"ETHER_EV_LINK_OFF",
"ETHER_EV_LINK_ON",
"ETHER_EV_COLLISION_IP",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"DHCP_EV_LEASE_IP",
"DHCP_EV_LEASE_OVER",
"DHCP_EV_INIT",
"DHCP_EV_INIT_REBOOT",
"DHCP_EV_APIPA",
"DHCP_EV_NAK",
"DHCP_EV_FATAL_ERROR",
"DHCP_EV_PLEASE_RESET"
};
printf("^^>>>user_cb<<< ch:%d,eventID = %s\n", channel, ev_tbl[eventid]);
#endif /*#if defined(DEBUG_PRINT)*/
guc_event[channel] = eventid;
switch(eventid)
{
case ETHER_EV_LINK_OFF:
{
/* Do Nothing. */
}
break;
case ETHER_EV_LINK_ON:
{
/* Do Nothing. */
}
break;
case ETHER_EV_COLLISION_IP:
{
/* Do Nothing. */
}
break;
case DHCP_EV_LEASE_IP:
{
/* cast from VP to DHCP* */
gpt_dhcp[channel] = (DHCP*)param;
#if defined(DEBUG_PRINT)
printf("DHCP.ipaddr[4] %d.%d.%d.%d\n",
gpt_dhcp[channel]->ipaddr[0], gpt_dhcp[channel]->ipaddr[1],
gpt_dhcp[channel]->ipaddr[2], gpt_dhcp[channel]->ipaddr[3]);
printf("DHCP.maskaddr[4] %d.%d.%d.%d\n",
gpt_dhcp[channel]->maskaddr[0], gpt_dhcp[channel]->maskaddr[1],
gpt_dhcp[channel]->maskaddr[2], gpt_dhcp[channel]->maskaddr[3]);
printf("DHCP.gwaddr[4] %d.%d.%d.%d\n",
gpt_dhcp[channel]->gwaddr[0], gpt_dhcp[channel]->gwaddr[1],
gpt_dhcp[channel]->gwaddr[2], gpt_dhcp[channel]->gwaddr[3]);
printf("DHCP.dnsaddr[4] %d.%d.%d.%d\n",
gpt_dhcp[channel]->dnsaddr[0], gpt_dhcp[channel]->dnsaddr[1],
gpt_dhcp[channel]->dnsaddr[2], gpt_dhcp[channel]->dnsaddr[3]);
printf("DHCP.dnsaddr2[4] %d.%d.%d.%d\n",
gpt_dhcp[channel]->dnsaddr2[0], gpt_dhcp[channel]->dnsaddr2[1],
gpt_dhcp[channel]->dnsaddr2[2], gpt_dhcp[channel]->dnsaddr2[3]);
printf("DHCP.macaddr[6] %02X:%02X:%02X:%02X:%02X:%02X\n",
gpt_dhcp[channel]->macaddr[0], gpt_dhcp[channel]->macaddr[1], gpt_dhcp[channel]->macaddr[2],
gpt_dhcp[channel]->macaddr[3], gpt_dhcp[channel]->macaddr[4], gpt_dhcp[channel]->macaddr[5]);
printf("DHCP.domain[%d] %s\n", strlen(gpt_dhcp[channel]->domain), gpt_dhcp[channel]->domain);
printf("\n");
#endif /*#if defined(DEBUG_PRINT)*/
}
break;
case DHCP_EV_LEASE_OVER:
{
/* Do Nothing. */
}
break;
case DHCP_EV_INIT:
{
/* Do Nothing. */
}
break;
case DHCP_EV_INIT_REBOOT:
{
/* Do Nothing. */
}
break;
case DHCP_EV_APIPA:
{
/* cast from VP to DHCP* */
gpt_dhcp[channel] = (DHCP*)param;
#if defined(DEBUG_PRINT)
printf("DHCP.ipaddr[4] %d.%d.%d.%d\n",
gpt_dhcp[channel]->ipaddr[0], gpt_dhcp[channel]->ipaddr[1],
gpt_dhcp[channel]->ipaddr[2], gpt_dhcp[channel]->ipaddr[3]);
printf("DHCP.maskaddr[4] %d.%d.%d.%d\n",
gpt_dhcp[channel]->maskaddr[0], gpt_dhcp[channel]->maskaddr[1],
gpt_dhcp[channel]->maskaddr[2], gpt_dhcp[channel]->maskaddr[3]);
printf("DHCP.gwaddr[4] %d.%d.%d.%d\n",
gpt_dhcp[channel]->gwaddr[0], gpt_dhcp[channel]->gwaddr[1],
gpt_dhcp[channel]->gwaddr[2], gpt_dhcp[channel]->gwaddr[3]);
printf("DHCP.dnsaddr[4] %d.%d.%d.%d\n",
gpt_dhcp[channel]->dnsaddr[0], gpt_dhcp[channel]->dnsaddr[1],
gpt_dhcp[channel]->dnsaddr[2], gpt_dhcp[channel]->dnsaddr[3]);
printf("DHCP.dnsaddr2[4] %d.%d.%d.%d\n",
gpt_dhcp[channel]->dnsaddr2[0], gpt_dhcp[channel]->dnsaddr2[1],
gpt_dhcp[channel]->dnsaddr2[2], gpt_dhcp[channel]->dnsaddr2[3]);
printf("DHCP.macaddr[6] %02X:%02X:%02X:%02X:%02X:%02X\n",
gpt_dhcp[channel]->macaddr[0], gpt_dhcp[channel]->macaddr[1], gpt_dhcp[channel]->macaddr[2],
gpt_dhcp[channel]->macaddr[3], gpt_dhcp[channel]->macaddr[4], gpt_dhcp[channel]->macaddr[5]);
printf("DHCP.domain[%d] %s\n", strlen(gpt_dhcp[channel]->domain), gpt_dhcp[channel]->domain);
printf("\n");
#endif /*#if defined(DEBUG_PRINT)*/
}
break;
case DHCP_EV_NAK:
{
/* Do Nothing. */
}
break;
case DHCP_EV_FATAL_ERROR:
{
/* Do Nothing. */
}
break;
case DHCP_EV_PLEASE_RESET:
{
/* Do Nothing. */
}
break;
default:
{
/* Do Nothing. */
}
break;
}
return 0;
}
Hello World
^^>>>user_cb<<< ch:0,eventID = ETHER_EV_LINK_ON
^^>>>user_cb<<< ch:0,eventID = DHCP_EV_INIT
^^>>>user_cb<<< ch:0,eventID = DHCP_EV_LEASE_IP
DHCP.ipaddr[4] 192.168.1.207
DHCP.maskaddr[4] 255.255.255.0
DHCP.gwaddr[4] 192.168.1.1
DHCP.dnsaddr[4] 192.168.1.1
DHCP.dnsaddr2[4] 0.0.0.0
DHCP.macaddr[6] 74:90:50:00:79:03
DHCP.domain[0]
C:\Users\Shelty>ping 192.168.1.207
192.168.1.207 に ping を送信しています 32 バイトのデータ:
192.168.1.207 からの応答: バイト数 =32 時間 <1ms TTL=80
192.168.1.207 からの応答: バイト数 =32 時間 <1ms TTL=80
192.168.1.207 からの応答: バイト数 =32 時間 <1ms TTL=80
192.168.1.207 からの応答: バイト数 =32 時間 <1ms TTL=80
192.168.1.207 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 0ms、平均 = 0ms