아래 코드에서
Sn_SR 값을 계속 출력하는데
PC와 TCP 접속 했을경우에도 0x14 OCK_LISTEN 이 출력되고,
PC 클라이언트에서 disconnect 를 한 뒤에 다시 connect 해야 SOCK_ESTABLISHED 0x17 로 변경됩니다.
처음 접속시에 Sn_SR에 반영이 안되는데 어떻게 해결해야 할지 문의드립니다.
int main (void)
{
*(volatile uint32_t *)(0x41001014) = 0x0060100; //clock setting 48MHz
// Chip must be deselected
cs = 1;
// Setup the spi for 8 bit data, high steady state clock,
// second edge capture, with a 1MHz clock rate
spi.format(8,3);
spi.frequency(20000000);
mode = 0;
// Select the device by seting chip select low
cs = 0;
printf("Wait a second...\r\n");
uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02};
char ip_addr[] = "192.168.11.5";
char subnet_mask[] = "255.255.255.0";
char gateway_addr[] = "192.168.11.1";
EthernetInterface eth;
eth.init(mac_addr, ip_addr, subnet_mask, gateway_addr);
eth.connect();
printf("Server IP Address is %s\r\n", eth.getIPAddress());
TCPSocketServer server;
server.bind(ECHO_SERVER_PORT);
server.listen();
char buffer[12];
while (true)
{
server.bind(ECHO_SERVER_PORT);
server.listen();
printf(“Wait for new connection…\r\n”);
printf(“socket state:%x\r\n”,server.State());
TCPSocketConnection client;
server.accept(client);
printf("Connection from: %s\r\n", client.get_address());
wait(1);
while (true)
{
printf("%s\r\n",(DRDY)?"true":"false");
[b] printf("socket state: %x\r\n", server.State());[/b]
if(!DRDY)
{
printf("DRDY Low");
for(uint8_t i=0; i<12; i++)
{
buffer[i] = spi.write(0x00);
}
client.send_all(buffer, 12);
}
if ((server.State()) == 0x00 || (server.State() == 0x1c) )
{
printf("SOCK_CLOSED\r\n");
break;
}
}
client.close();
}