/**
* @file MODBUS_S_LOW_ATY.h
*
* @param Project DEVICE_GENERAL_ATY_LIB
*
* @author ATY
*
* @copyright
* - Copyright 2017 - 2023 MZ-ATY
* - This code follows:
* - MZ-ATY Various Contents Joint Statement -
*
* https://mengze.top/MZ-ATY_VCJS
* - CC 4.0 BY-NC-SA -
*
* https://creativecommons.org/licenses/by-nc-sa/4.0/
* - Your use will be deemed to have accepted the terms of this statement.
*
* @brief Familiar functions of modbus for all device
*
* @version
* - 1_01_221029 > ATY
* -# Preliminary version, first Release
********************************************************************************
*/
#ifndef __MODBUS_S_LOW_ATY_H
#define __MODBUS_S_LOW_ATY_H
#include "INCLUDE_ATY.h"
#include "ALGO_CRC_ATY.h"
/******************************* For user *************************************/
// set --model-large at 51
#ifndef MODBUS_REG_HOLDING_SIZE
#define MODBUS_REG_HOLDING_SIZE 100
#endif
#ifndef MODBUS_ADDR
#define MODBUS_ADDR 0x01
#endif
/******************************************************************************/
struct MODBUS_S_LOW_ATY_Dev
{
uint8_t addr;
uint8_t size; // todo: not used
uint16_t mbRegs[MODBUS_REG_HOLDING_SIZE];
uint8_t bigEndian; // 1 for big endian(51 core)
uint8_t(*uartSendBytes)();
uint8_t setFlag;
uint8_t lock;
uint8_t debugEnable;
int (*LOG)();
};
#define MODBUS_FUNC_READ_COILS 0x01
#define MODBUS_FUNC_READ_DISCRETE_INPUTS 0x02
#define MODBUS_FUNC_READ_HOLDING_REGISTERS 0x03
#define MODBUS_FUNC_READ_INPUT_REGISTERS 0x04
#define MODBUS_FUNC_WRITE_SINGLE_COIL 0x05
#define MODBUS_FUNC_WRITE_SINGLE_HOLDING_REGISTERS 0x06
#define MODBUS_FUNC_WRITE_MULTY_HOLDING_REGISTERS 0x10
union mbFloatChange{ float f_t; uint8_t u8_t[4]; };
uint8_t Modbus_Process(uint8_t* buf, uint8_t len, struct MODBUS_S_LOW_ATY_Dev* dev);
#endif /* __MODBUS_S_LOW_ATY_H */
/******************************** End Of File *********************************/