1515 * limitations under the License.
1616 */
1717
18- #ifndef MBED_CONF_APP_CONNECT_STATEMENT
19- #error [NOT_SUPPORTED] No network configuration found for this target.
20- #endif
18+ #ifndef MBED_CONF_APP_CONNECT_STATEMENT
19+ #error [NOT_SUPPORTED] No network configuration found for this target.
20+ #endif
2121
2222#ifndef MBED_EXTENDED_TESTS
23- #error [NOT_SUPPORTED] Parallel tests are not supported by default
23+ #error [NOT_SUPPORTED] Parallel tests are not supported by default
2424#endif
2525
2626#include " mbed.h"
3333using namespace utest ::v1;
3434
3535
36- #ifndef MBED_CFG_TCP_CLIENT_ECHO_BUFFER_SIZE
37- #define MBED_CFG_TCP_CLIENT_ECHO_BUFFER_SIZE 64
36+ #ifndef MBED_CONF_APP_TCP_CLIENT_ECHO_BUFFER_SIZE
37+ #define MBED_CONF_APP_TCP_CLIENT_ECHO_BUFFER_SIZE 64
3838#endif
3939
40- #ifndef MBED_CFG_TCP_CLIENT_ECHO_THREADS
41- #define MBED_CFG_TCP_CLIENT_ECHO_THREADS 3
40+ #ifndef MBED_CONF_APP_TCP_CLIENT_ECHO_THREADS
41+ #define MBED_CONF_APP_TCP_CLIENT_ECHO_THREADS 3
4242#endif
4343
4444#define STRINGIZE (x ) STRINGIZE2(x)
@@ -49,51 +49,59 @@ NetworkInterface* net;
4949SocketAddress tcp_addr;
5050Mutex iomutex;
5151
52- void prep_buffer (char *tx_buffer, size_t tx_size) {
53- for (size_t i=0 ; i<tx_size; ++i) {
52+ void prep_buffer (char *tx_buffer, size_t tx_size)
53+ {
54+ for (size_t i = 0 ; i < tx_size; ++i) {
5455 tx_buffer[i] = (rand () % 10 ) + ' 0' ;
5556 }
5657}
5758
5859
5960// Each echo class is in charge of one parallel transaction
60- class Echo {
61+ class Echo
62+ {
6163private:
62- char tx_buffer[MBED_CFG_TCP_CLIENT_ECHO_BUFFER_SIZE ];
63- char rx_buffer[MBED_CFG_TCP_CLIENT_ECHO_BUFFER_SIZE ];
64+ char tx_buffer[MBED_CONF_APP_TCP_CLIENT_ECHO_BUFFER_SIZE ];
65+ char rx_buffer[MBED_CONF_APP_TCP_CLIENT_ECHO_BUFFER_SIZE ];
6466
6567 TCPSocket sock;
6668 Thread thread;
6769
6870public:
6971 // Limiting stack size to 1k
70- Echo (): thread(osPriorityNormal, 1024 ) {
72+ Echo (): thread(osPriorityNormal, 1024 )
73+ {
7174 }
7275
73- void start () {
76+ void start ()
77+ {
7478 osStatus status = thread.start (callback (this , &Echo::echo));
7579 TEST_ASSERT_EQUAL (osOK, status);
7680 }
7781
78- void join () {
82+ void join ()
83+ {
7984 osStatus status = thread.join ();
8085 TEST_ASSERT_EQUAL (osOK, status);
8186 }
8287
83- void echo () {
88+ void echo ()
89+ {
8490 int err = sock.open (net);
8591 TEST_ASSERT_EQUAL (0 , err);
8692
8793 err = sock.connect (tcp_addr);
8894 TEST_ASSERT_EQUAL (0 , err);
8995
96+ #if defined(MBED_CONF_APP_TCP_ECHO_PREFIX)
9097 // recv connection prefix message
9198 sock.recv (rx_buffer, sizeof (MBED_CONF_APP_TCP_ECHO_PREFIX));
99+ #endif /* MBED_CONF_APP_TCP_ECHO_PREFIX */
92100 memset (rx_buffer, 0 , sizeof (rx_buffer));
93101
94102 iomutex.lock ();
95103 printf (" HTTP: Connected to %s:%d\r\n " ,
96- tcp_addr.get_ip_address (), tcp_addr.get_port ());
104+ tcp_addr.get_ip_address (), tcp_addr.get_port ());
97105 printf (" tx_buffer buffer size: %u\r\n " , sizeof (tx_buffer));
98106 printf (" rx_buffer buffer size: %u\r\n " , sizeof (rx_buffer));
99107 iomutex.unlock ();
@@ -112,26 +120,45 @@ class Echo {
112120 }
113121};
114122
115- Echo *echoers[MBED_CFG_TCP_CLIENT_ECHO_THREADS ];
123+ Echo *echoers[MBED_CONF_APP_TCP_CLIENT_ECHO_THREADS ];
116124
117125
118- void test_tcp_echo_parallel () {
126+ void test_tcp_echo_parallel ()
127+ {
119128 net = MBED_CONF_APP_OBJECT_CONSTRUCTION;
120129 int err = MBED_CONF_APP_CONNECT_STATEMENT;
121130 TEST_ASSERT_EQUAL (0 , err);
122131
123132 printf (" MBED: TCPClient IP address is '%s'\n " , net->get_ip_address ());
124133
134+ #if defined(MBED_CONF_APP_ECHO_SERVER_ADDR) && defined(MBED_CONF_APP_ECHO_SERVER_PORT)
125135 tcp_addr.set_ip_address (MBED_CONF_APP_ECHO_SERVER_ADDR);
126136 tcp_addr.set_port (MBED_CONF_APP_ECHO_SERVER_PORT);
137+ #else /* MBED_CONF_APP_ECHO_SERVER_ADDR && MBED_CONF_APP_ECHO_SERVER_PORT */
138+ char recv_key[] = " host_port" ;
139+ char ipbuf[60 ] = {0 };
140+ char portbuf[16 ] = {0 };
141+ unsigned int port = 0 ;
142+
143+ greentea_send_kv (" target_ip" , net->get_ip_address ());
144+ greentea_send_kv (" host_ip" , " " );
145+ greentea_parse_kv (recv_key, ipbuf, sizeof (recv_key), sizeof (ipbuf));
146+
147+ greentea_send_kv (" host_port" , " " );
148+ greentea_parse_kv (recv_key, portbuf, sizeof (recv_key), sizeof (ipbuf));
149+ sscanf (portbuf, " %u" , &port);
150+
151+ tcp_addr.set_ip_address (ipbuf);
152+ tcp_addr.set_port (port);
153+ #endif /* MBED_CONF_APP_ECHO_SERVER_ADDR && MBED_CONF_APP_ECHO_SERVER_PORT */
127154
128155 // Startup echo threads in parallel
129- for (int i = 0 ; i < MBED_CFG_TCP_CLIENT_ECHO_THREADS ; i++) {
156+ for (int i = 0 ; i < MBED_CONF_APP_TCP_CLIENT_ECHO_THREADS ; i++) {
130157 echoers[i] = new Echo;
131158 echoers[i]->start ();
132159 }
133160
134- for (int i = 0 ; i < MBED_CFG_TCP_CLIENT_ECHO_THREADS ; i++) {
161+ for (int i = 0 ; i < MBED_CONF_APP_TCP_CLIENT_ECHO_THREADS ; i++) {
135162 echoers[i]->join ();
136163 delete echoers[i];
137164 }
@@ -140,7 +167,8 @@ void test_tcp_echo_parallel() {
140167}
141168
142169// Test setup
143- utest::v1::status_t test_setup (const size_t number_of_cases) {
170+ utest::v1::status_t test_setup (const size_t number_of_cases)
171+ {
144172 GREENTEA_SETUP (120 , " tcp_echo" );
145173 return verbose_test_setup_handler (number_of_cases);
146174}
@@ -151,6 +179,7 @@ Case cases[] = {
151179
152180Specification specification (test_setup, cases);
153181
154- int main () {
182+ int main ()
183+ {
155184 return !Harness::run (specification);
156185}
0 commit comments