openxc-utils : No send string but send array_object for signals
[apps/agl-service-can-low-level.git] / low-can-binding / can / message-set.hpp
index 4af97fa..68fc385 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015, 2016, 2017 "IoT.bzh"
+ * Copyright (C) 2015, 2016, 2017, 2018, 2019 "IoT\.bzh"
  * Author "Romain Forlot" <romain.forlot@iot.bzh>
  * Author "Loïc Collignon" <loic.collignon@iot.bzh>
  *
@@ -27,6 +27,10 @@ class signal_t;
 class message_definition_t;
 class diagnostic_message_t;
 
+typedef std::vector<std::shared_ptr<signal_t>> vect_ptr_signal_t;
+typedef std::vector<std::shared_ptr<message_definition_t>> vect_ptr_msg_def_t;
+typedef std::vector<std::shared_ptr<diagnostic_message_t>> vect_ptr_diag_msg_t;
+
 /// @brief A parent wrapper for a particular set of CAN messages and diagnostic messages
 /// (e.g. a vehicle or program).
 class message_set_t
@@ -34,17 +38,22 @@ class message_set_t
 private:
        uint8_t index_; /// < A numerical ID for the message set, ideally the index is in an array for fast lookup
        const std::string name_; /// < The name of the message set.
-       std::vector<std::shared_ptr<message_definition_t> > messages_definition_; ///< Vector holding all message definitions handled by the 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
+       vect_ptr_msg_def_t messages_definition_; ///< Vector holding all message definitions handled by the message set.
+       vect_ptr_diag_msg_t diagnostic_messages_; ///< Vector holding all diagnostics messages from JSON signals description file. First vector map to message set
 
 public:
        message_set_t(
                        uint8_t index,
                        const std::string& name,
-                       const std::vector<std::shared_ptr<message_definition_t> >& messages_definition,
-                       const std::vector<std::shared_ptr<diagnostic_message_t> >& diagnostic_messages);
+                       const vect_ptr_msg_def_t& messages_definition,
+                       const vect_ptr_diag_msg_t& diagnostic_messages);
+
+       int add_message_definition(std::shared_ptr<message_definition_t> msg_def);
+       int add_diagnostic_message(std::shared_ptr<diagnostic_message_t> diag_msg);
+
+       vect_ptr_msg_def_t& get_messages_definition();
+       vect_ptr_signal_t get_all_signals() const;
+       vect_ptr_diag_msg_t& get_diagnostic_messages();
 
-       std::vector<std::shared_ptr<message_definition_t>>& get_messages_definition();
-       std::vector<std::shared_ptr<signal_t>> get_all_signals() const;
-       std::vector<std::shared_ptr<diagnostic_message_t>>& get_diagnostic_messages();
+       uint8_t get_index() const;
 };