TwiceAsNice  2019-02-18
Macros | Functions | Variables
modbus-tcp.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <poll.h>
#include <netdb.h>
#include "modbus-private.h"
#include "modbus-tcp.h"
#include "modbus-tcp-private.h"
#include "modbus-rtu.h"
#include "modbus-rtu-private.h"
Include dependency graph for modbus-tcp.c:

Macros

#define MSG_NOSIGNAL   0
 

Functions

int _modbus_set_slave (modbus_t *ctx, int slave)
 
int _modbus_tcp_build_request_basis (modbus_t *ctx, int function, int addr, int nb, uint8_t *req)
 
int _modbus_tcp_build_response_basis (sft_t *sft, uint8_t *rsp)
 
int _modbus_tcp_prepare_response_tid (const uint8_t *req, int *req_length)
 
int _modbus_tcp_send_msg_pre (uint8_t *req, int req_length)
 
ssize_t _modbus_tcp_send (modbus_t *ctx, const uint8_t *req, int req_length)
 
ssize_t _modbus_tcp_recv (modbus_t *ctx, uint8_t *rsp, int rsp_length)
 
int _modbus_tcp_check_integrity (modbus_t *ctx, uint8_t *msg, const int msg_length)
 
int _modbus_tcp_pre_check_confirmation (modbus_t *ctx, const uint8_t *req, const uint8_t *rsp, int rsp_length)
 
int _modbus_tcp_set_ipv4_options (int s)
 
int _modbus_tcp_connect (modbus_t *ctx)
 
int _modbus_tcp_pi_connect (modbus_t *ctx)
 
void _modbus_tcp_close (modbus_t *ctx)
 
int _modbus_tcp_flush (modbus_t *ctx)
 
int modbus_tcp_listen (modbus_t *ctx, int nb_connection)
 
int modbus_tcp_pi_listen (modbus_t *ctx, int nb_connection)
 
int modbus_tcp_accept (modbus_t *ctx, int *socket)
 
int modbus_tcp_pi_accept (modbus_t *ctx, int *socket)
 
int _modbus_tcp_select (modbus_t *ctx, fd_set *rfds, struct timeval *tv, int length_to_read)
 
int _modbus_tcp_filter_request (modbus_t *ctx, int slave)
 
modbus_tmodbus_new_tcp (const char *ip, int port)
 
modbus_tmodbus_new_tcp_pi (const char *node, const char *service)
 
int _modbus_rtu_build_request_basis (modbus_t *ctx, int function, int addr, int nb, uint8_t *req)
 
int _modbus_rtu_build_response_basis (sft_t *sft, uint8_t *rsp)
 
int _modbus_rtu_prepare_response_tid (const uint8_t *req, int *req_length)
 
int _modbus_rtu_send_msg_pre (uint8_t *req, int req_length)
 
int _modbus_rtu_check_integrity (modbus_t *ctx, uint8_t *msg, const int msg_length)
 
int _modbus_rtu_filter_request (modbus_t *ctx, int slave)
 
uint16_t crc16 (uint8_t *buffer, uint16_t buffer_length)
 
int _modbus_rtutcp_check_integrity (modbus_t *ctx, uint8_t *msg, const int msg_length)
 
modbus_tmodbus_new_rtutcp (const char *ip, int port)
 

Variables

const modbus_backend_t _modbus_tcp_backend
 
const modbus_backend_t _modbus_tcp_pi_backend
 
const modbus_backend_t _modbus_rtutcp_backend
 

Macro Definition Documentation

◆ MSG_NOSIGNAL

#define MSG_NOSIGNAL   0

Function Documentation

◆ _modbus_rtu_build_request_basis()

int _modbus_rtu_build_request_basis ( modbus_t ctx,
int  function,
int  addr,
int  nb,
uint8_t req 
)

◆ _modbus_rtu_build_response_basis()

int _modbus_rtu_build_response_basis ( sft_t sft,
uint8_t rsp 
)

◆ _modbus_rtu_check_integrity()

int _modbus_rtu_check_integrity ( modbus_t ctx,
uint8_t msg,
const int  msg_length 
)

◆ _modbus_rtu_filter_request()

int _modbus_rtu_filter_request ( modbus_t ctx,
int  slave 
)

◆ _modbus_rtu_prepare_response_tid()

int _modbus_rtu_prepare_response_tid ( const uint8_t req,
int *  req_length 
)

◆ _modbus_rtu_send_msg_pre()

int _modbus_rtu_send_msg_pre ( uint8_t req,
int  req_length 
)

◆ _modbus_rtutcp_check_integrity()

int _modbus_rtutcp_check_integrity ( modbus_t ctx,
uint8_t msg,
const int  msg_length 
)

◆ _modbus_set_slave()

int _modbus_set_slave ( modbus_t ctx,
int  slave 
)

◆ _modbus_tcp_build_request_basis()

int _modbus_tcp_build_request_basis ( modbus_t ctx,
int  function,
int  addr,
int  nb,
uint8_t req 
)

