Toyomasa Watarai
/
Mbed-example-WS-W27
Mbed Cloud example program for workshop in W27 2018.
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 #include "greentea-client/test_env.h" 00003 #include "unity.h" 00004 #include "utest.h" 00005 #include "WizFi310Interface.h" 00006 00007 using namespace utest::v1; 00008 00009 // Hostname for testing against 00010 // Must have A and AAAA records 00011 #ifndef MBED_DNS_TEST_HOST 00012 #define MBED_DNS_TEST_HOST "connector.mbed.com" 00013 #endif 00014 00015 #ifndef MBED_CFG_WIZFI310_TX 00016 #define MBED_CFG_WIZFI310_TX D1 00017 #endif 00018 00019 #ifndef MBED_CFG_WIZFI310_RX 00020 #define MBED_CFG_WIZFI310_RX D0 00021 #endif 00022 00023 #ifndef MBED_CFG_WIZFI310_DEBUG 00024 #define MBED_CFG_WIZFI310_DEBUG false 00025 #endif 00026 00027 #define STRINGIZE(x) STRINGIZE2(x) 00028 #define STRINGIZE2(x) #x 00029 00030 // Address info from stack 00031 const char *ip_literal; 00032 nsapi_version_t ip_pref; 00033 const char *ip_pref_repr; 00034 00035 // Network setup 00036 WizFi310Interface net(MBED_CFG_WIZFI310_TX, MBED_CFG_WIZFI310_RX, MBED_CFG_WIZFI310_DEBUG); 00037 void net_bringup() { 00038 int err = net.connect(STRINGIZE(MBED_CFG_WIZFI310_SSID), STRINGIZE(MBED_CFG_WIZFI310_PASS)); 00039 TEST_ASSERT_EQUAL(0, err); 00040 printf("MBED: Connected to network\n"); 00041 printf("MBED: IP Address: %s\n", net.get_ip_address()); 00042 00043 ip_literal = net.get_ip_address(); 00044 ip_pref = SocketAddress(ip_literal).get_ip_version(); 00045 ip_pref_repr = (ip_pref == NSAPI_IPv4) ? "ipv4" : 00046 (ip_pref == NSAPI_IPv6) ? "ipv6" : "unspec"; 00047 } 00048 00049 00050 // DNS tests 00051 void test_dns_query() { 00052 SocketAddress addr; 00053 int err = net.gethostbyname(MBED_DNS_TEST_HOST, &addr); 00054 printf("DNS: query \"%s\" => \"%s\"\n", 00055 MBED_DNS_TEST_HOST, addr.get_ip_address()); 00056 00057 TEST_ASSERT_EQUAL(0, err); 00058 TEST_ASSERT((bool)addr); 00059 TEST_ASSERT(strlen(addr.get_ip_address()) > 1); 00060 } 00061 00062 void test_dns_query_pref() { 00063 SocketAddress addr; 00064 int err = net.gethostbyname(MBED_DNS_TEST_HOST, &addr, ip_pref); 00065 printf("DNS: query %s \"%s\" => \"%s\"\n", 00066 ip_pref_repr, MBED_DNS_TEST_HOST, addr.get_ip_address()); 00067 00068 TEST_ASSERT_EQUAL(0, err); 00069 TEST_ASSERT((bool)addr); 00070 TEST_ASSERT(strlen(addr.get_ip_address()) > 1); 00071 TEST_ASSERT_EQUAL(ip_pref, addr.get_ip_version()); 00072 } 00073 00074 void test_dns_literal() { 00075 SocketAddress addr; 00076 int err = net.gethostbyname(ip_literal, &addr); 00077 printf("DNS: literal \"%s\" => \"%s\"\n", 00078 ip_literal, addr.get_ip_address()); 00079 00080 TEST_ASSERT_EQUAL(0, err); 00081 TEST_ASSERT((bool)addr); 00082 TEST_ASSERT(strlen(addr.get_ip_address()) > 1); 00083 TEST_ASSERT(strcmp(ip_literal, addr.get_ip_address()) == 0); 00084 } 00085 00086 void test_dns_literal_pref() { 00087 SocketAddress addr; 00088 int err = net.gethostbyname(ip_literal, &addr, ip_pref); 00089 printf("DNS: literal %s \"%s\" => \"%s\"\n", 00090 ip_pref_repr, ip_literal, addr.get_ip_address()); 00091 00092 TEST_ASSERT_EQUAL(0, err); 00093 TEST_ASSERT((bool)addr); 00094 TEST_ASSERT(strlen(addr.get_ip_address()) > 1); 00095 TEST_ASSERT_EQUAL(ip_pref, addr.get_ip_version()); 00096 TEST_ASSERT(strcmp(ip_literal, addr.get_ip_address()) == 0); 00097 } 00098 00099 00100 // Test setup 00101 utest::v1::status_t test_setup(const size_t number_of_cases) { 00102 GREENTEA_SETUP(120, "default_auto"); 00103 net_bringup(); 00104 return verbose_test_setup_handler(number_of_cases); 00105 } 00106 00107 Case cases[] = { 00108 Case("DNS query", test_dns_query), 00109 Case("DNS preference query", test_dns_query_pref), 00110 Case("DNS literal", test_dns_literal), 00111 Case("DNS preference literal", test_dns_literal_pref), 00112 }; 00113 00114 Specification specification(test_setup, cases); 00115 00116 int main() { 00117 return !Harness::run(specification); 00118 }
Generated on Tue Jul 12 2022 16:22:07 by 1.7.2