/* * Copyright © 2001-2011 Stéphane Raimbault * * 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_TCP_PRIVATE_H_ #define _MODBUS_TCP_PRIVATE_H_ #define _MODBUS_TCP_HEADER_LENGTH 7 #define _MODBUS_TCP_PRESET_REQ_LENGTH 12 #define _MODBUS_TCP_PRESET_RSP_LENGTH 8 #define _MODBUS_TCP_CHECKSUM_LENGTH 0 /* In both structures, the transaction ID must be placed on first position to have a quick access not dependant of the TCP backend */ typedef struct _modbus_tcp { /* Extract from MODBUS Messaging on TCP/IP Implementation Guide V1.0b (page 23/46): The transaction identifier is used to associate the future response with the request. This identifier is unique on each TCP connection. */ uint16_t t_id; /* TCP port */ int port; /* IP address */ char ip[16]; } modbus_tcp_t; #define _MODBUS_TCP_PI_NODE_LENGTH 1025 #define _MODBUS_TCP_PI_SERVICE_LENGTH 32 typedef struct _modbus_tcp_pi { /* Transaction ID */ uint16_t t_id; /* TCP port */ int port; /* Node */ char node[_MODBUS_TCP_PI_NODE_LENGTH]; /* Service */ char service[_MODBUS_TCP_PI_SERVICE_LENGTH]; } modbus_tcp_pi_t; #endif /* _MODBUS_TCP_PRIVATE_H_ */