X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=low-can-binding%2Fbinding%2Fapplication.hpp;h=c445c899ce841329da98976d38c9725ee88cf8f1;hb=HEAD;hp=5fa647827c84949caa05369a97aee8462365e544;hpb=32e25cbca210a359b09768537b6f443fe90a3070;p=apps%2Fagl-service-can-low-level.git diff --git a/low-can-binding/binding/application.hpp b/low-can-binding/binding/application.hpp index 5fa64782..c445c899 100644 --- a/low-can-binding/binding/application.hpp +++ b/low-can-binding/binding/application.hpp @@ -23,19 +23,21 @@ #include #include "../can/can-bus.hpp" -#include "../can/can-message-set.hpp" -#include "../can/can-signals.hpp" +#include "../can/message-set.hpp" +#include "../can/signals.hpp" #include "../diagnostic/diagnostic-manager.hpp" - -#include "low-can-hat.hpp" +#ifdef USE_FEATURE_J1939 + #include "../utils/socketcan-j1939/socketcan-j1939-data.hpp" + #include "../utils/socketcan-j1939/socketcan-j1939-addressclaiming.hpp" +#endif /// -/// @brief Class representing a configuration attached to the binding. +/// @brief Class represents a configuration attached to the binding. /// -/// It regroups all needed objects instance from other class -/// that will be used along the binding life. It gets a global vision -/// on which signals are implemented for that binding. -/// Here, it is only the definition of the class with predefined accessors +/// It regroups all object instances from other classes +/// that will be used through the binding life. It receives a global vision +/// on which signals are implemented for that binding. +/// Here, only the definition of the class is given with predefined accessors /// methods used in the binding. /// /// It will be the reference point to needed objects. @@ -43,41 +45,60 @@ class application_t { private: - can_bus_t can_bus_manager_; ///< instanciate the CAN bus manager. It's the one in charge of initialize the CAN bus devices. + can_bus_t can_bus_manager_; ///< instanciate the CAN bus manager. It's responsible of initializing the CAN bus devices. diagnostic_manager_t diagnostic_manager_; ///< Diagnostic manager use to manage diagnostic message communication. uint8_t active_message_set_ = 0; ///< Which is the active message set ? Default to 0. - std::vector > can_message_set_; ///< Vector holding all message set from JSON signals description file + std::vector > message_set_; ///< Vector holding all message set from JSON signals description file + std::map > can_devices_; ///< Map containing all independant opened CAN sockets, key is the socket int value. +#ifdef USE_FEATURE_J1939 + std::shared_ptr subscription_address_claiming_; ///< Subscription holding the socketcan J1939 which is in charge of handling the address claiming protocol + //std::shared_ptr socket_address_claiming_; +#endif application_t(); ///< Private constructor with implementation generated by the AGL generator. + void set_parents(std::shared_ptr new_message_set); public: static application_t& instance(); can_bus_t& get_can_bus_manager(); - const std::string get_diagnostic_bus() const; + std::map >& get_can_devices(); diagnostic_manager_t& get_diagnostic_manager() ; uint8_t get_active_message_set() const; - std::vector > get_can_message_set(); + int add_message_set(std::shared_ptr new_message_set); + + std::vector > get_message_set(); - std::vector > get_all_can_signals(); + vect_ptr_signal_t get_all_signals(); - std::vector >& get_diagnostic_messages(); + vect_ptr_diag_msg_t get_diagnostic_messages(); const std::vector& get_signals_prefix() const; - std::vector >& get_can_message_definition(); + vect_ptr_msg_def_t get_messages_definition(); + + std::shared_ptr get_message_definition(uint32_t id); uint32_t get_signal_id(diagnostic_message_t& sig) const; - uint32_t get_signal_id(can_signal_t& sig) const; + uint32_t get_signal_id(signal_t& sig) const; + + bool is_engine_on(); void set_active_message_set(uint8_t id); +#ifdef USE_FEATURE_J1939 + std::shared_ptr get_socket_address_claiming(); + + std::shared_ptr get_subscription_address_claiming(); + + void set_subscription_address_claiming(std::shared_ptr new_subscription); +#endif /* /// TODO: implement this function as method into can_bus class /// @brief Pre initialize actions made before CAN bus initialization @@ -94,11 +115,6 @@ class application_t /// TODO: implement this function as method into can_bus class /// @brief Check if the device is connected to an active CAN bus, i.e. it's received a message in the recent past. /// @return true if a message was received on the CAN bus within CAN_ACTIVE_TIMEOUT_S seconds. - void logBusStatistics(can_bus_dev_t* buses, const int busCount); - /// TODO: implement this function as method into can_bus class - /// @brief Log transfer statistics about all active CAN buses to the debug log. - /// @param[in] buses An array of active CAN buses. bool isBusActive(can_bus_dev_t* bus); */ }; -