Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #include <algorithm> 00002 #include "mbed.h" 00003 #include "ESP8266Interface.h" 00004 #include "TCPSocket.h" 00005 #include "greentea-client/test_env.h" 00006 #include "unity/unity.h" 00007 #include "utest.h" 00008 00009 using namespace utest::v1; 00010 00011 #ifndef MBED_CFG_ESP8266_TX 00012 #define MBED_CFG_ESP8266_TX D1 00013 #endif 00014 00015 #ifndef MBED_CFG_ESP8266_RX 00016 #define MBED_CFG_ESP8266_RX D0 00017 #endif 00018 00019 #ifndef MBED_CFG_ESP8266_DEBUG 00020 #define MBED_CFG_ESP8266_DEBUG false 00021 #endif 00022 00023 #define STRINGIZE(x) STRINGIZE2(x) 00024 #define STRINGIZE2(x) #x 00025 00026 00027 namespace { 00028 // Test connection information 00029 const char *HTTP_SERVER_NAME = "developer.mbed.org"; 00030 const char *HTTP_SERVER_FILE_PATH = "/media/uploads/mbed_official/hello.txt"; 00031 const int HTTP_SERVER_PORT = 80; 00032 #if defined(TARGET_VK_RZ_A1H) 00033 const int RECV_BUFFER_SIZE = 300; 00034 #else 00035 const int RECV_BUFFER_SIZE = 512; 00036 #endif 00037 // Test related data 00038 const char *HTTP_OK_STR = "200 OK"; 00039 const char *HTTP_HELLO_STR = "Hello world!"; 00040 00041 // Test buffers 00042 char buffer[RECV_BUFFER_SIZE] = {0}; 00043 } 00044 00045 bool find_substring(const char *first, const char *last, const char *s_first, const char *s_last) { 00046 const char *f = std::search(first, last, s_first, s_last); 00047 return (f != last); 00048 } 00049 00050 void test_tcp_hello_world() { 00051 bool result = false; 00052 ESP8266Interface net(MBED_CFG_ESP8266_TX, MBED_CFG_ESP8266_RX, MBED_CFG_ESP8266_DEBUG); 00053 net.connect(STRINGIZE(MBED_CFG_ESP8266_SSID), STRINGIZE(MBED_CFG_ESP8266_PASS)); 00054 printf("TCP client IP Address is %s\r\n", net.get_ip_address()); 00055 00056 TCPSocket sock(&net); 00057 printf("HTTP: Connection to %s:%d\r\n", HTTP_SERVER_NAME, HTTP_SERVER_PORT); 00058 if (sock.connect(HTTP_SERVER_NAME, HTTP_SERVER_PORT) == 0) { 00059 printf("HTTP: OK\r\n"); 00060 00061 // We are constructing GET command like this: 00062 // GET http://developer.mbed.org/media/uploads/mbed_official/hello.txt HTTP/1.0\n\n 00063 strcpy(buffer, "GET http://"); 00064 strcat(buffer, HTTP_SERVER_NAME); 00065 strcat(buffer, HTTP_SERVER_FILE_PATH); 00066 strcat(buffer, " HTTP/1.0\n\n"); 00067 // Send GET command 00068 sock.send(buffer, strlen(buffer)); 00069 00070 // Server will respond with HTTP GET's success code 00071 const int ret = sock.recv(buffer, sizeof(buffer) - 1); 00072 buffer[ret] = '\0'; 00073 00074 // Find 200 OK HTTP status in reply 00075 bool found_200_ok = find_substring(buffer, buffer + ret, HTTP_OK_STR, HTTP_OK_STR + strlen(HTTP_OK_STR)); 00076 // Find "Hello World!" string in reply 00077 bool found_hello = find_substring(buffer, buffer + ret, HTTP_HELLO_STR, HTTP_HELLO_STR + strlen(HTTP_HELLO_STR)); 00078 00079 TEST_ASSERT_TRUE(found_200_ok); 00080 TEST_ASSERT_TRUE(found_hello); 00081 00082 if (found_200_ok && found_hello) result = true; 00083 00084 printf("HTTP: Received %d chars from server\r\n", ret); 00085 printf("HTTP: Received 200 OK status ... %s\r\n", found_200_ok ? "[OK]" : "[FAIL]"); 00086 printf("HTTP: Received '%s' status ... %s\r\n", HTTP_HELLO_STR, found_hello ? "[OK]" : "[FAIL]"); 00087 printf("HTTP: Received message:\r\n"); 00088 printf("%s", buffer); 00089 sock.close(); 00090 } else { 00091 printf("HTTP: ERROR\r\n"); 00092 } 00093 00094 net.disconnect(); 00095 TEST_ASSERT_EQUAL(true, result); 00096 } 00097 00098 00099 // Test setup 00100 utest::v1::status_t test_setup(const size_t number_of_cases) { 00101 GREENTEA_SETUP(120, "default_auto"); 00102 return verbose_test_setup_handler(number_of_cases); 00103 } 00104 00105 Case cases[] = { 00106 Case("TCP hello world", test_tcp_hello_world), 00107 }; 00108 00109 Specification specification(test_setup, cases); 00110 00111 int main() { 00112 return !Harness::run(specification); 00113 } 00114
Generated on Tue Jul 12 2022 15:14:29 by
1.7.2