Colin Hogben / Mbed OS connect-test

Fork of net-test by Colin Hogben

Revision:
1:e01aa8a340ad
Parent:
0:dcf432232b87
--- a/main.cpp	Thu Oct 13 22:05:24 2016 +0000
+++ b/main.cpp	Wed Nov 09 21:45:12 2016 +0000
@@ -1,36 +1,40 @@
-#include "mbed.h"
-#include "EthernetInterface.h"
-#include "chlibs.h"
+#include <mbed.h>
+#include <EthernetInterface.h>
+
+struct TestAddr {
+    const char *host;
+    unsigned port;
+};
 
-#define PEER "10.212.1.246"
+#define GOOD_HOST "192.168.3.1"
+#define BAD_HOST "192.168.3.2"
+#define BAD_NET "239.9.9.9" // Multicast
+
+const TestAddr test_addrs[] = {
+    {GOOD_HOST, 2}, // port 2 not open; get ECONNREFUSED on Linux
+    {BAD_HOST, 80}, // get EHOSTUNREACH on Linux
+    {BAD_NET, 99}, // get ENETUNREACH on Linux
+};
 
 EthernetInterface eth;
 
-static void try_connect(unsigned port) {
-    INFO("connect %s:%u", PEER, port);
-    TCPSocket sock;
-    int err = sock.open(&eth);
-    if (err < 0) {
-        ch_report("sock.open", err);
-        return;
-    }
-    err = sock.connect(PEER, port);
-    if (err < 0) {
-        ch_report("sock.connect", err);
-        return;
-    }
-}
-
 int main() {
-    ch_log_level = CH_LOG_INFO;
-    INFO("net-test %s %s", __DATE__, __TIME__);
+    printf("connect-test\r\n");
 
     int err = eth.connect();
-    if (err < 0) ch_fail("eth.connect", err);
-    INFO("IP address %s", eth.get_ip_address());
+    if (err) error("eth.connect: %d\r\n", err);
+    printf("IP address %s\r\n", eth.get_ip_address());
     
-    try_connect(7);
-    
-    INFO("End");
+    for (int i = 0; i < sizeof(test_addrs)/sizeof(test_addrs[0]); i++) {
+        const TestAddr *addr = &test_addrs[i];
+        TCPSocket sock;
+        err = sock.open(&eth);
+        if (err) error("sock.open: %d\r\n", err);
+        printf("Connecting to %s:%u\r\n", addr->host, addr->port);
+        err = sock.connect(addr->host, addr->port);
+        printf("err = %d\r\n", err);
+        sock.close();
+    }
+    printf("All done\r\n");
     return 0;
 }
\ No newline at end of file