46 {
47 status_.set_detect_immediately(false);
48
49 static auto hmi_status_reader =
50 CreateReader<apollo::dreamview::HMIStatus>(FLAGS_hmi_status_topic);
51 hmi_status_reader->Observe();
52 const auto hmi_status = hmi_status_reader->GetLatestObserved();
53 if (hmi_status == nullptr) {
54 AERROR <<
"No HMIStatus was received.";
55 return false;
56 } else if (hmi_status->expected_modules() > 0) {
57 status_.set_detect_immediately(true);
58 }
59
60 if (current_mode_ != hmi_status->current_mode()) {
61
62 current_mode_ = hmi_status->current_mode();
64 hmi_config_.
modes().at(current_mode_));
65 status_.clear_hmi_modules();
66 for (
const auto& iter : mode_config_.
modules()) {
67 status_.mutable_hmi_modules()->insert({iter.first, {}});
68 }
69 status_.clear_components();
70 for (const auto& iter : mode_config_.monitored_components()) {
71 status_.mutable_components()->insert({iter.first, {}});
72 }
73 status_.clear_other_components();
74 for (const auto& iter : mode_config_.other_components()) {
75 status_.mutable_other_components()->insert({iter.first, {}});
76 }
77 status_.clear_global_components();
78 for (const auto& iter : mode_config_.global_components()) {
79 status_.mutable_global_components()->insert({iter.first, {}});
80 }
81 } else {
82
83 for (auto& iter : *status_.mutable_components()) {
84 iter.second.clear_summary();
85 }
86
87 for (auto& iter : *status_.mutable_global_components()) {
88 iter.second.clear_summary();
89 }
90 }
91
92 in_autonomous_driving_ = CheckAutonomousDriving(current_time);
93 return true;
94}
static apollo::dreamview::HMIMode LoadMode(const std::string &mode_config_path)
Load HMIMode.
map< string, string > modes