/*
 * libmodbus 版本头文件
 * 从 modbus-version.h.in 模板生成，版本号硬编码为 3.1.12
 *
 * Copyright © Stéphane Raimbault <stephane.raimbault@gmail.com>
 * SPDX-License-Identifier: LGPL-2.1-or-later
 */

#ifndef MODBUS_VERSION_H
#define MODBUS_VERSION_H

/* 主版本号（例如 v1.2.3 中的 1） */
#define LIBMODBUS_VERSION_MAJOR 3

/* 次版本号（例如 v1.2.3 中的 2） */
#define LIBMODBUS_VERSION_MINOR 1

/* 修订版本号（例如 v1.2.3 中的 3） */
#define LIBMODBUS_VERSION_MICRO 12

/* 完整版本号字符串，形式如 "3.1.12" */
#define LIBMODBUS_VERSION 3.1.12

/* 完整版本号字符串（适用于字符串拼接场景） */
#define LIBMODBUS_VERSION_STRING "3.1.12"

/* 数值编码的版本号，例如 v1.2.3 编码为 0x010203 */
#define LIBMODBUS_VERSION_HEX                                              \
    ((LIBMODBUS_VERSION_MAJOR << 16) | (LIBMODBUS_VERSION_MINOR << 8) |    \
     (LIBMODBUS_VERSION_MICRO << 0))

/* 版本检查宏：当库版本大于等于指定版本时返回真
 * @param major 主版本号
 * @param minor 次版本号
 * @param micro 修订版本号
 * @return 若当前版本 >= 指定版本则为真
 */
#define LIBMODBUS_VERSION_CHECK(major, minor, micro)                       \
    (LIBMODBUS_VERSION_MAJOR > (major) ||                                  \
     (LIBMODBUS_VERSION_MAJOR == (major) && LIBMODBUS_VERSION_MINOR > (minor)) || \
     (LIBMODBUS_VERSION_MAJOR == (major) && LIBMODBUS_VERSION_MINOR == (minor) && \
      LIBMODBUS_VERSION_MICRO >= (micro)))

#endif /* MODBUS_VERSION_H */
