#include /**< std::cout std::cerr std::endl */ #include /**< std::string */ #include /**< std::shared_ptr */ #include "dbcc/signal_delegate.h" #include "dbcc/dbc_iterator.h" #include "dbcc/signal_processor.h" const std::string usage = "This parser is meant to be used via CLi at the moment\n" "\t./parser \n"; class MyDelegate : public ad::dbcc::SignalDecodeDelegate { virtual void onDecoded(uint32_t msgId, const std::string &signalName, double pv, void */* userData */) { std::cout << "msg: #0x" << std::hex << msgId << std::dec << ", " << signalName << " -> pv: " << pv << std::endl; } }; int main(int argc, char *argv[]) { if (argc < 2) { std::cout << usage << std::endl; return 0; } ad::dbcc::DbcIterator iter(argv[1]); for (auto msg : iter) { std::cout << "msg: " << msg.name() << std::endl; } std::shared_ptr delegate = std::make_shared(); uint8_t data[8] = { 0 }; data[0] = 0x01; data[1] = 0xA8; uint8_t data1[2] = { 0x40, 0x0 }; ad::dbcc::SignalProcessor sp(iter); sp.registerDelegate(578, "ACCAccReqValHSC2", delegate); sp.registerDelegate(498, "SysBPMHSC2", delegate); sp.registerDelegate(498, "SysBPMEnbdHSC2", delegate); sp.decodeMessage(578, data, 8); sp.decodeMessage(498, data1, 2); std::cout << "Keep the order stable" << std::endl; for (auto msg : iter) { std::cout << "msg: " << msg.name() << std::endl; } // Unpacked value: -5.1 return 0; }