Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Veksler <Mihails.Vekslers@zabbix.com>2020-09-14 15:09:48 +0300
committerMichael Veksler <Mihails.Vekslers@zabbix.com>2020-09-18 11:38:36 +0300
commitb460fd759f93b287a3e2941a9768641127caa74f (patch)
treef9db38c24b874cb939b9fc91b7cca41100868a41 /include/modbtype.h
parente4641c6498e62a06154f7a9a51945aabee86c6a1 (diff)
...G...... [ZBXNEXT-6093] fixed compilation of agent2
Diffstat (limited to 'include/modbtype.h')
-rw-r--r--include/modbtype.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/include/modbtype.h b/include/modbtype.h
new file mode 100644
index 00000000000..fb5277762fa
--- /dev/null
+++ b/include/modbtype.h
@@ -0,0 +1,129 @@
+/*
+** Zabbix
+** Copyright (C) 2001-2020 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program 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 General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+#ifndef ZABBIX_SYSINFO_COMMON_MODBTYPE_H
+#define ZABBIX_SYSINFO_COMMON_MODBTYPE_H
+
+#include "sysinfo.h"
+
+extern int CONFIG_TIMEOUT;
+
+#define ZBX_MODBUS_TCP_PORT_DEFAULT 502
+
+#define ZBX_MODBUS_FUNCTION_EMPTY 0
+#define ZBX_MODBUS_FUNCTION_COIL 1
+#define ZBX_MODBUS_FUNCTION_DISCRETE_INPUT 2
+#define ZBX_MODBUS_FUNCTION_HOLDING_REGISTERS 3
+#define ZBX_MODBUS_FUNCTION_INPUT_REGISTERS 4
+
+#define ZBX_MODBUS_SERIAL_PARAMS_PARITY_NONE 'N'
+#define ZBX_MODBUS_SERIAL_PARAMS_PARITY_EVEN 'E'
+#define ZBX_MODBUS_SERIAL_PARAMS_PARITY_ODD 'O'
+
+#define ZBX_MODBUS_BYTE_SWAP_16(t_int16) (((t_int16 >> 8) & 0xFF) | ((t_int16 & 0xFF) << 8))
+
+#define ZBX_MODBUS_32BE(t_int16) \
+ (((uint32_t)t_int16[0]) << 16) | t_int16[1]
+#define ZBX_MODBUS_32MLE(t_int16) \
+ (((uint32_t)t_int16[1]) << 16) | t_int16[0]
+#define ZBX_MODBUS_32MBE(t_int16) \
+ (((uint32_t)ZBX_MODBUS_BYTE_SWAP_16(t_int16[0])) << 16) | \
+ ZBX_MODBUS_BYTE_SWAP_16(t_int16[1])
+#define ZBX_MODBUS_32LE(t_int16) \
+ (((uint32_t)ZBX_MODBUS_BYTE_SWAP_16(t_int16[1])) << 16) | \
+ ZBX_MODBUS_BYTE_SWAP_16(t_int16[0])
+#define ZBX_MODBUS_64BE(t_int16) \
+ (((uint64_t)t_int16[0]) << 48) | \
+ (((uint64_t)t_int16[1]) << 32) | \
+ (((uint64_t)t_int16[2]) << 16) | t_int16[3]
+#define ZBX_MODBUS_64MLE(t_int16) \
+ (((uint64_t)t_int16[3]) << 48) | \
+ (((uint64_t)t_int16[2]) << 32) | \
+ (((uint64_t)t_int16[1]) << 16) | t_int16[0]
+#define ZBX_MODBUS_64MBE(t_int16) \
+ (((uint64_t)ZBX_MODBUS_BYTE_SWAP_16(t_int16[0])) << 48) | \
+ (((uint64_t)ZBX_MODBUS_BYTE_SWAP_16(t_int16[1])) << 32) | \
+ (((uint64_t)ZBX_MODBUS_BYTE_SWAP_16(t_int16[2])) << 16) | \
+ ZBX_MODBUS_BYTE_SWAP_16(t_int16[3])
+#define ZBX_MODBUS_64LE(t_int16) \
+ (((uint64_t)ZBX_MODBUS_BYTE_SWAP_16(t_int16[3])) << 48) | \
+ (((uint64_t)ZBX_MODBUS_BYTE_SWAP_16(t_int16[2])) << 32) | \
+ (((uint64_t)ZBX_MODBUS_BYTE_SWAP_16(t_int16[1])) << 16) | \
+ ZBX_MODBUS_BYTE_SWAP_16(t_int16[0])
+
+typedef enum
+{
+ ZBX_MODBUS_PROTOCOL_TCP,
+ ZBX_MODBUS_PROTOCOL_RTU
+} modbus_protocol_t;
+
+typedef struct
+{
+ char *ip;
+ char *port;
+}
+zbx_modbus_connection_tcp;
+
+typedef struct
+{
+ char *port;
+ int baudrate;
+ unsigned char data_bits;
+ unsigned char parity;
+ unsigned char stop_bits;
+}
+zbx_modbus_connection_serial;
+
+typedef struct
+{
+ modbus_protocol_t protocol;
+ union
+ {
+ zbx_modbus_connection_tcp tcp;
+ zbx_modbus_connection_serial serial;
+ } conn_info;
+}
+zbx_modbus_endpoint_t;
+
+typedef enum
+{
+ ZBX_MODBUS_DATATYPE_BIT,
+ ZBX_MODBUS_DATATYPE_INT8,
+ ZBX_MODBUS_DATATYPE_UINT8,
+ ZBX_MODBUS_DATATYPE_INT16,
+ ZBX_MODBUS_DATATYPE_UINT16,
+ ZBX_MODBUS_DATATYPE_INT32,
+ ZBX_MODBUS_DATATYPE_UINT32,
+ ZBX_MODBUS_DATATYPE_FLOAT,
+ ZBX_MODBUS_DATATYPE_UINT64,
+ ZBX_MODBUS_DATATYPE_DOUBLE
+} modbus_datatype_t;
+
+typedef enum
+{
+ ZBX_MODBUS_ENDIANNESS_BE,
+ ZBX_MODBUS_ENDIANNESS_LE,
+ ZBX_MODBUS_ENDIANNESS_MBE,
+ ZBX_MODBUS_ENDIANNESS_MLE
+} modbus_endianness_t;
+
+int MODBUS_GET(AGENT_REQUEST *request, AGENT_RESULT *result);
+int zbx_init_modbus(char **error);
+
+#endif /* ZABBIX_SYSINFO_COMMON_MODBTYPE_H */