#ifndef __MODBUS_H #define __MODBUS_H #include // function codes #define MODBUS_FC_READ_HOLDING_REGISTERS 0x03 #define MODBUS_FC_WRITE_SINGLE_REGISTER 0x06 #define MODBUS_FC_WRITE_MULTIPLE_REGISTERS 0x10 // errors #define MODBUS_ERROR_NONE 0x00 #define MODBUS_ERROR_FUNCTION 0x01 #define MODBUS_ERROR_ADDRESS 0x02 #define MODBUS_ERROR_VALUE 0x03 uint8_t modbus_process_message(uint8_t *buf, uint16_t len, uint8_t slave_addr, uint16_t *holding_registers, uint16_t num_registers); uint16_t modbus_create_response(uint8_t *response, uint8_t slave_addr, uint8_t function, uint16_t address, uint16_t value); uint16_t modbus_create_error_response(uint8_t *response, uint8_t slave_addr, uint8_t function, uint8_t error_code); #endif // __MODBUS_H