diag-mng: Change way to initialize the diag bus
authorRomain Forlot <romain.forlot@iot.bzh>
Sat, 9 Nov 2019 12:21:43 +0000 (13:21 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Sat, 9 Nov 2019 12:21:43 +0000 (13:21 +0100)
This was kind of hardcoded and now, it is initialized by a configuration key
of the controller configuration JSON file.

Change-Id: I6e24c28781c08bd8e99de33f16b5ae10d1a6a9a1
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
low-can-binding/binding/application.hpp
low-can-binding/binding/low-can-subscription.cpp
low-can-binding/diagnostic/diagnostic-manager.cpp
low-can-binding/diagnostic/diagnostic-manager.hpp

index 30e2183..d6d0f67 100644 (file)
@@ -65,8 +65,6 @@ class application_t
 
                std::map<std::string, std::shared_ptr<low_can_subscription_t> >& get_can_devices();
 
-               const std::string get_diagnostic_bus() const;
-
                diagnostic_manager_t& get_diagnostic_manager() ;
 
                uint8_t get_active_message_set() const;
index 8c314af..e75bddf 100644 (file)
@@ -370,7 +370,7 @@ int low_can_subscription_t::open_socket(low_can_subscription_t &subscription, co
                        if( subscription.signal_ )
                                ret = subscription.socket_->open(subscription.signal_->get_message()->get_bus_device_name());
                        else if(! subscription.diagnostic_message_.empty())
-                               ret = subscription.socket_->open(application_t::instance().get_diagnostic_bus());
+                               ret = subscription.socket_->open(application_t::instance().get_diagnostic_manager().get_bus_name());
                        else if(! bus_name.empty())
                                ret = subscription.socket_->open(bus_name);
 
index 91dba47..f3c513c 100644 (file)
@@ -56,16 +56,19 @@ diagnostic_manager_t::~diagnostic_manager_t()
 ///
 /// this will initialize DiagnosticShims and cancel all active requests
 ///  if there are any.
-bool diagnostic_manager_t::initialize()
+bool diagnostic_manager_t::initialize(std::string diagnostic_bus)
 {
-       // Mandatory to set the bus before intialize shims.
-       bus_ = application_t::instance().get_diagnostic_bus();
-
-       init_diagnostic_shims();
-       reset();
+       if (! diagnostic_bus.empty())
+       {
+               bus_ = diagnostic_bus;
+               init_diagnostic_shims();
+               reset();
 
-       initialized_ = true;
-       AFB_DEBUG("Diagnostic Manager initialized");
+               AFB_DEBUG("Diagnostic Manager initialized");
+               initialized_ = true;
+               return initialized_;
+       }
+       AFB_ERROR("Diagnostic Manager missing its bus name in the config");
        return initialized_;
 }
 
index 784bcd7..c0a8255 100644 (file)
@@ -33,7 +33,7 @@
 #define DIAGNOSTIC_RESPONSE_ARBITRATION_ID_OFFSET 0x8
 
 ///
-/// @brief The core structure for running the diagnostics module of the binding.
+/// @brief The binding structure for running the diagnostics module of the binding.
 ///
 /// This stores details about the active requests and shims required to connect
 /// the diagnostics library to the CAN device.
@@ -54,11 +54,12 @@ private:
 
        static bool shims_send(const uint32_t arbitration_id, const uint8_t* data, const uint8_t size);
        static void shims_logger(const char* m, ...);
+
 public:
        diagnostic_manager_t();
        ~diagnostic_manager_t();
 
-       bool initialize();
+       bool initialize(std::string diagnostic_bus);
 
        const std::string get_bus_name() const;
        const std::string get_bus_device_name() const;