#include #include #include #include #include #include #include #include #include const uint8_t TCPTEST_SOCK; uint8_t remoteAddr[] = { 172, 16, 3, 31 }; uint16_t remotePort = 5000; void tcpTestHandler(void *handle) { static uint8_t state = 0; int8_t res = 0; if (isNetworkAvailable()) { switch (state) { case 0: coloredMsg(LOG_YELLOW, "tth, initializing socket"); res = socket(TCPTEST_SOCK, Sn_MR_TCP, 12345, SF_IO_NONBLOCK); coloredMsg(LOG_YELLOW, "tth, socket returns %d", res); if (res == TCPTEST_SOCK) { coloredMsg(LOG_YELLOW, "tth, socket is initialized"); state = 1; } else { state = 255; } break; case 1: coloredMsg(LOG_YELLOW, "tth, connecting"); res = connect(TCPTEST_SOCK, remoteAddr, remotePort); coloredMsg(LOG_YELLOW, "tth, connect returns %d", res); if (res == SOCK_BUSY) { coloredMsg(LOG_YELLOW, "tth, ok, waiting for established"); state = 2; } else { state = 255; } break; case 2: coloredMsg(LOG_YELLOW, "tth, waiting for established"); uint8_t sockState = getSn_SR(TCPTEST_SOCK); coloredMsg(LOG_YELLOW, "tth, socket state is 0x%02x", sockState); if (sockState == SOCK_ESTABLISHED) { coloredMsg(LOG_YELLOW, "tth, connection is established"); state = 255; } break; case 255: coloredMsg(LOG_YELLOW, "tth, error state, will stop here"); schDel(tcpTestHandler, NULL); break; } } else { coloredMsg(LOG_YELLOW, "tth, network not yet ready"); } } void tcpTestInit() { schAdd(tcpTestHandler, NULL, 0, 100); }