ESPHome 2026.9.0-dev
Loading...
Searching...
No Matches
modbus_helpers.cpp File Reference

Go to the source code of this file.

Namespaces

namespace  esphome
 
namespace  esphome::modbus
 
namespace  esphome::modbus::helpers
 

Functions

uint16_t esphome::modbus::helpers::server_pdu_length (const uint8_t *frame, size_t size)
 
uint16_t esphome::modbus::helpers::client_pdu_length (const uint8_t *frame, size_t size)
 
bool esphome::modbus::helpers::is_server_pdu_standard (const uint8_t *pdu, size_t size)
 
bool esphome::modbus::helpers::is_client_pdu_standard (const uint8_t *pdu, size_t size)
 
void esphome::modbus::helpers::log_unsupported_value_type (SensorValueType value_type)
 
std::optional< int64_t > esphome::modbus::helpers::payload_to_number (const uint8_t *data, size_t size, SensorValueType sensor_value_type, uint8_t offset, uint32_t bitmask)
 Convert a raw response payload to a number.
 
std::optional< int64_t > esphome::modbus::helpers::registers_to_number (const uint16_t *registers, size_t count, SensorValueType sensor_value_type)
 Reconstruct a number from register words (host byte order).
 
ReadPdu esphome::modbus::helpers::create_read_pdu (FunctionCode function_code, uint16_t start_address, uint16_t number_of_entities)
 Create a modbus read request PDU.
 
PduBuffer esphome::modbus::helpers::create_client_pdu (FunctionCode function_code, uint16_t start_address, uint16_t number_of_entities, const uint8_t *values=nullptr, size_t values_len=0)
 Create a modbus client pdu for reading/writing single/multiple coils/register/inputs.
 
PduBuffer esphome::modbus::helpers::create_write_registers_pdu (uint16_t start_address, std::span< const uint16_t > values)
 Create modbus write multiple registers command Function 0x10 Write Multiple Registers.
 
WriteFewRegistersPdu esphome::modbus::helpers::create_write_few_registers_pdu (uint16_t start_address, std::span< const uint16_t > values)
 Create modbus write multiple registers command (function 0x10) on a right-sized stack buffer.
 
PduBuffer esphome::modbus::helpers::create_read_write_multiple_registers_pdu (uint16_t read_start_address, uint16_t read_count, uint16_t write_start_address, std::span< const uint16_t > write_values)
 Create modbus read/write multiple registers command Function 0x17 Read/Write Multiple Registers Writes write_values then reads read_count registers in one transaction (write first, per Modbus 6.17); the response carries only the read registers.
 
WriteSinglePdu esphome::modbus::helpers::create_write_single_register_pdu (uint16_t start_address, uint16_t value)
 Create modbus write single register command Function 0x06 Write Single Register.
 
WriteSinglePdu esphome::modbus::helpers::create_write_single_coil_pdu (uint16_t address, bool value)
 Create modbus write single coil command Function 0x05 Write Single Coil.
 
PduBuffer esphome::modbus::helpers::create_write_coils_pdu (uint16_t start_address, PackedBits bits)
 Create modbus write multiple coils command (function 0x0F) from bits packed as on the wire.
 
PduBuffer esphome::modbus::helpers::create_write_coils_pdu (uint16_t start_address, std::span< const bool > values)
 Create modbus write multiple coils command Function 0x0F Write Multiple Coils.
 
PduBuffer esphome::modbus::helpers::create_write_coils_pdu (uint16_t start_address, const std::vector< bool > &values)
 Create modbus write multiple coils command (function 0x0F) from a std::vector<bool>.