41 lines
905 B
C++
41 lines
905 B
C++
/*
|
|
Modbus Library for Arduino
|
|
ModbusTCP for ESP8266/ESP32
|
|
Copyright (C) 2020 Alexander Emelianov (a.m.emelianov@gmail.com)
|
|
*/
|
|
|
|
#pragma once
|
|
#if defined(ESP8266)
|
|
#include <ESP8266WiFi.h>
|
|
#elif defined(ESP32)
|
|
#include <WiFi.h>
|
|
#endif
|
|
|
|
#include "ModbusAPI.h"
|
|
#include "ModbusTCPTemplate.h"
|
|
|
|
class WiFiServerESPWrapper : public WiFiServer {
|
|
public:
|
|
WiFiServerESPWrapper(uint16_t port) : WiFiServer(port) {}
|
|
inline WiFiClient accept() {
|
|
return available();
|
|
}
|
|
};
|
|
|
|
class ModbusTCP : public ModbusAPI<ModbusTCPTemplate<WiFiServerESPWrapper, WiFiClient>> {
|
|
#if defined(MODBUSIP_USE_DNS)
|
|
private:
|
|
static IPAddress resolver(const char *host) {
|
|
IPAddress remote_addr;
|
|
if (WiFi.hostByName(host, remote_addr))
|
|
return remote_addr;
|
|
return IPADDR_NONE;
|
|
}
|
|
|
|
public:
|
|
ModbusTCP() : ModbusAPI() {
|
|
resolve = resolver;
|
|
}
|
|
#endif
|
|
};
|