/**
******************************************************************************
* @file modbus_config.h
* @brief Конфигурационные параметры Modbus устройства
******************************************************************************
@addtogroup MODBUS_CONFIGS Modbus configs
@ingroup    MODBUS
@brief Конфигурация библиотеки
@{
******************************************************************************
* @details
Файл содержит настройки для работы Modbus:
- Подключение библиотек контроллера
- ID устройства и таймауты
- Строковые идентификаторы (Vendor, Product, Revision)
- Настройки периферии (UART, TIMER)
- Подключение модулей Modbus
- Опциональные функции (переключение команд 0x03/0x04)
******************************************************************************/
#ifndef _MODBUS_CONFIG_H_
#define _MODBUS_CONFIG_H_
#include "stm32f1xx_hal.h"

// Общие параметры
#define MODBUS_DEVICE_ID              1       ///< Адрес устройства в сети Modbus
#define MODBUS_TIMEOUT                5000    ///< Таймаут в тиках таймера

// Строковые идентификаторы устройства
#define MODBUS_VENDOR_NAME            "NIO-12"
#define MODBUS_PRODUCT_CODE           ""
#define MODBUS_REVISION               ""
#define MODBUS_VENDOR_URL             ""
#define MODBUS_PRODUCT_NAME           ""
#define MODBUS_MODEL_NAME             ""
#define MODBUS_USER_APPLICATION_NAME  ""

#define MODBUS_NUMB_OF_USEROBJECTS    0   ///< Количество пользовательских объектов
#define MODBUS_USEROBJECT_0_NAME      ""  ///< Строка пользовательского идентификатора 0. По аналогии можно определить строки до <=128 USEROBJECT

// Периферия (опционально)
#define mb_huart                      huart1        ///< Удобный дефайн для модбасовского uart
#define mb_htim                       htim3         ///< Удобный дефайн для модбасовского таймера
//#define RS_EnableReceive()          ///< Функция изменения направления передачи на ПРИЕМ для RS-485
//#define RS_EnableTransmit()         ///< Функция изменения направления передачи на ПЕРЕДАЧУ для RS-485


// Модули modbus
#define MODBUS_ENABLE_SLAVE                   ///< Включить обработку СЛЕЙВ режима
#define MODBUS_ENABLE_MASTER                  ///< Включить обработку МАСТЕР режима

#define MODBUS_ENABLE_COILS                   ///< Включить обработку коилов
#define MODBUS_ENABLE_HOLDINGS                ///< Включить обработку регистров хранения
#define MODBUS_ENABLE_INPUTS                  ///< Включить обработку входных регистров
#define MODBUS_ENABLE_DEVICE_IDENTIFICATIONS  ///< Включить обработку идентификаторы устройства
#define MODBUS_ENABLE_DIAGNOSTICS             ///< Включить обработку диагностики модбас

//#define MODBUS_PROTOCOL_TCP                   ///< Включить TCP-протокол, иначе - RTU

/**
  * @brief    Поменять комманды 0x03 и 0x04 местами (для LabView терминалки от двигателей)
  * @details  Терминалка от двигателей использует для чтения регистров комманду R_HOLD_REGS вместо R_IN_REGS
  *           Поэтому чтобы считывать Input Regs - надо поменять их местами.
  */
//#define MODBUS_SWITCH_COMMAND_R_IN_REGS_AND_R_HOLD_REGS

/////////////////////////////////////////////////////////////////////
/////////////////////////---CALC DEFINES---//////////////////////////


  
#endif //_MODBUS_CONFIG_H_
