TwiceAsNice  2019-02-18
Classes | Macros | Typedefs | Enumerations | Functions | Variables
modbus.h File Reference
#include <stdint.h>
#include <sys/time.h>
#include "modbus-version.h"
#include "modbus-tcp.h"
#include "modbus-rtu.h"
Include dependency graph for modbus.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  modbus_mapping_t
 

Macros

#define MODBUS_BEGIN_DECLS
 
#define MODBUS_END_DECLS
 
#define FALSE   0
 
#define TRUE   1
 
#define OFF   0
 
#define ON   1
 
#define MODBUS_BROADCAST_ADDRESS   0
 
#define MODBUS_MAX_READ_BITS   2000
 
#define MODBUS_MAX_WRITE_BITS   1968
 
#define MODBUS_MAX_READ_REGISTERS   125
 
#define MODBUS_MAX_WRITE_REGISTERS   123
 
#define MODBUS_MAX_RW_WRITE_REGISTERS   121
 
#define MODBUS_ENOBASE   112345678
 
#define EMBXILFUN   (MODBUS_ENOBASE + MODBUS_EXCEPTION_ILLEGAL_FUNCTION)
 
#define EMBXILADD   (MODBUS_ENOBASE + MODBUS_EXCEPTION_ILLEGAL_DATA_ADDRESS)
 
#define EMBXILVAL   (MODBUS_ENOBASE + MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE)
 
#define EMBXSFAIL   (MODBUS_ENOBASE + MODBUS_EXCEPTION_SLAVE_OR_SERVER_FAILURE)
 
#define EMBXACK   (MODBUS_ENOBASE + MODBUS_EXCEPTION_ACKNOWLEDGE)
 
#define EMBXSBUSY   (MODBUS_ENOBASE + MODBUS_EXCEPTION_SLAVE_OR_SERVER_BUSY)
 
#define EMBXNACK   (MODBUS_ENOBASE + MODBUS_EXCEPTION_NEGATIVE_ACKNOWLEDGE)
 
#define EMBXMEMPAR   (MODBUS_ENOBASE + MODBUS_EXCEPTION_MEMORY_PARITY)
 
#define EMBXGPATH   (MODBUS_ENOBASE + MODBUS_EXCEPTION_GATEWAY_PATH)
 
#define EMBXGTAR   (MODBUS_ENOBASE + MODBUS_EXCEPTION_GATEWAY_TARGET)
 
#define EMBBADCRC   (EMBXGTAR + 1)
 
#define EMBBADDATA   (EMBXGTAR + 2)
 
#define EMBBADEXC   (EMBXGTAR + 3)
 
#define EMBUNKEXC   (EMBXGTAR + 4)
 
#define EMBMDATA   (EMBXGTAR + 5)
 
#define MODBUS_GET_HIGH_BYTE(data)   (((data) >> 8) & 0xFF)
 UTILS FUNCTIONS. More...
 
#define MODBUS_GET_LOW_BYTE(data)   ((data) & 0xFF)
 
#define MODBUS_GET_INT32_FROM_INT16(tab_int16, index)   ((tab_int16[(index)] << 16) + tab_int16[(index) + 1])
 
#define MODBUS_GET_INT16_FROM_INT8(tab_int8, index)   ((tab_int8[(index)] << 8) + tab_int8[(index) + 1])
 
#define MODBUS_SET_INT16_TO_INT8(tab_int8, index, value)
 

Typedefs

typedef struct _modbus modbus_t
 

Enumerations

enum  {
  MODBUS_EXCEPTION_ILLEGAL_FUNCTION = 0x01, MODBUS_EXCEPTION_ILLEGAL_DATA_ADDRESS, MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE, MODBUS_EXCEPTION_SLAVE_OR_SERVER_FAILURE,
  MODBUS_EXCEPTION_ACKNOWLEDGE, MODBUS_EXCEPTION_SLAVE_OR_SERVER_BUSY, MODBUS_EXCEPTION_NEGATIVE_ACKNOWLEDGE, MODBUS_EXCEPTION_MEMORY_PARITY,
  MODBUS_EXCEPTION_NOT_DEFINED, MODBUS_EXCEPTION_GATEWAY_PATH, MODBUS_EXCEPTION_GATEWAY_TARGET, MODBUS_EXCEPTION_MAX
}
 
enum  modbus_error_recovery_mode {
  MODBUS_ERROR_RECOVERY_NONE = 0, MODBUS_ERROR_RECOVERY_LINK = (1<<1), MODBUS_ERROR_RECOVERY_PROTOCOL = (1<<2), MODBUS_ERROR_RECOVERY_NONE = 0,
  MODBUS_ERROR_RECOVERY_LINK = (1<<1), MODBUS_ERROR_RECOVERY_PROTOCOL = (1<<2), MODBUS_ERROR_RECOVERY_NONE = 0, MODBUS_ERROR_RECOVERY_LINK = (1<<1),
  MODBUS_ERROR_RECOVERY_PROTOCOL = (1<<2)
}
 