◆ _modbus_tcp_build_response_basis()

int _modbus_tcp_build_response_basis ( sft_t sft,
uint8_t rsp 
)

◆ _modbus_tcp_check_integrity()

int _modbus_tcp_check_integrity ( modbus_t ctx,
uint8_t msg,
const int  msg_length 
)

◆ _modbus_tcp_close()

void _modbus_tcp_close ( modbus_t ctx)

◆ _modbus_tcp_connect()

int _modbus_tcp_connect ( modbus_t ctx)

◆ _modbus_tcp_filter_request()

int _modbus_tcp_filter_request ( modbus_t ctx,
int  slave 
)

◆ _modbus_tcp_flush()

int _modbus_tcp_flush ( modbus_t ctx)

◆ _modbus_tcp_pi_connect()

int _modbus_tcp_pi_connect ( modbus_t ctx)

◆ _modbus_tcp_pre_check_confirmation()

int _modbus_tcp_pre_check_confirmation ( modbus_t ctx,
const uint8_t req,
const uint8_t rsp,
int  rsp_length 
)

◆ _modbus_tcp_prepare_response_tid()

int _modbus_tcp_prepare_response_tid ( const uint8_t req,
int *  req_length 
)

◆ _modbus_tcp_recv()

ssize_t _modbus_tcp_recv ( modbus_t ctx,
uint8_t rsp,
int  rsp_length 
)

◆ _modbus_tcp_select()

int _modbus_tcp_select ( modbus_t ctx,
fd_set *  rfds,
struct timeval *  tv,
int  length_to_read 
)

◆ _modbus_tcp_send()

ssize_t _modbus_tcp_send ( modbus_t ctx,
const uint8_t req,
int  req_length 
)

◆ _modbus_tcp_send_msg_pre()

int _modbus_tcp_send_msg_pre ( uint8_t req,
int  req_length 
)

◆ _modbus_tcp_set_ipv4_options()

int _modbus_tcp_set_ipv4_options ( int  s)

Cygwin defines IPTOS_LOWDELAY but can't handle that flag so it's necessary to workaround that problem.

◆ crc16()

uint16_t crc16 ( uint8_t buffer,
uint16_t  buffer_length 
)

◆ modbus_new_rtutcp()

modbus_t* modbus_new_rtutcp ( const char *  ip,
int  port 
)

◆ modbus_new_tcp()

modbus_t* modbus_new_tcp ( const char *  ip,
int  port 
)

◆ modbus_new_tcp_pi()

modbus_t* modbus_new_tcp_pi ( const char *  node,
const char *  service 
)

◆ modbus_tcp_accept()

int modbus_tcp_accept ( modbus_t ctx,
int *  socket 
)

◆ modbus_tcp_listen()

int modbus_tcp_listen ( modbus_t ctx,
int  nb_connection 
)

◆ modbus_tcp_pi_accept()

int modbus_tcp_pi_accept ( modbus_t ctx,
int *  socket 
)

◆ modbus_tcp_pi_listen()

int modbus_tcp_pi_listen ( modbus_t ctx,
int  nb_connection 
)

Variable Documentation

◆ _modbus_rtutcp_backend

const modbus_backend_t _modbus_rtutcp_backend
Initial value:
= {
}
int _modbus_rtu_build_response_basis(sft_t *sft, uint8_t *rsp)
Definition: modbus-rtu.c:134
#define MODBUS_RTU_MAX_ADU_LENGTH
Definition: modbus-rtu.h:29
int _modbus_rtu_build_request_basis(modbus_t *ctx, int function, int addr, int nb, uint8_t *req)
Definition: modbus-rtu.c:118
int _modbus_tcp_connect(modbus_t *ctx)
Definition: modbus-tcp.c:242
int _modbus_rtu_send_msg_pre(uint8_t *req, int req_length)
Definition: modbus-rtu.c:167
#define NULL
Definition: PciTypes.h:160
ssize_t _modbus_tcp_send(modbus_t *ctx, const uint8_t *req, int req_length)
Definition: modbus-tcp.c:176
void _modbus_tcp_close(modbus_t *ctx)
Definition: modbus-tcp.c:343
int _modbus_set_slave(modbus_t *ctx, int slave)
Definition: modbus-tcp.c:81
ssize_t _modbus_tcp_recv(modbus_t *ctx, uint8_t *rsp, int rsp_length)
Definition: modbus-tcp.c:185
int _modbus_rtu_prepare_response_tid(const uint8_t *req, int *req_length)
Definition: modbus-rtu.c:160
#define _MODBUS_RTU_HEADER_LENGTH
Definition: modbus-rtu-private.h:34
int _modbus_rtu_filter_request(modbus_t *ctx, int slave)
Definition: modbus-rtu.c:848
#define _MODBUS_RTU_CHECKSUM_LENGTH
Definition: modbus-rtu-private.h:38
int _modbus_tcp_flush(modbus_t *ctx)
Definition: modbus-tcp.c:349
int _modbus_tcp_select(modbus_t *ctx, fd_set *rfds, struct timeval *tv, int length_to_read)
Definition: modbus-tcp.c:564
int _modbus_rtu_check_integrity(modbus_t *ctx, uint8_t *msg, const int msg_length)
Definition: modbus-rtu.c:287
Definition: modbus-private.h:69

