36 last_received_command_.set_command_id(-1);
37 message_reader_ = MessageReader::Instance();
40 config.input_command_name(),
41 [
this](
const std::shared_ptr<ChassisCommand>& command, std::shared_ptr<CommandStatus>& status) {
42 this->OnCommand(command, status);
45 CHECK(config.output_command_name().size() > 0 && config.input_command_status_name().size() > 0);
46 auto message_writer = MessageWriter::Instance();
47 chassis_command_writer_ = message_writer->RegisterMessage<
ChassisCommand>(config.output_command_name().Get(0));
48 chassis_status_name_ = config.input_command_status_name().Get(0);
55 CHECK_NOTNULL(status);
56 if (command_id != last_received_command_.
command_id()) {
59 status->set_command_id(command_id);
61 if (
nullptr == latest_chassis_status) {
63 status->set_message(
"Cannot get chassis status!");
67 if (last_received_command_.has_basic_signal()) {
68 const auto& basic_signal = last_received_command_.
basic_signal();
70 if (basic_signal.has_turn_signal()) {
71 if (!latest_chassis_status->has_signal() || !latest_chassis_status->signal().has_turn_signal()
72 || latest_chassis_status->signal().turn_signal() != basic_signal.turn_signal()) {
78 if (basic_signal.has_high_beam()) {
79 if (!latest_chassis_status->has_signal() || !latest_chassis_status->signal().has_high_beam()
80 || latest_chassis_status->signal().high_beam() != basic_signal.high_beam()) {
86 if (basic_signal.has_low_beam()) {
87 if (!latest_chassis_status->has_signal() || !latest_chassis_status->signal().has_low_beam()
88 || latest_chassis_status->signal().low_beam() != basic_signal.low_beam()) {
94 if (basic_signal.has_horn()) {
95 if (!latest_chassis_status->has_signal() || !latest_chassis_status->signal().has_horn()
96 || latest_chassis_status->signal().horn() != basic_signal.horn()) {
102 if (basic_signal.has_emergency_light()) {
103 if (!latest_chassis_status->has_signal() || !latest_chassis_status->signal().has_emergency_light()
104 || latest_chassis_status->signal().emergency_light() != basic_signal.emergency_light()) {