Functions

int modbus_set_slave (modbus_t *ctx, int slave)
 
int modbus_set_error_recovery (modbus_t *ctx, modbus_error_recovery_mode error_recovery)
 
void modbus_set_socket (modbus_t *ctx, int socket)
 
int modbus_get_socket (modbus_t *ctx)
 
void modbus_get_response_timeout (modbus_t *ctx, struct timeval *timeout)
 
void modbus_set_response_timeout (modbus_t *ctx, const struct timeval *timeout)
 
void modbus_get_byte_timeout (modbus_t *ctx, struct timeval *timeout)
 
void modbus_set_byte_timeout (modbus_t *ctx, const struct timeval *timeout)
 
int modbus_get_header_length (modbus_t *ctx)
 
int modbus_connect (modbus_t *ctx)
 
void modbus_close (modbus_t *ctx)
 
void modbus_free (modbus_t *ctx)
 
int modbus_flush (modbus_t *ctx)
 
void modbus_set_debug (modbus_t *ctx, int boolean)
 
const char * modbus_strerror (int errnum)
 
int modbus_read_bits (modbus_t *ctx, int addr, int nb, uint8_t *dest)
 
int modbus_read_input_bits (modbus_t *ctx, int addr, int nb, uint8_t *dest)
 
int modbus_read_registers (modbus_t *ctx, int addr, int nb, uint16_t *dest)
 
int modbus_read_input_registers (modbus_t *ctx, int addr, int nb, uint16_t *dest)
 
int modbus_write_bit (modbus_t *ctx, int coil_addr, int status)
 
int modbus_write_register (modbus_t *ctx, int reg_addr, int value)
 
int modbus_write_bits (modbus_t *ctx, int addr, int nb, const uint8_t *data)
 
int modbus_write_registers (modbus_t *ctx, int addr, int nb, const uint16_t *data)
 
int modbus_write_and_read_registers (modbus_t *ctx, int write_addr, int write_nb, const uint16_t *src, int read_addr, int read_nb, uint16_t *dest)
 
int modbus_report_slave_id (modbus_t *ctx, uint8_t *dest)
 
modbus_mapping_tmodbus_mapping_new (int nb_coil_status, int nb_input_status, int nb_holding_registers, int nb_input_registers)
 
void modbus_mapping_free (modbus_mapping_t *mb_mapping)
 
int modbus_send_raw_request (modbus_t *ctx, uint8_t *raw_req, int raw_req_length)
 
int modbus_receive (modbus_t *ctx, uint8_t *req)
 
int modbus_receive_from (modbus_t *ctx, int sockfd, uint8_t *req)
 
int modbus_receive_confirmation (modbus_t *ctx, uint8_t *rsp)
 
int modbus_reply (modbus_t *ctx, const uint8_t *req, int req_length, modbus_mapping_t *mb_mapping)
 
int modbus_reply_exception (modbus_t *ctx, const uint8_t *req, unsigned int exception_code)
 
void modbus_set_bits_from_byte (uint8_t *dest, int index, const uint8_t value)
 
void modbus_set_bits_from_bytes (uint8_t *dest, int index, unsigned int nb_bits, const uint8_t *tab_byte)
 
uint8_t modbus_get_byte_from_bits (const uint8_t *src, int index, unsigned int nb_bits)
 
float modbus_get_float (const uint16_t *src)
 
void modbus_set_float (float f, uint16_t *dest)
 

Variables

const unsigned int libmodbus_version_major
 
const unsigned int libmodbus_version_minor
 
const unsigned int libmodbus_version_micro
 

Macro Definition Documentation

◆ EMBBADCRC

#define EMBBADCRC   (EMBXGTAR + 1)

◆ EMBBADDATA

#define EMBBADDATA   (EMBXGTAR + 2)

◆ EMBBADEXC

#define EMBBADEXC   (EMBXGTAR + 3)

◆ EMBMDATA

#define EMBMDATA   (EMBXGTAR + 5)

◆ EMBUNKEXC

#define EMBUNKEXC   (EMBXGTAR + 4)

◆ EMBXACK

#define EMBXACK   (MODBUS_ENOBASE + MODBUS_EXCEPTION_ACKNOWLEDGE)

◆ EMBXGPATH

#define EMBXGPATH   (MODBUS_ENOBASE + MODBUS_EXCEPTION_GATEWAY_PATH)