◆ _modbus_tcp_backend

const modbus_backend_t _modbus_tcp_backend
Initial value:
= {
}
int _modbus_tcp_check_integrity(modbus_t *ctx, uint8_t *msg, const int msg_length)
Definition: modbus-tcp.c:189
int _modbus_tcp_prepare_response_tid(const uint8_t *req, int *req_length)
Definition: modbus-tcp.c:160
int _modbus_tcp_connect(modbus_t *ctx)
Definition: modbus-tcp.c:242
int _modbus_tcp_build_response_basis(sft_t *sft, uint8_t *rsp)
Definition: modbus-tcp.c:137
ssize_t _modbus_tcp_send(modbus_t *ctx, const uint8_t *req, int req_length)
Definition: modbus-tcp.c:176
void _modbus_tcp_close(modbus_t *ctx)
Definition: modbus-tcp.c:343
int _modbus_tcp_filter_request(modbus_t *ctx, int slave)
Definition: modbus-tcp.c:588
#define _MODBUS_TCP_HEADER_LENGTH
Definition: modbus-tcp-private.h:22
int _modbus_set_slave(modbus_t *ctx, int slave)
Definition: modbus-tcp.c:81
ssize_t _modbus_tcp_recv(modbus_t *ctx, uint8_t *rsp, int rsp_length)
Definition: modbus-tcp.c:185
#define MODBUS_TCP_MAX_ADU_LENGTH
Definition: modbus-tcp.h:41
int _modbus_tcp_build_request_basis(modbus_t *ctx, int function, int addr, int nb, uint8_t *req)
Definition: modbus-tcp.c:99
int _modbus_tcp_pre_check_confirmation(modbus_t *ctx, const uint8_t *req, const uint8_t *rsp, int rsp_length)
Definition: modbus-tcp.c:194
int _modbus_tcp_flush(modbus_t *ctx)
Definition: modbus-tcp.c:349
int _modbus_tcp_select(modbus_t *ctx, fd_set *rfds, struct timeval *tv, int length_to_read)
Definition: modbus-tcp.c:564
#define _MODBUS_TCP_CHECKSUM_LENGTH
Definition: modbus-tcp-private.h:26
int _modbus_tcp_send_msg_pre(uint8_t *req, int req_length)
Definition: modbus-tcp.c:165
Definition: modbus-private.h:69

◆ _modbus_tcp_pi_backend

const modbus_backend_t _modbus_tcp_pi_backend
Initial value:
= {
}
int _modbus_tcp_check_integrity(modbus_t *ctx, uint8_t *msg, const int msg_length)
Definition: modbus-tcp.c:189
int _modbus_tcp_prepare_response_tid(const uint8_t *req, int *req_length)
Definition: modbus-tcp.c:160
int _modbus_tcp_build_response_basis(sft_t *sft, uint8_t *rsp)
Definition: modbus-tcp.c:137
ssize_t _modbus_tcp_send(modbus_t *ctx, const uint8_t *req, int req_length)
Definition: modbus-tcp.c:176
void _modbus_tcp_close(modbus_t *ctx)
Definition: modbus-tcp.c:343
int _modbus_tcp_filter_request(modbus_t *ctx, int slave)
Definition: modbus-tcp.c:588
#define _MODBUS_TCP_HEADER_LENGTH
Definition: modbus-tcp-private.h:22
int _modbus_set_slave(modbus_t *ctx, int slave)
Definition: modbus-tcp.c:81
ssize_t _modbus_tcp_recv(modbus_t *ctx, uint8_t *rsp, int rsp_length)
Definition: modbus-tcp.c:185
int _modbus_tcp_pi_connect(modbus_t *ctx)
Definition: modbus-tcp.c:283
#define MODBUS_TCP_MAX_ADU_LENGTH
Definition: modbus-tcp.h:41
int _modbus_tcp_build_request_basis(modbus_t *ctx, int function, int addr, int nb, uint8_t *req)
Definition: modbus-tcp.c:99
int _modbus_tcp_pre_check_confirmation(modbus_t *ctx, const uint8_t *req, const uint8_t *rsp, int rsp_length)
Definition: modbus-tcp.c:194
int _modbus_tcp_flush(modbus_t *ctx)
Definition: modbus-tcp.c:349
int _modbus_tcp_select(modbus_t *ctx, fd_set *rfds, struct timeval *tv, int length_to_read)
Definition: modbus-tcp.c:564
#define _MODBUS_TCP_CHECKSUM_LENGTH
Definition: modbus-tcp-private.h:26
int _modbus_tcp_send_msg_pre(uint8_t *req, int req_length)
Definition: modbus-tcp.c:165
Definition: modbus-private.h:69