Fix code to consume the secondary code
- The snooping daemon was coded to fill the Raw Value dbus
property with uint64_t signature.
- The intent behind this commit is to work with the changed
dbus backend from uint64_t to struct[uint64_t,array[byte]].
- The phosphor dbus interface change is documented in the below
commit :
https://gerrit.openbmc-project.xyz/c/openbmc/phosphor-dbus-interfaces/+/40903
Tested By:
- As the ibm systems does not a snooping port, i have done the
unittesting & all the unit tests are PASSED with a system that
has the above mentioned dbus interface change.
root@witherspoon:/tmp# ./post_reporter_test
[==========] Running 5 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 5 tests from PostReporterTest
[ RUN ] PostReporterTest.EmitsObjectsOnExpectedDbusPath
[ OK ] PostReporterTest.EmitsObjectsOnExpectedDbusPath (17 ms)
[ RUN ] PostReporterTest.AddsObjectWithExpectedName
[ OK ] PostReporterTest.AddsObjectWithExpectedName (5 ms)
[ RUN ] PostReporterTest.ValueReadsDefaultToZero
[ OK ] PostReporterTest.ValueReadsDefaultToZero (1 ms)
[ RUN ] PostReporterTest.SetValueToPositiveValueWorks
[ OK ] PostReporterTest.SetValueToPositiveValueWorks (2 ms)
[ RUN ] PostReporterTest.SetValueMultipleTimesWorks
[ OK ] PostReporterTest.SetValueMultipleTimesWorks (2 ms)
[----------] 5 tests from PostReporterTest (34 ms total)
[----------] Global test environment tear-down
[==========] 5 tests from 1 test suite ran. (40 ms total)
[ PASSED ] 5 tests.
Signed-off-by: Manojkiran Eda <manojkiran.eda@gmail.com>
Change-Id: Id0a79fcddc827d34f9d2a61ab14d8c9c4be522b5
diff --git a/lpcsnoop/snoop.hpp b/lpcsnoop/snoop.hpp
index 2c89127..68d51b4 100644
--- a/lpcsnoop/snoop.hpp
+++ b/lpcsnoop/snoop.hpp
@@ -13,6 +13,9 @@
using ServerObject = typename sdbusplus::server::object::object<T...>;
using PostInterface = sdbusplus::xyz::openbmc_project::State::Boot::server::Raw;
using PostObject = ServerObject<PostInterface>;
+using primary_post_code_t = uint64_t;
+using secondary_post_code_t = std::vector<uint8_t>;
+using postcode_t = std::tuple<primary_post_code_t, secondary_post_code_t>;
class PostReporter : public PostObject
{
diff --git a/lpcsnoop/snoop_listen.hpp b/lpcsnoop/snoop_listen.hpp
index 1ff189d..475028f 100644
--- a/lpcsnoop/snoop_listen.hpp
+++ b/lpcsnoop/snoop_listen.hpp
@@ -36,7 +36,7 @@
class SnoopListen
{
using message_handler_t = std::function<void(sdbusplus::message::message&)>;
- using postcode_handler_t = std::function<void(uint64_t)>;
+ using postcode_handler_t = std::function<void(postcode_t)>;
public:
SnoopListen(sdbusplus::bus::bus& busIn, sd_bus_message_handler_t handler) :
@@ -74,7 +74,7 @@
sdbusplus::message::message& m)
{
std::string messageBusName;
- std::map<std::string, std::variant<uint64_t>> messageData;
+ std::map<std::string, std::variant<postcode_t>> messageData;
constexpr char propertyKey[] = "Value";
m.read(messageBusName, messageData);
@@ -82,7 +82,7 @@
if (messageBusName == SNOOP_BUSNAME &&
messageData.find(propertyKey) != messageData.end())
{
- handler(get<uint64_t>(messageData[propertyKey]));
+ handler(get<postcode_t>(messageData[propertyKey]));
}
}
};