Mbed Cloud example program for workshop in W27 2018.

Dependencies:   MMA7660 LM75B

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }