ON Semiconductor / mbed-os

Dependents:   mbed-TFT-example-NCS36510 mbed-Accelerometer-example-NCS36510 mbed-Accelerometer-example-NCS36510

Committer:
group-onsemi
Date:
Wed Jan 25 20:34:15 2017 +0000
Revision:
0:098463de4c5d
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
group-onsemi 0:098463de4c5d 1 #if !FEATURE_LWIP
group-onsemi 0:098463de4c5d 2 #error [NOT_SUPPORTED] LWIP not supported for this target
group-onsemi 0:098463de4c5d 3 #endif
group-onsemi 0:098463de4c5d 4 #if DEVICE_EMAC
group-onsemi 0:098463de4c5d 5 #error [NOT_SUPPORTED] Not supported for WiFi targets
group-onsemi 0:098463de4c5d 6 #endif
group-onsemi 0:098463de4c5d 7
group-onsemi 0:098463de4c5d 8 #include "mbed.h"
group-onsemi 0:098463de4c5d 9 #include "EthernetInterface.h"
group-onsemi 0:098463de4c5d 10 #include "TCPSocket.h"
group-onsemi 0:098463de4c5d 11 #include "greentea-client/test_env.h"
group-onsemi 0:098463de4c5d 12 #include "unity/unity.h"
group-onsemi 0:098463de4c5d 13
group-onsemi 0:098463de4c5d 14
group-onsemi 0:098463de4c5d 15 #ifndef MBED_CFG_TCP_CLIENT_ECHO_BUFFER_SIZE
group-onsemi 0:098463de4c5d 16 #define MBED_CFG_TCP_CLIENT_ECHO_BUFFER_SIZE 256
group-onsemi 0:098463de4c5d 17 #endif
group-onsemi 0:098463de4c5d 18
group-onsemi 0:098463de4c5d 19 namespace {
group-onsemi 0:098463de4c5d 20 char tx_buffer[MBED_CFG_TCP_CLIENT_ECHO_BUFFER_SIZE] = {0};
group-onsemi 0:098463de4c5d 21 char rx_buffer[MBED_CFG_TCP_CLIENT_ECHO_BUFFER_SIZE] = {0};
group-onsemi 0:098463de4c5d 22 const char ASCII_MAX = '~' - ' ';
group-onsemi 0:098463de4c5d 23 }
group-onsemi 0:098463de4c5d 24
group-onsemi 0:098463de4c5d 25 void prep_buffer(char *tx_buffer, size_t tx_size) {
group-onsemi 0:098463de4c5d 26 for (size_t i=0; i<tx_size; ++i) {
group-onsemi 0:098463de4c5d 27 tx_buffer[i] = (rand() % 10) + '0';
group-onsemi 0:098463de4c5d 28 }
group-onsemi 0:098463de4c5d 29 }
group-onsemi 0:098463de4c5d 30
group-onsemi 0:098463de4c5d 31 int main() {
group-onsemi 0:098463de4c5d 32 GREENTEA_SETUP(20, "tcp_echo");
group-onsemi 0:098463de4c5d 33
group-onsemi 0:098463de4c5d 34 EthernetInterface eth;
group-onsemi 0:098463de4c5d 35 eth.connect();
group-onsemi 0:098463de4c5d 36
group-onsemi 0:098463de4c5d 37 printf("MBED: TCPClient IP address is '%s'\n", eth.get_ip_address());
group-onsemi 0:098463de4c5d 38 printf("MBED: TCPClient waiting for server IP and port...\n");
group-onsemi 0:098463de4c5d 39
group-onsemi 0:098463de4c5d 40 greentea_send_kv("target_ip", eth.get_ip_address());
group-onsemi 0:098463de4c5d 41
group-onsemi 0:098463de4c5d 42 bool result = false;
group-onsemi 0:098463de4c5d 43
group-onsemi 0:098463de4c5d 44 char recv_key[] = "host_port";
group-onsemi 0:098463de4c5d 45 char ipbuf[60] = {0};
group-onsemi 0:098463de4c5d 46 char portbuf[16] = {0};
group-onsemi 0:098463de4c5d 47 unsigned int port = 0;
group-onsemi 0:098463de4c5d 48
group-onsemi 0:098463de4c5d 49 greentea_send_kv("host_ip", " ");
group-onsemi 0:098463de4c5d 50 greentea_parse_kv(recv_key, ipbuf, sizeof(recv_key), sizeof(ipbuf));
group-onsemi 0:098463de4c5d 51
group-onsemi 0:098463de4c5d 52 greentea_send_kv("host_port", " ");
group-onsemi 0:098463de4c5d 53 greentea_parse_kv(recv_key, portbuf, sizeof(recv_key), sizeof(ipbuf));
group-onsemi 0:098463de4c5d 54 sscanf(portbuf, "%u", &port);
group-onsemi 0:098463de4c5d 55
group-onsemi 0:098463de4c5d 56 printf("MBED: Server IP address received: %s:%d \n", ipbuf, port);
group-onsemi 0:098463de4c5d 57
group-onsemi 0:098463de4c5d 58 TCPSocket sock(&eth);
group-onsemi 0:098463de4c5d 59 SocketAddress tcp_addr(ipbuf, port);
group-onsemi 0:098463de4c5d 60 if (sock.connect(tcp_addr) == 0) {
group-onsemi 0:098463de4c5d 61 printf("HTTP: Connected to %s:%d\r\n", ipbuf, port);
group-onsemi 0:098463de4c5d 62 printf("tx_buffer buffer size: %u\r\n", sizeof(tx_buffer));
group-onsemi 0:098463de4c5d 63 printf("rx_buffer buffer size: %u\r\n", sizeof(rx_buffer));
group-onsemi 0:098463de4c5d 64
group-onsemi 0:098463de4c5d 65 prep_buffer(tx_buffer, sizeof(tx_buffer));
group-onsemi 0:098463de4c5d 66 sock.send(tx_buffer, sizeof(tx_buffer));
group-onsemi 0:098463de4c5d 67
group-onsemi 0:098463de4c5d 68 // Server will respond with HTTP GET's success code
group-onsemi 0:098463de4c5d 69 const int ret = sock.recv(rx_buffer, sizeof(rx_buffer));
group-onsemi 0:098463de4c5d 70
group-onsemi 0:098463de4c5d 71 result = !memcmp(tx_buffer, rx_buffer, sizeof(tx_buffer));
group-onsemi 0:098463de4c5d 72
group-onsemi 0:098463de4c5d 73 TEST_ASSERT_EQUAL(ret, sizeof(rx_buffer));
group-onsemi 0:098463de4c5d 74 TEST_ASSERT_EQUAL(true, result);
group-onsemi 0:098463de4c5d 75 }
group-onsemi 0:098463de4c5d 76
group-onsemi 0:098463de4c5d 77 sock.close();
group-onsemi 0:098463de4c5d 78 eth.disconnect();
group-onsemi 0:098463de4c5d 79 GREENTEA_TESTSUITE_RESULT(result);
group-onsemi 0:098463de4c5d 80 }