Arduino Ethernet2의 available() 문의


#1

안녕하세요. W5500을 사용하며 S/W 라이브러리는 Ethernet2를 FreeRTOS에 적당히 포팅하여 사용하고 있습니다.
그러다가 확인하고 싶은 사항이 있어 문의드립니다.
EthernetClient::available() --> uint16_t W5500Class::getRXReceivedSize(SOCKET s) --> readSnRX_RSR(s)과 같이 호출됩니다.

TCP통신 수신에서 available()를 확인하는데, 이 반환값이 0 이상일 경우 하나의 전체 패킷이 수신되었다고 볼 수 있는 것인지요? 아니면 available()이 >0 일 경우 일정 주기로 그 반환값이 동일한 경우가 몇번 반복되었을 경우 하나의 패킷을 모두 수신한 경우라고 판단해야하나요?

감사합니다.


#2

안녕하세요

available()함수는 확인하셨듯이 RX메모리의 size를 확인합니다.
따라서, available()>0인경우는 packet을 recv하여 해당 packet의 size값으로 update 되었기 때문입니다.
패킷을 수신한 경우라고 판단하셔도 무방합니다.