Mirror of espurna firmware for wireless switches and more
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

51 lines
1018 B

/*
NETWORKING MODULE
Copyright (C) 2022 by Maxim Prokhorov <prokhorov dot max at outlook dot com>
*/
#pragma once
#include <Arduino.h>
#include <IPAddress.h>
#include <memory>
#include <lwip/init.h>
#include <lwip/err.h>
#include "types.h"
namespace espurna {
namespace network {
namespace dns {
struct Host {
String name;
IPAddress addr;
err_t err;
};
using HostPtr = std::shared_ptr<Host>;
using HostCallback = std::function<void(HostPtr)>;
// DNS request is lauched in the background, HostPtr should be waited upon
HostPtr resolve(String);
// ...or, user callback is executed when DNS client is ready to return something
void resolve(String, HostCallback);
// Block until the HostPtr becomes available for reading, or when timeout occurs
bool wait_for(HostPtr, duration::Milliseconds);
// Arduino style result
IPAddress gethostbyname(String, duration::Milliseconds);
IPAddress gethostbyname(String);
} // namespace dns
} // namespace network
} // namespace espurna
void networkSetup();