aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CAN-binder/low-can-binding/configuration.cpp40
-rw-r--r--CAN-binder/low-can-binding/configuration.hpp1
-rw-r--r--CAN-binder/low-can-binding/low-can-binding.cpp5
3 files changed, 20 insertions, 26 deletions
diff --git a/CAN-binder/low-can-binding/configuration.cpp b/CAN-binder/low-can-binding/configuration.cpp
index 8a50cbc4..a94809f7 100644
--- a/CAN-binder/low-can-binding/configuration.cpp
+++ b/CAN-binder/low-can-binding/configuration.cpp
@@ -87,6 +87,24 @@ void configuration_t::set_active_message_set(uint8_t id)
active_message_set_ = id;
}
+
+diagnostic_message_t* configuration_t::get_diagnostic_message(std::string message_name) const
+{
+ std::vector<diagnostic_message_t*> found;
+ configuration_t::instance().find_diagnostic_messages(build_DynamicField(message_name), found);
+ if(! found.empty())
+ return found.front();
+ return nullptr;
+}
+
+DiagnosticRequest* configuration_t::get_request_from_diagnostic_message(std::string message_name) const
+{
+ diagnostic_message_t* diag_msg = get_diagnostic_message(message_name);
+ if( diag_msg != nullptr && diag_msg->get_supported())
+ return new DiagnosticRequest(diag_msg->build_diagnostic_request());
+ return nullptr;
+}
+
/// @brief return diagnostic messages name found searching through diagnostic messages list.
///
/// @param[in] key - can contain numeric or string value in order to search against
@@ -110,28 +128,6 @@ void configuration_t::find_diagnostic_messages(const openxc_DynamicField &key, s
DEBUG(binder_interface, "find_diagnostic_messages: Found %d signal(s)", (int)found_signals.size());
}
-diagnostic_message_t* configuration_t::get_diagnostic_message(std::string message_name) const
-{
- std::vector<diagnostic_message_t*> found;
- configuration_t::instance().find_diagnostic_messages(build_DynamicField(message_name), found);
- if(! found.empty())
- return found.front();
- return nullptr;
-}
-
-DiagnosticRequest* configuration_t::get_request_from_diagnostic_message(diagnostic_message_t* diag_msg) const
-{
- return new DiagnosticRequest(diag_msg->build_diagnostic_request());
-}
-
-DiagnosticRequest* configuration_t::get_request_from_diagnostic_message(std::string message_name) const
-{
- diagnostic_message_t* diag_msg = get_diagnostic_message(message_name);
- if( diag_msg != nullptr)
- return new DiagnosticRequest(diag_msg->build_diagnostic_request());
- return nullptr;
-}
-
/// @brief return signals name found searching through CAN signals list.
///
/// @param[in] key - can contain numeric or string value in order to search against
diff --git a/CAN-binder/low-can-binding/configuration.hpp b/CAN-binder/low-can-binding/configuration.hpp
index 535ab8de..cbb5ac2d 100644
--- a/CAN-binder/low-can-binding/configuration.hpp
+++ b/CAN-binder/low-can-binding/configuration.hpp
@@ -86,7 +86,6 @@ class configuration_t
void find_diagnostic_messages(const openxc_DynamicField &key, std::vector<diagnostic_message_t*>& found_signals);
diagnostic_message_t* get_diagnostic_message(std::string message_name) const;
- DiagnosticRequest* get_request_from_diagnostic_message(diagnostic_message_t* diag_msg) const;
DiagnosticRequest* get_request_from_diagnostic_message(std::string message_name) const;
void find_can_signals(const openxc_DynamicField &key, std::vector<can_signal_t*>& found_signals);
diff --git a/CAN-binder/low-can-binding/low-can-binding.cpp b/CAN-binder/low-can-binding/low-can-binding.cpp
index 07b3f1ea..6f361af2 100644
--- a/CAN-binder/low-can-binding/low-can-binding.cpp
+++ b/CAN-binder/low-can-binding/low-can-binding.cpp
@@ -141,13 +141,12 @@ static int subscribe_unsubscribe_signals(struct afb_req request, bool subscribe,
int ret;
if (active_diagnostic_request_t::is_diagnostic_signal(sig))
{
- diagnostic_message_t* diag_msg = configuration_t::instance().get_diagnostic_message(sig);
- DiagnosticRequest* diag_req = configuration_t::instance().get_request_from_diagnostic_message(diag_msg);
+ DiagnosticRequest* diag_req = configuration_t::instance().get_request_from_diagnostic_message(sig);
// If the requested diagnostic message isn't supported by the car then unssubcribe.
// no matter what we want, worse case will be a fail unsubscription but at least we don't
// poll a PID for nothing.
- if(diag_msg->get_supported() && subscribe)
+ if(diag_req != nullptr && subscribe)
{
float frequency = diag_msg->get_frequency();
subscribe = configuration_t::instance().get_diagnostic_manager().add_recurring_request(