From fd168ae2b79970e028ad56e12744fda76f22cb55 Mon Sep 17 00:00:00 2001 From: kidpixo Date: Fri, 12 May 2023 16:36:58 +0200 Subject: [PATCH 01/16] add MODBUD explicit function codes to docs/api.md for beginTransmission and requestFrom --- docs/api.md | 11 +- tags | 789 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 797 insertions(+), 3 deletions(-) create mode 100644 tags diff --git a/docs/api.md b/docs/api.md index 76097f3..4e3f508 100644 --- a/docs/api.md +++ b/docs/api.md @@ -167,11 +167,12 @@ int beginTransmission(int id, int type, int address, int nb); #### Parameters - id (slave) - id of target, defaults to 0x00 if not specified -- type - type of write to perform, either COILS or HOLDING_REGISTERS +- type - type of write to perform, either + - COILS (FC 0x01) + - HOLDING_REGISTERS (FC 0x03) - address start address to use for operation - nb - number of values to write - #### Returns 1 on success, 0 on failure @@ -229,7 +230,11 @@ int requestFrom(int id, int type, int address,int nb); #### Parameters - id (slave) - id of target, defaults to 0x00 if not specified -- type - type of read to perform, either COILS, DISCRETE_INPUTS, HOLDING_REGISTERS, or INPUT_REGISTERS +- type - type of read to perform, either + - COILS (FC 0x01) + - DISCRETE_INPUTS (FC 0x02) + - HOLDING_REGISTERS (FC 0x03) + - INPUT_REGISTERS (FC 0x04) - address start address to use for operation - nb - number of values to read diff --git a/tags b/tags new file mode 100644 index 0000000..0ae62dc --- /dev/null +++ b/tags @@ -0,0 +1,789 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 0 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Universal Ctags Team // +!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ +!_TAG_PROGRAM_URL https://ctags.io/ /official site/ +!_TAG_PROGRAM_VERSION 6.0.0 /p6.0.20221218.0/ +!_TAG_FIELD_DESCRIPTION name /tag name/ +!_TAG_FIELD_DESCRIPTION input /input file/ +!_TAG_FIELD_DESCRIPTION pattern /pattern/ +!_TAG_FIELD_DESCRIPTION file /File-restricted scoping/ +!_TAG_FIELD_DESCRIPTION typeref /Type and name of a variable or typedef/ +!_TAG_FIELD_DESCRIPTION epoch /the last modified time of the input file (only for F\/file kind tag)/ +!_TAG_EXTRA_DESCRIPTION fileScope /Include tags of file scope/ +!_TAG_EXTRA_DESCRIPTION pseudo /Include pseudo tags/ +!_TAG_EXTRA_DESCRIPTION subparser /Include tags generated by subparsers/ +!_TAG_EXTRA_DESCRIPTION anonymous /Include tags for non-named objects like lambda/ +!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ +!_TAG_OUTPUT_FILESEP slash /slash or backslash/ +!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ +!_TAG_PROC_CWD /home/kidpixo/Documents/work/MERTIS/MERTIS_Ground-Reference-Model_GRM_local/ArduinoModbus/ // +!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ +!_TAG_OUTPUT_VERSION 0.0 /current.age/ +!_TAG_KIND_DESCRIPTION!C++ d,macro /macro definitions/ +!_TAG_KIND_DESCRIPTION!C++ e,enumerator /enumerators (values inside an enumeration)/ +!_TAG_KIND_DESCRIPTION!C++ f,function /function definitions/ +!_TAG_KIND_DESCRIPTION!C++ g,enum /enumeration names/ +!_TAG_KIND_DESCRIPTION!C++ h,header /included header files/ +!_TAG_KIND_DESCRIPTION!C++ m,member /class, struct, and union members/ +!_TAG_KIND_DESCRIPTION!C++ s,struct /structure names/ +!_TAG_KIND_DESCRIPTION!C++ t,typedef /typedefs/ +!_TAG_KIND_DESCRIPTION!C++ u,union /union names/ +!_TAG_KIND_DESCRIPTION!C++ v,variable /variable definitions/ +!_TAG_KIND_DESCRIPTION!C++ c,class /classes/ +!_TAG_KIND_DESCRIPTION!C++ n,namespace /namespaces/ +!_TAG_FIELD_DESCRIPTION!C++ name /aliased names/ +!_TAG_ROLE_DESCRIPTION!C++!macro undef /undefined/ +!_TAG_ROLE_DESCRIPTION!C++!header system /system header/ +!_TAG_ROLE_DESCRIPTION!C++!header local /local header/ +!_TAG_PARSER_VERSION!C++ 0.0 /current.age/ +SECRET_SSID examples/TCP/WiFiModbusClientToggle/arduino_secrets.h /^#define SECRET_SSID /;" d +SECRET_PASS examples/TCP/WiFiModbusClientToggle/arduino_secrets.h /^#define SECRET_PASS /;" d +SECRET_SSID examples/TCP/WiFiModbusServerLED/arduino_secrets.h /^#define SECRET_SSID /;" d +SECRET_PASS examples/TCP/WiFiModbusServerLED/arduino_secrets.h /^#define SECRET_PASS /;" d +!_TAG_KIND_DESCRIPTION!Yaml a,anchor /anchors/ +!_TAG_ROLE_DESCRIPTION!Yaml!anchor alias /alias/ +!_TAG_PARSER_VERSION!Yaml 0.0 /current.age/ +!_TAG_KIND_DESCRIPTION!JavaProperties k,key /keys/ +!_TAG_PARSER_VERSION!JavaProperties 0.0 /current.age/ +name library.properties /^name=ArduinoModbus$/;" k +version library.properties /^version=1.0.8$/;" k +author library.properties /^author=Arduino$/;" k +maintainer library.properties /^maintainer=Arduino $/;" k +sentence library.properties /^sentence=Use Modbus equipment with your Arduino.$/;" k +paragraph library.properties /^paragraph=Using TCP or RS485 shields, like the MKR 485 Shield. This library depends on the Ardui/;" k +category library.properties /^category=Communication$/;" k +url library.properties /^url=https:\/\/www.arduino.cc\/en\/ArduinoModbus\/ArduinoModbus$/;" k +architectures library.properties /^architectures=megaavr,samd,mbed_nano,mbed_portenta,mbed_opta$/;" k +includes library.properties /^includes=ArduinoModbus.h$/;" k +depends library.properties /^depends=ArduinoRS485$/;" k +!_TAG_KIND_DESCRIPTION!Asciidoc c,chapter /chapters/ +!_TAG_KIND_DESCRIPTION!Asciidoc s,section /sections/ +!_TAG_KIND_DESCRIPTION!Asciidoc S,subsection /level 2 sections/ +!_TAG_KIND_DESCRIPTION!Asciidoc t,subsubsection /level 3 sections/ +!_TAG_KIND_DESCRIPTION!Asciidoc T,l4subsection /level 4 sections/ +!_TAG_KIND_DESCRIPTION!Asciidoc u,l5subsection /level 5 sections/ +!_TAG_KIND_DESCRIPTION!Asciidoc a,anchor /anchors/ +!_TAG_PARSER_VERSION!Asciidoc 0.0 /current.age/ +Modbus Library for Arduino README.adoc /^= Modbus Library for Arduino =$/;" c +Useful resources README.adoc /^== Useful resources ==$/;" s chapter:Modbus Library for Arduino +License README.adoc /^== License ==$/;" s chapter:Modbus Library for Arduino +_ARDUINO_MODBUS_H_INCLUDED src/ArduinoModbus.h /^#define _ARDUINO_MODBUS_H_INCLUDED$/;" d +_MODBUS_RTU_CLIENT_H_INCLUDED src/ModbusRTUClient.h /^#define _MODBUS_RTU_CLIENT_H_INCLUDED$/;" d +ModbusRTUClientClass src/ModbusRTUClient.h /^class ModbusRTUClientClass : public ModbusClient {$/;" c +_rs485 src/ModbusRTUClient.h /^ RS485Class* _rs485 = &RS485;$/;" m class:ModbusRTUClientClass typeref:typename:RS485Class * +ModbusClient src/ModbusClient.cpp /^ModbusClient::ModbusClient(unsigned long defaultTimeout) :$/;" f class:ModbusClient +~ModbusClient src/ModbusClient.cpp /^ModbusClient::~ModbusClient()$/;" f class:ModbusClient +begin src/ModbusClient.cpp /^int ModbusClient::begin(modbus_t* mb, int defaultId)$/;" f class:ModbusClient typeref:typename:int +end src/ModbusClient.cpp /^void ModbusClient::end()$/;" f class:ModbusClient typeref:typename:void +coilRead src/ModbusClient.cpp /^int ModbusClient::coilRead(int address)$/;" f class:ModbusClient typeref:typename:int +coilRead src/ModbusClient.cpp /^int ModbusClient::coilRead(int id, int address)$/;" f class:ModbusClient typeref:typename:int +discreteInputRead src/ModbusClient.cpp /^int ModbusClient::discreteInputRead(int address)$/;" f class:ModbusClient typeref:typename:int +discreteInputRead src/ModbusClient.cpp /^int ModbusClient::discreteInputRead(int id, int address)$/;" f class:ModbusClient typeref:typename:int +holdingRegisterRead src/ModbusClient.cpp /^long ModbusClient::holdingRegisterRead(int address)$/;" f class:ModbusClient typeref:typename:long +holdingRegisterRead src/ModbusClient.cpp /^long ModbusClient::holdingRegisterRead(int id, int address)$/;" f class:ModbusClient typeref:typename:long +inputRegisterRead src/ModbusClient.cpp /^long ModbusClient::inputRegisterRead(int address)$/;" f class:ModbusClient typeref:typename:long +inputRegisterRead src/ModbusClient.cpp /^long ModbusClient::inputRegisterRead(int id, int address)$/;" f class:ModbusClient typeref:typename:long +coilWrite src/ModbusClient.cpp /^int ModbusClient::coilWrite(int address, uint8_t value)$/;" f class:ModbusClient typeref:typename:int +coilWrite src/ModbusClient.cpp /^int ModbusClient::coilWrite(int id, int address, uint8_t value)$/;" f class:ModbusClient typeref:typename:int +holdingRegisterWrite src/ModbusClient.cpp /^int ModbusClient::holdingRegisterWrite(int address, uint16_t value)$/;" f class:ModbusClient typeref:typename:int +holdingRegisterWrite src/ModbusClient.cpp /^int ModbusClient::holdingRegisterWrite(int id, int address, uint16_t value)$/;" f class:ModbusClient typeref:typename:int +registerMaskWrite src/ModbusClient.cpp /^int ModbusClient::registerMaskWrite(int address, uint16_t andMask, uint16_t orMask)$/;" f class:ModbusClient typeref:typename:int +registerMaskWrite src/ModbusClient.cpp /^int ModbusClient::registerMaskWrite(int id, int address, uint16_t andMask, uint16_t orMask)$/;" f class:ModbusClient typeref:typename:int +beginTransmission src/ModbusClient.cpp /^int ModbusClient::beginTransmission(int type, int address, int nb)$/;" f class:ModbusClient typeref:typename:int +beginTransmission src/ModbusClient.cpp /^int ModbusClient::beginTransmission(int id, int type, int address, int nb)$/;" f class:ModbusClient typeref:typename:int +write src/ModbusClient.cpp /^int ModbusClient::write(unsigned int value)$/;" f class:ModbusClient typeref:typename:int +endTransmission src/ModbusClient.cpp /^int ModbusClient::endTransmission()$/;" f class:ModbusClient typeref:typename:int +requestFrom src/ModbusClient.cpp /^int ModbusClient::requestFrom(int type, int address, int nb)$/;" f class:ModbusClient typeref:typename:int +requestFrom src/ModbusClient.cpp /^int ModbusClient::requestFrom(int id, int type, int address, int nb)$/;" f class:ModbusClient typeref:typename:int +available src/ModbusClient.cpp /^int ModbusClient::available()$/;" f class:ModbusClient typeref:typename:int +read src/ModbusClient.cpp /^long ModbusClient::read()$/;" f class:ModbusClient typeref:typename:long +lastError src/ModbusClient.cpp /^const char* ModbusClient::lastError()$/;" f class:ModbusClient typeref:typename:const char * +setTimeout src/ModbusClient.cpp /^void ModbusClient::setTimeout(unsigned long ms)$/;" f class:ModbusClient typeref:typename:void +_MODBUS_SERVER_H_INCLUDED src/ModbusServer.h /^#define _MODBUS_SERVER_H_INCLUDED$/;" d +ModbusServer src/ModbusServer.h /^class ModbusServer {$/;" c +_mb src/ModbusServer.h /^ modbus_t* _mb;$/;" m class:ModbusServer typeref:typename:modbus_t * +_mbMapping src/ModbusServer.h /^ modbus_mapping_t _mbMapping;$/;" m class:ModbusServer typeref:typename:modbus_mapping_t +ModbusRTUServerClass src/ModbusRTUServer.cpp /^ModbusRTUServerClass::ModbusRTUServerClass()$/;" f class:ModbusRTUServerClass +ModbusRTUServerClass src/ModbusRTUServer.cpp /^ModbusRTUServerClass::ModbusRTUServerClass(RS485Class& rs485) : _rs485(&rs485)$/;" f class:ModbusRTUServerClass +~ModbusRTUServerClass src/ModbusRTUServer.cpp /^ModbusRTUServerClass::~ModbusRTUServerClass()$/;" f class:ModbusRTUServerClass +begin src/ModbusRTUServer.cpp /^int ModbusRTUServerClass::begin(int id, unsigned long baudrate, uint16_t config)$/;" f class:ModbusRTUServerClass typeref:typename:int +begin src/ModbusRTUServer.cpp /^int ModbusRTUServerClass::begin(RS485Class& rs485, int id, unsigned long baudrate, uint16_t conf/;" f class:ModbusRTUServerClass typeref:typename:int +poll src/ModbusRTUServer.cpp /^int ModbusRTUServerClass::poll()$/;" f class:ModbusRTUServerClass typeref:typename:int +ModbusRTUServer src/ModbusRTUServer.cpp /^ModbusRTUServerClass ModbusRTUServer;$/;" v typeref:typename:ModbusRTUServerClass +ModbusTCPServer src/ModbusTCPServer.cpp /^ModbusTCPServer::ModbusTCPServer() :$/;" f class:ModbusTCPServer +~ModbusTCPServer src/ModbusTCPServer.cpp /^ModbusTCPServer::~ModbusTCPServer()$/;" f class:ModbusTCPServer +begin src/ModbusTCPServer.cpp /^int ModbusTCPServer::begin(int id)$/;" f class:ModbusTCPServer typeref:typename:int +accept src/ModbusTCPServer.cpp /^void ModbusTCPServer::accept(Client& client)$/;" f class:ModbusTCPServer typeref:typename:void +poll src/ModbusTCPServer.cpp /^int ModbusTCPServer::poll()$/;" f class:ModbusTCPServer typeref:typename:int +_MODBUS_TCP_SERVER_H_INCLUDED src/ModbusTCPServer.h /^#define _MODBUS_TCP_SERVER_H_INCLUDED$/;" d +ModbusTCPServer src/ModbusTCPServer.h /^class ModbusTCPServer : public ModbusServer {$/;" c +_client src/ModbusTCPServer.h /^ Client* _client;$/;" m class:ModbusTCPServer typeref:typename:Client * +_MODBUS_RTU_SERVER_H_INCLUDED src/ModbusRTUServer.h /^#define _MODBUS_RTU_SERVER_H_INCLUDED$/;" d +ModbusRTUServerClass src/ModbusRTUServer.h /^class ModbusRTUServerClass : public ModbusServer {$/;" c +_rs485 src/ModbusRTUServer.h /^ RS485Class* _rs485 = &RS485;$/;" m class:ModbusRTUServerClass typeref:typename:RS485Class * +_MODBUS_CLIENT_H_INCLUDED src/ModbusClient.h /^#define _MODBUS_CLIENT_H_INCLUDED$/;" d +COILS src/ModbusClient.h /^#define COILS /;" d +DISCRETE_INPUTS src/ModbusClient.h /^#define DISCRETE_INPUTS /;" d +HOLDING_REGISTERS src/ModbusClient.h /^#define HOLDING_REGISTERS /;" d +INPUT_REGISTERS src/ModbusClient.h /^#define INPUT_REGISTERS /;" d +ModbusClient src/ModbusClient.h /^class ModbusClient {$/;" c +_mb src/ModbusClient.h /^ modbus_t* _mb;$/;" m class:ModbusClient typeref:typename:modbus_t * +_timeout src/ModbusClient.h /^ unsigned long _timeout;$/;" m class:ModbusClient typeref:typename:unsigned long +_defaultId src/ModbusClient.h /^ int _defaultId;$/;" m class:ModbusClient typeref:typename:int +_transmissionBegun src/ModbusClient.h /^ bool _transmissionBegun;$/;" m class:ModbusClient typeref:typename:bool +_id src/ModbusClient.h /^ int _id;$/;" m class:ModbusClient typeref:typename:int +_type src/ModbusClient.h /^ int _type;$/;" m class:ModbusClient typeref:typename:int +_address src/ModbusClient.h /^ int _address;$/;" m class:ModbusClient typeref:typename:int +_nb src/ModbusClient.h /^ int _nb;$/;" m class:ModbusClient typeref:typename:int +_values src/ModbusClient.h /^ void* _values;$/;" m class:ModbusClient typeref:typename:void * +_available src/ModbusClient.h /^ int _available;$/;" m class:ModbusClient typeref:typename:int +_read src/ModbusClient.h /^ int _read;$/;" m class:ModbusClient typeref:typename:int +_availableForWrite src/ModbusClient.h /^ int _availableForWrite;$/;" m class:ModbusClient typeref:typename:int +_written src/ModbusClient.h /^ int _written;$/;" m class:ModbusClient typeref:typename:int +ModbusTCPClient src/ModbusTCPClient.cpp /^ModbusTCPClient::ModbusTCPClient(Client& client) :$/;" f class:ModbusTCPClient +~ModbusTCPClient src/ModbusTCPClient.cpp /^ModbusTCPClient::~ModbusTCPClient()$/;" f class:ModbusTCPClient +begin src/ModbusTCPClient.cpp /^int ModbusTCPClient::begin(IPAddress ip, uint16_t port)$/;" f class:ModbusTCPClient typeref:typename:int +connected src/ModbusTCPClient.cpp /^int ModbusTCPClient::connected()$/;" f class:ModbusTCPClient typeref:typename:int +stop src/ModbusTCPClient.cpp /^void ModbusTCPClient::stop()$/;" f class:ModbusTCPClient typeref:typename:void +_MODBUS_TCP_CLIENT_H_INCLUDED src/ModbusTCPClient.h /^#define _MODBUS_TCP_CLIENT_H_INCLUDED$/;" d +ModbusTCPClient src/ModbusTCPClient.h /^class ModbusTCPClient : public ModbusClient {$/;" c +_client src/ModbusTCPClient.h /^ Client* _client;$/;" m class:ModbusTCPClient typeref:typename:Client * +ModbusServer src/ModbusServer.cpp /^ModbusServer::ModbusServer() :$/;" f class:ModbusServer +~ModbusServer src/ModbusServer.cpp /^ModbusServer::~ModbusServer()$/;" f class:ModbusServer +configureCoils src/ModbusServer.cpp /^int ModbusServer::configureCoils(int startAddress, int nb)$/;" f class:ModbusServer typeref:typename:int +configureDiscreteInputs src/ModbusServer.cpp /^int ModbusServer::configureDiscreteInputs(int startAddress, int nb)$/;" f class:ModbusServer typeref:typename:int +configureHoldingRegisters src/ModbusServer.cpp /^int ModbusServer::configureHoldingRegisters(int startAddress, int nb)$/;" f class:ModbusServer typeref:typename:int +configureInputRegisters src/ModbusServer.cpp /^int ModbusServer::configureInputRegisters(int startAddress, int nb)$/;" f class:ModbusServer typeref:typename:int +coilRead src/ModbusServer.cpp /^int ModbusServer::coilRead(int address)$/;" f class:ModbusServer typeref:typename:int +discreteInputRead src/ModbusServer.cpp /^int ModbusServer::discreteInputRead(int address)$/;" f class:ModbusServer typeref:typename:int +holdingRegisterRead src/ModbusServer.cpp /^long ModbusServer::holdingRegisterRead(int address)$/;" f class:ModbusServer typeref:typename:long +inputRegisterRead src/ModbusServer.cpp /^long ModbusServer::inputRegisterRead(int address)$/;" f class:ModbusServer typeref:typename:long +coilWrite src/ModbusServer.cpp /^int ModbusServer::coilWrite(int address, uint8_t value)$/;" f class:ModbusServer typeref:typename:int +holdingRegisterWrite src/ModbusServer.cpp /^int ModbusServer::holdingRegisterWrite(int address, uint16_t value)$/;" f class:ModbusServer typeref:typename:int +registerMaskWrite src/ModbusServer.cpp /^int ModbusServer::registerMaskWrite(int address, uint16_t andMask, uint16_t orMask)$/;" f class:ModbusServer typeref:typename:int +discreteInputWrite src/ModbusServer.cpp /^int ModbusServer::discreteInputWrite(int address, uint8_t value)$/;" f class:ModbusServer typeref:typename:int +writeDiscreteInputs src/ModbusServer.cpp /^int ModbusServer::writeDiscreteInputs(int address, uint8_t values[], int nb)$/;" f class:ModbusServer typeref:typename:int +inputRegisterWrite src/ModbusServer.cpp /^int ModbusServer::inputRegisterWrite(int address, uint16_t value)$/;" f class:ModbusServer typeref:typename:int +writeInputRegisters src/ModbusServer.cpp /^int ModbusServer::writeInputRegisters(int address, uint16_t values[], int nb)$/;" f class:ModbusServer typeref:typename:int +begin src/ModbusServer.cpp /^int ModbusServer::begin(modbus_t* mb, int id)$/;" f class:ModbusServer typeref:typename:int +end src/ModbusServer.cpp /^void ModbusServer::end()$/;" f class:ModbusServer typeref:typename:void +ModbusRTUClientClass src/ModbusRTUClient.cpp /^ModbusRTUClientClass::ModbusRTUClientClass() :$/;" f class:ModbusRTUClientClass +ModbusRTUClientClass src/ModbusRTUClient.cpp /^ModbusRTUClientClass::ModbusRTUClientClass(RS485Class& rs485) :$/;" f class:ModbusRTUClientClass +~ModbusRTUClientClass src/ModbusRTUClient.cpp /^ModbusRTUClientClass::~ModbusRTUClientClass()$/;" f class:ModbusRTUClientClass +begin src/ModbusRTUClient.cpp /^int ModbusRTUClientClass::begin(unsigned long baudrate, uint16_t config)$/;" f class:ModbusRTUClientClass typeref:typename:int +begin src/ModbusRTUClient.cpp /^int ModbusRTUClientClass::begin(RS485Class& rs485, unsigned long baudrate, uint16_t config)$/;" f class:ModbusRTUClientClass typeref:typename:int +ModbusRTUClient src/ModbusRTUClient.cpp /^ModbusRTUClientClass ModbusRTUClient;$/;" v typeref:typename:ModbusRTUClientClass +printf src/libmodbus/modbus-rtu.cpp /^#define printf(/;" d file: +fprintf src/libmodbus/modbus-rtu.cpp /^#define fprintf(/;" d file: +EIO src/libmodbus/modbus-rtu.cpp /^#define EIO /;" d file: +EINVAL src/libmodbus/modbus-rtu.cpp /^#define EINVAL /;" d file: +ENOPROTOOPT src/libmodbus/modbus-rtu.cpp /^#define ENOPROTOOPT /;" d file: +ECONNREFUSED src/libmodbus/modbus-rtu.cpp /^#define ECONNREFUSED /;" d file: +ETIMEDOUT src/libmodbus/modbus-rtu.cpp /^#define ETIMEDOUT /;" d file: +ENOTSUP src/libmodbus/modbus-rtu.cpp /^#define ENOTSUP /;" d file: +table_crc_hi src/libmodbus/modbus-rtu.cpp /^static PROGMEM const uint8_t table_crc_hi[] = {$/;" v typeref:typename:PROGMEM const uint8_t[] file: +table_crc_lo src/libmodbus/modbus-rtu.cpp /^static PROGMEM const uint8_t table_crc_lo[] = {$/;" v typeref:typename:PROGMEM const uint8_t[] file: +_modbus_set_slave src/libmodbus/modbus-rtu.cpp /^static int _modbus_set_slave(modbus_t *ctx, int slave)$/;" f typeref:typename:int file: +_modbus_rtu_build_request_basis src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_build_request_basis(modbus_t *ctx, int function,$/;" f typeref:typename:int file: +_modbus_rtu_build_response_basis src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_build_response_basis(sft_t *sft, uint8_t *rsp)$/;" f typeref:typename:int file: +crc16 src/libmodbus/modbus-rtu.cpp /^static uint16_t crc16(uint8_t *buffer, uint16_t buffer_length)$/;" f typeref:typename:uint16_t file: +_modbus_rtu_prepare_response_tid src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_prepare_response_tid(const uint8_t *req, int *req_length)$/;" f typeref:typename:int file: +_modbus_rtu_send_msg_pre src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_send_msg_pre(uint8_t *req, int req_length)$/;" f typeref:typename:int file: +win32_ser_init src/libmodbus/modbus-rtu.cpp /^static void win32_ser_init(struct win32_ser *ws)$/;" f typeref:typename:void file: +win32_ser_select src/libmodbus/modbus-rtu.cpp /^static int win32_ser_select(struct win32_ser *ws, int max_len,$/;" f typeref:typename:int file: +win32_ser_read src/libmodbus/modbus-rtu.cpp /^static int win32_ser_read(struct win32_ser *ws, uint8_t *p_msg,$/;" f typeref:typename:int file: +_modbus_rtu_ioctl_rts src/libmodbus/modbus-rtu.cpp /^static void _modbus_rtu_ioctl_rts(modbus_t *ctx, int on)$/;" f typeref:typename:void file: +_modbus_rtu_send src/libmodbus/modbus-rtu.cpp /^static ssize_t _modbus_rtu_send(modbus_t *ctx, const uint8_t *req, int req_length)$/;" f typeref:typename:ssize_t file: +_modbus_rtu_receive src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_receive(modbus_t *ctx, uint8_t *req)$/;" f typeref:typename:int file: +_modbus_rtu_recv src/libmodbus/modbus-rtu.cpp /^static ssize_t _modbus_rtu_recv(modbus_t *ctx, uint8_t *rsp, int rsp_length)$/;" f typeref:typename:ssize_t file: +_modbus_rtu_pre_check_confirmation src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_pre_check_confirmation(modbus_t *ctx, const uint8_t *req,$/;" f typeref:typename:int file: +_modbus_rtu_check_integrity src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_check_integrity(modbus_t *ctx, uint8_t *msg,$/;" f typeref:typename:int file: +_modbus_rtu_connect src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_connect(modbus_t *ctx)$/;" f typeref:typename:int file: +modbus_rtu_set_serial_mode src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_set_serial_mode(modbus_t *ctx, int mode)$/;" f typeref:typename:int +modbus_rtu_get_serial_mode src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_get_serial_mode(modbus_t *ctx)$/;" f typeref:typename:int +modbus_rtu_get_rts src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_get_rts(modbus_t *ctx)$/;" f typeref:typename:int +modbus_rtu_set_rts src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_set_rts(modbus_t *ctx, int mode)$/;" f typeref:typename:int +modbus_rtu_set_custom_rts src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_set_custom_rts(modbus_t *ctx, void (*set_rts) (modbus_t *ctx, int on))$/;" f typeref:typename:int +modbus_rtu_get_rts_delay src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_get_rts_delay(modbus_t *ctx)$/;" f typeref:typename:int +modbus_rtu_set_rts_delay src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_set_rts_delay(modbus_t *ctx, int us)$/;" f typeref:typename:int +_modbus_rtu_close src/libmodbus/modbus-rtu.cpp /^static void _modbus_rtu_close(modbus_t *ctx)$/;" f typeref:typename:void file: +_modbus_rtu_flush src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_flush(modbus_t *ctx)$/;" f typeref:typename:int file: +_modbus_rtu_select src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_select(modbus_t *ctx, fd_set *rset,$/;" f typeref:typename:int file: +_modbus_rtu_free src/libmodbus/modbus-rtu.cpp /^static void _modbus_rtu_free(modbus_t *ctx) {$/;" f typeref:typename:void file: +_modbus_rtu_backend src/libmodbus/modbus-rtu.cpp /^const modbus_backend_t _modbus_rtu_backend = {$/;" v typeref:typename:const modbus_backend_t +modbus_new_rtu src/libmodbus/modbus-rtu.cpp /^modbus_t* modbus_new_rtu(RS485Class *rs485, unsigned long baud, uint16_t config)$/;" f typeref:typename:modbus_t * +OS_WIN32 src/libmodbus/modbus-tcp.cpp /^# define OS_WIN32$/;" d file: +WINVER src/libmodbus/modbus-tcp.cpp /^# define WINVER /;" d file: +SHUT_RDWR src/libmodbus/modbus-tcp.cpp /^# define SHUT_RDWR /;" d file: +close src/libmodbus/modbus-tcp.cpp /^# define close closes/;" d file: +printf src/libmodbus/modbus-tcp.cpp /^#define printf(/;" d file: +fprintf src/libmodbus/modbus-tcp.cpp /^#define fprintf(/;" d file: +OS_BSD src/libmodbus/modbus-tcp.cpp /^# define OS_BSD$/;" d file: +MSG_NOSIGNAL src/libmodbus/modbus-tcp.cpp /^#define MSG_NOSIGNAL /;" d file: +MSG_DONTWAIT src/libmodbus/modbus-tcp.cpp /^#define MSG_DONTWAIT /;" d file: +EIO src/libmodbus/modbus-tcp.cpp /^#define EIO /;" d file: +EINVAL src/libmodbus/modbus-tcp.cpp /^#define EINVAL /;" d file: +ENOPROTOOPT src/libmodbus/modbus-tcp.cpp /^#define ENOPROTOOPT /;" d file: +ECONNREFUSED src/libmodbus/modbus-tcp.cpp /^#define ECONNREFUSED /;" d file: +ETIMEDOUT src/libmodbus/modbus-tcp.cpp /^#define ETIMEDOUT /;" d file: +ENOTSUP src/libmodbus/modbus-tcp.cpp /^#define ENOTSUP /;" d file: +_modbus_tcp_init_win32 src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_init_win32(void)$/;" f typeref:typename:int file: +_modbus_set_slave src/libmodbus/modbus-tcp.cpp /^static int _modbus_set_slave(modbus_t *ctx, int slave)$/;" f typeref:typename:int file: +_modbus_tcp_build_request_basis src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_build_request_basis(modbus_t *ctx, int function,$/;" f typeref:typename:int file: +_modbus_tcp_build_response_basis src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_build_response_basis(sft_t *sft, uint8_t *rsp)$/;" f typeref:typename:int file: +_modbus_tcp_prepare_response_tid src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_prepare_response_tid(const uint8_t *req, int *req_length)$/;" f typeref:typename:int file: +_modbus_tcp_send_msg_pre src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_send_msg_pre(uint8_t *req, int req_length)$/;" f typeref:typename:int file: +_modbus_tcp_send src/libmodbus/modbus-tcp.cpp /^static ssize_t _modbus_tcp_send(modbus_t *ctx, const uint8_t *req, int req_length)$/;" f typeref:typename:ssize_t file: +_modbus_tcp_receive src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_receive(modbus_t *ctx, uint8_t *req) {$/;" f typeref:typename:int file: +_modbus_tcp_recv src/libmodbus/modbus-tcp.cpp /^static ssize_t _modbus_tcp_recv(modbus_t *ctx, uint8_t *rsp, int rsp_length) {$/;" f typeref:typename:ssize_t file: +_modbus_tcp_check_integrity src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_check_integrity(modbus_t *ctx, uint8_t *msg, const int msg_length)$/;" f typeref:typename:int file: +_modbus_tcp_pre_check_confirmation src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_pre_check_confirmation(modbus_t *ctx, const uint8_t *req,$/;" f typeref:typename:int file: +_modbus_tcp_set_ipv4_options src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_set_ipv4_options(int s)$/;" f typeref:typename:int file: +_connect src/libmodbus/modbus-tcp.cpp /^static int _connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen,$/;" f typeref:typename:int file: +_modbus_tcp_connect src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_connect(modbus_t *ctx)$/;" f typeref:typename:int file: +_modbus_tcp_pi_connect src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_pi_connect(modbus_t *ctx)$/;" f typeref:typename:int file: +_modbus_tcp_close src/libmodbus/modbus-tcp.cpp /^static void _modbus_tcp_close(modbus_t *ctx)$/;" f typeref:typename:void file: +_modbus_tcp_flush src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_flush(modbus_t *ctx)$/;" f typeref:typename:int file: +modbus_tcp_listen src/libmodbus/modbus-tcp.cpp /^int modbus_tcp_listen(modbus_t *ctx)$/;" f typeref:typename:int +modbus_tcp_pi_listen src/libmodbus/modbus-tcp.cpp /^int modbus_tcp_pi_listen(modbus_t *ctx, int nb_connection)$/;" f typeref:typename:int +modbus_tcp_accept src/libmodbus/modbus-tcp.cpp /^int modbus_tcp_accept(modbus_t *ctx, arduino::Client* client)$/;" f typeref:typename:int +modbus_tcp_pi_accept src/libmodbus/modbus-tcp.cpp /^int modbus_tcp_pi_accept(modbus_t *ctx, int *s)$/;" f typeref:typename:int +_modbus_tcp_select src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_select(modbus_t *ctx, fd_set *rset, struct timeval *tv, int length_to_rea/;" f typeref:typename:int file: +_modbus_tcp_free src/libmodbus/modbus-tcp.cpp /^static void _modbus_tcp_free(modbus_t *ctx) {$/;" f typeref:typename:void file: +_modbus_tcp_backend src/libmodbus/modbus-tcp.cpp /^const modbus_backend_t _modbus_tcp_backend = {$/;" v typeref:typename:const modbus_backend_t +_modbus_tcp_pi_backend src/libmodbus/modbus-tcp.cpp /^const modbus_backend_t _modbus_tcp_pi_backend = {$/;" v typeref:typename:const modbus_backend_t +modbus_new_tcp src/libmodbus/modbus-tcp.cpp /^modbus_t* modbus_new_tcp(arduino::Client* client, arduino::IPAddress ip_address, int port)$/;" f typeref:typename:modbus_t * +modbus_new_tcp_pi src/libmodbus/modbus-tcp.cpp /^modbus_t* modbus_new_tcp_pi(const char *node, const char *service)$/;" f typeref:typename:modbus_t * +MODBUS_H src/libmodbus/modbus.h /^#define MODBUS_H$/;" d +MODBUS_API src/libmodbus/modbus.h /^# define MODBUS_API /;" d +MODBUS_API src/libmodbus/modbus.h /^# define MODBUS_API /;" d +MODBUS_API src/libmodbus/modbus.h /^# define MODBUS_API$/;" d +MODBUS_BEGIN_DECLS src/libmodbus/modbus.h /^# define MODBUS_BEGIN_DECLS /;" d +MODBUS_END_DECLS src/libmodbus/modbus.h /^# define MODBUS_END_DECLS /;" d +MODBUS_BEGIN_DECLS src/libmodbus/modbus.h /^# define MODBUS_BEGIN_DECLS$/;" d +MODBUS_END_DECLS src/libmodbus/modbus.h /^# define MODBUS_END_DECLS$/;" d +FALSE src/libmodbus/modbus.h /^#define FALSE /;" d +TRUE src/libmodbus/modbus.h /^#define TRUE /;" d +MODBUS_FC_READ_COILS src/libmodbus/modbus.h /^#define MODBUS_FC_READ_COILS /;" d +MODBUS_FC_READ_DISCRETE_INPUTS src/libmodbus/modbus.h /^#define MODBUS_FC_READ_DISCRETE_INPUTS /;" d +MODBUS_FC_READ_HOLDING_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_FC_READ_HOLDING_REGISTERS /;" d +MODBUS_FC_READ_INPUT_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_FC_READ_INPUT_REGISTERS /;" d +MODBUS_FC_WRITE_SINGLE_COIL src/libmodbus/modbus.h /^#define MODBUS_FC_WRITE_SINGLE_COIL /;" d +MODBUS_FC_WRITE_SINGLE_REGISTER src/libmodbus/modbus.h /^#define MODBUS_FC_WRITE_SINGLE_REGISTER /;" d +MODBUS_FC_READ_EXCEPTION_STATUS src/libmodbus/modbus.h /^#define MODBUS_FC_READ_EXCEPTION_STATUS /;" d +MODBUS_FC_WRITE_MULTIPLE_COILS src/libmodbus/modbus.h /^#define MODBUS_FC_WRITE_MULTIPLE_COILS /;" d +MODBUS_FC_WRITE_MULTIPLE_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_FC_WRITE_MULTIPLE_REGISTERS /;" d +MODBUS_FC_REPORT_SLAVE_ID src/libmodbus/modbus.h /^#define MODBUS_FC_REPORT_SLAVE_ID /;" d +MODBUS_FC_MASK_WRITE_REGISTER src/libmodbus/modbus.h /^#define MODBUS_FC_MASK_WRITE_REGISTER /;" d +MODBUS_FC_WRITE_AND_READ_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_FC_WRITE_AND_READ_REGISTERS /;" d +MODBUS_BROADCAST_ADDRESS src/libmodbus/modbus.h /^#define MODBUS_BROADCAST_ADDRESS /;" d +MODBUS_MAX_READ_BITS src/libmodbus/modbus.h /^#define MODBUS_MAX_READ_BITS /;" d +MODBUS_MAX_WRITE_BITS src/libmodbus/modbus.h /^#define MODBUS_MAX_WRITE_BITS /;" d +MODBUS_MAX_READ_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_MAX_READ_REGISTERS /;" d +MODBUS_MAX_WRITE_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_MAX_WRITE_REGISTERS /;" d +MODBUS_MAX_WR_WRITE_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_MAX_WR_WRITE_REGISTERS /;" d +MODBUS_MAX_WR_READ_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_MAX_WR_READ_REGISTERS /;" d +MODBUS_MAX_PDU_LENGTH src/libmodbus/modbus.h /^#define MODBUS_MAX_PDU_LENGTH /;" d +MODBUS_MAX_ADU_LENGTH src/libmodbus/modbus.h /^#define MODBUS_MAX_ADU_LENGTH /;" d +MODBUS_ENOBASE src/libmodbus/modbus.h /^#define MODBUS_ENOBASE /;" d +__anonb309994c0103 src/libmodbus/modbus.h /^enum {$/;" g +MODBUS_EXCEPTION_ILLEGAL_FUNCTION src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_ILLEGAL_FUNCTION = 0x01,$/;" e enum:__anonb309994c0103 +MODBUS_EXCEPTION_ILLEGAL_DATA_ADDRESS src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_ILLEGAL_DATA_ADDRESS,$/;" e enum:__anonb309994c0103 +MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE,$/;" e enum:__anonb309994c0103 +MODBUS_EXCEPTION_SLAVE_OR_SERVER_FAILURE src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_SLAVE_OR_SERVER_FAILURE,$/;" e enum:__anonb309994c0103 +MODBUS_EXCEPTION_ACKNOWLEDGE src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_ACKNOWLEDGE,$/;" e enum:__anonb309994c0103 +MODBUS_EXCEPTION_SLAVE_OR_SERVER_BUSY src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_SLAVE_OR_SERVER_BUSY,$/;" e enum:__anonb309994c0103 +MODBUS_EXCEPTION_NEGATIVE_ACKNOWLEDGE src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_NEGATIVE_ACKNOWLEDGE,$/;" e enum:__anonb309994c0103 +MODBUS_EXCEPTION_MEMORY_PARITY src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_MEMORY_PARITY,$/;" e enum:__anonb309994c0103 +MODBUS_EXCEPTION_NOT_DEFINED src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_NOT_DEFINED,$/;" e enum:__anonb309994c0103 +MODBUS_EXCEPTION_GATEWAY_PATH src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_GATEWAY_PATH,$/;" e enum:__anonb309994c0103 +MODBUS_EXCEPTION_GATEWAY_TARGET src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_GATEWAY_TARGET,$/;" e enum:__anonb309994c0103 +MODBUS_EXCEPTION_MAX src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_MAX$/;" e enum:__anonb309994c0103 +EMBXILFUN src/libmodbus/modbus.h /^#define EMBXILFUN /;" d +EMBXILADD src/libmodbus/modbus.h /^#define EMBXILADD /;" d +EMBXILVAL src/libmodbus/modbus.h /^#define EMBXILVAL /;" d +EMBXSFAIL src/libmodbus/modbus.h /^#define EMBXSFAIL /;" d +EMBXACK src/libmodbus/modbus.h /^#define EMBXACK /;" d +EMBXSBUSY src/libmodbus/modbus.h /^#define EMBXSBUSY /;" d +EMBXNACK src/libmodbus/modbus.h /^#define EMBXNACK /;" d +EMBXMEMPAR src/libmodbus/modbus.h /^#define EMBXMEMPAR /;" d +EMBXGPATH src/libmodbus/modbus.h /^#define EMBXGPATH /;" d +EMBXGTAR src/libmodbus/modbus.h /^#define EMBXGTAR /;" d +EMBBADCRC src/libmodbus/modbus.h /^#define EMBBADCRC /;" d +EMBBADDATA src/libmodbus/modbus.h /^#define EMBBADDATA /;" d +EMBBADEXC src/libmodbus/modbus.h /^#define EMBBADEXC /;" d +EMBUNKEXC src/libmodbus/modbus.h /^#define EMBUNKEXC /;" d +EMBMDATA src/libmodbus/modbus.h /^#define EMBMDATA /;" d +EMBBADSLAVE src/libmodbus/modbus.h /^#define EMBBADSLAVE /;" d +modbus_t src/libmodbus/modbus.h /^typedef struct _modbus modbus_t;$/;" t typeref:struct:_modbus +__anonb309994c0208 src/libmodbus/modbus.h /^typedef struct {$/;" s +nb_bits src/libmodbus/modbus.h /^ int nb_bits;$/;" m struct:__anonb309994c0208 typeref:typename:int +start_bits src/libmodbus/modbus.h /^ int start_bits;$/;" m struct:__anonb309994c0208 typeref:typename:int +nb_input_bits src/libmodbus/modbus.h /^ int nb_input_bits;$/;" m struct:__anonb309994c0208 typeref:typename:int +start_input_bits src/libmodbus/modbus.h /^ int start_input_bits;$/;" m struct:__anonb309994c0208 typeref:typename:int +nb_input_registers src/libmodbus/modbus.h /^ int nb_input_registers;$/;" m struct:__anonb309994c0208 typeref:typename:int +start_input_registers src/libmodbus/modbus.h /^ int start_input_registers;$/;" m struct:__anonb309994c0208 typeref:typename:int +nb_registers src/libmodbus/modbus.h /^ int nb_registers;$/;" m struct:__anonb309994c0208 typeref:typename:int +start_registers src/libmodbus/modbus.h /^ int start_registers;$/;" m struct:__anonb309994c0208 typeref:typename:int +tab_bits src/libmodbus/modbus.h /^ uint8_t *tab_bits;$/;" m struct:__anonb309994c0208 typeref:typename:uint8_t * +tab_input_bits src/libmodbus/modbus.h /^ uint8_t *tab_input_bits;$/;" m struct:__anonb309994c0208 typeref:typename:uint8_t * +tab_input_registers src/libmodbus/modbus.h /^ uint16_t *tab_input_registers;$/;" m struct:__anonb309994c0208 typeref:typename:uint16_t * +tab_registers src/libmodbus/modbus.h /^ uint16_t *tab_registers;$/;" m struct:__anonb309994c0208 typeref:typename:uint16_t * +modbus_mapping_t src/libmodbus/modbus.h /^} modbus_mapping_t;$/;" t typeref:struct:__anonb309994c0208 +__anonb309994c0303 src/libmodbus/modbus.h /^{$/;" g +MODBUS_ERROR_RECOVERY_NONE src/libmodbus/modbus.h /^ MODBUS_ERROR_RECOVERY_NONE = 0,$/;" e enum:__anonb309994c0303 +MODBUS_ERROR_RECOVERY_LINK src/libmodbus/modbus.h /^ MODBUS_ERROR_RECOVERY_LINK = (1<<1),$/;" e enum:__anonb309994c0303 +MODBUS_ERROR_RECOVERY_PROTOCOL src/libmodbus/modbus.h /^ MODBUS_ERROR_RECOVERY_PROTOCOL = (1<<2)$/;" e enum:__anonb309994c0303 +modbus_error_recovery_mode src/libmodbus/modbus.h /^} modbus_error_recovery_mode;$/;" t typeref:enum:__anonb309994c0303 +MODBUS_GET_HIGH_BYTE src/libmodbus/modbus.h /^#define MODBUS_GET_HIGH_BYTE(/;" d +MODBUS_GET_LOW_BYTE src/libmodbus/modbus.h /^#define MODBUS_GET_LOW_BYTE(/;" d +MODBUS_GET_INT64_FROM_INT16 src/libmodbus/modbus.h /^#define MODBUS_GET_INT64_FROM_INT16(/;" d +MODBUS_GET_INT32_FROM_INT16 src/libmodbus/modbus.h /^#define MODBUS_GET_INT32_FROM_INT16(/;" d +MODBUS_GET_INT16_FROM_INT8 src/libmodbus/modbus.h /^#define MODBUS_GET_INT16_FROM_INT8(/;" d +MODBUS_SET_INT16_TO_INT8 src/libmodbus/modbus.h /^#define MODBUS_SET_INT16_TO_INT8(/;" d +MODBUS_SET_INT32_TO_INT16 src/libmodbus/modbus.h /^#define MODBUS_SET_INT32_TO_INT16(/;" d +MODBUS_SET_INT64_TO_INT16 src/libmodbus/modbus.h /^#define MODBUS_SET_INT64_TO_INT16(/;" d +MODBUS_PRIVATE_H src/libmodbus/modbus-private.h /^#define MODBUS_PRIVATE_H$/;" d +ssize_t src/libmodbus/modbus-private.h /^#define ssize_t /;" d +fd_set src/libmodbus/modbus-private.h /^#define fd_set /;" d +timeval src/libmodbus/modbus-private.h /^struct timeval {$/;" s +tv_sec src/libmodbus/modbus-private.h /^ uint32_t tv_sec;$/;" m struct:timeval typeref:typename:uint32_t +tv_usec src/libmodbus/modbus-private.h /^ uint32_t tv_usec;$/;" m struct:timeval typeref:typename:uint32_t +ssize_t src/libmodbus/modbus-private.h /^typedef int ssize_t;$/;" t typeref:typename:int +_MIN_REQ_LENGTH src/libmodbus/modbus-private.h /^#define _MIN_REQ_LENGTH /;" d +_REPORT_SLAVE_ID src/libmodbus/modbus-private.h /^#define _REPORT_SLAVE_ID /;" d +_MODBUS_EXCEPTION_RSP_LENGTH src/libmodbus/modbus-private.h /^#define _MODBUS_EXCEPTION_RSP_LENGTH /;" d +_RESPONSE_TIMEOUT src/libmodbus/modbus-private.h /^#define _RESPONSE_TIMEOUT /;" d +_BYTE_TIMEOUT src/libmodbus/modbus-private.h /^#define _BYTE_TIMEOUT /;" d +__anon22ae26940103 src/libmodbus/modbus-private.h /^typedef enum {$/;" g +_MODBUS_BACKEND_TYPE_RTU src/libmodbus/modbus-private.h /^ _MODBUS_BACKEND_TYPE_RTU=0,$/;" e enum:__anon22ae26940103 +_MODBUS_BACKEND_TYPE_TCP src/libmodbus/modbus-private.h /^ _MODBUS_BACKEND_TYPE_TCP$/;" e enum:__anon22ae26940103 +modbus_backend_type_t src/libmodbus/modbus-private.h /^} modbus_backend_type_t;$/;" t typeref:enum:__anon22ae26940103 +__anon22ae26940203 src/libmodbus/modbus-private.h /^typedef enum {$/;" g +MSG_INDICATION src/libmodbus/modbus-private.h /^ MSG_INDICATION,$/;" e enum:__anon22ae26940203 +MSG_CONFIRMATION src/libmodbus/modbus-private.h /^ MSG_CONFIRMATION$/;" e enum:__anon22ae26940203 +msg_type_t src/libmodbus/modbus-private.h /^} msg_type_t;$/;" t typeref:enum:__anon22ae26940203 +_sft src/libmodbus/modbus-private.h /^typedef struct _sft {$/;" s +slave src/libmodbus/modbus-private.h /^ int slave;$/;" m struct:_sft typeref:typename:int +function src/libmodbus/modbus-private.h /^ int function;$/;" m struct:_sft typeref:typename:int +t_id src/libmodbus/modbus-private.h /^ int t_id;$/;" m struct:_sft typeref:typename:int +sft_t src/libmodbus/modbus-private.h /^} sft_t;$/;" t typeref:struct:_sft +_modbus_backend src/libmodbus/modbus-private.h /^typedef struct _modbus_backend {$/;" s +backend_type src/libmodbus/modbus-private.h /^ unsigned int backend_type;$/;" m struct:_modbus_backend typeref:typename:unsigned int +header_length src/libmodbus/modbus-private.h /^ unsigned int header_length;$/;" m struct:_modbus_backend typeref:typename:unsigned int +checksum_length src/libmodbus/modbus-private.h /^ unsigned int checksum_length;$/;" m struct:_modbus_backend typeref:typename:unsigned int +max_adu_length src/libmodbus/modbus-private.h /^ unsigned int max_adu_length;$/;" m struct:_modbus_backend typeref:typename:unsigned int +set_slave src/libmodbus/modbus-private.h /^ int (*set_slave) (modbus_t *ctx, int slave);$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx,int slave) +build_request_basis src/libmodbus/modbus-private.h /^ int (*build_request_basis) (modbus_t *ctx, int function, int addr,$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx,int function,int addr,int nb,uint8_t * req) +build_response_basis src/libmodbus/modbus-private.h /^ int (*build_response_basis) (sft_t *sft, uint8_t *rsp);$/;" m struct:_modbus_backend typeref:typename:int (*)(sft_t * sft,uint8_t * rsp) +prepare_response_tid src/libmodbus/modbus-private.h /^ int (*prepare_response_tid) (const uint8_t *req, int *req_length);$/;" m struct:_modbus_backend typeref:typename:int (*)(const uint8_t * req,int * req_length) +send_msg_pre src/libmodbus/modbus-private.h /^ int (*send_msg_pre) (uint8_t *req, int req_length);$/;" m struct:_modbus_backend typeref:typename:int (*)(uint8_t * req,int req_length) +send src/libmodbus/modbus-private.h /^ ssize_t (*send) (modbus_t *ctx, const uint8_t *req, int req_length);$/;" m struct:_modbus_backend typeref:typename:ssize_t (*)(modbus_t * ctx,const uint8_t * req,int req_length) +receive src/libmodbus/modbus-private.h /^ int (*receive) (modbus_t *ctx, uint8_t *req);$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx,uint8_t * req) +recv src/libmodbus/modbus-private.h /^ ssize_t (*recv) (modbus_t *ctx, uint8_t *rsp, int rsp_length);$/;" m struct:_modbus_backend typeref:typename:ssize_t (*)(modbus_t * ctx,uint8_t * rsp,int rsp_length) +check_integrity src/libmodbus/modbus-private.h /^ int (*check_integrity) (modbus_t *ctx, uint8_t *msg,$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx,uint8_t * msg,const int msg_length) +pre_check_confirmation src/libmodbus/modbus-private.h /^ int (*pre_check_confirmation) (modbus_t *ctx, const uint8_t *req,$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx,const uint8_t * req,const uint8_t * rsp,int rsp_length) +connect src/libmodbus/modbus-private.h /^ int (*connect) (modbus_t *ctx);$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx) +close src/libmodbus/modbus-private.h /^ void (*close) (modbus_t *ctx);$/;" m struct:_modbus_backend typeref:typename:void (*)(modbus_t * ctx) +flush src/libmodbus/modbus-private.h /^ int (*flush) (modbus_t *ctx);$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx) +select src/libmodbus/modbus-private.h /^ int (*select) (modbus_t *ctx, fd_set *rset, struct timeval *tv, int msg_length);$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx,fd_set * rset,struct timeval * tv,int msg_length) +free src/libmodbus/modbus-private.h /^ void (*free) (modbus_t *ctx);$/;" m struct:_modbus_backend typeref:typename:void (*)(modbus_t * ctx) +modbus_backend_t src/libmodbus/modbus-private.h /^} modbus_backend_t;$/;" t typeref:struct:_modbus_backend +_modbus src/libmodbus/modbus-private.h /^struct _modbus {$/;" s +slave src/libmodbus/modbus-private.h /^ int slave;$/;" m struct:_modbus typeref:typename:int +s src/libmodbus/modbus-private.h /^ int s;$/;" m struct:_modbus typeref:typename:int +debug src/libmodbus/modbus-private.h /^ int debug;$/;" m struct:_modbus typeref:typename:int +error_recovery src/libmodbus/modbus-private.h /^ int error_recovery;$/;" m struct:_modbus typeref:typename:int +response_timeout src/libmodbus/modbus-private.h /^ struct timeval response_timeout;$/;" m struct:_modbus typeref:struct:timeval +byte_timeout src/libmodbus/modbus-private.h /^ struct timeval byte_timeout;$/;" m struct:_modbus typeref:struct:timeval +backend src/libmodbus/modbus-private.h /^ const modbus_backend_t *backend;$/;" m struct:_modbus typeref:typename:const modbus_backend_t * +backend_data src/libmodbus/modbus-private.h /^ void *backend_data;$/;" m struct:_modbus typeref:typename:void * +MODBUS_TCP_H src/libmodbus/modbus-tcp.h /^#define MODBUS_TCP_H$/;" d +__NEED_NAMESPACE__ src/libmodbus/modbus-tcp.h /^#define __NEED_NAMESPACE__$/;" d +arduino src/libmodbus/modbus-tcp.h /^namespace arduino {$/;" n +ECONNRESET src/libmodbus/modbus-tcp.h /^#define ECONNRESET WSAECONNRESET$/;" d +ECONNREFUSED src/libmodbus/modbus-tcp.h /^#define ECONNREFUSED WSAECONNREFUSED$/;" d +ETIMEDOUT src/libmodbus/modbus-tcp.h /^#define ETIMEDOUT WSAETIMEDOUT$/;" d +ENOPROTOOPT src/libmodbus/modbus-tcp.h /^#define ENOPROTOOPT WSAENOPROTOOPT$/;" d +EINPROGRESS src/libmodbus/modbus-tcp.h /^#define EINPROGRESS WSAEINPROGRESS$/;" d +MODBUS_TCP_DEFAULT_PORT src/libmodbus/modbus-tcp.h /^#define MODBUS_TCP_DEFAULT_PORT /;" d +MODBUS_TCP_SLAVE src/libmodbus/modbus-tcp.h /^#define MODBUS_TCP_SLAVE /;" d +MODBUS_TCP_MAX_ADU_LENGTH src/libmodbus/modbus-tcp.h /^#define MODBUS_TCP_MAX_ADU_LENGTH /;" d +MODBUS_VERSION_H src/libmodbus/modbus-version.h /^#define MODBUS_VERSION_H$/;" d +LIBMODBUS_VERSION_MAJOR src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION_MAJOR /;" d +LIBMODBUS_VERSION_MINOR src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION_MINOR /;" d +LIBMODBUS_VERSION_MICRO src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION_MICRO /;" d +LIBMODBUS_VERSION src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION /;" d +LIBMODBUS_VERSION_STRING src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION_STRING /;" d +LIBMODBUS_VERSION_HEX src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION_HEX /;" d +LIBMODBUS_VERSION_CHECK src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION_CHECK(/;" d +MODBUS_TCP_PRIVATE_H src/libmodbus/modbus-tcp-private.h /^#define MODBUS_TCP_PRIVATE_H$/;" d +_MODBUS_TCP_HEADER_LENGTH src/libmodbus/modbus-tcp-private.h /^#define _MODBUS_TCP_HEADER_LENGTH /;" d +_MODBUS_TCP_PRESET_REQ_LENGTH src/libmodbus/modbus-tcp-private.h /^#define _MODBUS_TCP_PRESET_REQ_LENGTH /;" d +_MODBUS_TCP_PRESET_RSP_LENGTH src/libmodbus/modbus-tcp-private.h /^#define _MODBUS_TCP_PRESET_RSP_LENGTH /;" d +_MODBUS_TCP_CHECKSUM_LENGTH src/libmodbus/modbus-tcp-private.h /^#define _MODBUS_TCP_CHECKSUM_LENGTH /;" d +_modbus_tcp src/libmodbus/modbus-tcp-private.h /^typedef struct _modbus_tcp {$/;" s +t_id src/libmodbus/modbus-tcp-private.h /^ uint16_t t_id;$/;" m struct:_modbus_tcp typeref:typename:uint16_t +port src/libmodbus/modbus-tcp-private.h /^ int port;$/;" m struct:_modbus_tcp typeref:typename:int +ip src/libmodbus/modbus-tcp-private.h /^ IPAddress ip;$/;" m struct:_modbus_tcp typeref:typename:IPAddress +client src/libmodbus/modbus-tcp-private.h /^ Client* client;$/;" m struct:_modbus_tcp typeref:typename:Client * +ip src/libmodbus/modbus-tcp-private.h /^ char ip[16];$/;" m struct:_modbus_tcp typeref:typename:char[16] +modbus_tcp_t src/libmodbus/modbus-tcp-private.h /^} modbus_tcp_t;$/;" t typeref:struct:_modbus_tcp +_MODBUS_TCP_PI_NODE_LENGTH src/libmodbus/modbus-tcp-private.h /^#define _MODBUS_TCP_PI_NODE_LENGTH /;" d +_MODBUS_TCP_PI_SERVICE_LENGTH src/libmodbus/modbus-tcp-private.h /^#define _MODBUS_TCP_PI_SERVICE_LENGTH /;" d +_modbus_tcp_pi src/libmodbus/modbus-tcp-private.h /^typedef struct _modbus_tcp_pi {$/;" s +t_id src/libmodbus/modbus-tcp-private.h /^ uint16_t t_id;$/;" m struct:_modbus_tcp_pi typeref:typename:uint16_t +port src/libmodbus/modbus-tcp-private.h /^ int port;$/;" m struct:_modbus_tcp_pi typeref:typename:int +node src/libmodbus/modbus-tcp-private.h /^ char node[_MODBUS_TCP_PI_NODE_LENGTH];$/;" m struct:_modbus_tcp_pi typeref:typename:char[] +service src/libmodbus/modbus-tcp-private.h /^ char service[_MODBUS_TCP_PI_SERVICE_LENGTH];$/;" m struct:_modbus_tcp_pi typeref:typename:char[] +modbus_tcp_pi_t src/libmodbus/modbus-tcp-private.h /^} modbus_tcp_pi_t;$/;" t typeref:struct:_modbus_tcp_pi +MODBUS_RTU_H src/libmodbus/modbus-rtu.h /^#define MODBUS_RTU_H$/;" d +MODBUS_RTU_MAX_ADU_LENGTH src/libmodbus/modbus-rtu.h /^#define MODBUS_RTU_MAX_ADU_LENGTH /;" d +MODBUS_RTU_PRIVATE_H src/libmodbus/modbus-rtu-private.h /^#define MODBUS_RTU_PRIVATE_H$/;" d +_MODBUS_RTU_HEADER_LENGTH src/libmodbus/modbus-rtu-private.h /^#define _MODBUS_RTU_HEADER_LENGTH /;" d +_MODBUS_RTU_PRESET_REQ_LENGTH src/libmodbus/modbus-rtu-private.h /^#define _MODBUS_RTU_PRESET_REQ_LENGTH /;" d +_MODBUS_RTU_PRESET_RSP_LENGTH src/libmodbus/modbus-rtu-private.h /^#define _MODBUS_RTU_PRESET_RSP_LENGTH /;" d +_MODBUS_RTU_CHECKSUM_LENGTH src/libmodbus/modbus-rtu-private.h /^#define _MODBUS_RTU_CHECKSUM_LENGTH /;" d +ENOTSUP src/libmodbus/modbus-rtu-private.h /^#define ENOTSUP /;" d +PY_BUF_SIZE src/libmodbus/modbus-rtu-private.h /^#define PY_BUF_SIZE /;" d +win32_ser src/libmodbus/modbus-rtu-private.h /^struct win32_ser {$/;" s +fd src/libmodbus/modbus-rtu-private.h /^ HANDLE fd;$/;" m struct:win32_ser typeref:typename:HANDLE +buf src/libmodbus/modbus-rtu-private.h /^ uint8_t buf[PY_BUF_SIZE];$/;" m struct:win32_ser typeref:typename:uint8_t[] +n_bytes src/libmodbus/modbus-rtu-private.h /^ DWORD n_bytes;$/;" m struct:win32_ser typeref:typename:DWORD +_modbus_rtu src/libmodbus/modbus-rtu-private.h /^typedef struct _modbus_rtu {$/;" s +baud src/libmodbus/modbus-rtu-private.h /^ unsigned long baud;$/;" m struct:_modbus_rtu typeref:typename:unsigned long +config src/libmodbus/modbus-rtu-private.h /^ uint16_t config;$/;" m struct:_modbus_rtu typeref:typename:uint16_t +rs485 src/libmodbus/modbus-rtu-private.h /^ RS485Class* rs485;$/;" m struct:_modbus_rtu typeref:typename:RS485Class * +confirmation_to_ignore src/libmodbus/modbus-rtu-private.h /^ int confirmation_to_ignore;$/;" m struct:_modbus_rtu typeref:typename:int +modbus_rtu_t src/libmodbus/modbus-rtu-private.h /^} modbus_rtu_t;$/;" t typeref:struct:_modbus_rtu +!_TAG_KIND_DESCRIPTION!C d,macro /macro definitions/ +!_TAG_KIND_DESCRIPTION!C e,enumerator /enumerators (values inside an enumeration)/ +!_TAG_KIND_DESCRIPTION!C f,function /function definitions/ +!_TAG_KIND_DESCRIPTION!C g,enum /enumeration names/ +!_TAG_KIND_DESCRIPTION!C h,header /included header files/ +!_TAG_KIND_DESCRIPTION!C m,member /struct, and union members/ +!_TAG_KIND_DESCRIPTION!C s,struct /structure names/ +!_TAG_KIND_DESCRIPTION!C t,typedef /typedefs/ +!_TAG_KIND_DESCRIPTION!C u,union /union names/ +!_TAG_KIND_DESCRIPTION!C v,variable /variable definitions/ +!_TAG_ROLE_DESCRIPTION!C!macro undef /undefined/ +!_TAG_ROLE_DESCRIPTION!C!header system /system header/ +!_TAG_ROLE_DESCRIPTION!C!header local /local header/ +!_TAG_PARSER_VERSION!C 0.0 /current.age/ +printf src/libmodbus/modbus.c /^#define printf(/;" d file: +fprintf src/libmodbus/modbus.c /^#define fprintf(/;" d file: +EIO src/libmodbus/modbus.c /^#define EIO /;" d file: +EINVAL src/libmodbus/modbus.c /^#define EINVAL /;" d file: +ENOPROTOOPT src/libmodbus/modbus.c /^#define ENOPROTOOPT /;" d file: +ECONNREFUSED src/libmodbus/modbus.c /^#define ECONNREFUSED /;" d file: +ETIMEDOUT src/libmodbus/modbus.c /^#define ETIMEDOUT /;" d file: +ENOTSUP src/libmodbus/modbus.c /^#define ENOTSUP /;" d file: +MSG_LENGTH_UNDEFINED src/libmodbus/modbus.c /^#define MSG_LENGTH_UNDEFINED /;" d file: +libmodbus_version_major src/libmodbus/modbus.c /^const unsigned int libmodbus_version_major = LIBMODBUS_VERSION_MAJOR;$/;" v typeref:typename:const unsigned int +libmodbus_version_minor src/libmodbus/modbus.c /^const unsigned int libmodbus_version_minor = LIBMODBUS_VERSION_MINOR;$/;" v typeref:typename:const unsigned int +libmodbus_version_micro src/libmodbus/modbus.c /^const unsigned int libmodbus_version_micro = LIBMODBUS_VERSION_MICRO;$/;" v typeref:typename:const unsigned int +MAX_MESSAGE_LENGTH src/libmodbus/modbus.c /^#define MAX_MESSAGE_LENGTH /;" d file: +__anonb30999470103 src/libmodbus/modbus.c /^typedef enum {$/;" g file: +_STEP_FUNCTION src/libmodbus/modbus.c /^ _STEP_FUNCTION,$/;" e enum:__anonb30999470103 file: +_STEP_META src/libmodbus/modbus.c /^ _STEP_META,$/;" e enum:__anonb30999470103 file: +_STEP_DATA src/libmodbus/modbus.c /^ _STEP_DATA$/;" e enum:__anonb30999470103 file: +_step_t src/libmodbus/modbus.c /^} _step_t;$/;" t typeref:enum:__anonb30999470103 file: +strerror src/libmodbus/modbus.c /^char *strerror(int errnum)$/;" f typeref:typename:char * +modbus_strerror src/libmodbus/modbus.c /^const char *modbus_strerror(int errnum) {$/;" f typeref:typename:const char * +_error_print src/libmodbus/modbus.c /^void _error_print(modbus_t *ctx, const char *context)$/;" f typeref:typename:void +_sleep_response_timeout src/libmodbus/modbus.c /^static void _sleep_response_timeout(modbus_t *ctx)$/;" f typeref:typename:void file: +modbus_flush src/libmodbus/modbus.c /^int modbus_flush(modbus_t *ctx)$/;" f typeref:typename:int +compute_response_length_from_request src/libmodbus/modbus.c /^static unsigned int compute_response_length_from_request(modbus_t *ctx, uint8_t *req)$/;" f typeref:typename:unsigned int file: +send_msg src/libmodbus/modbus.c /^static int send_msg(modbus_t *ctx, uint8_t *msg, int msg_length)$/;" f typeref:typename:int file: +modbus_send_raw_request src/libmodbus/modbus.c /^int modbus_send_raw_request(modbus_t *ctx, uint8_t *raw_req, int raw_req_length)$/;" f typeref:typename:int +compute_meta_length_after_function src/libmodbus/modbus.c /^static uint8_t compute_meta_length_after_function(int function,$/;" f typeref:typename:uint8_t file: +compute_data_length_after_meta src/libmodbus/modbus.c /^static int compute_data_length_after_meta(modbus_t *ctx, uint8_t *msg,$/;" f typeref:typename:int file: +_modbus_receive_msg src/libmodbus/modbus.c /^int _modbus_receive_msg(modbus_t *ctx, uint8_t *msg, msg_type_t msg_type)$/;" f typeref:typename:int +modbus_receive src/libmodbus/modbus.c /^int modbus_receive(modbus_t *ctx, uint8_t *req)$/;" f typeref:typename:int +modbus_receive_confirmation src/libmodbus/modbus.c /^int modbus_receive_confirmation(modbus_t *ctx, uint8_t *rsp)$/;" f typeref:typename:int +check_confirmation src/libmodbus/modbus.c /^static int check_confirmation(modbus_t *ctx, uint8_t *req,$/;" f typeref:typename:int file: +response_io_status src/libmodbus/modbus.c /^static int response_io_status(uint8_t *tab_io_status,$/;" f typeref:typename:int file: +response_exception src/libmodbus/modbus.c /^static int response_exception(modbus_t *ctx, sft_t *sft,$/;" f typeref:typename:int file: +modbus_reply src/libmodbus/modbus.c /^int modbus_reply(modbus_t *ctx, const uint8_t *req,$/;" f typeref:typename:int +modbus_reply_exception src/libmodbus/modbus.c /^int modbus_reply_exception(modbus_t *ctx, const uint8_t *req,$/;" f typeref:typename:int +read_io_status src/libmodbus/modbus.c /^static int read_io_status(modbus_t *ctx, int function,$/;" f typeref:typename:int file: +modbus_read_bits src/libmodbus/modbus.c /^int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest)$/;" f typeref:typename:int +modbus_read_input_bits src/libmodbus/modbus.c /^int modbus_read_input_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest)$/;" f typeref:typename:int +read_registers src/libmodbus/modbus.c /^static int read_registers(modbus_t *ctx, int function, int addr, int nb,$/;" f typeref:typename:int file: +modbus_read_registers src/libmodbus/modbus.c /^int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest)$/;" f typeref:typename:int +modbus_read_input_registers src/libmodbus/modbus.c /^int modbus_read_input_registers(modbus_t *ctx, int addr, int nb,$/;" f typeref:typename:int +write_single src/libmodbus/modbus.c /^static int write_single(modbus_t *ctx, int function, int addr, int value)$/;" f typeref:typename:int file: +modbus_write_bit src/libmodbus/modbus.c /^int modbus_write_bit(modbus_t *ctx, int addr, int status)$/;" f typeref:typename:int +modbus_write_register src/libmodbus/modbus.c /^int modbus_write_register(modbus_t *ctx, int addr, int value)$/;" f typeref:typename:int +modbus_write_bits src/libmodbus/modbus.c /^int modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *src)$/;" f typeref:typename:int +modbus_write_registers src/libmodbus/modbus.c /^int modbus_write_registers(modbus_t *ctx, int addr, int nb, const uint16_t *src)$/;" f typeref:typename:int +modbus_mask_write_register src/libmodbus/modbus.c /^int modbus_mask_write_register(modbus_t *ctx, int addr, uint16_t and_mask, uint16_t or_mask)$/;" f typeref:typename:int +modbus_write_and_read_registers src/libmodbus/modbus.c /^int modbus_write_and_read_registers(modbus_t *ctx,$/;" f typeref:typename:int +modbus_report_slave_id src/libmodbus/modbus.c /^int modbus_report_slave_id(modbus_t *ctx, int max_dest, uint8_t *dest)$/;" f typeref:typename:int +_modbus_init_common src/libmodbus/modbus.c /^void _modbus_init_common(modbus_t *ctx)$/;" f typeref:typename:void +modbus_set_slave src/libmodbus/modbus.c /^int modbus_set_slave(modbus_t *ctx, int slave)$/;" f typeref:typename:int +modbus_set_error_recovery src/libmodbus/modbus.c /^int modbus_set_error_recovery(modbus_t *ctx,$/;" f typeref:typename:int +modbus_set_socket src/libmodbus/modbus.c /^int modbus_set_socket(modbus_t *ctx, int s)$/;" f typeref:typename:int +modbus_get_socket src/libmodbus/modbus.c /^int modbus_get_socket(modbus_t *ctx)$/;" f typeref:typename:int +modbus_get_response_timeout src/libmodbus/modbus.c /^int modbus_get_response_timeout(modbus_t *ctx, uint32_t *to_sec, uint32_t *to_usec)$/;" f typeref:typename:int +modbus_set_response_timeout src/libmodbus/modbus.c /^int modbus_set_response_timeout(modbus_t *ctx, uint32_t to_sec, uint32_t to_usec)$/;" f typeref:typename:int +modbus_get_byte_timeout src/libmodbus/modbus.c /^int modbus_get_byte_timeout(modbus_t *ctx, uint32_t *to_sec, uint32_t *to_usec)$/;" f typeref:typename:int +modbus_set_byte_timeout src/libmodbus/modbus.c /^int modbus_set_byte_timeout(modbus_t *ctx, uint32_t to_sec, uint32_t to_usec)$/;" f typeref:typename:int +modbus_get_header_length src/libmodbus/modbus.c /^int modbus_get_header_length(modbus_t *ctx)$/;" f typeref:typename:int +modbus_connect src/libmodbus/modbus.c /^int modbus_connect(modbus_t *ctx)$/;" f typeref:typename:int +modbus_close src/libmodbus/modbus.c /^void modbus_close(modbus_t *ctx)$/;" f typeref:typename:void +modbus_free src/libmodbus/modbus.c /^void modbus_free(modbus_t *ctx)$/;" f typeref:typename:void +modbus_set_debug src/libmodbus/modbus.c /^int modbus_set_debug(modbus_t *ctx, int flag)$/;" f typeref:typename:int +modbus_mapping_new_start_address src/libmodbus/modbus.c /^modbus_mapping_t* modbus_mapping_new_start_address($/;" f typeref:typename:modbus_mapping_t * +modbus_mapping_new src/libmodbus/modbus.c /^modbus_mapping_t* modbus_mapping_new(int nb_bits, int nb_input_bits,$/;" f typeref:typename:modbus_mapping_t * +modbus_mapping_free src/libmodbus/modbus.c /^void modbus_mapping_free(modbus_mapping_t *mb_mapping)$/;" f typeref:typename:void +strlcpy src/libmodbus/modbus.c /^size_t strlcpy(char *dest, const char *src, size_t dest_size)$/;" f typeref:typename:size_t +htonl src/libmodbus/modbus-data.c /^#define htonl(/;" d file: +htons src/libmodbus/modbus-data.c /^#define htons(/;" d file: +ntohl src/libmodbus/modbus-data.c /^#define ntohl(/;" d file: +ntohs src/libmodbus/modbus-data.c /^#define ntohs(/;" d file: +htonl src/libmodbus/modbus-data.c /^#define htonl(/;" d file: +htons src/libmodbus/modbus-data.c /^#define htons(/;" d file: +ntohl src/libmodbus/modbus-data.c /^#define ntohl(/;" d file: +ntohs src/libmodbus/modbus-data.c /^#define ntohs(/;" d file: +bswap_16 src/libmodbus/modbus-data.c /^# define bswap_16 /;" d file: +bswap_32 src/libmodbus/modbus-data.c /^# define bswap_32 /;" d file: +bswap_64 src/libmodbus/modbus-data.c /^# define bswap_64 /;" d file: +GCC_VERSION src/libmodbus/modbus-data.c /^# define GCC_VERSION /;" d file: +bswap_32 src/libmodbus/modbus-data.c /^# define bswap_32 /;" d file: +bswap_32 src/libmodbus/modbus-data.c /^# define bswap_32 /;" d file: +bswap_16 src/libmodbus/modbus-data.c /^# define bswap_16 /;" d file: +bswap_16 src/libmodbus/modbus-data.c /^static inline uint16_t bswap_16(uint16_t x)$/;" f typeref:typename:uint16_t file: +bswap_32 src/libmodbus/modbus-data.c /^static inline uint32_t bswap_32(uint32_t x)$/;" f typeref:typename:uint32_t file: +modbus_set_bits_from_byte src/libmodbus/modbus-data.c /^void modbus_set_bits_from_byte(uint8_t *dest, int idx, const uint8_t value)$/;" f typeref:typename:void +modbus_set_bits_from_bytes src/libmodbus/modbus-data.c /^void modbus_set_bits_from_bytes(uint8_t *dest, int idx, unsigned int nb_bits,$/;" f typeref:typename:void +modbus_get_byte_from_bits src/libmodbus/modbus-data.c /^uint8_t modbus_get_byte_from_bits(const uint8_t *src, int idx,$/;" f typeref:typename:uint8_t +modbus_get_float_abcd src/libmodbus/modbus-data.c /^float modbus_get_float_abcd(const uint16_t *src)$/;" f typeref:typename:float +modbus_get_float_dcba src/libmodbus/modbus-data.c /^float modbus_get_float_dcba(const uint16_t *src)$/;" f typeref:typename:float +modbus_get_float_badc src/libmodbus/modbus-data.c /^float modbus_get_float_badc(const uint16_t *src)$/;" f typeref:typename:float +modbus_get_float_cdab src/libmodbus/modbus-data.c /^float modbus_get_float_cdab(const uint16_t *src)$/;" f typeref:typename:float +modbus_get_float src/libmodbus/modbus-data.c /^float modbus_get_float(const uint16_t *src)$/;" f typeref:typename:float +modbus_set_float_abcd src/libmodbus/modbus-data.c /^void modbus_set_float_abcd(float f, uint16_t *dest)$/;" f typeref:typename:void +modbus_set_float_dcba src/libmodbus/modbus-data.c /^void modbus_set_float_dcba(float f, uint16_t *dest)$/;" f typeref:typename:void +modbus_set_float_badc src/libmodbus/modbus-data.c /^void modbus_set_float_badc(float f, uint16_t *dest)$/;" f typeref:typename:void +modbus_set_float_cdab src/libmodbus/modbus-data.c /^void modbus_set_float_cdab(float f, uint16_t *dest)$/;" f typeref:typename:void +modbus_set_float src/libmodbus/modbus-data.c /^void modbus_set_float(float f, uint16_t *dest)$/;" f typeref:typename:void +!_TAG_KIND_DESCRIPTION!Markdown c,chapter /chapters/ +!_TAG_KIND_DESCRIPTION!Markdown s,section /sections/ +!_TAG_KIND_DESCRIPTION!Markdown S,subsection /level 2 sections/ +!_TAG_KIND_DESCRIPTION!Markdown t,subsubsection /level 3 sections/ +!_TAG_KIND_DESCRIPTION!Markdown T,l4subsection /level 4 sections/ +!_TAG_KIND_DESCRIPTION!Markdown u,l5subsection /level 5 sections/ +!_TAG_KIND_DESCRIPTION!Markdown n,footnote /footnotes/ +!_TAG_PARSER_VERSION!Markdown 0.0 /current.age/ +Arduino Modbus Library docs/api.md /^# Arduino Modbus Library$/;" c +Modbus Client docs/api.md /^## Modbus Client$/;" s chapter:Arduino Modbus Library +`client.coilRead()` docs/api.md /^### `client.coilRead()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilRead()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilRead()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilRead()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilRead()` +`client.discreteInputRead()` docs/api.md /^### `client.discreteInputRead()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.discreteInputRead()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.discreteInputRead()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.discreteInputRead()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.discreteInputRead()` +`client.holdingRegisterRead()` docs/api.md /^### `client.holdingRegisterRead()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterRead()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterRead()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterRead()` +`client.inputRegisterRead()` docs/api.md /^### `client.inputRegisterRead()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.inputRegisterRead()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.inputRegisterRead()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.inputRegisterRead()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.inputRegisterRead()` +`client.coilWrite()` docs/api.md /^### `client.coilWrite()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilWrite()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilWrite()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilWrite()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilWrite()` +`client.holdingRegisterWrite()` docs/api.md /^### `client.holdingRegisterWrite()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterWrite()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterWrite()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterWrite()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterWrite()` +`client.registerMaskWrite()` docs/api.md /^### `client.registerMaskWrite()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.registerMaskWrite()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.registerMaskWrite()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.registerMaskWrite()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.registerMaskWrite()` +`client.beginTransmission()` docs/api.md /^### `client.beginTransmission()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.beginTransmission()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.beginTransmission()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.beginTransmission()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.beginTransmission()` +`client.write()` docs/api.md /^### `client.write()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.write()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.write()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.write()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.write()` +`client.endTransmission()` docs/api.md /^### `client.endTransmission()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.endTransmission()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.endTransmission()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.endTransmission()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.endTransmission()` +`client.requestFrom()` docs/api.md /^### `client.requestFrom()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.requestFrom()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.requestFrom()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.requestFrom()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.requestFrom()` +`client.available()` docs/api.md /^### `client.available()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.available()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.available()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.available()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.available()` +`client.read()` docs/api.md /^### `client.read()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.read()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.read()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.read()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.read()` +`client.lastError()` docs/api.md /^### `client.lastError()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.lastError()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.lastError()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.lastError()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.lastError()` +`client.end()` docs/api.md /^### `client.end()`$/;" S section:Arduino Modbus Library""Modbus Client +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.end()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.end()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.end()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.end()` +ModbusRTUClient Class docs/api.md /^## ModbusRTUClient Class$/;" s chapter:Arduino Modbus Library +`modbusRTUClient.begin()` docs/api.md /^### `modbusRTUClient.begin()`$/;" S section:Arduino Modbus Library""ModbusRTUClient Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusRTUClient Class""`modbusRTUClient.begin()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusRTUClient Class""`modbusRTUClient.begin()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusRTUClient Class""`modbusRTUClient.begin()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusRTUClient Class""`modbusRTUClient.begin()` +ModbusTCPClient Class docs/api.md /^## ModbusTCPClient Class$/;" s chapter:Arduino Modbus Library +`ModbusTCPClient()` docs/api.md /^### `ModbusTCPClient()`$/;" S section:Arduino Modbus Library""ModbusTCPClient Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`ModbusTCPClient()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`ModbusTCPClient()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`ModbusTCPClient()` +`modbusTCPClient.begin()` docs/api.md /^### `modbusTCPClient.begin()`$/;" S section:Arduino Modbus Library""ModbusTCPClient Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.begin()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.begin()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.begin()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.begin()` +`modbusTCPClient.connected()` docs/api.md /^### `modbusTCPClient.connected()`$/;" S section:Arduino Modbus Library""ModbusTCPClient Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.connected()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.connected()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.connected()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.connected()` +`modbusTCPClient.stop()` docs/api.md /^### `modbusTCPClient.stop()`$/;" S section:Arduino Modbus Library""ModbusTCPClient Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.stop()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.stop()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.stop()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.stop()` +ModbusServer Class docs/api.md /^## ModbusServer Class$/;" s chapter:Arduino Modbus Library +`modbusServer.configureCoils()` docs/api.md /^### `modbusServer.configureCoils()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureCoils()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureCoils()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureCoils()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureCoils()` +`modbusServer.configureDiscreteInputs()` docs/api.md /^### `modbusServer.configureDiscreteInputs()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureDiscreteInputs()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureDiscreteInputs()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureDiscreteInputs()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureDiscreteInputs()` +`modbusServer.configureHoldingRegisters()` docs/api.md /^### `modbusServer.configureHoldingRegisters()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureHoldingRegisters()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureHoldingRegisters()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureHoldingRegisters()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureHoldingRegisters()` +`modbusServer.configureInputRegisters()` docs/api.md /^### `modbusServer.configureInputRegisters()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureInputRegisters()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureInputRegisters()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureInputRegisters()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureInputRegisters()` +`modbusServer.coilRead()` docs/api.md /^### `modbusServer.coilRead()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilRead()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilRead()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilRead()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilRead()` +`modbusServer.discreteInputRead()` docs/api.md /^### `modbusServer.discreteInputRead()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputRead()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputRead()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputRead()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputRead()` +`modbusServer.holdingRegisterRead()` docs/api.md /^### `modbusServer.holdingRegisterRead()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterRead()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterRead()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterRead()` +`modbusServer.inputRegisterRead()` docs/api.md /^### `modbusServer.inputRegisterRead()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterRead()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterRead()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterRead()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterRead()` +`modbusServer.coilWrite()` docs/api.md /^### `modbusServer.coilWrite()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilWrite()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilWrite()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilWrite()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilWrite()` +`modbusServer.holdingRegisterWrite()` docs/api.md /^### `modbusServer.holdingRegisterWrite()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterWrite()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterWrite()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterWrite()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterWrite()` +`modbusServer.registerMaskWrite()` docs/api.md /^### `modbusServer.registerMaskWrite()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.registerMaskWrite()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.registerMaskWrite()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.registerMaskWrite()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.registerMaskWrite()` +`modbusServer.discreteInputWrite()` docs/api.md /^### `modbusServer.discreteInputWrite()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputWrite()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputWrite()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputWrite()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputWrite()` +`modbusServer.writeDiscreteInputs()` docs/api.md /^### `modbusServer.writeDiscreteInputs()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeDiscreteInputs()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeDiscreteInputs()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeDiscreteInputs()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeDiscreteInputs()` +`modbusServer.inputRegisterWrite()` docs/api.md /^### `modbusServer.inputRegisterWrite()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterWrite()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterWrite()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterWrite()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterWrite()` +`modbusServer.writeInputRegisters()` docs/api.md /^### `modbusServer.writeInputRegisters()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeInputRegisters()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeInputRegisters()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeInputRegisters()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeInputRegisters()` +`modbusServer.poll()` docs/api.md /^### `modbusServer.poll()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.poll()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.poll()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.poll()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.poll()` +`modbusServer.end()` docs/api.md /^### `modbusServer.end()`$/;" S section:Arduino Modbus Library""ModbusServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.end()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.end()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.end()` +Return docs/api.md /^#### Return$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.end()` +ModbusRTUServer Class docs/api.md /^## ModbusRTUServer Class$/;" s chapter:Arduino Modbus Library +`modbusRTUServer.begin()` docs/api.md /^### `modbusRTUServer.begin()`$/;" S section:Arduino Modbus Library""ModbusRTUServer Class +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusRTUServer Class""`modbusRTUServer.begin()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusRTUServer Class""`modbusRTUServer.begin()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusRTUServer Class""`modbusRTUServer.begin()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusRTUServer Class""`modbusRTUServer.begin()` +ModbusTCPServer docs/api.md /^## ModbusTCPServer$/;" s chapter:Arduino Modbus Library +`ModbusTCPServer()` docs/api.md /^### `ModbusTCPServer()`$/;" S section:Arduino Modbus Library""ModbusTCPServer +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`ModbusTCPServer()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`ModbusTCPServer()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`ModbusTCPServer()` +`modbusTCPServer.begin()` docs/api.md /^### `modbusTCPServer.begin()`$/;" S section:Arduino Modbus Library""ModbusTCPServer +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.begin()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.begin()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.begin()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.begin()` +`modbusTCPServer.accept()` docs/api.md /^### `modbusTCPServer.accept()`$/;" S section:Arduino Modbus Library""ModbusTCPServer +Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.accept()` +Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.accept()` +Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.accept()` +Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.accept()` +Arduino Modbus Library docs/readme.md /^# Arduino Modbus Library$/;" c +Further readings docs/readme.md /^## Further readings$/;" s chapter:Arduino Modbus Library From 0279bfbcabc5e39b65f3cc978fefd1d8c6b46eef Mon Sep 17 00:00:00 2001 From: Simon From Jakobsen Date: Thu, 4 Jan 2024 11:10:07 +0100 Subject: [PATCH 02/16] Correct return value documentation --- docs/api.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/api.md b/docs/api.md index 76097f3..0948ead 100644 --- a/docs/api.md +++ b/docs/api.md @@ -730,14 +730,14 @@ Poll for requests #### Syntax ``` -virtual void poll() = 0; +virtual int poll() = 0; ``` #### Parameters None #### Returns -nothing +1 on request, 0 on no request ### `modbusServer.end()` From 9c7ec9d67501f880a726164b3a5523ed008586cf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 06:39:12 +0100 Subject: [PATCH 03/16] Bump actions/download-artifact from 3 to 4 (#130) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/sync-labels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index 9cde1ac..885a8ac 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -108,7 +108,7 @@ jobs: uses: actions/checkout@v4 - name: Download configuration files artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: ${{ env.CONFIGURATIONS_ARTIFACT }} path: ${{ env.CONFIGURATIONS_FOLDER }} From c653621b942fe0a9df95e0d29a4d949ca670642e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 06:39:27 +0100 Subject: [PATCH 04/16] Bump actions/upload-artifact from 3 to 4 (#131) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/compile-examples.yml | 2 +- .github/workflows/sync-labels.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml index 945a25a..cf86100 100644 --- a/.github/workflows/compile-examples.yml +++ b/.github/workflows/compile-examples.yml @@ -107,7 +107,7 @@ jobs: sketches-report-path: ${{ env.SKETCHES_REPORTS_PATH }} - name: Save memory usage change report as artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: if-no-files-found: error name: ${{ env.SKETCHES_REPORTS_PATH }} diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index 885a8ac..2e1d6e0 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -70,7 +70,7 @@ jobs: file-url: https://raw.githubusercontent.com/arduino/tooling-project-assets/main/workflow-templates/assets/sync-labels/${{ matrix.filename }} - name: Pass configuration files to next job via workflow artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: path: | *.yaml From 014b675a4c0b0f51417fac6ad04ddb399f8cb212 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 06:39:56 +0100 Subject: [PATCH 05/16] Bump geekyeggo/delete-artifact from 2 to 4 (#134) Bumps [geekyeggo/delete-artifact](https://github.com/geekyeggo/delete-artifact) from 2 to 4. - [Release notes](https://github.com/geekyeggo/delete-artifact/releases) - [Changelog](https://github.com/GeekyEggo/delete-artifact/blob/main/CHANGELOG.md) - [Commits](https://github.com/geekyeggo/delete-artifact/compare/v2...v4) --- updated-dependencies: - dependency-name: geekyeggo/delete-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/sync-labels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index 2e1d6e0..47ac50a 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -114,7 +114,7 @@ jobs: path: ${{ env.CONFIGURATIONS_FOLDER }} - name: Remove unneeded artifact - uses: geekyeggo/delete-artifact@v2 + uses: geekyeggo/delete-artifact@v4 with: name: ${{ env.CONFIGURATIONS_ARTIFACT }} From eda1b5e3145f1fcbcb34e69a9c091ba2d8344e73 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Mon, 19 Feb 2024 06:58:42 +0100 Subject: [PATCH 06/16] Fix regression re report-size-deltas after updating actions/upload-artifact. (#142) For more information see https://github.com/arduino/report-size-deltas/blob/main/docs/FAQ.md#size-deltas-report-workflow-triggered-by-schedule-event . --- .github/workflows/compile-examples.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml index cf86100..aae4de7 100644 --- a/.github/workflows/compile-examples.yml +++ b/.github/workflows/compile-examples.yml @@ -42,18 +42,23 @@ jobs: - fqbn: arduino:megaavr:uno2018:mode=off ethernet: true nina: true + artifact-name-suffix: arduino-megaavr-uno2018 - fqbn: arduino:samd:mkrwifi1010 ethernet: true nina: true + artifact-name-suffix: arduino-samd-mkrwifi1010 - fqbn: arduino:mbed_nano:nano33ble ethernet: false nina: false + artifact-name-suffix: arduino-mbed_nano-nano33ble - fqbn: arduino:mbed_portenta:envie_m7 ethernet: false nina: false + artifact-name-suffix: arduino-mbed_portenta-envie_m7 - fqbn: arduino:mbed_opta:opta ethernet: true nina: false + artifact-name-suffix: arduino-mbed_opta-opta # Make board type-specific customizations to the matrix jobs include: @@ -110,5 +115,5 @@ jobs: uses: actions/upload-artifact@v4 with: if-no-files-found: error - name: ${{ env.SKETCHES_REPORTS_PATH }} + name: sketches-report-${{ matrix.board.artifact-name-suffix }} path: ${{ env.SKETCHES_REPORTS_PATH }} From be8f274829feb0a7c06def4a7112f7e19514dda5 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Wed, 21 Feb 2024 07:13:55 +0100 Subject: [PATCH 07/16] Remove accidentially committed file "tags". (#144) --- tags | 789 ----------------------------------------------------------- 1 file changed, 789 deletions(-) delete mode 100644 tags diff --git a/tags b/tags deleted file mode 100644 index 0ae62dc..0000000 --- a/tags +++ /dev/null @@ -1,789 +0,0 @@ -!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ -!_TAG_FILE_SORTED 0 /0=unsorted, 1=sorted, 2=foldcase/ -!_TAG_PROGRAM_AUTHOR Universal Ctags Team // -!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ -!_TAG_PROGRAM_URL https://ctags.io/ /official site/ -!_TAG_PROGRAM_VERSION 6.0.0 /p6.0.20221218.0/ -!_TAG_FIELD_DESCRIPTION name /tag name/ -!_TAG_FIELD_DESCRIPTION input /input file/ -!_TAG_FIELD_DESCRIPTION pattern /pattern/ -!_TAG_FIELD_DESCRIPTION file /File-restricted scoping/ -!_TAG_FIELD_DESCRIPTION typeref /Type and name of a variable or typedef/ -!_TAG_FIELD_DESCRIPTION epoch /the last modified time of the input file (only for F\/file kind tag)/ -!_TAG_EXTRA_DESCRIPTION fileScope /Include tags of file scope/ -!_TAG_EXTRA_DESCRIPTION pseudo /Include pseudo tags/ -!_TAG_EXTRA_DESCRIPTION subparser /Include tags generated by subparsers/ -!_TAG_EXTRA_DESCRIPTION anonymous /Include tags for non-named objects like lambda/ -!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ -!_TAG_OUTPUT_FILESEP slash /slash or backslash/ -!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ -!_TAG_PROC_CWD /home/kidpixo/Documents/work/MERTIS/MERTIS_Ground-Reference-Model_GRM_local/ArduinoModbus/ // -!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ -!_TAG_OUTPUT_VERSION 0.0 /current.age/ -!_TAG_KIND_DESCRIPTION!C++ d,macro /macro definitions/ -!_TAG_KIND_DESCRIPTION!C++ e,enumerator /enumerators (values inside an enumeration)/ -!_TAG_KIND_DESCRIPTION!C++ f,function /function definitions/ -!_TAG_KIND_DESCRIPTION!C++ g,enum /enumeration names/ -!_TAG_KIND_DESCRIPTION!C++ h,header /included header files/ -!_TAG_KIND_DESCRIPTION!C++ m,member /class, struct, and union members/ -!_TAG_KIND_DESCRIPTION!C++ s,struct /structure names/ -!_TAG_KIND_DESCRIPTION!C++ t,typedef /typedefs/ -!_TAG_KIND_DESCRIPTION!C++ u,union /union names/ -!_TAG_KIND_DESCRIPTION!C++ v,variable /variable definitions/ -!_TAG_KIND_DESCRIPTION!C++ c,class /classes/ -!_TAG_KIND_DESCRIPTION!C++ n,namespace /namespaces/ -!_TAG_FIELD_DESCRIPTION!C++ name /aliased names/ -!_TAG_ROLE_DESCRIPTION!C++!macro undef /undefined/ -!_TAG_ROLE_DESCRIPTION!C++!header system /system header/ -!_TAG_ROLE_DESCRIPTION!C++!header local /local header/ -!_TAG_PARSER_VERSION!C++ 0.0 /current.age/ -SECRET_SSID examples/TCP/WiFiModbusClientToggle/arduino_secrets.h /^#define SECRET_SSID /;" d -SECRET_PASS examples/TCP/WiFiModbusClientToggle/arduino_secrets.h /^#define SECRET_PASS /;" d -SECRET_SSID examples/TCP/WiFiModbusServerLED/arduino_secrets.h /^#define SECRET_SSID /;" d -SECRET_PASS examples/TCP/WiFiModbusServerLED/arduino_secrets.h /^#define SECRET_PASS /;" d -!_TAG_KIND_DESCRIPTION!Yaml a,anchor /anchors/ -!_TAG_ROLE_DESCRIPTION!Yaml!anchor alias /alias/ -!_TAG_PARSER_VERSION!Yaml 0.0 /current.age/ -!_TAG_KIND_DESCRIPTION!JavaProperties k,key /keys/ -!_TAG_PARSER_VERSION!JavaProperties 0.0 /current.age/ -name library.properties /^name=ArduinoModbus$/;" k -version library.properties /^version=1.0.8$/;" k -author library.properties /^author=Arduino$/;" k -maintainer library.properties /^maintainer=Arduino $/;" k -sentence library.properties /^sentence=Use Modbus equipment with your Arduino.$/;" k -paragraph library.properties /^paragraph=Using TCP or RS485 shields, like the MKR 485 Shield. This library depends on the Ardui/;" k -category library.properties /^category=Communication$/;" k -url library.properties /^url=https:\/\/www.arduino.cc\/en\/ArduinoModbus\/ArduinoModbus$/;" k -architectures library.properties /^architectures=megaavr,samd,mbed_nano,mbed_portenta,mbed_opta$/;" k -includes library.properties /^includes=ArduinoModbus.h$/;" k -depends library.properties /^depends=ArduinoRS485$/;" k -!_TAG_KIND_DESCRIPTION!Asciidoc c,chapter /chapters/ -!_TAG_KIND_DESCRIPTION!Asciidoc s,section /sections/ -!_TAG_KIND_DESCRIPTION!Asciidoc S,subsection /level 2 sections/ -!_TAG_KIND_DESCRIPTION!Asciidoc t,subsubsection /level 3 sections/ -!_TAG_KIND_DESCRIPTION!Asciidoc T,l4subsection /level 4 sections/ -!_TAG_KIND_DESCRIPTION!Asciidoc u,l5subsection /level 5 sections/ -!_TAG_KIND_DESCRIPTION!Asciidoc a,anchor /anchors/ -!_TAG_PARSER_VERSION!Asciidoc 0.0 /current.age/ -Modbus Library for Arduino README.adoc /^= Modbus Library for Arduino =$/;" c -Useful resources README.adoc /^== Useful resources ==$/;" s chapter:Modbus Library for Arduino -License README.adoc /^== License ==$/;" s chapter:Modbus Library for Arduino -_ARDUINO_MODBUS_H_INCLUDED src/ArduinoModbus.h /^#define _ARDUINO_MODBUS_H_INCLUDED$/;" d -_MODBUS_RTU_CLIENT_H_INCLUDED src/ModbusRTUClient.h /^#define _MODBUS_RTU_CLIENT_H_INCLUDED$/;" d -ModbusRTUClientClass src/ModbusRTUClient.h /^class ModbusRTUClientClass : public ModbusClient {$/;" c -_rs485 src/ModbusRTUClient.h /^ RS485Class* _rs485 = &RS485;$/;" m class:ModbusRTUClientClass typeref:typename:RS485Class * -ModbusClient src/ModbusClient.cpp /^ModbusClient::ModbusClient(unsigned long defaultTimeout) :$/;" f class:ModbusClient -~ModbusClient src/ModbusClient.cpp /^ModbusClient::~ModbusClient()$/;" f class:ModbusClient -begin src/ModbusClient.cpp /^int ModbusClient::begin(modbus_t* mb, int defaultId)$/;" f class:ModbusClient typeref:typename:int -end src/ModbusClient.cpp /^void ModbusClient::end()$/;" f class:ModbusClient typeref:typename:void -coilRead src/ModbusClient.cpp /^int ModbusClient::coilRead(int address)$/;" f class:ModbusClient typeref:typename:int -coilRead src/ModbusClient.cpp /^int ModbusClient::coilRead(int id, int address)$/;" f class:ModbusClient typeref:typename:int -discreteInputRead src/ModbusClient.cpp /^int ModbusClient::discreteInputRead(int address)$/;" f class:ModbusClient typeref:typename:int -discreteInputRead src/ModbusClient.cpp /^int ModbusClient::discreteInputRead(int id, int address)$/;" f class:ModbusClient typeref:typename:int -holdingRegisterRead src/ModbusClient.cpp /^long ModbusClient::holdingRegisterRead(int address)$/;" f class:ModbusClient typeref:typename:long -holdingRegisterRead src/ModbusClient.cpp /^long ModbusClient::holdingRegisterRead(int id, int address)$/;" f class:ModbusClient typeref:typename:long -inputRegisterRead src/ModbusClient.cpp /^long ModbusClient::inputRegisterRead(int address)$/;" f class:ModbusClient typeref:typename:long -inputRegisterRead src/ModbusClient.cpp /^long ModbusClient::inputRegisterRead(int id, int address)$/;" f class:ModbusClient typeref:typename:long -coilWrite src/ModbusClient.cpp /^int ModbusClient::coilWrite(int address, uint8_t value)$/;" f class:ModbusClient typeref:typename:int -coilWrite src/ModbusClient.cpp /^int ModbusClient::coilWrite(int id, int address, uint8_t value)$/;" f class:ModbusClient typeref:typename:int -holdingRegisterWrite src/ModbusClient.cpp /^int ModbusClient::holdingRegisterWrite(int address, uint16_t value)$/;" f class:ModbusClient typeref:typename:int -holdingRegisterWrite src/ModbusClient.cpp /^int ModbusClient::holdingRegisterWrite(int id, int address, uint16_t value)$/;" f class:ModbusClient typeref:typename:int -registerMaskWrite src/ModbusClient.cpp /^int ModbusClient::registerMaskWrite(int address, uint16_t andMask, uint16_t orMask)$/;" f class:ModbusClient typeref:typename:int -registerMaskWrite src/ModbusClient.cpp /^int ModbusClient::registerMaskWrite(int id, int address, uint16_t andMask, uint16_t orMask)$/;" f class:ModbusClient typeref:typename:int -beginTransmission src/ModbusClient.cpp /^int ModbusClient::beginTransmission(int type, int address, int nb)$/;" f class:ModbusClient typeref:typename:int -beginTransmission src/ModbusClient.cpp /^int ModbusClient::beginTransmission(int id, int type, int address, int nb)$/;" f class:ModbusClient typeref:typename:int -write src/ModbusClient.cpp /^int ModbusClient::write(unsigned int value)$/;" f class:ModbusClient typeref:typename:int -endTransmission src/ModbusClient.cpp /^int ModbusClient::endTransmission()$/;" f class:ModbusClient typeref:typename:int -requestFrom src/ModbusClient.cpp /^int ModbusClient::requestFrom(int type, int address, int nb)$/;" f class:ModbusClient typeref:typename:int -requestFrom src/ModbusClient.cpp /^int ModbusClient::requestFrom(int id, int type, int address, int nb)$/;" f class:ModbusClient typeref:typename:int -available src/ModbusClient.cpp /^int ModbusClient::available()$/;" f class:ModbusClient typeref:typename:int -read src/ModbusClient.cpp /^long ModbusClient::read()$/;" f class:ModbusClient typeref:typename:long -lastError src/ModbusClient.cpp /^const char* ModbusClient::lastError()$/;" f class:ModbusClient typeref:typename:const char * -setTimeout src/ModbusClient.cpp /^void ModbusClient::setTimeout(unsigned long ms)$/;" f class:ModbusClient typeref:typename:void -_MODBUS_SERVER_H_INCLUDED src/ModbusServer.h /^#define _MODBUS_SERVER_H_INCLUDED$/;" d -ModbusServer src/ModbusServer.h /^class ModbusServer {$/;" c -_mb src/ModbusServer.h /^ modbus_t* _mb;$/;" m class:ModbusServer typeref:typename:modbus_t * -_mbMapping src/ModbusServer.h /^ modbus_mapping_t _mbMapping;$/;" m class:ModbusServer typeref:typename:modbus_mapping_t -ModbusRTUServerClass src/ModbusRTUServer.cpp /^ModbusRTUServerClass::ModbusRTUServerClass()$/;" f class:ModbusRTUServerClass -ModbusRTUServerClass src/ModbusRTUServer.cpp /^ModbusRTUServerClass::ModbusRTUServerClass(RS485Class& rs485) : _rs485(&rs485)$/;" f class:ModbusRTUServerClass -~ModbusRTUServerClass src/ModbusRTUServer.cpp /^ModbusRTUServerClass::~ModbusRTUServerClass()$/;" f class:ModbusRTUServerClass -begin src/ModbusRTUServer.cpp /^int ModbusRTUServerClass::begin(int id, unsigned long baudrate, uint16_t config)$/;" f class:ModbusRTUServerClass typeref:typename:int -begin src/ModbusRTUServer.cpp /^int ModbusRTUServerClass::begin(RS485Class& rs485, int id, unsigned long baudrate, uint16_t conf/;" f class:ModbusRTUServerClass typeref:typename:int -poll src/ModbusRTUServer.cpp /^int ModbusRTUServerClass::poll()$/;" f class:ModbusRTUServerClass typeref:typename:int -ModbusRTUServer src/ModbusRTUServer.cpp /^ModbusRTUServerClass ModbusRTUServer;$/;" v typeref:typename:ModbusRTUServerClass -ModbusTCPServer src/ModbusTCPServer.cpp /^ModbusTCPServer::ModbusTCPServer() :$/;" f class:ModbusTCPServer -~ModbusTCPServer src/ModbusTCPServer.cpp /^ModbusTCPServer::~ModbusTCPServer()$/;" f class:ModbusTCPServer -begin src/ModbusTCPServer.cpp /^int ModbusTCPServer::begin(int id)$/;" f class:ModbusTCPServer typeref:typename:int -accept src/ModbusTCPServer.cpp /^void ModbusTCPServer::accept(Client& client)$/;" f class:ModbusTCPServer typeref:typename:void -poll src/ModbusTCPServer.cpp /^int ModbusTCPServer::poll()$/;" f class:ModbusTCPServer typeref:typename:int -_MODBUS_TCP_SERVER_H_INCLUDED src/ModbusTCPServer.h /^#define _MODBUS_TCP_SERVER_H_INCLUDED$/;" d -ModbusTCPServer src/ModbusTCPServer.h /^class ModbusTCPServer : public ModbusServer {$/;" c -_client src/ModbusTCPServer.h /^ Client* _client;$/;" m class:ModbusTCPServer typeref:typename:Client * -_MODBUS_RTU_SERVER_H_INCLUDED src/ModbusRTUServer.h /^#define _MODBUS_RTU_SERVER_H_INCLUDED$/;" d -ModbusRTUServerClass src/ModbusRTUServer.h /^class ModbusRTUServerClass : public ModbusServer {$/;" c -_rs485 src/ModbusRTUServer.h /^ RS485Class* _rs485 = &RS485;$/;" m class:ModbusRTUServerClass typeref:typename:RS485Class * -_MODBUS_CLIENT_H_INCLUDED src/ModbusClient.h /^#define _MODBUS_CLIENT_H_INCLUDED$/;" d -COILS src/ModbusClient.h /^#define COILS /;" d -DISCRETE_INPUTS src/ModbusClient.h /^#define DISCRETE_INPUTS /;" d -HOLDING_REGISTERS src/ModbusClient.h /^#define HOLDING_REGISTERS /;" d -INPUT_REGISTERS src/ModbusClient.h /^#define INPUT_REGISTERS /;" d -ModbusClient src/ModbusClient.h /^class ModbusClient {$/;" c -_mb src/ModbusClient.h /^ modbus_t* _mb;$/;" m class:ModbusClient typeref:typename:modbus_t * -_timeout src/ModbusClient.h /^ unsigned long _timeout;$/;" m class:ModbusClient typeref:typename:unsigned long -_defaultId src/ModbusClient.h /^ int _defaultId;$/;" m class:ModbusClient typeref:typename:int -_transmissionBegun src/ModbusClient.h /^ bool _transmissionBegun;$/;" m class:ModbusClient typeref:typename:bool -_id src/ModbusClient.h /^ int _id;$/;" m class:ModbusClient typeref:typename:int -_type src/ModbusClient.h /^ int _type;$/;" m class:ModbusClient typeref:typename:int -_address src/ModbusClient.h /^ int _address;$/;" m class:ModbusClient typeref:typename:int -_nb src/ModbusClient.h /^ int _nb;$/;" m class:ModbusClient typeref:typename:int -_values src/ModbusClient.h /^ void* _values;$/;" m class:ModbusClient typeref:typename:void * -_available src/ModbusClient.h /^ int _available;$/;" m class:ModbusClient typeref:typename:int -_read src/ModbusClient.h /^ int _read;$/;" m class:ModbusClient typeref:typename:int -_availableForWrite src/ModbusClient.h /^ int _availableForWrite;$/;" m class:ModbusClient typeref:typename:int -_written src/ModbusClient.h /^ int _written;$/;" m class:ModbusClient typeref:typename:int -ModbusTCPClient src/ModbusTCPClient.cpp /^ModbusTCPClient::ModbusTCPClient(Client& client) :$/;" f class:ModbusTCPClient -~ModbusTCPClient src/ModbusTCPClient.cpp /^ModbusTCPClient::~ModbusTCPClient()$/;" f class:ModbusTCPClient -begin src/ModbusTCPClient.cpp /^int ModbusTCPClient::begin(IPAddress ip, uint16_t port)$/;" f class:ModbusTCPClient typeref:typename:int -connected src/ModbusTCPClient.cpp /^int ModbusTCPClient::connected()$/;" f class:ModbusTCPClient typeref:typename:int -stop src/ModbusTCPClient.cpp /^void ModbusTCPClient::stop()$/;" f class:ModbusTCPClient typeref:typename:void -_MODBUS_TCP_CLIENT_H_INCLUDED src/ModbusTCPClient.h /^#define _MODBUS_TCP_CLIENT_H_INCLUDED$/;" d -ModbusTCPClient src/ModbusTCPClient.h /^class ModbusTCPClient : public ModbusClient {$/;" c -_client src/ModbusTCPClient.h /^ Client* _client;$/;" m class:ModbusTCPClient typeref:typename:Client * -ModbusServer src/ModbusServer.cpp /^ModbusServer::ModbusServer() :$/;" f class:ModbusServer -~ModbusServer src/ModbusServer.cpp /^ModbusServer::~ModbusServer()$/;" f class:ModbusServer -configureCoils src/ModbusServer.cpp /^int ModbusServer::configureCoils(int startAddress, int nb)$/;" f class:ModbusServer typeref:typename:int -configureDiscreteInputs src/ModbusServer.cpp /^int ModbusServer::configureDiscreteInputs(int startAddress, int nb)$/;" f class:ModbusServer typeref:typename:int -configureHoldingRegisters src/ModbusServer.cpp /^int ModbusServer::configureHoldingRegisters(int startAddress, int nb)$/;" f class:ModbusServer typeref:typename:int -configureInputRegisters src/ModbusServer.cpp /^int ModbusServer::configureInputRegisters(int startAddress, int nb)$/;" f class:ModbusServer typeref:typename:int -coilRead src/ModbusServer.cpp /^int ModbusServer::coilRead(int address)$/;" f class:ModbusServer typeref:typename:int -discreteInputRead src/ModbusServer.cpp /^int ModbusServer::discreteInputRead(int address)$/;" f class:ModbusServer typeref:typename:int -holdingRegisterRead src/ModbusServer.cpp /^long ModbusServer::holdingRegisterRead(int address)$/;" f class:ModbusServer typeref:typename:long -inputRegisterRead src/ModbusServer.cpp /^long ModbusServer::inputRegisterRead(int address)$/;" f class:ModbusServer typeref:typename:long -coilWrite src/ModbusServer.cpp /^int ModbusServer::coilWrite(int address, uint8_t value)$/;" f class:ModbusServer typeref:typename:int -holdingRegisterWrite src/ModbusServer.cpp /^int ModbusServer::holdingRegisterWrite(int address, uint16_t value)$/;" f class:ModbusServer typeref:typename:int -registerMaskWrite src/ModbusServer.cpp /^int ModbusServer::registerMaskWrite(int address, uint16_t andMask, uint16_t orMask)$/;" f class:ModbusServer typeref:typename:int -discreteInputWrite src/ModbusServer.cpp /^int ModbusServer::discreteInputWrite(int address, uint8_t value)$/;" f class:ModbusServer typeref:typename:int -writeDiscreteInputs src/ModbusServer.cpp /^int ModbusServer::writeDiscreteInputs(int address, uint8_t values[], int nb)$/;" f class:ModbusServer typeref:typename:int -inputRegisterWrite src/ModbusServer.cpp /^int ModbusServer::inputRegisterWrite(int address, uint16_t value)$/;" f class:ModbusServer typeref:typename:int -writeInputRegisters src/ModbusServer.cpp /^int ModbusServer::writeInputRegisters(int address, uint16_t values[], int nb)$/;" f class:ModbusServer typeref:typename:int -begin src/ModbusServer.cpp /^int ModbusServer::begin(modbus_t* mb, int id)$/;" f class:ModbusServer typeref:typename:int -end src/ModbusServer.cpp /^void ModbusServer::end()$/;" f class:ModbusServer typeref:typename:void -ModbusRTUClientClass src/ModbusRTUClient.cpp /^ModbusRTUClientClass::ModbusRTUClientClass() :$/;" f class:ModbusRTUClientClass -ModbusRTUClientClass src/ModbusRTUClient.cpp /^ModbusRTUClientClass::ModbusRTUClientClass(RS485Class& rs485) :$/;" f class:ModbusRTUClientClass -~ModbusRTUClientClass src/ModbusRTUClient.cpp /^ModbusRTUClientClass::~ModbusRTUClientClass()$/;" f class:ModbusRTUClientClass -begin src/ModbusRTUClient.cpp /^int ModbusRTUClientClass::begin(unsigned long baudrate, uint16_t config)$/;" f class:ModbusRTUClientClass typeref:typename:int -begin src/ModbusRTUClient.cpp /^int ModbusRTUClientClass::begin(RS485Class& rs485, unsigned long baudrate, uint16_t config)$/;" f class:ModbusRTUClientClass typeref:typename:int -ModbusRTUClient src/ModbusRTUClient.cpp /^ModbusRTUClientClass ModbusRTUClient;$/;" v typeref:typename:ModbusRTUClientClass -printf src/libmodbus/modbus-rtu.cpp /^#define printf(/;" d file: -fprintf src/libmodbus/modbus-rtu.cpp /^#define fprintf(/;" d file: -EIO src/libmodbus/modbus-rtu.cpp /^#define EIO /;" d file: -EINVAL src/libmodbus/modbus-rtu.cpp /^#define EINVAL /;" d file: -ENOPROTOOPT src/libmodbus/modbus-rtu.cpp /^#define ENOPROTOOPT /;" d file: -ECONNREFUSED src/libmodbus/modbus-rtu.cpp /^#define ECONNREFUSED /;" d file: -ETIMEDOUT src/libmodbus/modbus-rtu.cpp /^#define ETIMEDOUT /;" d file: -ENOTSUP src/libmodbus/modbus-rtu.cpp /^#define ENOTSUP /;" d file: -table_crc_hi src/libmodbus/modbus-rtu.cpp /^static PROGMEM const uint8_t table_crc_hi[] = {$/;" v typeref:typename:PROGMEM const uint8_t[] file: -table_crc_lo src/libmodbus/modbus-rtu.cpp /^static PROGMEM const uint8_t table_crc_lo[] = {$/;" v typeref:typename:PROGMEM const uint8_t[] file: -_modbus_set_slave src/libmodbus/modbus-rtu.cpp /^static int _modbus_set_slave(modbus_t *ctx, int slave)$/;" f typeref:typename:int file: -_modbus_rtu_build_request_basis src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_build_request_basis(modbus_t *ctx, int function,$/;" f typeref:typename:int file: -_modbus_rtu_build_response_basis src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_build_response_basis(sft_t *sft, uint8_t *rsp)$/;" f typeref:typename:int file: -crc16 src/libmodbus/modbus-rtu.cpp /^static uint16_t crc16(uint8_t *buffer, uint16_t buffer_length)$/;" f typeref:typename:uint16_t file: -_modbus_rtu_prepare_response_tid src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_prepare_response_tid(const uint8_t *req, int *req_length)$/;" f typeref:typename:int file: -_modbus_rtu_send_msg_pre src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_send_msg_pre(uint8_t *req, int req_length)$/;" f typeref:typename:int file: -win32_ser_init src/libmodbus/modbus-rtu.cpp /^static void win32_ser_init(struct win32_ser *ws)$/;" f typeref:typename:void file: -win32_ser_select src/libmodbus/modbus-rtu.cpp /^static int win32_ser_select(struct win32_ser *ws, int max_len,$/;" f typeref:typename:int file: -win32_ser_read src/libmodbus/modbus-rtu.cpp /^static int win32_ser_read(struct win32_ser *ws, uint8_t *p_msg,$/;" f typeref:typename:int file: -_modbus_rtu_ioctl_rts src/libmodbus/modbus-rtu.cpp /^static void _modbus_rtu_ioctl_rts(modbus_t *ctx, int on)$/;" f typeref:typename:void file: -_modbus_rtu_send src/libmodbus/modbus-rtu.cpp /^static ssize_t _modbus_rtu_send(modbus_t *ctx, const uint8_t *req, int req_length)$/;" f typeref:typename:ssize_t file: -_modbus_rtu_receive src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_receive(modbus_t *ctx, uint8_t *req)$/;" f typeref:typename:int file: -_modbus_rtu_recv src/libmodbus/modbus-rtu.cpp /^static ssize_t _modbus_rtu_recv(modbus_t *ctx, uint8_t *rsp, int rsp_length)$/;" f typeref:typename:ssize_t file: -_modbus_rtu_pre_check_confirmation src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_pre_check_confirmation(modbus_t *ctx, const uint8_t *req,$/;" f typeref:typename:int file: -_modbus_rtu_check_integrity src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_check_integrity(modbus_t *ctx, uint8_t *msg,$/;" f typeref:typename:int file: -_modbus_rtu_connect src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_connect(modbus_t *ctx)$/;" f typeref:typename:int file: -modbus_rtu_set_serial_mode src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_set_serial_mode(modbus_t *ctx, int mode)$/;" f typeref:typename:int -modbus_rtu_get_serial_mode src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_get_serial_mode(modbus_t *ctx)$/;" f typeref:typename:int -modbus_rtu_get_rts src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_get_rts(modbus_t *ctx)$/;" f typeref:typename:int -modbus_rtu_set_rts src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_set_rts(modbus_t *ctx, int mode)$/;" f typeref:typename:int -modbus_rtu_set_custom_rts src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_set_custom_rts(modbus_t *ctx, void (*set_rts) (modbus_t *ctx, int on))$/;" f typeref:typename:int -modbus_rtu_get_rts_delay src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_get_rts_delay(modbus_t *ctx)$/;" f typeref:typename:int -modbus_rtu_set_rts_delay src/libmodbus/modbus-rtu.cpp /^int modbus_rtu_set_rts_delay(modbus_t *ctx, int us)$/;" f typeref:typename:int -_modbus_rtu_close src/libmodbus/modbus-rtu.cpp /^static void _modbus_rtu_close(modbus_t *ctx)$/;" f typeref:typename:void file: -_modbus_rtu_flush src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_flush(modbus_t *ctx)$/;" f typeref:typename:int file: -_modbus_rtu_select src/libmodbus/modbus-rtu.cpp /^static int _modbus_rtu_select(modbus_t *ctx, fd_set *rset,$/;" f typeref:typename:int file: -_modbus_rtu_free src/libmodbus/modbus-rtu.cpp /^static void _modbus_rtu_free(modbus_t *ctx) {$/;" f typeref:typename:void file: -_modbus_rtu_backend src/libmodbus/modbus-rtu.cpp /^const modbus_backend_t _modbus_rtu_backend = {$/;" v typeref:typename:const modbus_backend_t -modbus_new_rtu src/libmodbus/modbus-rtu.cpp /^modbus_t* modbus_new_rtu(RS485Class *rs485, unsigned long baud, uint16_t config)$/;" f typeref:typename:modbus_t * -OS_WIN32 src/libmodbus/modbus-tcp.cpp /^# define OS_WIN32$/;" d file: -WINVER src/libmodbus/modbus-tcp.cpp /^# define WINVER /;" d file: -SHUT_RDWR src/libmodbus/modbus-tcp.cpp /^# define SHUT_RDWR /;" d file: -close src/libmodbus/modbus-tcp.cpp /^# define close closes/;" d file: -printf src/libmodbus/modbus-tcp.cpp /^#define printf(/;" d file: -fprintf src/libmodbus/modbus-tcp.cpp /^#define fprintf(/;" d file: -OS_BSD src/libmodbus/modbus-tcp.cpp /^# define OS_BSD$/;" d file: -MSG_NOSIGNAL src/libmodbus/modbus-tcp.cpp /^#define MSG_NOSIGNAL /;" d file: -MSG_DONTWAIT src/libmodbus/modbus-tcp.cpp /^#define MSG_DONTWAIT /;" d file: -EIO src/libmodbus/modbus-tcp.cpp /^#define EIO /;" d file: -EINVAL src/libmodbus/modbus-tcp.cpp /^#define EINVAL /;" d file: -ENOPROTOOPT src/libmodbus/modbus-tcp.cpp /^#define ENOPROTOOPT /;" d file: -ECONNREFUSED src/libmodbus/modbus-tcp.cpp /^#define ECONNREFUSED /;" d file: -ETIMEDOUT src/libmodbus/modbus-tcp.cpp /^#define ETIMEDOUT /;" d file: -ENOTSUP src/libmodbus/modbus-tcp.cpp /^#define ENOTSUP /;" d file: -_modbus_tcp_init_win32 src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_init_win32(void)$/;" f typeref:typename:int file: -_modbus_set_slave src/libmodbus/modbus-tcp.cpp /^static int _modbus_set_slave(modbus_t *ctx, int slave)$/;" f typeref:typename:int file: -_modbus_tcp_build_request_basis src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_build_request_basis(modbus_t *ctx, int function,$/;" f typeref:typename:int file: -_modbus_tcp_build_response_basis src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_build_response_basis(sft_t *sft, uint8_t *rsp)$/;" f typeref:typename:int file: -_modbus_tcp_prepare_response_tid src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_prepare_response_tid(const uint8_t *req, int *req_length)$/;" f typeref:typename:int file: -_modbus_tcp_send_msg_pre src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_send_msg_pre(uint8_t *req, int req_length)$/;" f typeref:typename:int file: -_modbus_tcp_send src/libmodbus/modbus-tcp.cpp /^static ssize_t _modbus_tcp_send(modbus_t *ctx, const uint8_t *req, int req_length)$/;" f typeref:typename:ssize_t file: -_modbus_tcp_receive src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_receive(modbus_t *ctx, uint8_t *req) {$/;" f typeref:typename:int file: -_modbus_tcp_recv src/libmodbus/modbus-tcp.cpp /^static ssize_t _modbus_tcp_recv(modbus_t *ctx, uint8_t *rsp, int rsp_length) {$/;" f typeref:typename:ssize_t file: -_modbus_tcp_check_integrity src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_check_integrity(modbus_t *ctx, uint8_t *msg, const int msg_length)$/;" f typeref:typename:int file: -_modbus_tcp_pre_check_confirmation src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_pre_check_confirmation(modbus_t *ctx, const uint8_t *req,$/;" f typeref:typename:int file: -_modbus_tcp_set_ipv4_options src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_set_ipv4_options(int s)$/;" f typeref:typename:int file: -_connect src/libmodbus/modbus-tcp.cpp /^static int _connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen,$/;" f typeref:typename:int file: -_modbus_tcp_connect src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_connect(modbus_t *ctx)$/;" f typeref:typename:int file: -_modbus_tcp_pi_connect src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_pi_connect(modbus_t *ctx)$/;" f typeref:typename:int file: -_modbus_tcp_close src/libmodbus/modbus-tcp.cpp /^static void _modbus_tcp_close(modbus_t *ctx)$/;" f typeref:typename:void file: -_modbus_tcp_flush src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_flush(modbus_t *ctx)$/;" f typeref:typename:int file: -modbus_tcp_listen src/libmodbus/modbus-tcp.cpp /^int modbus_tcp_listen(modbus_t *ctx)$/;" f typeref:typename:int -modbus_tcp_pi_listen src/libmodbus/modbus-tcp.cpp /^int modbus_tcp_pi_listen(modbus_t *ctx, int nb_connection)$/;" f typeref:typename:int -modbus_tcp_accept src/libmodbus/modbus-tcp.cpp /^int modbus_tcp_accept(modbus_t *ctx, arduino::Client* client)$/;" f typeref:typename:int -modbus_tcp_pi_accept src/libmodbus/modbus-tcp.cpp /^int modbus_tcp_pi_accept(modbus_t *ctx, int *s)$/;" f typeref:typename:int -_modbus_tcp_select src/libmodbus/modbus-tcp.cpp /^static int _modbus_tcp_select(modbus_t *ctx, fd_set *rset, struct timeval *tv, int length_to_rea/;" f typeref:typename:int file: -_modbus_tcp_free src/libmodbus/modbus-tcp.cpp /^static void _modbus_tcp_free(modbus_t *ctx) {$/;" f typeref:typename:void file: -_modbus_tcp_backend src/libmodbus/modbus-tcp.cpp /^const modbus_backend_t _modbus_tcp_backend = {$/;" v typeref:typename:const modbus_backend_t -_modbus_tcp_pi_backend src/libmodbus/modbus-tcp.cpp /^const modbus_backend_t _modbus_tcp_pi_backend = {$/;" v typeref:typename:const modbus_backend_t -modbus_new_tcp src/libmodbus/modbus-tcp.cpp /^modbus_t* modbus_new_tcp(arduino::Client* client, arduino::IPAddress ip_address, int port)$/;" f typeref:typename:modbus_t * -modbus_new_tcp_pi src/libmodbus/modbus-tcp.cpp /^modbus_t* modbus_new_tcp_pi(const char *node, const char *service)$/;" f typeref:typename:modbus_t * -MODBUS_H src/libmodbus/modbus.h /^#define MODBUS_H$/;" d -MODBUS_API src/libmodbus/modbus.h /^# define MODBUS_API /;" d -MODBUS_API src/libmodbus/modbus.h /^# define MODBUS_API /;" d -MODBUS_API src/libmodbus/modbus.h /^# define MODBUS_API$/;" d -MODBUS_BEGIN_DECLS src/libmodbus/modbus.h /^# define MODBUS_BEGIN_DECLS /;" d -MODBUS_END_DECLS src/libmodbus/modbus.h /^# define MODBUS_END_DECLS /;" d -MODBUS_BEGIN_DECLS src/libmodbus/modbus.h /^# define MODBUS_BEGIN_DECLS$/;" d -MODBUS_END_DECLS src/libmodbus/modbus.h /^# define MODBUS_END_DECLS$/;" d -FALSE src/libmodbus/modbus.h /^#define FALSE /;" d -TRUE src/libmodbus/modbus.h /^#define TRUE /;" d -MODBUS_FC_READ_COILS src/libmodbus/modbus.h /^#define MODBUS_FC_READ_COILS /;" d -MODBUS_FC_READ_DISCRETE_INPUTS src/libmodbus/modbus.h /^#define MODBUS_FC_READ_DISCRETE_INPUTS /;" d -MODBUS_FC_READ_HOLDING_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_FC_READ_HOLDING_REGISTERS /;" d -MODBUS_FC_READ_INPUT_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_FC_READ_INPUT_REGISTERS /;" d -MODBUS_FC_WRITE_SINGLE_COIL src/libmodbus/modbus.h /^#define MODBUS_FC_WRITE_SINGLE_COIL /;" d -MODBUS_FC_WRITE_SINGLE_REGISTER src/libmodbus/modbus.h /^#define MODBUS_FC_WRITE_SINGLE_REGISTER /;" d -MODBUS_FC_READ_EXCEPTION_STATUS src/libmodbus/modbus.h /^#define MODBUS_FC_READ_EXCEPTION_STATUS /;" d -MODBUS_FC_WRITE_MULTIPLE_COILS src/libmodbus/modbus.h /^#define MODBUS_FC_WRITE_MULTIPLE_COILS /;" d -MODBUS_FC_WRITE_MULTIPLE_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_FC_WRITE_MULTIPLE_REGISTERS /;" d -MODBUS_FC_REPORT_SLAVE_ID src/libmodbus/modbus.h /^#define MODBUS_FC_REPORT_SLAVE_ID /;" d -MODBUS_FC_MASK_WRITE_REGISTER src/libmodbus/modbus.h /^#define MODBUS_FC_MASK_WRITE_REGISTER /;" d -MODBUS_FC_WRITE_AND_READ_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_FC_WRITE_AND_READ_REGISTERS /;" d -MODBUS_BROADCAST_ADDRESS src/libmodbus/modbus.h /^#define MODBUS_BROADCAST_ADDRESS /;" d -MODBUS_MAX_READ_BITS src/libmodbus/modbus.h /^#define MODBUS_MAX_READ_BITS /;" d -MODBUS_MAX_WRITE_BITS src/libmodbus/modbus.h /^#define MODBUS_MAX_WRITE_BITS /;" d -MODBUS_MAX_READ_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_MAX_READ_REGISTERS /;" d -MODBUS_MAX_WRITE_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_MAX_WRITE_REGISTERS /;" d -MODBUS_MAX_WR_WRITE_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_MAX_WR_WRITE_REGISTERS /;" d -MODBUS_MAX_WR_READ_REGISTERS src/libmodbus/modbus.h /^#define MODBUS_MAX_WR_READ_REGISTERS /;" d -MODBUS_MAX_PDU_LENGTH src/libmodbus/modbus.h /^#define MODBUS_MAX_PDU_LENGTH /;" d -MODBUS_MAX_ADU_LENGTH src/libmodbus/modbus.h /^#define MODBUS_MAX_ADU_LENGTH /;" d -MODBUS_ENOBASE src/libmodbus/modbus.h /^#define MODBUS_ENOBASE /;" d -__anonb309994c0103 src/libmodbus/modbus.h /^enum {$/;" g -MODBUS_EXCEPTION_ILLEGAL_FUNCTION src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_ILLEGAL_FUNCTION = 0x01,$/;" e enum:__anonb309994c0103 -MODBUS_EXCEPTION_ILLEGAL_DATA_ADDRESS src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_ILLEGAL_DATA_ADDRESS,$/;" e enum:__anonb309994c0103 -MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE,$/;" e enum:__anonb309994c0103 -MODBUS_EXCEPTION_SLAVE_OR_SERVER_FAILURE src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_SLAVE_OR_SERVER_FAILURE,$/;" e enum:__anonb309994c0103 -MODBUS_EXCEPTION_ACKNOWLEDGE src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_ACKNOWLEDGE,$/;" e enum:__anonb309994c0103 -MODBUS_EXCEPTION_SLAVE_OR_SERVER_BUSY src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_SLAVE_OR_SERVER_BUSY,$/;" e enum:__anonb309994c0103 -MODBUS_EXCEPTION_NEGATIVE_ACKNOWLEDGE src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_NEGATIVE_ACKNOWLEDGE,$/;" e enum:__anonb309994c0103 -MODBUS_EXCEPTION_MEMORY_PARITY src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_MEMORY_PARITY,$/;" e enum:__anonb309994c0103 -MODBUS_EXCEPTION_NOT_DEFINED src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_NOT_DEFINED,$/;" e enum:__anonb309994c0103 -MODBUS_EXCEPTION_GATEWAY_PATH src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_GATEWAY_PATH,$/;" e enum:__anonb309994c0103 -MODBUS_EXCEPTION_GATEWAY_TARGET src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_GATEWAY_TARGET,$/;" e enum:__anonb309994c0103 -MODBUS_EXCEPTION_MAX src/libmodbus/modbus.h /^ MODBUS_EXCEPTION_MAX$/;" e enum:__anonb309994c0103 -EMBXILFUN src/libmodbus/modbus.h /^#define EMBXILFUN /;" d -EMBXILADD src/libmodbus/modbus.h /^#define EMBXILADD /;" d -EMBXILVAL src/libmodbus/modbus.h /^#define EMBXILVAL /;" d -EMBXSFAIL src/libmodbus/modbus.h /^#define EMBXSFAIL /;" d -EMBXACK src/libmodbus/modbus.h /^#define EMBXACK /;" d -EMBXSBUSY src/libmodbus/modbus.h /^#define EMBXSBUSY /;" d -EMBXNACK src/libmodbus/modbus.h /^#define EMBXNACK /;" d -EMBXMEMPAR src/libmodbus/modbus.h /^#define EMBXMEMPAR /;" d -EMBXGPATH src/libmodbus/modbus.h /^#define EMBXGPATH /;" d -EMBXGTAR src/libmodbus/modbus.h /^#define EMBXGTAR /;" d -EMBBADCRC src/libmodbus/modbus.h /^#define EMBBADCRC /;" d -EMBBADDATA src/libmodbus/modbus.h /^#define EMBBADDATA /;" d -EMBBADEXC src/libmodbus/modbus.h /^#define EMBBADEXC /;" d -EMBUNKEXC src/libmodbus/modbus.h /^#define EMBUNKEXC /;" d -EMBMDATA src/libmodbus/modbus.h /^#define EMBMDATA /;" d -EMBBADSLAVE src/libmodbus/modbus.h /^#define EMBBADSLAVE /;" d -modbus_t src/libmodbus/modbus.h /^typedef struct _modbus modbus_t;$/;" t typeref:struct:_modbus -__anonb309994c0208 src/libmodbus/modbus.h /^typedef struct {$/;" s -nb_bits src/libmodbus/modbus.h /^ int nb_bits;$/;" m struct:__anonb309994c0208 typeref:typename:int -start_bits src/libmodbus/modbus.h /^ int start_bits;$/;" m struct:__anonb309994c0208 typeref:typename:int -nb_input_bits src/libmodbus/modbus.h /^ int nb_input_bits;$/;" m struct:__anonb309994c0208 typeref:typename:int -start_input_bits src/libmodbus/modbus.h /^ int start_input_bits;$/;" m struct:__anonb309994c0208 typeref:typename:int -nb_input_registers src/libmodbus/modbus.h /^ int nb_input_registers;$/;" m struct:__anonb309994c0208 typeref:typename:int -start_input_registers src/libmodbus/modbus.h /^ int start_input_registers;$/;" m struct:__anonb309994c0208 typeref:typename:int -nb_registers src/libmodbus/modbus.h /^ int nb_registers;$/;" m struct:__anonb309994c0208 typeref:typename:int -start_registers src/libmodbus/modbus.h /^ int start_registers;$/;" m struct:__anonb309994c0208 typeref:typename:int -tab_bits src/libmodbus/modbus.h /^ uint8_t *tab_bits;$/;" m struct:__anonb309994c0208 typeref:typename:uint8_t * -tab_input_bits src/libmodbus/modbus.h /^ uint8_t *tab_input_bits;$/;" m struct:__anonb309994c0208 typeref:typename:uint8_t * -tab_input_registers src/libmodbus/modbus.h /^ uint16_t *tab_input_registers;$/;" m struct:__anonb309994c0208 typeref:typename:uint16_t * -tab_registers src/libmodbus/modbus.h /^ uint16_t *tab_registers;$/;" m struct:__anonb309994c0208 typeref:typename:uint16_t * -modbus_mapping_t src/libmodbus/modbus.h /^} modbus_mapping_t;$/;" t typeref:struct:__anonb309994c0208 -__anonb309994c0303 src/libmodbus/modbus.h /^{$/;" g -MODBUS_ERROR_RECOVERY_NONE src/libmodbus/modbus.h /^ MODBUS_ERROR_RECOVERY_NONE = 0,$/;" e enum:__anonb309994c0303 -MODBUS_ERROR_RECOVERY_LINK src/libmodbus/modbus.h /^ MODBUS_ERROR_RECOVERY_LINK = (1<<1),$/;" e enum:__anonb309994c0303 -MODBUS_ERROR_RECOVERY_PROTOCOL src/libmodbus/modbus.h /^ MODBUS_ERROR_RECOVERY_PROTOCOL = (1<<2)$/;" e enum:__anonb309994c0303 -modbus_error_recovery_mode src/libmodbus/modbus.h /^} modbus_error_recovery_mode;$/;" t typeref:enum:__anonb309994c0303 -MODBUS_GET_HIGH_BYTE src/libmodbus/modbus.h /^#define MODBUS_GET_HIGH_BYTE(/;" d -MODBUS_GET_LOW_BYTE src/libmodbus/modbus.h /^#define MODBUS_GET_LOW_BYTE(/;" d -MODBUS_GET_INT64_FROM_INT16 src/libmodbus/modbus.h /^#define MODBUS_GET_INT64_FROM_INT16(/;" d -MODBUS_GET_INT32_FROM_INT16 src/libmodbus/modbus.h /^#define MODBUS_GET_INT32_FROM_INT16(/;" d -MODBUS_GET_INT16_FROM_INT8 src/libmodbus/modbus.h /^#define MODBUS_GET_INT16_FROM_INT8(/;" d -MODBUS_SET_INT16_TO_INT8 src/libmodbus/modbus.h /^#define MODBUS_SET_INT16_TO_INT8(/;" d -MODBUS_SET_INT32_TO_INT16 src/libmodbus/modbus.h /^#define MODBUS_SET_INT32_TO_INT16(/;" d -MODBUS_SET_INT64_TO_INT16 src/libmodbus/modbus.h /^#define MODBUS_SET_INT64_TO_INT16(/;" d -MODBUS_PRIVATE_H src/libmodbus/modbus-private.h /^#define MODBUS_PRIVATE_H$/;" d -ssize_t src/libmodbus/modbus-private.h /^#define ssize_t /;" d -fd_set src/libmodbus/modbus-private.h /^#define fd_set /;" d -timeval src/libmodbus/modbus-private.h /^struct timeval {$/;" s -tv_sec src/libmodbus/modbus-private.h /^ uint32_t tv_sec;$/;" m struct:timeval typeref:typename:uint32_t -tv_usec src/libmodbus/modbus-private.h /^ uint32_t tv_usec;$/;" m struct:timeval typeref:typename:uint32_t -ssize_t src/libmodbus/modbus-private.h /^typedef int ssize_t;$/;" t typeref:typename:int -_MIN_REQ_LENGTH src/libmodbus/modbus-private.h /^#define _MIN_REQ_LENGTH /;" d -_REPORT_SLAVE_ID src/libmodbus/modbus-private.h /^#define _REPORT_SLAVE_ID /;" d -_MODBUS_EXCEPTION_RSP_LENGTH src/libmodbus/modbus-private.h /^#define _MODBUS_EXCEPTION_RSP_LENGTH /;" d -_RESPONSE_TIMEOUT src/libmodbus/modbus-private.h /^#define _RESPONSE_TIMEOUT /;" d -_BYTE_TIMEOUT src/libmodbus/modbus-private.h /^#define _BYTE_TIMEOUT /;" d -__anon22ae26940103 src/libmodbus/modbus-private.h /^typedef enum {$/;" g -_MODBUS_BACKEND_TYPE_RTU src/libmodbus/modbus-private.h /^ _MODBUS_BACKEND_TYPE_RTU=0,$/;" e enum:__anon22ae26940103 -_MODBUS_BACKEND_TYPE_TCP src/libmodbus/modbus-private.h /^ _MODBUS_BACKEND_TYPE_TCP$/;" e enum:__anon22ae26940103 -modbus_backend_type_t src/libmodbus/modbus-private.h /^} modbus_backend_type_t;$/;" t typeref:enum:__anon22ae26940103 -__anon22ae26940203 src/libmodbus/modbus-private.h /^typedef enum {$/;" g -MSG_INDICATION src/libmodbus/modbus-private.h /^ MSG_INDICATION,$/;" e enum:__anon22ae26940203 -MSG_CONFIRMATION src/libmodbus/modbus-private.h /^ MSG_CONFIRMATION$/;" e enum:__anon22ae26940203 -msg_type_t src/libmodbus/modbus-private.h /^} msg_type_t;$/;" t typeref:enum:__anon22ae26940203 -_sft src/libmodbus/modbus-private.h /^typedef struct _sft {$/;" s -slave src/libmodbus/modbus-private.h /^ int slave;$/;" m struct:_sft typeref:typename:int -function src/libmodbus/modbus-private.h /^ int function;$/;" m struct:_sft typeref:typename:int -t_id src/libmodbus/modbus-private.h /^ int t_id;$/;" m struct:_sft typeref:typename:int -sft_t src/libmodbus/modbus-private.h /^} sft_t;$/;" t typeref:struct:_sft -_modbus_backend src/libmodbus/modbus-private.h /^typedef struct _modbus_backend {$/;" s -backend_type src/libmodbus/modbus-private.h /^ unsigned int backend_type;$/;" m struct:_modbus_backend typeref:typename:unsigned int -header_length src/libmodbus/modbus-private.h /^ unsigned int header_length;$/;" m struct:_modbus_backend typeref:typename:unsigned int -checksum_length src/libmodbus/modbus-private.h /^ unsigned int checksum_length;$/;" m struct:_modbus_backend typeref:typename:unsigned int -max_adu_length src/libmodbus/modbus-private.h /^ unsigned int max_adu_length;$/;" m struct:_modbus_backend typeref:typename:unsigned int -set_slave src/libmodbus/modbus-private.h /^ int (*set_slave) (modbus_t *ctx, int slave);$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx,int slave) -build_request_basis src/libmodbus/modbus-private.h /^ int (*build_request_basis) (modbus_t *ctx, int function, int addr,$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx,int function,int addr,int nb,uint8_t * req) -build_response_basis src/libmodbus/modbus-private.h /^ int (*build_response_basis) (sft_t *sft, uint8_t *rsp);$/;" m struct:_modbus_backend typeref:typename:int (*)(sft_t * sft,uint8_t * rsp) -prepare_response_tid src/libmodbus/modbus-private.h /^ int (*prepare_response_tid) (const uint8_t *req, int *req_length);$/;" m struct:_modbus_backend typeref:typename:int (*)(const uint8_t * req,int * req_length) -send_msg_pre src/libmodbus/modbus-private.h /^ int (*send_msg_pre) (uint8_t *req, int req_length);$/;" m struct:_modbus_backend typeref:typename:int (*)(uint8_t * req,int req_length) -send src/libmodbus/modbus-private.h /^ ssize_t (*send) (modbus_t *ctx, const uint8_t *req, int req_length);$/;" m struct:_modbus_backend typeref:typename:ssize_t (*)(modbus_t * ctx,const uint8_t * req,int req_length) -receive src/libmodbus/modbus-private.h /^ int (*receive) (modbus_t *ctx, uint8_t *req);$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx,uint8_t * req) -recv src/libmodbus/modbus-private.h /^ ssize_t (*recv) (modbus_t *ctx, uint8_t *rsp, int rsp_length);$/;" m struct:_modbus_backend typeref:typename:ssize_t (*)(modbus_t * ctx,uint8_t * rsp,int rsp_length) -check_integrity src/libmodbus/modbus-private.h /^ int (*check_integrity) (modbus_t *ctx, uint8_t *msg,$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx,uint8_t * msg,const int msg_length) -pre_check_confirmation src/libmodbus/modbus-private.h /^ int (*pre_check_confirmation) (modbus_t *ctx, const uint8_t *req,$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx,const uint8_t * req,const uint8_t * rsp,int rsp_length) -connect src/libmodbus/modbus-private.h /^ int (*connect) (modbus_t *ctx);$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx) -close src/libmodbus/modbus-private.h /^ void (*close) (modbus_t *ctx);$/;" m struct:_modbus_backend typeref:typename:void (*)(modbus_t * ctx) -flush src/libmodbus/modbus-private.h /^ int (*flush) (modbus_t *ctx);$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx) -select src/libmodbus/modbus-private.h /^ int (*select) (modbus_t *ctx, fd_set *rset, struct timeval *tv, int msg_length);$/;" m struct:_modbus_backend typeref:typename:int (*)(modbus_t * ctx,fd_set * rset,struct timeval * tv,int msg_length) -free src/libmodbus/modbus-private.h /^ void (*free) (modbus_t *ctx);$/;" m struct:_modbus_backend typeref:typename:void (*)(modbus_t * ctx) -modbus_backend_t src/libmodbus/modbus-private.h /^} modbus_backend_t;$/;" t typeref:struct:_modbus_backend -_modbus src/libmodbus/modbus-private.h /^struct _modbus {$/;" s -slave src/libmodbus/modbus-private.h /^ int slave;$/;" m struct:_modbus typeref:typename:int -s src/libmodbus/modbus-private.h /^ int s;$/;" m struct:_modbus typeref:typename:int -debug src/libmodbus/modbus-private.h /^ int debug;$/;" m struct:_modbus typeref:typename:int -error_recovery src/libmodbus/modbus-private.h /^ int error_recovery;$/;" m struct:_modbus typeref:typename:int -response_timeout src/libmodbus/modbus-private.h /^ struct timeval response_timeout;$/;" m struct:_modbus typeref:struct:timeval -byte_timeout src/libmodbus/modbus-private.h /^ struct timeval byte_timeout;$/;" m struct:_modbus typeref:struct:timeval -backend src/libmodbus/modbus-private.h /^ const modbus_backend_t *backend;$/;" m struct:_modbus typeref:typename:const modbus_backend_t * -backend_data src/libmodbus/modbus-private.h /^ void *backend_data;$/;" m struct:_modbus typeref:typename:void * -MODBUS_TCP_H src/libmodbus/modbus-tcp.h /^#define MODBUS_TCP_H$/;" d -__NEED_NAMESPACE__ src/libmodbus/modbus-tcp.h /^#define __NEED_NAMESPACE__$/;" d -arduino src/libmodbus/modbus-tcp.h /^namespace arduino {$/;" n -ECONNRESET src/libmodbus/modbus-tcp.h /^#define ECONNRESET WSAECONNRESET$/;" d -ECONNREFUSED src/libmodbus/modbus-tcp.h /^#define ECONNREFUSED WSAECONNREFUSED$/;" d -ETIMEDOUT src/libmodbus/modbus-tcp.h /^#define ETIMEDOUT WSAETIMEDOUT$/;" d -ENOPROTOOPT src/libmodbus/modbus-tcp.h /^#define ENOPROTOOPT WSAENOPROTOOPT$/;" d -EINPROGRESS src/libmodbus/modbus-tcp.h /^#define EINPROGRESS WSAEINPROGRESS$/;" d -MODBUS_TCP_DEFAULT_PORT src/libmodbus/modbus-tcp.h /^#define MODBUS_TCP_DEFAULT_PORT /;" d -MODBUS_TCP_SLAVE src/libmodbus/modbus-tcp.h /^#define MODBUS_TCP_SLAVE /;" d -MODBUS_TCP_MAX_ADU_LENGTH src/libmodbus/modbus-tcp.h /^#define MODBUS_TCP_MAX_ADU_LENGTH /;" d -MODBUS_VERSION_H src/libmodbus/modbus-version.h /^#define MODBUS_VERSION_H$/;" d -LIBMODBUS_VERSION_MAJOR src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION_MAJOR /;" d -LIBMODBUS_VERSION_MINOR src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION_MINOR /;" d -LIBMODBUS_VERSION_MICRO src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION_MICRO /;" d -LIBMODBUS_VERSION src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION /;" d -LIBMODBUS_VERSION_STRING src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION_STRING /;" d -LIBMODBUS_VERSION_HEX src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION_HEX /;" d -LIBMODBUS_VERSION_CHECK src/libmodbus/modbus-version.h /^#define LIBMODBUS_VERSION_CHECK(/;" d -MODBUS_TCP_PRIVATE_H src/libmodbus/modbus-tcp-private.h /^#define MODBUS_TCP_PRIVATE_H$/;" d -_MODBUS_TCP_HEADER_LENGTH src/libmodbus/modbus-tcp-private.h /^#define _MODBUS_TCP_HEADER_LENGTH /;" d -_MODBUS_TCP_PRESET_REQ_LENGTH src/libmodbus/modbus-tcp-private.h /^#define _MODBUS_TCP_PRESET_REQ_LENGTH /;" d -_MODBUS_TCP_PRESET_RSP_LENGTH src/libmodbus/modbus-tcp-private.h /^#define _MODBUS_TCP_PRESET_RSP_LENGTH /;" d -_MODBUS_TCP_CHECKSUM_LENGTH src/libmodbus/modbus-tcp-private.h /^#define _MODBUS_TCP_CHECKSUM_LENGTH /;" d -_modbus_tcp src/libmodbus/modbus-tcp-private.h /^typedef struct _modbus_tcp {$/;" s -t_id src/libmodbus/modbus-tcp-private.h /^ uint16_t t_id;$/;" m struct:_modbus_tcp typeref:typename:uint16_t -port src/libmodbus/modbus-tcp-private.h /^ int port;$/;" m struct:_modbus_tcp typeref:typename:int -ip src/libmodbus/modbus-tcp-private.h /^ IPAddress ip;$/;" m struct:_modbus_tcp typeref:typename:IPAddress -client src/libmodbus/modbus-tcp-private.h /^ Client* client;$/;" m struct:_modbus_tcp typeref:typename:Client * -ip src/libmodbus/modbus-tcp-private.h /^ char ip[16];$/;" m struct:_modbus_tcp typeref:typename:char[16] -modbus_tcp_t src/libmodbus/modbus-tcp-private.h /^} modbus_tcp_t;$/;" t typeref:struct:_modbus_tcp -_MODBUS_TCP_PI_NODE_LENGTH src/libmodbus/modbus-tcp-private.h /^#define _MODBUS_TCP_PI_NODE_LENGTH /;" d -_MODBUS_TCP_PI_SERVICE_LENGTH src/libmodbus/modbus-tcp-private.h /^#define _MODBUS_TCP_PI_SERVICE_LENGTH /;" d -_modbus_tcp_pi src/libmodbus/modbus-tcp-private.h /^typedef struct _modbus_tcp_pi {$/;" s -t_id src/libmodbus/modbus-tcp-private.h /^ uint16_t t_id;$/;" m struct:_modbus_tcp_pi typeref:typename:uint16_t -port src/libmodbus/modbus-tcp-private.h /^ int port;$/;" m struct:_modbus_tcp_pi typeref:typename:int -node src/libmodbus/modbus-tcp-private.h /^ char node[_MODBUS_TCP_PI_NODE_LENGTH];$/;" m struct:_modbus_tcp_pi typeref:typename:char[] -service src/libmodbus/modbus-tcp-private.h /^ char service[_MODBUS_TCP_PI_SERVICE_LENGTH];$/;" m struct:_modbus_tcp_pi typeref:typename:char[] -modbus_tcp_pi_t src/libmodbus/modbus-tcp-private.h /^} modbus_tcp_pi_t;$/;" t typeref:struct:_modbus_tcp_pi -MODBUS_RTU_H src/libmodbus/modbus-rtu.h /^#define MODBUS_RTU_H$/;" d -MODBUS_RTU_MAX_ADU_LENGTH src/libmodbus/modbus-rtu.h /^#define MODBUS_RTU_MAX_ADU_LENGTH /;" d -MODBUS_RTU_PRIVATE_H src/libmodbus/modbus-rtu-private.h /^#define MODBUS_RTU_PRIVATE_H$/;" d -_MODBUS_RTU_HEADER_LENGTH src/libmodbus/modbus-rtu-private.h /^#define _MODBUS_RTU_HEADER_LENGTH /;" d -_MODBUS_RTU_PRESET_REQ_LENGTH src/libmodbus/modbus-rtu-private.h /^#define _MODBUS_RTU_PRESET_REQ_LENGTH /;" d -_MODBUS_RTU_PRESET_RSP_LENGTH src/libmodbus/modbus-rtu-private.h /^#define _MODBUS_RTU_PRESET_RSP_LENGTH /;" d -_MODBUS_RTU_CHECKSUM_LENGTH src/libmodbus/modbus-rtu-private.h /^#define _MODBUS_RTU_CHECKSUM_LENGTH /;" d -ENOTSUP src/libmodbus/modbus-rtu-private.h /^#define ENOTSUP /;" d -PY_BUF_SIZE src/libmodbus/modbus-rtu-private.h /^#define PY_BUF_SIZE /;" d -win32_ser src/libmodbus/modbus-rtu-private.h /^struct win32_ser {$/;" s -fd src/libmodbus/modbus-rtu-private.h /^ HANDLE fd;$/;" m struct:win32_ser typeref:typename:HANDLE -buf src/libmodbus/modbus-rtu-private.h /^ uint8_t buf[PY_BUF_SIZE];$/;" m struct:win32_ser typeref:typename:uint8_t[] -n_bytes src/libmodbus/modbus-rtu-private.h /^ DWORD n_bytes;$/;" m struct:win32_ser typeref:typename:DWORD -_modbus_rtu src/libmodbus/modbus-rtu-private.h /^typedef struct _modbus_rtu {$/;" s -baud src/libmodbus/modbus-rtu-private.h /^ unsigned long baud;$/;" m struct:_modbus_rtu typeref:typename:unsigned long -config src/libmodbus/modbus-rtu-private.h /^ uint16_t config;$/;" m struct:_modbus_rtu typeref:typename:uint16_t -rs485 src/libmodbus/modbus-rtu-private.h /^ RS485Class* rs485;$/;" m struct:_modbus_rtu typeref:typename:RS485Class * -confirmation_to_ignore src/libmodbus/modbus-rtu-private.h /^ int confirmation_to_ignore;$/;" m struct:_modbus_rtu typeref:typename:int -modbus_rtu_t src/libmodbus/modbus-rtu-private.h /^} modbus_rtu_t;$/;" t typeref:struct:_modbus_rtu -!_TAG_KIND_DESCRIPTION!C d,macro /macro definitions/ -!_TAG_KIND_DESCRIPTION!C e,enumerator /enumerators (values inside an enumeration)/ -!_TAG_KIND_DESCRIPTION!C f,function /function definitions/ -!_TAG_KIND_DESCRIPTION!C g,enum /enumeration names/ -!_TAG_KIND_DESCRIPTION!C h,header /included header files/ -!_TAG_KIND_DESCRIPTION!C m,member /struct, and union members/ -!_TAG_KIND_DESCRIPTION!C s,struct /structure names/ -!_TAG_KIND_DESCRIPTION!C t,typedef /typedefs/ -!_TAG_KIND_DESCRIPTION!C u,union /union names/ -!_TAG_KIND_DESCRIPTION!C v,variable /variable definitions/ -!_TAG_ROLE_DESCRIPTION!C!macro undef /undefined/ -!_TAG_ROLE_DESCRIPTION!C!header system /system header/ -!_TAG_ROLE_DESCRIPTION!C!header local /local header/ -!_TAG_PARSER_VERSION!C 0.0 /current.age/ -printf src/libmodbus/modbus.c /^#define printf(/;" d file: -fprintf src/libmodbus/modbus.c /^#define fprintf(/;" d file: -EIO src/libmodbus/modbus.c /^#define EIO /;" d file: -EINVAL src/libmodbus/modbus.c /^#define EINVAL /;" d file: -ENOPROTOOPT src/libmodbus/modbus.c /^#define ENOPROTOOPT /;" d file: -ECONNREFUSED src/libmodbus/modbus.c /^#define ECONNREFUSED /;" d file: -ETIMEDOUT src/libmodbus/modbus.c /^#define ETIMEDOUT /;" d file: -ENOTSUP src/libmodbus/modbus.c /^#define ENOTSUP /;" d file: -MSG_LENGTH_UNDEFINED src/libmodbus/modbus.c /^#define MSG_LENGTH_UNDEFINED /;" d file: -libmodbus_version_major src/libmodbus/modbus.c /^const unsigned int libmodbus_version_major = LIBMODBUS_VERSION_MAJOR;$/;" v typeref:typename:const unsigned int -libmodbus_version_minor src/libmodbus/modbus.c /^const unsigned int libmodbus_version_minor = LIBMODBUS_VERSION_MINOR;$/;" v typeref:typename:const unsigned int -libmodbus_version_micro src/libmodbus/modbus.c /^const unsigned int libmodbus_version_micro = LIBMODBUS_VERSION_MICRO;$/;" v typeref:typename:const unsigned int -MAX_MESSAGE_LENGTH src/libmodbus/modbus.c /^#define MAX_MESSAGE_LENGTH /;" d file: -__anonb30999470103 src/libmodbus/modbus.c /^typedef enum {$/;" g file: -_STEP_FUNCTION src/libmodbus/modbus.c /^ _STEP_FUNCTION,$/;" e enum:__anonb30999470103 file: -_STEP_META src/libmodbus/modbus.c /^ _STEP_META,$/;" e enum:__anonb30999470103 file: -_STEP_DATA src/libmodbus/modbus.c /^ _STEP_DATA$/;" e enum:__anonb30999470103 file: -_step_t src/libmodbus/modbus.c /^} _step_t;$/;" t typeref:enum:__anonb30999470103 file: -strerror src/libmodbus/modbus.c /^char *strerror(int errnum)$/;" f typeref:typename:char * -modbus_strerror src/libmodbus/modbus.c /^const char *modbus_strerror(int errnum) {$/;" f typeref:typename:const char * -_error_print src/libmodbus/modbus.c /^void _error_print(modbus_t *ctx, const char *context)$/;" f typeref:typename:void -_sleep_response_timeout src/libmodbus/modbus.c /^static void _sleep_response_timeout(modbus_t *ctx)$/;" f typeref:typename:void file: -modbus_flush src/libmodbus/modbus.c /^int modbus_flush(modbus_t *ctx)$/;" f typeref:typename:int -compute_response_length_from_request src/libmodbus/modbus.c /^static unsigned int compute_response_length_from_request(modbus_t *ctx, uint8_t *req)$/;" f typeref:typename:unsigned int file: -send_msg src/libmodbus/modbus.c /^static int send_msg(modbus_t *ctx, uint8_t *msg, int msg_length)$/;" f typeref:typename:int file: -modbus_send_raw_request src/libmodbus/modbus.c /^int modbus_send_raw_request(modbus_t *ctx, uint8_t *raw_req, int raw_req_length)$/;" f typeref:typename:int -compute_meta_length_after_function src/libmodbus/modbus.c /^static uint8_t compute_meta_length_after_function(int function,$/;" f typeref:typename:uint8_t file: -compute_data_length_after_meta src/libmodbus/modbus.c /^static int compute_data_length_after_meta(modbus_t *ctx, uint8_t *msg,$/;" f typeref:typename:int file: -_modbus_receive_msg src/libmodbus/modbus.c /^int _modbus_receive_msg(modbus_t *ctx, uint8_t *msg, msg_type_t msg_type)$/;" f typeref:typename:int -modbus_receive src/libmodbus/modbus.c /^int modbus_receive(modbus_t *ctx, uint8_t *req)$/;" f typeref:typename:int -modbus_receive_confirmation src/libmodbus/modbus.c /^int modbus_receive_confirmation(modbus_t *ctx, uint8_t *rsp)$/;" f typeref:typename:int -check_confirmation src/libmodbus/modbus.c /^static int check_confirmation(modbus_t *ctx, uint8_t *req,$/;" f typeref:typename:int file: -response_io_status src/libmodbus/modbus.c /^static int response_io_status(uint8_t *tab_io_status,$/;" f typeref:typename:int file: -response_exception src/libmodbus/modbus.c /^static int response_exception(modbus_t *ctx, sft_t *sft,$/;" f typeref:typename:int file: -modbus_reply src/libmodbus/modbus.c /^int modbus_reply(modbus_t *ctx, const uint8_t *req,$/;" f typeref:typename:int -modbus_reply_exception src/libmodbus/modbus.c /^int modbus_reply_exception(modbus_t *ctx, const uint8_t *req,$/;" f typeref:typename:int -read_io_status src/libmodbus/modbus.c /^static int read_io_status(modbus_t *ctx, int function,$/;" f typeref:typename:int file: -modbus_read_bits src/libmodbus/modbus.c /^int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest)$/;" f typeref:typename:int -modbus_read_input_bits src/libmodbus/modbus.c /^int modbus_read_input_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest)$/;" f typeref:typename:int -read_registers src/libmodbus/modbus.c /^static int read_registers(modbus_t *ctx, int function, int addr, int nb,$/;" f typeref:typename:int file: -modbus_read_registers src/libmodbus/modbus.c /^int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest)$/;" f typeref:typename:int -modbus_read_input_registers src/libmodbus/modbus.c /^int modbus_read_input_registers(modbus_t *ctx, int addr, int nb,$/;" f typeref:typename:int -write_single src/libmodbus/modbus.c /^static int write_single(modbus_t *ctx, int function, int addr, int value)$/;" f typeref:typename:int file: -modbus_write_bit src/libmodbus/modbus.c /^int modbus_write_bit(modbus_t *ctx, int addr, int status)$/;" f typeref:typename:int -modbus_write_register src/libmodbus/modbus.c /^int modbus_write_register(modbus_t *ctx, int addr, int value)$/;" f typeref:typename:int -modbus_write_bits src/libmodbus/modbus.c /^int modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *src)$/;" f typeref:typename:int -modbus_write_registers src/libmodbus/modbus.c /^int modbus_write_registers(modbus_t *ctx, int addr, int nb, const uint16_t *src)$/;" f typeref:typename:int -modbus_mask_write_register src/libmodbus/modbus.c /^int modbus_mask_write_register(modbus_t *ctx, int addr, uint16_t and_mask, uint16_t or_mask)$/;" f typeref:typename:int -modbus_write_and_read_registers src/libmodbus/modbus.c /^int modbus_write_and_read_registers(modbus_t *ctx,$/;" f typeref:typename:int -modbus_report_slave_id src/libmodbus/modbus.c /^int modbus_report_slave_id(modbus_t *ctx, int max_dest, uint8_t *dest)$/;" f typeref:typename:int -_modbus_init_common src/libmodbus/modbus.c /^void _modbus_init_common(modbus_t *ctx)$/;" f typeref:typename:void -modbus_set_slave src/libmodbus/modbus.c /^int modbus_set_slave(modbus_t *ctx, int slave)$/;" f typeref:typename:int -modbus_set_error_recovery src/libmodbus/modbus.c /^int modbus_set_error_recovery(modbus_t *ctx,$/;" f typeref:typename:int -modbus_set_socket src/libmodbus/modbus.c /^int modbus_set_socket(modbus_t *ctx, int s)$/;" f typeref:typename:int -modbus_get_socket src/libmodbus/modbus.c /^int modbus_get_socket(modbus_t *ctx)$/;" f typeref:typename:int -modbus_get_response_timeout src/libmodbus/modbus.c /^int modbus_get_response_timeout(modbus_t *ctx, uint32_t *to_sec, uint32_t *to_usec)$/;" f typeref:typename:int -modbus_set_response_timeout src/libmodbus/modbus.c /^int modbus_set_response_timeout(modbus_t *ctx, uint32_t to_sec, uint32_t to_usec)$/;" f typeref:typename:int -modbus_get_byte_timeout src/libmodbus/modbus.c /^int modbus_get_byte_timeout(modbus_t *ctx, uint32_t *to_sec, uint32_t *to_usec)$/;" f typeref:typename:int -modbus_set_byte_timeout src/libmodbus/modbus.c /^int modbus_set_byte_timeout(modbus_t *ctx, uint32_t to_sec, uint32_t to_usec)$/;" f typeref:typename:int -modbus_get_header_length src/libmodbus/modbus.c /^int modbus_get_header_length(modbus_t *ctx)$/;" f typeref:typename:int -modbus_connect src/libmodbus/modbus.c /^int modbus_connect(modbus_t *ctx)$/;" f typeref:typename:int -modbus_close src/libmodbus/modbus.c /^void modbus_close(modbus_t *ctx)$/;" f typeref:typename:void -modbus_free src/libmodbus/modbus.c /^void modbus_free(modbus_t *ctx)$/;" f typeref:typename:void -modbus_set_debug src/libmodbus/modbus.c /^int modbus_set_debug(modbus_t *ctx, int flag)$/;" f typeref:typename:int -modbus_mapping_new_start_address src/libmodbus/modbus.c /^modbus_mapping_t* modbus_mapping_new_start_address($/;" f typeref:typename:modbus_mapping_t * -modbus_mapping_new src/libmodbus/modbus.c /^modbus_mapping_t* modbus_mapping_new(int nb_bits, int nb_input_bits,$/;" f typeref:typename:modbus_mapping_t * -modbus_mapping_free src/libmodbus/modbus.c /^void modbus_mapping_free(modbus_mapping_t *mb_mapping)$/;" f typeref:typename:void -strlcpy src/libmodbus/modbus.c /^size_t strlcpy(char *dest, const char *src, size_t dest_size)$/;" f typeref:typename:size_t -htonl src/libmodbus/modbus-data.c /^#define htonl(/;" d file: -htons src/libmodbus/modbus-data.c /^#define htons(/;" d file: -ntohl src/libmodbus/modbus-data.c /^#define ntohl(/;" d file: -ntohs src/libmodbus/modbus-data.c /^#define ntohs(/;" d file: -htonl src/libmodbus/modbus-data.c /^#define htonl(/;" d file: -htons src/libmodbus/modbus-data.c /^#define htons(/;" d file: -ntohl src/libmodbus/modbus-data.c /^#define ntohl(/;" d file: -ntohs src/libmodbus/modbus-data.c /^#define ntohs(/;" d file: -bswap_16 src/libmodbus/modbus-data.c /^# define bswap_16 /;" d file: -bswap_32 src/libmodbus/modbus-data.c /^# define bswap_32 /;" d file: -bswap_64 src/libmodbus/modbus-data.c /^# define bswap_64 /;" d file: -GCC_VERSION src/libmodbus/modbus-data.c /^# define GCC_VERSION /;" d file: -bswap_32 src/libmodbus/modbus-data.c /^# define bswap_32 /;" d file: -bswap_32 src/libmodbus/modbus-data.c /^# define bswap_32 /;" d file: -bswap_16 src/libmodbus/modbus-data.c /^# define bswap_16 /;" d file: -bswap_16 src/libmodbus/modbus-data.c /^static inline uint16_t bswap_16(uint16_t x)$/;" f typeref:typename:uint16_t file: -bswap_32 src/libmodbus/modbus-data.c /^static inline uint32_t bswap_32(uint32_t x)$/;" f typeref:typename:uint32_t file: -modbus_set_bits_from_byte src/libmodbus/modbus-data.c /^void modbus_set_bits_from_byte(uint8_t *dest, int idx, const uint8_t value)$/;" f typeref:typename:void -modbus_set_bits_from_bytes src/libmodbus/modbus-data.c /^void modbus_set_bits_from_bytes(uint8_t *dest, int idx, unsigned int nb_bits,$/;" f typeref:typename:void -modbus_get_byte_from_bits src/libmodbus/modbus-data.c /^uint8_t modbus_get_byte_from_bits(const uint8_t *src, int idx,$/;" f typeref:typename:uint8_t -modbus_get_float_abcd src/libmodbus/modbus-data.c /^float modbus_get_float_abcd(const uint16_t *src)$/;" f typeref:typename:float -modbus_get_float_dcba src/libmodbus/modbus-data.c /^float modbus_get_float_dcba(const uint16_t *src)$/;" f typeref:typename:float -modbus_get_float_badc src/libmodbus/modbus-data.c /^float modbus_get_float_badc(const uint16_t *src)$/;" f typeref:typename:float -modbus_get_float_cdab src/libmodbus/modbus-data.c /^float modbus_get_float_cdab(const uint16_t *src)$/;" f typeref:typename:float -modbus_get_float src/libmodbus/modbus-data.c /^float modbus_get_float(const uint16_t *src)$/;" f typeref:typename:float -modbus_set_float_abcd src/libmodbus/modbus-data.c /^void modbus_set_float_abcd(float f, uint16_t *dest)$/;" f typeref:typename:void -modbus_set_float_dcba src/libmodbus/modbus-data.c /^void modbus_set_float_dcba(float f, uint16_t *dest)$/;" f typeref:typename:void -modbus_set_float_badc src/libmodbus/modbus-data.c /^void modbus_set_float_badc(float f, uint16_t *dest)$/;" f typeref:typename:void -modbus_set_float_cdab src/libmodbus/modbus-data.c /^void modbus_set_float_cdab(float f, uint16_t *dest)$/;" f typeref:typename:void -modbus_set_float src/libmodbus/modbus-data.c /^void modbus_set_float(float f, uint16_t *dest)$/;" f typeref:typename:void -!_TAG_KIND_DESCRIPTION!Markdown c,chapter /chapters/ -!_TAG_KIND_DESCRIPTION!Markdown s,section /sections/ -!_TAG_KIND_DESCRIPTION!Markdown S,subsection /level 2 sections/ -!_TAG_KIND_DESCRIPTION!Markdown t,subsubsection /level 3 sections/ -!_TAG_KIND_DESCRIPTION!Markdown T,l4subsection /level 4 sections/ -!_TAG_KIND_DESCRIPTION!Markdown u,l5subsection /level 5 sections/ -!_TAG_KIND_DESCRIPTION!Markdown n,footnote /footnotes/ -!_TAG_PARSER_VERSION!Markdown 0.0 /current.age/ -Arduino Modbus Library docs/api.md /^# Arduino Modbus Library$/;" c -Modbus Client docs/api.md /^## Modbus Client$/;" s chapter:Arduino Modbus Library -`client.coilRead()` docs/api.md /^### `client.coilRead()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilRead()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilRead()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilRead()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilRead()` -`client.discreteInputRead()` docs/api.md /^### `client.discreteInputRead()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.discreteInputRead()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.discreteInputRead()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.discreteInputRead()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.discreteInputRead()` -`client.holdingRegisterRead()` docs/api.md /^### `client.holdingRegisterRead()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterRead()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterRead()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterRead()` -`client.inputRegisterRead()` docs/api.md /^### `client.inputRegisterRead()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.inputRegisterRead()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.inputRegisterRead()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.inputRegisterRead()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.inputRegisterRead()` -`client.coilWrite()` docs/api.md /^### `client.coilWrite()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilWrite()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilWrite()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilWrite()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.coilWrite()` -`client.holdingRegisterWrite()` docs/api.md /^### `client.holdingRegisterWrite()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterWrite()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterWrite()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterWrite()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.holdingRegisterWrite()` -`client.registerMaskWrite()` docs/api.md /^### `client.registerMaskWrite()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.registerMaskWrite()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.registerMaskWrite()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.registerMaskWrite()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.registerMaskWrite()` -`client.beginTransmission()` docs/api.md /^### `client.beginTransmission()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.beginTransmission()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.beginTransmission()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.beginTransmission()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.beginTransmission()` -`client.write()` docs/api.md /^### `client.write()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.write()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.write()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.write()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.write()` -`client.endTransmission()` docs/api.md /^### `client.endTransmission()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.endTransmission()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.endTransmission()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.endTransmission()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.endTransmission()` -`client.requestFrom()` docs/api.md /^### `client.requestFrom()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.requestFrom()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.requestFrom()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.requestFrom()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.requestFrom()` -`client.available()` docs/api.md /^### `client.available()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.available()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.available()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.available()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.available()` -`client.read()` docs/api.md /^### `client.read()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.read()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.read()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.read()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.read()` -`client.lastError()` docs/api.md /^### `client.lastError()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.lastError()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.lastError()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.lastError()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.lastError()` -`client.end()` docs/api.md /^### `client.end()`$/;" S section:Arduino Modbus Library""Modbus Client -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.end()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.end()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.end()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""Modbus Client""`client.end()` -ModbusRTUClient Class docs/api.md /^## ModbusRTUClient Class$/;" s chapter:Arduino Modbus Library -`modbusRTUClient.begin()` docs/api.md /^### `modbusRTUClient.begin()`$/;" S section:Arduino Modbus Library""ModbusRTUClient Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusRTUClient Class""`modbusRTUClient.begin()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusRTUClient Class""`modbusRTUClient.begin()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusRTUClient Class""`modbusRTUClient.begin()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusRTUClient Class""`modbusRTUClient.begin()` -ModbusTCPClient Class docs/api.md /^## ModbusTCPClient Class$/;" s chapter:Arduino Modbus Library -`ModbusTCPClient()` docs/api.md /^### `ModbusTCPClient()`$/;" S section:Arduino Modbus Library""ModbusTCPClient Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`ModbusTCPClient()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`ModbusTCPClient()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`ModbusTCPClient()` -`modbusTCPClient.begin()` docs/api.md /^### `modbusTCPClient.begin()`$/;" S section:Arduino Modbus Library""ModbusTCPClient Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.begin()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.begin()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.begin()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.begin()` -`modbusTCPClient.connected()` docs/api.md /^### `modbusTCPClient.connected()`$/;" S section:Arduino Modbus Library""ModbusTCPClient Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.connected()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.connected()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.connected()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.connected()` -`modbusTCPClient.stop()` docs/api.md /^### `modbusTCPClient.stop()`$/;" S section:Arduino Modbus Library""ModbusTCPClient Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.stop()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.stop()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.stop()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusTCPClient Class""`modbusTCPClient.stop()` -ModbusServer Class docs/api.md /^## ModbusServer Class$/;" s chapter:Arduino Modbus Library -`modbusServer.configureCoils()` docs/api.md /^### `modbusServer.configureCoils()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureCoils()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureCoils()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureCoils()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureCoils()` -`modbusServer.configureDiscreteInputs()` docs/api.md /^### `modbusServer.configureDiscreteInputs()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureDiscreteInputs()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureDiscreteInputs()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureDiscreteInputs()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureDiscreteInputs()` -`modbusServer.configureHoldingRegisters()` docs/api.md /^### `modbusServer.configureHoldingRegisters()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureHoldingRegisters()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureHoldingRegisters()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureHoldingRegisters()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureHoldingRegisters()` -`modbusServer.configureInputRegisters()` docs/api.md /^### `modbusServer.configureInputRegisters()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureInputRegisters()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureInputRegisters()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureInputRegisters()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.configureInputRegisters()` -`modbusServer.coilRead()` docs/api.md /^### `modbusServer.coilRead()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilRead()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilRead()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilRead()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilRead()` -`modbusServer.discreteInputRead()` docs/api.md /^### `modbusServer.discreteInputRead()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputRead()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputRead()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputRead()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputRead()` -`modbusServer.holdingRegisterRead()` docs/api.md /^### `modbusServer.holdingRegisterRead()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterRead()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterRead()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterRead()` -`modbusServer.inputRegisterRead()` docs/api.md /^### `modbusServer.inputRegisterRead()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterRead()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterRead()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterRead()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterRead()` -`modbusServer.coilWrite()` docs/api.md /^### `modbusServer.coilWrite()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilWrite()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilWrite()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilWrite()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.coilWrite()` -`modbusServer.holdingRegisterWrite()` docs/api.md /^### `modbusServer.holdingRegisterWrite()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterWrite()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterWrite()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterWrite()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.holdingRegisterWrite()` -`modbusServer.registerMaskWrite()` docs/api.md /^### `modbusServer.registerMaskWrite()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.registerMaskWrite()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.registerMaskWrite()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.registerMaskWrite()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.registerMaskWrite()` -`modbusServer.discreteInputWrite()` docs/api.md /^### `modbusServer.discreteInputWrite()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputWrite()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputWrite()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputWrite()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.discreteInputWrite()` -`modbusServer.writeDiscreteInputs()` docs/api.md /^### `modbusServer.writeDiscreteInputs()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeDiscreteInputs()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeDiscreteInputs()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeDiscreteInputs()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeDiscreteInputs()` -`modbusServer.inputRegisterWrite()` docs/api.md /^### `modbusServer.inputRegisterWrite()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterWrite()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterWrite()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterWrite()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.inputRegisterWrite()` -`modbusServer.writeInputRegisters()` docs/api.md /^### `modbusServer.writeInputRegisters()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeInputRegisters()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeInputRegisters()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeInputRegisters()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.writeInputRegisters()` -`modbusServer.poll()` docs/api.md /^### `modbusServer.poll()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.poll()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.poll()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.poll()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.poll()` -`modbusServer.end()` docs/api.md /^### `modbusServer.end()`$/;" S section:Arduino Modbus Library""ModbusServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.end()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.end()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.end()` -Return docs/api.md /^#### Return$/;" t subsection:Arduino Modbus Library""ModbusServer Class""`modbusServer.end()` -ModbusRTUServer Class docs/api.md /^## ModbusRTUServer Class$/;" s chapter:Arduino Modbus Library -`modbusRTUServer.begin()` docs/api.md /^### `modbusRTUServer.begin()`$/;" S section:Arduino Modbus Library""ModbusRTUServer Class -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusRTUServer Class""`modbusRTUServer.begin()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusRTUServer Class""`modbusRTUServer.begin()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusRTUServer Class""`modbusRTUServer.begin()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusRTUServer Class""`modbusRTUServer.begin()` -ModbusTCPServer docs/api.md /^## ModbusTCPServer$/;" s chapter:Arduino Modbus Library -`ModbusTCPServer()` docs/api.md /^### `ModbusTCPServer()`$/;" S section:Arduino Modbus Library""ModbusTCPServer -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`ModbusTCPServer()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`ModbusTCPServer()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`ModbusTCPServer()` -`modbusTCPServer.begin()` docs/api.md /^### `modbusTCPServer.begin()`$/;" S section:Arduino Modbus Library""ModbusTCPServer -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.begin()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.begin()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.begin()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.begin()` -`modbusTCPServer.accept()` docs/api.md /^### `modbusTCPServer.accept()`$/;" S section:Arduino Modbus Library""ModbusTCPServer -Description docs/api.md /^#### Description$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.accept()` -Syntax docs/api.md /^#### Syntax$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.accept()` -Parameters docs/api.md /^#### Parameters$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.accept()` -Returns docs/api.md /^#### Returns$/;" t subsection:Arduino Modbus Library""ModbusTCPServer""`modbusTCPServer.accept()` -Arduino Modbus Library docs/readme.md /^# Arduino Modbus Library$/;" c -Further readings docs/readme.md /^## Further readings$/;" s chapter:Arduino Modbus Library From d599067b07da0d6cdad783205f17d809631d3623 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Wed, 21 Feb 2024 07:16:27 +0100 Subject: [PATCH 08/16] Fix regression: report size delta size on PR. (#143) The necessary steps have in fact been documented here: https://github.com/arduino/report-size-deltas/blob/main/docs/FAQ.md#workflow-triggered-by-pull_request-event but I have overlooked them when I fixed the upload issue. With this PR the size deltas are - once again - reported within the PR. --- .github/workflows/compile-examples.yml | 21 +++++++++++++++++++-- .github/workflows/report-size-deltas.yml | 18 ------------------ .gitignore | 1 + 3 files changed, 20 insertions(+), 20 deletions(-) delete mode 100644 .github/workflows/report-size-deltas.yml create mode 100644 .gitignore diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml index aae4de7..372b465 100644 --- a/.github/workflows/compile-examples.yml +++ b/.github/workflows/compile-examples.yml @@ -19,13 +19,15 @@ on: # See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows#workflow_dispatch workflow_dispatch: +env: + SKETCHES_REPORTS_PATH: sketches-reports + jobs: - build: + compile: name: ${{ matrix.board.fqbn }} runs-on: ubuntu-latest env: - SKETCHES_REPORTS_PATH: sketches-reports # Libraries to install for all boards UNIVERSAL_LIBRARIES: | # Install the ArduinoModbus library from the local path @@ -117,3 +119,18 @@ jobs: if-no-files-found: error name: sketches-report-${{ matrix.board.artifact-name-suffix }} path: ${{ env.SKETCHES_REPORTS_PATH }} + + report: + needs: compile + if: github.event_name == 'pull_request' + runs-on: ubuntu-latest + + steps: + - name: Download sketches reports artifacts + uses: actions/download-artifact@v4 + with: + path: ${{ env.SKETCHES_REPORTS_PATH }} + + - uses: arduino/report-size-deltas@v1 + with: + sketches-reports-source: ${{ env.SKETCHES_REPORTS_PATH }} diff --git a/.github/workflows/report-size-deltas.yml b/.github/workflows/report-size-deltas.yml deleted file mode 100644 index 6fce082..0000000 --- a/.github/workflows/report-size-deltas.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Report Size Deltas - -on: - schedule: - - cron: "*/5 * * * *" - # See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows#workflow_dispatch - workflow_dispatch: - -jobs: - report: - runs-on: ubuntu-latest - - steps: - - name: Comment size deltas reports to PRs - uses: arduino/report-size-deltas@v1 - with: - # The name of the workflow artifact created by the "Compile Examples" workflow - sketches-reports-source: sketches-reports diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f11b75 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea/ From 1902eb5ac49e7dc77ccfb57bb9c23940ee67ef22 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Wed, 21 Feb 2024 19:04:44 +0100 Subject: [PATCH 09/16] Revert "Fix regression: report size delta size on PR. (#143)" This reverts commit d599067b07da0d6cdad783205f17d809631d3623. --- .github/workflows/compile-examples.yml | 21 ++------------------- .github/workflows/report-size-deltas.yml | 18 ++++++++++++++++++ .gitignore | 1 - 3 files changed, 20 insertions(+), 20 deletions(-) create mode 100644 .github/workflows/report-size-deltas.yml delete mode 100644 .gitignore diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml index 372b465..aae4de7 100644 --- a/.github/workflows/compile-examples.yml +++ b/.github/workflows/compile-examples.yml @@ -19,15 +19,13 @@ on: # See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows#workflow_dispatch workflow_dispatch: -env: - SKETCHES_REPORTS_PATH: sketches-reports - jobs: - compile: + build: name: ${{ matrix.board.fqbn }} runs-on: ubuntu-latest env: + SKETCHES_REPORTS_PATH: sketches-reports # Libraries to install for all boards UNIVERSAL_LIBRARIES: | # Install the ArduinoModbus library from the local path @@ -119,18 +117,3 @@ jobs: if-no-files-found: error name: sketches-report-${{ matrix.board.artifact-name-suffix }} path: ${{ env.SKETCHES_REPORTS_PATH }} - - report: - needs: compile - if: github.event_name == 'pull_request' - runs-on: ubuntu-latest - - steps: - - name: Download sketches reports artifacts - uses: actions/download-artifact@v4 - with: - path: ${{ env.SKETCHES_REPORTS_PATH }} - - - uses: arduino/report-size-deltas@v1 - with: - sketches-reports-source: ${{ env.SKETCHES_REPORTS_PATH }} diff --git a/.github/workflows/report-size-deltas.yml b/.github/workflows/report-size-deltas.yml new file mode 100644 index 0000000..6fce082 --- /dev/null +++ b/.github/workflows/report-size-deltas.yml @@ -0,0 +1,18 @@ +name: Report Size Deltas + +on: + schedule: + - cron: "*/5 * * * *" + # See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows#workflow_dispatch + workflow_dispatch: + +jobs: + report: + runs-on: ubuntu-latest + + steps: + - name: Comment size deltas reports to PRs + uses: arduino/report-size-deltas@v1 + with: + # The name of the workflow artifact created by the "Compile Examples" workflow + sketches-reports-source: sketches-reports diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 9f11b75..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.idea/ From 2cd6add1b6f02dba4568a4f6edcbeb1dde6757fb Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Wed, 21 Feb 2024 19:05:15 +0100 Subject: [PATCH 10/16] Correct workflow artifact name pattern in size deltas report workflow The "sketches-reports-source" input of the "arduino/report-size-deltas" GitHub Actions action defines the regular expression that matches the names of the sketches report workflow artifacts produced by the "Compile Examples" workflow. The key string in the names of these artifacts was set to "sketches-report" when the "Compile Examples" workflow was adjusted for compatibility with the breaking changes introduced by updating to version 4.x of the workflow's "actions/upload-artifact" GitHub Actions action dependency. The pattern set in the size deltas report workflow was "sketches-reports". The "s" at the end of that pattern caused it to no longer match against the key string in the artifact names after that adjustment of the "Compile Examples" workflow, resulting in size deltas reports no longer being generated by the workflow. Although a minimal fix would be to simply remove the "s" from the end of the pattern, the decision was made to use a more strict regular expression. This will make it easier for maintainers and contributors to understand that this value is a regular expression and the exact nature of how that regular expression functions (which is less clear when relying on the "arduino/report-size-deltas" action's partial pattern matching behavior). --- .github/workflows/report-size-deltas.yml | 4 ++-- .gitignore | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 .gitignore diff --git a/.github/workflows/report-size-deltas.yml b/.github/workflows/report-size-deltas.yml index 6fce082..067c504 100644 --- a/.github/workflows/report-size-deltas.yml +++ b/.github/workflows/report-size-deltas.yml @@ -14,5 +14,5 @@ jobs: - name: Comment size deltas reports to PRs uses: arduino/report-size-deltas@v1 with: - # The name of the workflow artifact created by the "Compile Examples" workflow - sketches-reports-source: sketches-reports + # Regex matching the names of the workflow artifacts created by the "Compile Examples" workflow + sketches-reports-source: ^sketches-report-.+ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f11b75 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea/ From cdae56d97dfc0b5aac709f5349dcdd5fbe7aed8a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Mar 2024 14:51:42 +0100 Subject: [PATCH 11/16] Bump geekyeggo/delete-artifact from 4 to 5 (#147) Bumps [geekyeggo/delete-artifact](https://github.com/geekyeggo/delete-artifact) from 4 to 5. - [Release notes](https://github.com/geekyeggo/delete-artifact/releases) - [Changelog](https://github.com/GeekyEggo/delete-artifact/blob/main/CHANGELOG.md) - [Commits](https://github.com/geekyeggo/delete-artifact/compare/v4...v5) --- updated-dependencies: - dependency-name: geekyeggo/delete-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/sync-labels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index 47ac50a..53a9f54 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -114,7 +114,7 @@ jobs: path: ${{ env.CONFIGURATIONS_FOLDER }} - name: Remove unneeded artifact - uses: geekyeggo/delete-artifact@v4 + uses: geekyeggo/delete-artifact@v5 with: name: ${{ env.CONFIGURATIONS_ARTIFACT }} From 8912a0cd80d47b45e1bbbf55c67351751de15aef Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Thu, 11 Jul 2024 11:02:21 +0200 Subject: [PATCH 12/16] Example: read temperature and humidity via Modbus RTU from MD02. (#154) --- ...RTUClientMD02TemperatureHumiditySensor.ino | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 examples/RTU/ModbusRTUClientMD02TemperatureHumiditySensor/ModbusRTUClientMD02TemperatureHumiditySensor.ino diff --git a/examples/RTU/ModbusRTUClientMD02TemperatureHumiditySensor/ModbusRTUClientMD02TemperatureHumiditySensor.ino b/examples/RTU/ModbusRTUClientMD02TemperatureHumiditySensor/ModbusRTUClientMD02TemperatureHumiditySensor.ino new file mode 100644 index 0000000..2f113be --- /dev/null +++ b/examples/RTU/ModbusRTUClientMD02TemperatureHumiditySensor/ModbusRTUClientMD02TemperatureHumiditySensor.ino @@ -0,0 +1,76 @@ +/* + Modbus RTU Client MD02 Temperature Humidity sensor + + This sketch creates a Modbus RTU Client and demonstrates + how to use read temperature and humidity values as sensed + by the RTU Modbus capable MD02 sensor. +*/ + +/************************************************************************************** + * INCLUDE + **************************************************************************************/ + +#include +#include + +/************************************************************************************** + * CONSTANTS + **************************************************************************************/ + +static unsigned int const MODBUS_BAUDRATE = 9600; +static float const MODBUS_BIT_DURATION = 1.f / MODBUS_BAUDRATE; +static float const MODBUS_PRE_DELAY_BR = MODBUS_BIT_DURATION * 9.6f * 3.5f * 1e6; +static float const MODBUS_POST_DELAY_BR = MODBUS_BIT_DURATION * 9.6f * 3.5f * 1e6; + +static int const MODBUS_DEVICE_ID = 1; +static int const MODBUS_DEVICE_TEMPERATURE_REGISTER = 0x0001; +static int const MODBUS_DEVICE_HUMIDITY_REGISTER = 0x0002; + +/************************************************************************************** + * SETUP/LOOP + **************************************************************************************/ + +void setup() +{ + Serial.begin(9600); + while (!Serial); + + RS485.setDelays(MODBUS_PRE_DELAY_BR, MODBUS_POST_DELAY_BR); + + if (!ModbusRTUClient.begin(MODBUS_BAUDRATE, SERIAL_8N1)) + { + Serial.println("Failed to start Modbus RTU Client!"); + for (;;) { } + } + + ModbusRTUClient.setTimeout(2 * 1000UL); /* 2 seconds. */ +} + +void loop() +{ + if (!ModbusRTUClient.requestFrom(MODBUS_DEVICE_ID, INPUT_REGISTERS, MODBUS_DEVICE_TEMPERATURE_REGISTER, 1)) { + Serial.print("failed to read temperature register! "); + Serial.println(ModbusRTUClient.lastError()); + return; + } + if (ModbusRTUClient.available()) + { + int16_t const temperature_raw = ModbusRTUClient.read(); + float const temperature_deg = temperature_raw / 100.f; + Serial.println(temperature_deg); + } + + if (!ModbusRTUClient.requestFrom(MODBUS_DEVICE_ID, INPUT_REGISTERS, MODBUS_DEVICE_HUMIDITY_REGISTER, 1)) { + Serial.print("failed to read humidity register! "); + Serial.println(ModbusRTUClient.lastError()); + return; + } + if (ModbusRTUClient.available()) + { + int16_t const humidity_raw = ModbusRTUClient.read(); + float const humidity_per_cent = humidity_raw / 100.f; + Serial.println(humidity_per_cent); + } + + delay(1000); +} From 0708a77ba35f8bbc83884f6e1ef0b455e1b2da13 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 11:35:37 +0000 Subject: [PATCH 13/16] Bump arduino/arduino-lint-action from 1 to 2 Bumps [arduino/arduino-lint-action](https://github.com/arduino/arduino-lint-action) from 1 to 2. - [Release notes](https://github.com/arduino/arduino-lint-action/releases) - [Commits](https://github.com/arduino/arduino-lint-action/compare/v1...v2) --- updated-dependencies: - dependency-name: arduino/arduino-lint-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/check-arduino.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check-arduino.yml b/.github/workflows/check-arduino.yml index adb330f..e818685 100644 --- a/.github/workflows/check-arduino.yml +++ b/.github/workflows/check-arduino.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@v4 - name: Arduino Lint - uses: arduino/arduino-lint-action@v1 + uses: arduino/arduino-lint-action@v2 with: compliance: specification library-manager: update From 760b1e3ae5f1b5fdf86a91d962e56d2c3b924a66 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Thu, 31 Oct 2024 09:07:54 +0100 Subject: [PATCH 14/16] Feature: class ModbusRTUDelay allows for calculation of minimum inter-frame breaks. More information can be found in https://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf, 2.5.1.1 MODBUS Message RTU Framing. --- .../ModbusRTUClientParameters.ino | 12 +---- keywords.txt | 4 ++ src/ArduinoModbus.h | 1 + src/ModbusRTUDelay.h | 50 +++++++++++++++++++ 4 files changed, 56 insertions(+), 11 deletions(-) create mode 100644 src/ModbusRTUDelay.h diff --git a/examples/RTU/ModbusRTUClientParameters/ModbusRTUClientParameters.ino b/examples/RTU/ModbusRTUClientParameters/ModbusRTUClientParameters.ino index 91b9ec4..3d50882 100644 --- a/examples/RTU/ModbusRTUClientParameters/ModbusRTUClientParameters.ino +++ b/examples/RTU/ModbusRTUClientParameters/ModbusRTUClientParameters.ino @@ -16,23 +16,13 @@ constexpr auto baudrate { 19200 }; -// Calculate preDelay and postDelay in microseconds as per Modbus RTU Specification -// -// MODBUS over serial line specification and implementation guide V1.02 -// Paragraph 2.5.1.1 MODBUS Message RTU Framing -// https://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf -constexpr auto bitduration { 1.f / baudrate }; -constexpr auto wordlen { 9.6f }; // try also with 10.0f -constexpr auto preDelayBR { bitduration * wordlen * 3.5f * 1e6 }; -constexpr auto postDelayBR { bitduration * wordlen * 3.5f * 1e6 }; - void setup() { Serial.begin(9600); while (!Serial); Serial.println("Modbus RTU Client Toggle w/ Parameters"); - RS485.setDelays(preDelayBR, postDelayBR); + RS485.setDelays(ModbusRTUDelay::preDelay(baudrate), ModbusRTUDelay::postDelay(baudrate)); // start the Modbus RTU client in 8E1 mode if (!ModbusRTUClient.begin(baudrate, SERIAL_8E1)) { diff --git a/keywords.txt b/keywords.txt index 845bdb3..b30c910 100644 --- a/keywords.txt +++ b/keywords.txt @@ -7,6 +7,7 @@ ####################################### ArduinoModbus KEYWORD1 +ModbusRTUDelay KEYWORD1 ModbusRTUClient KEYWORD1 ModbusRTUServer KEYWORD1 ModbusRTUClient KEYWORD1 @@ -21,6 +22,9 @@ poll KEYWORD2 end KEYWORD2 setTimeout KEYWORD2 +preDelay KEYWORD2 +postDelay KEYWORD2 + beginTransmission KEYWORD2 write KEYWORD2 endTransmission KEYWORD2 diff --git a/src/ArduinoModbus.h b/src/ArduinoModbus.h index 41f1615..deaed3e 100644 --- a/src/ArduinoModbus.h +++ b/src/ArduinoModbus.h @@ -20,6 +20,7 @@ #ifndef _ARDUINO_MODBUS_H_INCLUDED #define _ARDUINO_MODBUS_H_INCLUDED +#include "ModbusRTUDelay.h" #include "ModbusRTUClient.h" #include "ModbusRTUServer.h" diff --git a/src/ModbusRTUDelay.h b/src/ModbusRTUDelay.h new file mode 100644 index 0000000..929e287 --- /dev/null +++ b/src/ModbusRTUDelay.h @@ -0,0 +1,50 @@ +/* + This file is part of the ArduinoModbus library. + Copyright (c) 2018 Arduino SA. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _MODBUS_RTU_DELAY_H_INCLUDED +#define _MODBUS_RTU_DELAY_H_INCLUDED + +class ModbusRTUDelay +{ +public: + /* Do not allow construction or copying. */ + ModbusRTUDelay() = delete; + ModbusRTUDelay(ModbusRTUDelay const &) = delete; + + /* Calculate __minimum__ preDelay and postDelay in + * microseconds as per Modbus RTU Specification. + * + * MODBUS over serial line specification and implementation guide V1.02 + * Paragraph 2.5.1.1 MODBUS Message RTU Framing + * https://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf + */ + static unsigned long const preDelay(unsigned long const baudrate) + { + double const bit_duration = 1. / baudrate; + double const word_len = 9.6f; // try also with 10.0f + double const pre_delay_us = bit_duration * word_len * 3.5f * 1e6; + return static_cast(pre_delay_us); + } + static unsigned long const postDelay(unsigned long const baudrate) + { + return preDelay(baudrate); + } +}; + +#endif /* _MODBUS_RTU_DELAY_H_INCLUDED */ From f6f91274424429e9fe77561b688981ed9eaa6e44 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Thu, 31 Oct 2024 13:14:59 +0100 Subject: [PATCH 15/16] Directly set standard-conforming RTU delays inside Modbus library. --- .../ModbusRTUClientParameters/ModbusRTUClientParameters.ino | 2 -- src/ArduinoModbus.h | 1 - src/ModbusRTUClient.cpp | 4 ++++ src/ModbusRTUServer.cpp | 5 +++++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/examples/RTU/ModbusRTUClientParameters/ModbusRTUClientParameters.ino b/examples/RTU/ModbusRTUClientParameters/ModbusRTUClientParameters.ino index 3d50882..ec30e0d 100644 --- a/examples/RTU/ModbusRTUClientParameters/ModbusRTUClientParameters.ino +++ b/examples/RTU/ModbusRTUClientParameters/ModbusRTUClientParameters.ino @@ -22,8 +22,6 @@ void setup() { Serial.println("Modbus RTU Client Toggle w/ Parameters"); - RS485.setDelays(ModbusRTUDelay::preDelay(baudrate), ModbusRTUDelay::postDelay(baudrate)); - // start the Modbus RTU client in 8E1 mode if (!ModbusRTUClient.begin(baudrate, SERIAL_8E1)) { Serial.println("Failed to start Modbus RTU Client!"); diff --git a/src/ArduinoModbus.h b/src/ArduinoModbus.h index deaed3e..41f1615 100644 --- a/src/ArduinoModbus.h +++ b/src/ArduinoModbus.h @@ -20,7 +20,6 @@ #ifndef _ARDUINO_MODBUS_H_INCLUDED #define _ARDUINO_MODBUS_H_INCLUDED -#include "ModbusRTUDelay.h" #include "ModbusRTUClient.h" #include "ModbusRTUServer.h" diff --git a/src/ModbusRTUClient.cpp b/src/ModbusRTUClient.cpp index 2b35227..9e31a27 100644 --- a/src/ModbusRTUClient.cpp +++ b/src/ModbusRTUClient.cpp @@ -26,6 +26,8 @@ extern "C" { #include "ModbusRTUClient.h" +#include "ModbusRTUDelay.h" + ModbusRTUClientClass::ModbusRTUClientClass() : ModbusClient(1000) { @@ -42,6 +44,8 @@ ModbusRTUClientClass::~ModbusRTUClientClass() int ModbusRTUClientClass::begin(unsigned long baudrate, uint16_t config) { + _rs485->setDelays(ModbusRTUDelay::preDelay(baudrate), ModbusRTUDelay::postDelay(baudrate)); + modbus_t* mb = modbus_new_rtu(_rs485, baudrate, config); if (!ModbusClient::begin(mb, 0x00)) { diff --git a/src/ModbusRTUServer.cpp b/src/ModbusRTUServer.cpp index 95cc0b8..836ba7b 100644 --- a/src/ModbusRTUServer.cpp +++ b/src/ModbusRTUServer.cpp @@ -26,6 +26,9 @@ extern "C" { #include "ModbusRTUServer.h" +#include "ModbusRTUDelay.h" + + ModbusRTUServerClass::ModbusRTUServerClass() { } @@ -40,6 +43,8 @@ ModbusRTUServerClass::~ModbusRTUServerClass() int ModbusRTUServerClass::begin(int id, unsigned long baudrate, uint16_t config) { + _rs485->setDelays(ModbusRTUDelay::preDelay(baudrate), ModbusRTUDelay::postDelay(baudrate)); + modbus_t* mb = modbus_new_rtu(_rs485, baudrate, config); if (!ModbusServer::begin(mb, id)) { From c1c643e6d07b2c4e61f8650117c51ac757c16477 Mon Sep 17 00:00:00 2001 From: per1234 Date: Fri, 9 May 2025 03:05:50 -0700 Subject: [PATCH 16/16] Add dedicated license file Standardization in license documentation is important because, in addition to making it easy for humans to find this vital information, it allows machines to automate the process of license type determination, which is useful both for discovering suitable open source projects as well as checking open source license compliance. Previously, the open source license of this project was not documented in a dedicated license file. Due to this, even though the project is licensed under a standardized open source license, the open license type could not be identified with 100% confidence by machines (e.g., the Licensee Gem used by the GitHub website), which meant identification could only be made by a human carefully evaluating the license text. The project's license is hereby documented in a standardized license file. The result is that the project's open source license type can now be automatically identified. This does not result in any change to the project licensing. --- LICENSE.txt | 504 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 504 insertions(+) create mode 100644 LICENSE.txt diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..8000a6f --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random + Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it!