From 8c1df02d734676f79807e3a4682fb96ea88c5cb5 Mon Sep 17 00:00:00 2001 From: Arthur Guyader Date: Mon, 16 Dec 2019 10:13:01 +0100 Subject: low_can_subscription: Add msg_def and create_rx for message This commit adds message_definition variable to subscribe to message and not signals. And the function that init rx_filter for message. Also patch the error message Change-Id: I98b0b4dc8fec6ccef6e103fcb8aae136f708aa16 Signed-off-by: Arthur Guyader Signed-off-by: Romain Forlot --- low-can-binding/binding/low-can-subscription.cpp | 40 +++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'low-can-binding/binding/low-can-subscription.cpp') diff --git a/low-can-binding/binding/low-can-subscription.cpp b/low-can-binding/binding/low-can-subscription.cpp index 6cfcb718..99f209be 100644 --- a/low-can-binding/binding/low-can-subscription.cpp +++ b/low-can-binding/binding/low-can-subscription.cpp @@ -280,6 +280,11 @@ std::shared_ptr low_can_subscription_t::get_socket() return socket_; } +std::shared_ptr low_can_subscription_t::get_message_definition() +{ + return message_; +} + /** * @brief Setter for the frequency of the event_filter * @@ -355,6 +360,10 @@ void low_can_subscription_t::set_signal(std::shared_ptr signal) signal_ = signal; } +void low_can_subscription_t::set_message_definition(std::shared_ptr message) +{ + message_ = message; +} /// @brief Based upon which object is a subscribed CAN signal or diagnostic message /// it will open the socket with the required CAN bus device name. @@ -607,6 +616,35 @@ int low_can_subscription_t::create_rx_filter_can(low_can_subscription_t &subscri return create_rx_filter_bcm(subscription, bcm_msg); } + +int low_can_subscription_t::create_rx_filter(std::shared_ptr msg) +{ + std::shared_ptr signal_message = + std::make_shared(signal_t{msg->get_name(), + 0, + msg->get_length() * 8, + 1.00000f, + 0.00000f, + 0, + 0, + frequency_clock_t(0.00000f), + true, + false, + {}, + true, + nullptr, + nullptr, + false, + std::make_pair(false, 0), + static_cast(0), + -1, + ""}); + + signal_message->set_parent(msg); + return create_rx_filter(signal_message); +} + + /** * @brief Create the good socket to read message * depending on the signal @@ -626,7 +664,7 @@ int low_can_subscription_t::create_rx_filter(std::shared_ptr sig) else if(sig->get_message()->is_j1939()) return low_can_subscription_t::create_rx_filter_j1939(*this, sig); #endif - AFB_ERROR("Signal can't be j1939 and isotp"); + AFB_ERROR("Signal can't be created (check config)"); return -1; } -- cgit 1.2.3-korg