#include <cstdint>
#include <string>
+#include <vector>
+#include <memory>
-/// @brief A parent wrapper for a particular set of CAN messages and associated
-/// CAN buses(e.g. a vehicle or program).
+class can_signal_t;
+class can_message_definition_t;
+class diagnostic_message_t;
+
+/// @brief A parent wrapper for a particular set of CAN messages and diagnostic messages
+/// (e.g. a vehicle or program).
class can_message_set_t
{
private:
uint8_t index_; /// < A numerical ID for the message set, ideally the index in an array for fast lookup
const std::string name_; /// < The name of the message set.
- uint8_t can_bus_count_; /// < The number of CAN buses defined for this message set.
- uint16_t can_message_count_; /// < The number of CAN messages (across all buses) defined for this message set.
- uint16_t can_signal_count_; /// < The number of CAN signals (across all messages) defined for this message set.
- uint16_t can_command_count_; /// < The number of CanCommmands defined for this message set.
- uint16_t obd2_signal_count_; /// < The number of obd2 signals defined for this message set.
+ std::vector<std::shared_ptr<can_message_definition_t> > can_messages_definition_; ///< Vector holding all message definition handled by this message set.
+ std::vector<std::shared_ptr<diagnostic_message_t> > diagnostic_messages_; ///< Vector holding all diagnostics messages from JSON signals description file. First vector map to message set
public:
can_message_set_t(
uint8_t index,
const std::string& name,
- uint8_t can_bus_count,
- short unsigned int can_message_count,
- short unsigned int can_signal_count,
- short unsigned int can_command_count,
- short unsigned int obd2_signal_count);
+ const std::vector<std::shared_ptr<can_message_definition_t> >& can_messages_definition,
+ const std::vector<std::shared_ptr<diagnostic_message_t> >& diagnostic_messages);
+ std::vector<std::shared_ptr<can_message_definition_t> >& get_can_message_definition();
+ std::vector<std::shared_ptr<can_signal_t> > get_all_can_signals() const;
+ std::vector<std::shared_ptr<diagnostic_message_t> >& get_diagnostic_messages();
};