nmealib 0.0.4
NMEA 0183/NMEA 2000 parsing library
Loading...
Searching...
No Matches
PGN128001.h
Go to the documentation of this file.
1#pragma once
2
3#include "nmealib/nmea2000.h"
5
6namespace nmealib {
7namespace nmea2000 {
8
26class PGN128001 : public Message2000 {
27public:
28 // Public constructor from parameters
29 PGN128001(uint8_t sequenceId,
30 Acceleration longitudinalAcceleration,
31 Acceleration transverseAcceleration,
32 Acceleration verticalAcceleration,
33 Byte reserved = Byte::fromRaw(255)) noexcept;
34
35 // Accessory constructors
36 PGN128001(const PGN128001&) = default;
37 PGN128001& operator=(const PGN128001&) = default;
38 PGN128001(PGN128001&&) noexcept = default;
39 PGN128001& operator=(PGN128001&&) noexcept = default;
40
41 // Destructor
42 ~PGN128001() override = default;
43
44 // Polymorphic copy
45 std::unique_ptr<nmealib::Message> clone() const override;
46
47 // Getters for PGN 128001 specific fields
49 uint8_t getSequenceId() const noexcept;
56
57 float getLongitudinalAccelerationG() const noexcept;
58 float getTransverseAccelerationG() const noexcept;
59 float getVerticalAccelerationG() const noexcept;
60
61 // Overridden methods
62 std::string getStringContent(bool verbose) const noexcept override;
63 using Message2000::operator==;
64 bool operator==(const PGN128001& other) const noexcept;
65
66private:
67 uint8_t sequenceId_{0};
68 Acceleration longitudinalAcceleration_;
69 Acceleration transverseAcceleration_;
70 Acceleration verticalAcceleration_;
71 Byte reserved_;
72
73 PGN128001() = delete;
74
75 // Private constructor used by the factory method
76 PGN128001(Message2000 baseMessage,
77 uint8_t sequenceId,
78 Acceleration longitudinalAcceleration,
79 Acceleration transverseAcceleration,
80 Acceleration verticalAcceleration,
81 Byte reserved) noexcept;
82
83 // Private internal factory
84 static std::unique_ptr<PGN128001> create(std::unique_ptr<Message2000> baseMessage);
85 static std::string rawPayload(uint8_t sequenceId,
86 Acceleration longitudinalAcceleration,
87 Acceleration transverseAcceleration,
88 Acceleration verticalAcceleration,
89 Byte reserved);
90
91 friend class Nmea2000Factory;
92 friend class MessageRegistry;
93};
94
95} // namespace nmea2000
96} // namespace nmealib
Defines a base class for NMEA messages, encapsulating common properties and behaviors.
Definition message.h:14
static constexpr DataType fromRaw(RawType raw) noexcept
Constructs from a raw value.
Definition dataTypes.h:97
Represents a generic NMEA 2000 message encapsulating a CAN frame.
Definition nmea2000.h:62
Strongly-typed class representing PGN 128001 - Vessel Acceleration.
Definition PGN128001.h:26
Acceleration getLongitudinalAcceleration() const noexcept
std::string getStringContent(bool verbose) const noexcept override
Returns a human-readable string representation of the message.
Definition PGN128001.cpp:67
PGN128001(const PGN128001 &)=default
float getTransverseAccelerationG() const noexcept
PGN128001(PGN128001 &&) noexcept=default
float getLongitudinalAccelerationG() const noexcept
Acceleration getTransverseAcceleration() const noexcept
Acceleration getVerticalAcceleration() const noexcept
uint8_t getSequenceId() const noexcept
std::unique_ptr< nmealib::Message > clone() const override
Creates a polymorphic deep copy of this Message2000.
Definition PGN128001.cpp:63
PGN128001 & operator=(const PGN128001 &)=default
float getVerticalAccelerationG() const noexcept