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.
|
|
#pragma once
#include <stdint.h>
#include "zmodbus_common.h"
#include "zmodbus_slave.h"
#include "zport.h"
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; //
/*************************************/ int modbus_baundrate_one_packet_delay_us;
void (*port_enter_critical)(); void (*port_exit_critical)(); void (*port_delay_us)(uint32_t us); 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);
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); 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_register_exists_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);
void modbus_processer_try_process_data(); void ModbusProcessRxData(uint8_t *rxraw, uint8_t length, ModbusMasterData_t *rxparsed);
|