nmealib 0.0.4
NMEA 0183/NMEA 2000 parsing library
Loading...
Searching...
No Matches
nmea2000Factory.cpp
Go to the documentation of this file.
2
3#include "messageRegistry.hpp"
4
5namespace nmealib {
6namespace nmea2000 {
7
8std::unique_ptr<Message2000> Nmea2000Factory::create(const std::string& raw, Message::TimePoint ts) {
9 auto baseMessage = Message2000::create(raw, ts);
10 if (!baseMessage) {
11 return nullptr;
12 }
13
14 std::uint32_t pgn = baseMessage->getPgn();
15
16 // Dispatch through the message registry
17 // The registry was populated with all known message types at library initialization
18 return MessageRegistry::instance().create(pgn, std::move(baseMessage));
19}
20
21} // namespace nmea2000
22} // namespace nmealib
std::chrono::system_clock::time_point TimePoint
Definition message.h:30
static std::unique_ptr< Message2000 > create(std::string raw, TimePoint ts=std::chrono::system_clock::now())
Protected factory — parses "CANID:data" (and variant formats) into a Message2000.
Definition nmea2000.cpp:109
static MessageRegistry & instance()
std::unique_ptr< Message2000 > create(std::uint32_t pgn, std::unique_ptr< Message2000 > baseMessage)
static std::unique_ptr< Message2000 > create(const std::string &raw, Message::TimePoint ts=std::chrono::system_clock::now())
Create a Message2000 from a raw CAN frame string.