18 #ifndef MODBUS_ADAPTER_BRAKE_TEST_H 19 #define MODBUS_ADAPTER_BRAKE_TEST_H 28 #include <pilz_msgs/IsBrakeTestRequired.h> 29 #include <pilz_msgs/IsBrakeTestRequiredResult.h> 31 #include <prbt_hardware_support/ModbusMsgInStamped.h> 33 #include <prbt_hardware_support/SendBrakeTestResult.h> 64 bool isBrakeTestRequired(pilz_msgs::IsBrakeTestRequired::Request&, pilz_msgs::IsBrakeTestRequired::Response& res);
69 bool sendBrakeTestResult(SendBrakeTestResult::Request& req, SendBrakeTestResult::Response& res);
112 pilz_msgs::IsBrakeTestRequired::Response& res)
121 inline const ModbusAdapterBrakeTest::TRegIdxCont::mapped_type&
124 return std::min_element(reg_idx_cont.cbegin(), reg_idx_cont.cend(),
125 [](
const TRegIdxCont::value_type& l,
const TRegIdxCont::value_type& r) ->
bool {
126 return l.second < r.second;
131 inline const ModbusAdapterBrakeTest::TRegIdxCont::mapped_type&
134 return std::max_element(reg_idx_cont.cbegin(), reg_idx_cont.cend(),
135 [](
const TRegIdxCont::value_type& l,
const TRegIdxCont::value_type& r) ->
bool {
136 return l.second < r.second;
149 #endif // MODBUS_ADAPTER_BRAKE_TEST_H const TRegIdx reg_start_idx_
static const TRegIdxCont::mapped_type & getMaxRegisterIdx(const TRegIdxCont ®_idx_cont)
ModbusAdapterBrakeTest(TWriteModbusRegister &&write_modbus_register_func, const ModbusApiSpec &read_api_spec, const ModbusApiSpec &write_api_spec)
TWriteModbusRegister write_modbus_register_func_
TBrakeTestRequired brake_test_required_
Store the current state of whether a brake test is required.
const TRegIdxCont reg_idx_cont_
const ModbusApiSpec api_spec_
bool sendBrakeTestResult(SendBrakeTestResult::Request &req, SendBrakeTestResult::Response &res)
Sends the brake test result data to the modbus client.
bool isBrakeTestRequired(pilz_msgs::IsBrakeTestRequired::Request &, pilz_msgs::IsBrakeTestRequired::Response &res)
Stores the brake test required flag and initializes the brake test service, the first time the functi...
static const TRegIdxCont::mapped_type & getMinRegisterIdx(const TRegIdxCont ®_idx_cont)
void updateBrakeTestRequiredState(TBrakeTestRequired brake_test_required)
const RegCont::size_type reg_block_size_
std::map< std::string, TRegIdx > TRegIdxCont
void modbusMsgCallback(const ModbusMsgInStampedConstPtr &msg_raw)
Called whenever a new modbus message arrives.
static unsigned long getRegisterBlockSize(const TRegIdxCont ®_idx_cont)
std::function< bool(const uint16_t &, const RegCont &)> TWriteModbusRegister
Listens to the modbus_read topic and publishes a message informing about a required brake test...
static TRegIdxCont getRegisters(const ModbusApiSpec &write_api_spec)
pilz_msgs::IsBrakeTestRequiredResult::_value_type TBrakeTestRequired
Specifies the meaning of the holding registers.