diff options
-rw-r--r-- | configure.ac | 13 | ||||
-rw-r--r-- | src/Makefile.am | 3 | ||||
-rw-r--r-- | src/event_manager.cpp | 41 | ||||
-rw-r--r-- | src/event_manager.hpp | 42 | ||||
-rw-r--r-- | src/main.cpp | 13 |
5 files changed, 110 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac index 593fbb7..6bc253f 100644 --- a/configure.ac +++ b/configure.ac @@ -21,6 +21,11 @@ PKG_CHECK_MODULES([SDBUSPLUS], [sdbusplus],, AC_MSG_ERROR(["Requires sdbusplus p PKG_CHECK_MODULES([PHOSPHOR_DBUS_INTERFACES], [phosphor-dbus-interfaces],, AC_MSG_ERROR(["Requires phosphor-dbus-interfaces package."])) PKG_CHECK_MODULES([PHOSPHOR_LOGGING], [phosphor-logging],, AC_MSG_ERROR(["Requires phosphor-logging."])) +# Check for sdbus++ +AC_PATH_PROG([SDBUSPLUSPLUS], [sdbus++]) +AS_IF([test "x$SDBUSPLUSPLUS" == "x"], + AC_MSG_ERROR(["Requires sdbus++"])) + # Checks for typedefs, structures, and compiler characteristics. AX_CXX_COMPILE_STDCXX_14([noext]) AX_APPEND_COMPILE_FLAGS([-fpic -Wall -Werror], [CXXFLAGS]) @@ -50,6 +55,14 @@ AS_IF([test "x$enable_oe_sdk" == "xyes"], AC_SUBST([OESDK_TESTCASE_FLAGS], [$testcase_flags]) ) +AC_ARG_VAR(OBJ_EVENT, [The event manager D-Bus object path]) +AS_IF([test "x$OBJ_EVENT" == "x"], [OBJ_EVENT="/xyz/openbmc_project/events"]) +AC_DEFINE_UNQUOTED([OBJ_EVENT], ["$OBJ_EVENT"], [The event manager D-Bus object path]) + +AC_ARG_VAR(BUSNAME_EVENT, [The D-Bus busname to own]) +AS_IF([test "x$BUSNAME_EVENT" == "x"], [BUSNAME_EVENT="xyz.openbmc_project.Events"]) +AC_DEFINE_UNQUOTED([BUSNAME_EVENT], ["$BUSNAME_EVENT"], [The D-Bus busname to own]) + AC_ARG_VAR(YAML_PATH, [The path to the yaml config files.]) AS_IF([test "x$YAML_PATH" == "x"], [YAML_PATH="\${top_srcdir}/src/example"]) diff --git a/src/Makefile.am b/src/Makefile.am index cf91619..94f81b8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -10,7 +10,8 @@ phosphor_dbus_monitor_SOURCES = \ elog.cpp \ main.cpp \ propertywatch.cpp \ - resolve_errors.cpp + resolve_errors.cpp \ + event_manager.cpp phosphor_dbus_monitor_LDADD = \ $(SDBUSPLUS_LIBS) \ $(PHOSPHOR_DBUS_INTERFACES_LIBS) \ diff --git a/src/event_manager.cpp b/src/event_manager.cpp new file mode 100644 index 0000000..ef2098a --- /dev/null +++ b/src/event_manager.cpp @@ -0,0 +1,41 @@ +/** + * Copyright © 2017 IBM Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "event.hpp" +#include "event_manager.hpp" +#include "config.h" + +namespace phosphor +{ +namespace events +{ + +void Manager::create( + const std::string& eventName, + const std::string& objectPath, + const std::string& propertyName, + const std::string& propertyvalue) +{ + // TODO Implement it in later commit. +} + +Manager& getManager() +{ + static Manager mgr; + return mgr; +} + +} // namespace events +} // namespace phosphor diff --git a/src/event_manager.hpp b/src/event_manager.hpp new file mode 100644 index 0000000..3d1f8d1 --- /dev/null +++ b/src/event_manager.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include <sdbusplus/bus.hpp> + +namespace phosphor +{ +namespace events +{ + +/** @class Manager + * @brief OpenBMC Event manager implementation. + */ +class Manager +{ + public: + Manager() = default; + Manager(const Manager&) = delete; + Manager& operator=(const Manager&) = delete; + Manager(Manager&&) = default; + Manager& operator=(Manager&&) = default; + virtual ~Manager() = default; + + /** @brief Create the D-Bus Event object. + * @detail Add the objectPath,propertyName, propertyValue + * as additional data of the event object. + * @param[in] eventName - Name of the event. + * @param[in] objectPath - Path of the D-Bus object. + * @param[in] propertyName - Name of the property. + * @param[in] propertyValue - Value of the property. + */ + void create( + const std::string& eventName, + const std::string& objectPath, + const std::string& propertyName, + const std::string& propertyValue); + +}; + +Manager& getManager(); + +} // namespace events +} // namespace phosphor diff --git a/src/main.cpp b/src/main.cpp index 08cd849..5e191e1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,8 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "sdbusplus.hpp" + +#include "config.h" #include "generated.hpp" +#include "sdbusplus.hpp" + +#include <sdbusplus/bus.hpp> +#include <sdbusplus/server/manager.hpp> using namespace phosphor::dbus::monitoring; @@ -32,6 +37,12 @@ struct Loop int main(void) { + auto& bus = SDBusPlus::getBus(); + + // Add sdbusplus Object Manager for the 'root' path of events. + sdbusplus::server::manager::manager objManager(bus, OBJ_EVENT); + bus.request_name(BUSNAME_EVENT); + for (auto& watch : ConfigPropertyWatches::get()) { watch->start(); |