You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
2.1 KiB
43 lines
2.1 KiB
#pragma once
|
|
#include <stdint.h>
|
|
|
|
#include "modbus_basic.hpp"
|
|
|
|
typedef struct {
|
|
ModbusMasterData_t* rx;
|
|
ModbusSlaveData_t* tx;
|
|
} modbus_processer_context_t;
|
|
|
|
typedef struct modbus_processer {
|
|
uint8_t modbus_device_id; // default 0x01;
|
|
|
|
uint8_t* modbus_processer_rx_buf;
|
|
uint8_t modbus_processer_rx_buf_size; //
|
|
|
|
uint8_t* modbus_processer_tx_buf;
|
|
uint8_t modbus_processer_tx_buf_size; //
|
|
|
|
/*************************************/
|
|
void (*tx)(uint8_t* rx, uint16_t len);
|
|
void (*process_rx)(modbus_processer_context_t* context);
|
|
} modbus_processer_t;
|
|
|
|
void modbus_processer_init(modbus_processer_t* processer);
|
|
void modbus_processer_push_data(uint8_t rxdata);
|
|
// void modbus_processer_try_process_data(void);
|
|
void modbus_processer_process_data(uint8_t* rx, uint16_t rxlen);
|
|
|
|
/***********************************************************************************************************************
|
|
* ====================================================¸¨Öú·½·¨==================================================== *
|
|
***********************************************************************************************************************/
|
|
ModbusFunctionCode modbus_get_function_code(modbus_processer_context_t* context);
|
|
|
|
void modbus_set_tx_reg_03(modbus_processer_context_t* context, uint16_t regoff, uint16_t regdata);
|
|
void modbus_set_tx_regs_03(modbus_processer_context_t* context, uint16_t regoff, uint16_t* regdata, int reglen);
|
|
uint16_t modbus_get_reg_10(modbus_processer_context_t* context, uint16_t regoff);
|
|
bool modbus_if_register_exists_03(modbus_processer_context_t* context, uint16_t regoff);
|
|
bool modbus_if_registers_exists_03(modbus_processer_context_t* context, uint16_t regoff, uint16_t reglen);
|
|
bool modbus_if_register_exists_10(modbus_processer_context_t* context, uint16_t regoff);
|
|
uint8_t* modbus_get_buf_10(modbus_processer_context_t* context, uint16_t regoff);
|
|
void modbus_send_03(modbus_processer_context_t* context, ModbusStatus modbus_status);
|
|
void modbus_send_10(modbus_processer_context_t* context, ModbusStatus modbus_status);
|