Skip to content

Commit

Permalink
Merge pull request zivillian#3 from zivillian/timeout_config
Browse files Browse the repository at this point in the history
add config option for modbus tcp timeout
  • Loading branch information
zivillian authored Jul 6, 2022
2 parents cddc12e + 97b5a8a commit fa18b0f
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 5 deletions.
3 changes: 3 additions & 0 deletions include/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
private:
Preferences *_prefs;
int16_t _tcpPort;
uint32_t _tcpTimeout;
unsigned long _modbusBaudRate;
uint32_t _modbusConfig;
unsigned long _serialBaudRate;
Expand All @@ -19,6 +20,8 @@
void begin(Preferences *prefs);
uint16_t getTcpPort();
void setTcpPort(uint16_t value);
uint32_t getTcpTimeout();
void setTcpTimeout(uint32_t value);
uint32_t getModbusConfig();
unsigned long getModbusBaudRate();
void setModbusBaudRate(unsigned long value);
Expand Down
12 changes: 12 additions & 0 deletions src/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
Config::Config()
:_prefs(NULL)
,_tcpPort(502)
,_tcpTimeout(10000)
,_modbusBaudRate(9600)
,_modbusConfig(SERIAL_8N1)
,_serialBaudRate(115200)
Expand All @@ -13,6 +14,7 @@ void Config::begin(Preferences *prefs)
{
_prefs = prefs;
_tcpPort = _prefs->getUShort("tcpPort", _tcpPort);
_tcpTimeout = _prefs->getULong("tcpTimeout", _tcpTimeout);
_modbusBaudRate = _prefs->getULong("modbusBaudRate", _modbusBaudRate);
_modbusConfig = _prefs->getULong("modbusConfig", _modbusConfig);
_serialBaudRate = _prefs->getULong("serialBaudRate", _serialBaudRate);
Expand All @@ -29,6 +31,16 @@ void Config::setTcpPort(uint16_t value){
_prefs->putUShort("tcpPort", _tcpPort);
}

uint32_t Config::getTcpTimeout(){
return _tcpTimeout;
}

void Config::setTcpTimeout(uint32_t value){
if (_tcpTimeout == value) return;
_tcpTimeout = value;
_prefs->putULong("tcpTimeout", _tcpTimeout);
}

uint32_t Config::getModbusConfig(){
return _modbusConfig;
}
Expand Down
2 changes: 1 addition & 1 deletion src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ void setup() {
{
MBbridge.attachServer(i, i, ANY_FUNCTION_CODE, &MBclient);
}
MBbridge.start(config.getTcpPort(), 10, 10000);
MBbridge.start(config.getTcpPort(), 10, config.getTcpTimeout());
dbgln("[modbus] finished");
setupPages(&webServer, &MBclient, &MBbridge, &config, &wm);
webServer.begin();
Expand Down
21 changes: 17 additions & 4 deletions src/pages.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,18 @@ void setupPages(AsyncWebServer *server, ModbusClientRTU *rtu, ModbusBridgeWiFi *
response->print("<table>"
"<tr>"
"<td>"
"<label for=\"port\">TCP Port</label>"
"<label for=\"tp\">TCP Port</label>"
"</td>"
"<td>");
response->printf("<input type=\"number\" min=\"1\" max=\"65535\" id=\"port\" name=\"port\" value=\"%d\">", config->getTcpPort());
response->printf("<input type=\"number\" min=\"1\" max=\"65535\" id=\"tp\" name=\"tp\" value=\"%d\">", config->getTcpPort());
response->print("</td>"
"</tr>"
"<tr>"
"<td>"
"<label for=\"tt\">TCP Timeout (ms)</label>"
"</td>"
"<td>");
response->printf("<input type=\"number\" min=\"1\" id=\"tt\" name=\"tt\" value=\"%d\">", config->getTcpTimeout());
response->print("</td>"
"</tr>"
"</table>"
Expand Down Expand Up @@ -163,11 +171,16 @@ void setupPages(AsyncWebServer *server, ModbusClientRTU *rtu, ModbusBridgeWiFi *
});
server->on("/config", HTTP_POST, [config](AsyncWebServerRequest *request){
dbgln("[webserver] POST /config");
if (request->hasParam("port", true)){
auto port = request->getParam("port", true)->value().toInt();
if (request->hasParam("tp", true)){
auto port = request->getParam("tp", true)->value().toInt();
config->setTcpPort(port);
dbgln("[webserver] saved port");
}
if (request->hasParam("tt", true)){
auto timeout = request->getParam("tt", true)->value().toInt();
config->setTcpTimeout(timeout);
dbgln("[webserver] saved timeout");
}
if (request->hasParam("mb", true)){
auto baud = request->getParam("mb", true)->value().toInt();
config->setModbusBaudRate(baud);
Expand Down

0 comments on commit fa18b0f

Please sign in to comment.