1 /** 2 * Copyright 2017 Google Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include "lpcsnoop/snoop_listen.hpp" 18 19 #include <cinttypes> 20 #include <cstdio> 21 #include <iostream> 22 #include <memory> 23 24 /* Example PostCode handler which simply prints them */ 25 static void printPostcode(uint64_t postcode) 26 { 27 /* Print output to verify the example program is receiving values. */ 28 std::printf("recv: 0x%" PRIx64 "\n", postcode); 29 } 30 31 /* 32 * One can also specify custom handler that operates on 33 * sdbusplus::message::message type and pass them to constructor. 34 * e.g. 35 * 36 * static void PrintMessageMap(sdbusplus::message::message& m) 37 * { 38 * using sdbusplus::message::variant_ns::get; 39 * std::string messageBusName; 40 * std::map<std::string, sdbusplus::message::variant<uint64_t>> 41 * messageData; 42 * 43 * m.read(messageBusName, messageData); 44 * 45 * std::cout << "Got message from " << messageBusName << std::endl; 46 * for (const auto& kv : messageData) 47 * { 48 * std::cout << "Key: " << kv.first << std::endl; 49 * std::cout << "Value: " << get<uint64_t>(kv.second) << std::endl; 50 * } 51 * } 52 * 53 * lpcsnoop::SnoopListen snoop(ListenBus, PrintMessageMap); 54 */ 55 56 /* 57 * This is the entry point for the application. 58 * 59 * This application simply creates an object that registers for incoming value 60 * updates for the POST code dbus object. 61 */ 62 int main(int argc, char* argv[]) 63 { 64 auto ListenBus = sdbusplus::bus::new_default(); 65 lpcsnoop::SnoopListen snoop(ListenBus, printPostcode); 66 67 while (true) 68 { 69 ListenBus.process_discard(); 70 ListenBus.wait(); 71 } 72 73 return 0; 74 } 75