22 #include <std_msgs/MultiArrayDimension.h> 37 RegCont tab_reg(last_index_to_read - first_index_to_read + 1);
40 tab_reg[reg.first - first_index_to_read] = reg.second;
44 msg->header.stamp = time;
49 const std_msgs::MultiArrayLayout::_data_offset_type& offset,
50 const RegCont::size_type& size)
52 if (size > std::numeric_limits<std_msgs::MultiArrayDimension::_size_type>::max())
54 throw std::invalid_argument(
"Argument \"size\" must not exceed max value of type " 55 "\"std_msgs::MultiArrayDimension::_size_type\"");
58 layout->data_offset = offset;
59 layout->dim.push_back(std_msgs::MultiArrayDimension());
60 layout->dim.back().size =
static_cast<std_msgs::MultiArrayDimension::_size_type
>(size);
61 layout->dim.back().stride = 1;
62 layout->dim.back().label =
"Data in holding register";
66 const std_msgs::MultiArrayLayout::_data_offset_type& offset,
const RegCont& holding_register)
68 ModbusMsgInStampedPtr
msg{
new ModbusMsgInStamped() };
70 msg->holding_registers.data = holding_register;
71 msg->disconnect.data =
false;
std::vector< uint16_t > RegCont
Convenience data type defining the data type for a collection of registers.
ModbusMsgInBuilder(const ModbusApiSpec &api_spec)
static ModbusMsgInStampedPtr createDefaultModbusMsgIn(const std_msgs::MultiArrayLayout::_data_offset_type &offset, const RegCont &holding_register)
Creates a standard ModbusMsgIn which contains default values for all essential elements of the messag...
std::map< unsigned int, uint16_t > register_values_
ModbusMsgInStampedPtr build(const ros::Time &time) const
static void setDefaultLayout(std_msgs::MultiArrayLayout *layout, const std_msgs::MultiArrayLayout::_data_offset_type &offset, const RegCont::size_type &size)
Specifies the meaning of the holding registers.