Skip to content

Commit 91b390e

Browse files
committed
Make request buffer size configurable.
1 parent 3d98fd8 commit 91b390e

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

src/ModbusRTUServer.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ ModbusRTUServerClass::~ModbusRTUServerClass()
3434
{
3535
}
3636

37-
int ModbusRTUServerClass::begin(int id, unsigned long baudrate, uint16_t config)
37+
int ModbusRTUServerClass::begin(int id, unsigned long baudrate, uint16_t config, unsigned max_req_size)
3838
{
3939
modbus_t* mb = modbus_new_rtu(baudrate, config);
4040

@@ -43,13 +43,14 @@ int ModbusRTUServerClass::begin(int id, unsigned long baudrate, uint16_t config)
4343
}
4444

4545
modbus_connect(mb);
46+
_max_request_size = max_req_size;
4647

4748
return 1;
4849
}
4950

5051
void ModbusRTUServerClass::poll()
5152
{
52-
uint8_t request[MODBUS_RTU_MAX_ADU_LENGTH];
53+
uint8_t request[_max_request_size];
5354

5455
int requestLength = modbus_receive(_mb, request);
5556

src/ModbusRTUServer.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#define _MODBUS_RTU_SERVER_H_INCLUDED
2222

2323
#include "ModbusServer.h"
24+
#include "libmodbus/modbus-rtu.h"
2425

2526
class ModbusRTUServerClass : public ModbusServer {
2627
public:
@@ -36,12 +37,14 @@ class ModbusRTUServerClass : public ModbusServer {
3637
*
3738
* Return 1 on success, 0 on failure
3839
*/
39-
int begin(int id, unsigned long baudrate, uint16_t config = SERIAL_8N1);
40+
int begin(int id, unsigned long baudrate, uint16_t config = SERIAL_8N1, unsigned max_req_size = MODBUS_RTU_MAX_ADU_LENGTH);
4041

4142
/**
4243
* Poll interface for requests
4344
*/
4445
virtual void poll();
46+
private:
47+
unsigned _max_request_size;
4548
};
4649

4750
extern ModbusRTUServerClass ModbusRTUServer;

0 commit comments

Comments
 (0)