#include "Arduino.h"
#include "QNEthernet.h"
#include "QNDNSClient.h"
using namespace qindesign::network;
EthernetClient sclient;
IPAddress ip;
constexpr uint32_t kDHCPTimeout = 10000; // 10 seconds
void setup(void) {
Serial.begin(115200);
while (!Serial && millis() < 4000) {
// Wait for Serial to initialize
}
stdPrint = &Serial; // Make printf work (a QNEthernet feature)
#if defined(ARDUINO_TEENSY41) || defined(ARDUINO_TEENSY40)
if(CrashReport)
Serial.print(CrashReport);
#endif
printf("\nFTP Client\n\n");
uint8_t mac[6];
Ethernet.macAddress(mac);
printf("MAC = %02x:%02x:%02x:%02x:%02x:%02x\n",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
printf("Starting Ethernet with DHCP...\n");
if (!Ethernet.begin()) {
printf("Failed to start Ethernet\n");
return;
}
if (!Ethernet.waitForLocalIP(kDHCPTimeout)) {
printf("Failed to get IP address from DHCP\n");
return;
}
IPAddress ip = Ethernet.localIP();
printf(" Local IP = %u.%u.%u.%u\n", ip[0], ip[1], ip[2], ip[3]);
ip = Ethernet.subnetMask();
printf(" Subnet mask = %u.%u.%u.%u\n", ip[0], ip[1], ip[2], ip[3]);
ip = Ethernet.gatewayIP();
printf(" Gateway = %u.%u.%u.%u\n", ip[0], ip[1], ip[2], ip[3]);
ip = Ethernet.dnsServerIP();
printf(" DNS = %u.%u.%u.%u\n", ip[0], ip[1], ip[2], ip[3]);
}
void loop(void) {
delay(1000);
//Try with hostname even without .local still fails.
if(!DNSClient::getHostByName((const char *)"wwatsond1.local", ip, kDHCPTimeout))
printf("getHostByName((const char *)wwatsond1.local, ip, kDHCPTimeout) FAILED\n");
else
printf("getHostByName((const char *)wwatsond1.local, ip, kDHCPTimeout) WORKED\n");
//Try with IP
if(!DNSClient::getHostByName((const char *)"192.168.0.104", ip, kDHCPTimeout))
printf("getHostByName((const char *)192.168.0.104, ip, kDHCPTimeout) FAILED\n");
else
printf("getHostByName((const char *)192.168.0.104, ip, kDHCPTimeout) WORKED\n");
//Try with hostname even without .local still fails.
if (sclient.connect("wwatsond1.local", 21)) { // 21 = FTP server
printf((const char *)"Connect with Host name: connected\n");
} else {
printf((const char *)"Connect with Host name: failed\n");
}
//Try with IP
if (sclient.connect("192.168.0.104", 21)) { // 21 = FTP server
printf((const char *)"Connect with IP: Connected\n");
} else {
printf((const char *)"Connect with IP: failed\n");
}
}