◆ EMBXGTAR

◆ EMBXILADD

◆ EMBXILFUN

◆ EMBXILVAL

◆ EMBXMEMPAR

#define EMBXMEMPAR   (MODBUS_ENOBASE + MODBUS_EXCEPTION_MEMORY_PARITY)

◆ EMBXNACK

◆ EMBXSBUSY

◆ EMBXSFAIL

◆ FALSE

#define FALSE   0

◆ MODBUS_BEGIN_DECLS

#define MODBUS_BEGIN_DECLS

◆ MODBUS_BROADCAST_ADDRESS

#define MODBUS_BROADCAST_ADDRESS   0

◆ MODBUS_END_DECLS

#define MODBUS_END_DECLS

◆ MODBUS_ENOBASE

#define MODBUS_ENOBASE   112345678

◆ MODBUS_GET_HIGH_BYTE

#define MODBUS_GET_HIGH_BYTE (   data)    (((data) >> 8) & 0xFF)

UTILS FUNCTIONS.

◆ MODBUS_GET_INT16_FROM_INT8

#define MODBUS_GET_INT16_FROM_INT8 (   tab_int8,
  index 
)    ((tab_int8[(index)] << 8) + tab_int8[(index) + 1])

◆ MODBUS_GET_INT32_FROM_INT16

#define MODBUS_GET_INT32_FROM_INT16 (   tab_int16,
  index 
)    ((tab_int16[(index)] << 16) + tab_int16[(index) + 1])

◆ MODBUS_GET_LOW_BYTE

#define MODBUS_GET_LOW_BYTE (   data)    ((data) & 0xFF)

◆ MODBUS_MAX_READ_BITS

#define MODBUS_MAX_READ_BITS   2000

◆ MODBUS_MAX_READ_REGISTERS

#define MODBUS_MAX_READ_REGISTERS   125

◆ MODBUS_MAX_RW_WRITE_REGISTERS

#define MODBUS_MAX_RW_WRITE_REGISTERS   121

◆ MODBUS_MAX_WRITE_BITS

#define MODBUS_MAX_WRITE_BITS   1968

◆ MODBUS_MAX_WRITE_REGISTERS

#define MODBUS_MAX_WRITE_REGISTERS   123

◆ MODBUS_SET_INT16_TO_INT8

#define MODBUS_SET_INT16_TO_INT8 (   tab_int8,
  index,
  value 
)
Value:
do { \
tab_int8[(index)] = (value) >> 8; \
tab_int8[(index) + 1] = (value) & 0xFF; \
} while (0)
U8 value
Definition: dev_gpio.c:37

◆ OFF

#define OFF   0

◆ ON

#define ON   1

◆ TRUE

#define TRUE   1

Typedef Documentation

◆ modbus_t

typedef struct _modbus modbus_t

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
MODBUS_EXCEPTION_ILLEGAL_FUNCTION 
MODBUS_EXCEPTION_ILLEGAL_DATA_ADDRESS 
MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE 
MODBUS_EXCEPTION_SLAVE_OR_SERVER_FAILURE 
MODBUS_EXCEPTION_ACKNOWLEDGE 
MODBUS_EXCEPTION_SLAVE_OR_SERVER_BUSY 
MODBUS_EXCEPTION_NEGATIVE_ACKNOWLEDGE 
MODBUS_EXCEPTION_MEMORY_PARITY 
MODBUS_EXCEPTION_NOT_DEFINED 
MODBUS_EXCEPTION_GATEWAY_PATH 
MODBUS_EXCEPTION_GATEWAY_TARGET 
MODBUS_EXCEPTION_MAX 

◆ modbus_error_recovery_mode

Enumerator
MODBUS_ERROR_RECOVERY_NONE 
MODBUS_ERROR_RECOVERY_LINK 
MODBUS_ERROR_RECOVERY_PROTOCOL 
MODBUS_ERROR_RECOVERY_NONE 
MODBUS_ERROR_RECOVERY_LINK 
MODBUS_ERROR_RECOVERY_PROTOCOL 
MODBUS_ERROR_RECOVERY_NONE 
MODBUS_ERROR_RECOVERY_LINK 
MODBUS_ERROR_RECOVERY_PROTOCOL 

Function Documentation

◆ modbus_close()

void modbus_close ( modbus_t ctx)

◆ modbus_connect()

int modbus_connect ( modbus_t ctx)

◆ modbus_flush()

int modbus_flush ( modbus_t ctx)

◆ modbus_free()

void modbus_free ( modbus_t ctx)

◆ modbus_get_byte_from_bits()

uint8_t modbus_get_byte_from_bits ( const uint8_t src,
int  index,
unsigned int  nb_bits 
)

