Skip to content

Commit

Permalink
updates lib
Browse files Browse the repository at this point in the history
  • Loading branch information
João Silva committed Oct 23, 2023
1 parent e4fae07 commit 5c78dea
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 2 deletions.
4 changes: 4 additions & 0 deletions examples/demo/demo.ino
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ void setup() {

modbusrtu.setup(&Serial1,RS485_GPIO_RX,RS485_GPIO_TX,RS485_GPIO_RTS);
modbusrtu.begin(1,9600,SERIAL_8N1);

modbusrtu.change_config(1,115200,SERIAL_8N1);

modbusrtu.change_config(1,9600,SERIAL_8N1);
}

uint8_t loop_counter = 1;
Expand Down
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=modbusrtu
version=0.1.0
version=1.0.0
author=J. Lucas S. <[email protected]>
maintainer=J. Lucas S. <[email protected]>
sentence=ModbusRTU implementation for Arduino.
Expand Down
6 changes: 6 additions & 0 deletions src/modbus-rtu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@ void ModbusRTU::begin(int8_t mode_, uint32_t baudrate_, uint32_t config_, uint8_
#endif
}

void ModbusRTU::change_config(int8_t mode_, uint32_t baudrate_, uint32_t config_, uint8_t retries_){
#ifndef UNITTEST
rs485comm.change_config( mode_, baudrate_, config_, retries_);
#endif
}

#ifdef UNITTEST
char response[256];
uint8_t len_response = 0;
Expand Down
3 changes: 2 additions & 1 deletion src/modbus-rtu.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ class ModbusRTU {
public:
ModbusRTU(){};
static void setup(HardwareSerial* serial, uint8_t rx, uint8_t tx, uint8_t rts);
static void begin(int8_t mode_, uint32_t baudrate_, uint32_t config_, uint8_t retries_);
static void begin(int8_t mode_, uint32_t baudrate_, uint32_t config_, uint8_t retries_=3);
static void change_config(int8_t mode_, uint32_t baudrate_, uint32_t config_, uint8_t retries_=3);
#ifdef UNITTEST
bool rs485_set_response(uint8_t* data, uint16_t size);
#endif
Expand Down
31 changes: 31 additions & 0 deletions src/rs485.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,37 @@ void RS485Comm::begin(int8_t mode_, uint32_t baudrate_, uint32_t config_, uint8_
digitalWrite(RTS_GPIO, RTS_LOGIC ? LOW : HIGH);
}

void RS485Comm::change_config(int8_t mode_, uint32_t baudrate_, uint32_t config_, uint8_t retries_) {

mode = mode_;
retries = retries_;
baudrate = baudrate_;
config = config_;

if(mode == 0){
DBGLOG(Info,"settings: rs485 disabled");
}else if(mode == 1){
DBGLOG(Info,"settings: rs485 configured as master");
}else if(mode == 2){
DBGLOG(Info,"settings: rs485 configured as slave");
}else{
DBGLOG(Error,"settings: rs485 mode not available");
}

if (mode != 1 && mode != 2) return;


DBGLOG(Info,"rs485: prepare to init");
DBGLOG(Info,"active: "+String(mode));
DBGLOG(Info,"retries: "+String(retries));
DBGLOG(Info,"baudrate: "+String(baudrate));
DBGLOG(Info,"parity: "+String(config));

rs485->begin(baudrate,config,RX_GPIO,TX_GPIO);

DBGLOG(Info,"rs485: init");
}

void RS485Comm::write(uint8_t data[], uint8_t len) {
if (!mode) return;

Expand Down
1 change: 1 addition & 0 deletions src/rs485.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class RS485Comm {
void setup(HardwareSerial* serial, uint8_t rx_pin, uint8_t tx_pin, uint8_t rts_pin, bool logic);
// initialize RS485 comunication
void begin(int8_t mode, uint32_t baudrate = 9600, uint32_t config = SERIAL_8N1, uint8_t retries = 3);
void change_config(int8_t mode, uint32_t baudrate = 9600, uint32_t config = SERIAL_8N1, uint8_t retries = 3);
// write data to RS485
void write(uint8_t data[], uint8_t len);
// read data from RS485
Expand Down

0 comments on commit 5c78dea

Please sign in to comment.