update sensor page
diff --git a/src/webserver_main.cpp b/src/webserver_main.cpp
index ec21f6d..0da73f4 100644
--- a/src/webserver_main.cpp
+++ b/src/webserver_main.cpp
@@ -44,7 +44,6 @@
static std::shared_ptr<dbus::connection> system_bus;
static std::shared_ptr<dbus::match> sensor_match;
static std::shared_ptr<dbus::filter> sensor_filter;
-static std::shared_ptr<dbus::filter> sensor_callback;
std::unordered_set<crow::websocket::connection*> users;
@@ -58,8 +57,9 @@
boost::apply_visitor([&](auto val) { j[s.get_path()] = val; },
value.second);
}
+ auto data_to_send = crow::json::dump(j);
for (auto conn : users) {
- conn->send_text(crow::json::dump(j));
+ conn->send_text(data_to_send);
}
sensor_filter->async_dispatch(on_sensor_update);
};
@@ -113,12 +113,12 @@
}
if (!sensor_match) {
sensor_match = std::make_shared<dbus::match>(
- *system_bus,
+ system_bus,
"type='signal',path_namespace='/xyz/openbmc_project/sensors'");
}
if (!sensor_filter) {
sensor_filter =
- std::make_shared<dbus::filter>(*system_bus, [](dbus::message& m) {
+ std::make_shared<dbus::filter>(system_bus, [](dbus::message& m) {
auto member = m.get_member();
return member == "PropertiesChanged";
});
@@ -149,26 +149,30 @@
system_bus.async_send(
m,
[&j, &system_bus](const boost::system::error_code ec, dbus::message r) {
- std::string xml;
- r.unpack(xml);
- std::vector<std::string> dbus_objects;
- dbus::read_dbus_xml_names(xml, dbus_objects);
+ if (ec) {
+
+ } else {
+ std::string xml;
+ r.unpack(xml);
+ std::vector<std::string> dbus_objects;
+ dbus::read_dbus_xml_names(xml, dbus_objects);
- for (auto& object : dbus_objects) {
- dbus::endpoint test_daemon("org.openbmc.Sensors",
- "/org/openbmc/sensors/tach/" + object,
- "org.openbmc.SensorValue");
- dbus::message m2 = dbus::message::new_call(test_daemon, "getValue");
+ for (auto& object : dbus_objects) {
+ dbus::endpoint test_daemon("org.openbmc.Sensors",
+ "/org/openbmc/sensors/tach/" + object,
+ "org.openbmc.SensorValue");
+ dbus::message m2 =
+ dbus::message::new_call(test_daemon, "getValue");
- system_bus.async_send(
- m2, [&](const boost::system::error_code ec, dbus::message r) {
- int32_t value;
- r.unpack(value);
- // TODO(ed) if we ever go multithread, j needs a lock
- j[object] = value;
- });
+ system_bus.async_send(
+ m2, [&](const boost::system::error_code ec, dbus::message r) {
+ int32_t value;
+ r.unpack(value);
+ // TODO(ed) if we ever go multithread, j needs a lock
+ j[object] = value;
+ });
+ }
}
-
});
});