◆ modbus_get_byte_timeout()

void modbus_get_byte_timeout ( modbus_t ctx,
struct timeval *  timeout 
)

◆ modbus_get_float()

float modbus_get_float ( const uint16_t src)

◆ modbus_get_header_length()

int modbus_get_header_length ( modbus_t ctx)

◆ modbus_get_response_timeout()

void modbus_get_response_timeout ( modbus_t ctx,
struct timeval *  timeout 
)

◆ modbus_get_socket()

int modbus_get_socket ( modbus_t ctx)

◆ modbus_mapping_free()

void modbus_mapping_free ( modbus_mapping_t mb_mapping)

◆ modbus_mapping_new()

modbus_mapping_t* modbus_mapping_new ( int  nb_coil_status,
int  nb_input_status,
int  nb_holding_registers,
int  nb_input_registers 
)

◆ modbus_read_bits()

int modbus_read_bits ( modbus_t ctx,
int  addr,
int  nb,
uint8_t dest 
)

◆ modbus_read_input_bits()

int modbus_read_input_bits ( modbus_t ctx,
int  addr,
int  nb,
uint8_t dest 
)

◆ modbus_read_input_registers()

int modbus_read_input_registers ( modbus_t ctx,
int  addr,
int  nb,
uint16_t dest 
)

◆ modbus_read_registers()

int modbus_read_registers ( modbus_t ctx,
int  addr,
int  nb,
uint16_t dest 
)

◆ modbus_receive()

int modbus_receive ( modbus_t ctx,
uint8_t req 
)

◆ modbus_receive_confirmation()

int modbus_receive_confirmation ( modbus_t ctx,
uint8_t rsp 
)

◆ modbus_receive_from()

int modbus_receive_from ( modbus_t ctx,
int  sockfd,
uint8_t req 
)

◆ modbus_reply()

int modbus_reply ( modbus_t ctx,
const uint8_t req,
int  req_length,
modbus_mapping_t mb_mapping 
)

◆ modbus_reply_exception()

int modbus_reply_exception ( modbus_t ctx,
const uint8_t req,
unsigned int  exception_code 
)

◆ modbus_report_slave_id()

int modbus_report_slave_id ( modbus_t ctx,
uint8_t dest 
)

◆ modbus_send_raw_request()

int modbus_send_raw_request ( modbus_t ctx,
uint8_t raw_req,
int  raw_req_length 
)

◆ modbus_set_bits_from_byte()

void modbus_set_bits_from_byte ( uint8_t dest,
int  index,
const uint8_t  value 
)

◆ modbus_set_bits_from_bytes()

void modbus_set_bits_from_bytes ( uint8_t dest,
int  index,
unsigned int  nb_bits,
const uint8_t tab_byte 
)

◆ modbus_set_byte_timeout()

void modbus_set_byte_timeout ( modbus_t ctx,
const struct timeval *  timeout 
)

◆ modbus_set_debug()

void modbus_set_debug ( modbus_t ctx,
int  boolean 
)

◆ modbus_set_error_recovery()

int modbus_set_error_recovery ( modbus_t ctx,
modbus_error_recovery_mode  error_recovery 
)

◆ modbus_set_float()

void modbus_set_float ( float  f,
uint16_t dest 
)

◆ modbus_set_response_timeout()

void modbus_set_response_timeout ( modbus_t ctx,
const struct timeval *  timeout 
)

◆ modbus_set_slave()

int modbus_set_slave ( modbus_t ctx,
int  slave 
)

◆ modbus_set_socket()

void modbus_set_socket ( modbus_t ctx,
int  socket 
)

◆ modbus_strerror()

const char* modbus_strerror ( int  errnum)

◆ modbus_write_and_read_registers()

int modbus_write_and_read_registers ( modbus_t ctx,
int  write_addr,
int  write_nb,
const uint16_t src,
int  read_addr,
int  read_nb,
uint16_t dest 
)

◆ modbus_write_bit()

int modbus_write_bit ( modbus_t ctx,
int  coil_addr,
int  status 
)

◆ modbus_write_bits()

int modbus_write_bits ( modbus_t ctx,
int  addr,
int  nb,
const uint8_t data 
)

◆ modbus_write_register()

int modbus_write_register ( modbus_t ctx,
int  reg_addr,
int  value 
)

◆ modbus_write_registers()

int modbus_write_registers ( modbus_t ctx,
int  addr,
int  nb,
const uint16_t data 
)

Variable Documentation

◆ libmodbus_version_major

const unsigned int libmodbus_version_major

◆ libmodbus_version_micro

const unsigned int libmodbus_version_micro

◆ libmodbus_version_minor

const unsigned int libmodbus_version_minor