X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=CAN-binder%2Flow-can-binding%2Fbinding%2Flow-can-cb.hpp;h=0efde63af10b214dd2696d2e9d1c8345dbe29add;hb=6ed34a503ac6a32be4a06721b9797e7d94ba8e22;hp=6dc2221da7b4f1e31efcd99afbb52ea47ec998bb;hpb=69922a959e9c21055e0d0e782bb936c477f0da02;p=apps%2Fagl-service-can-low-level.git diff --git a/CAN-binder/low-can-binding/binding/low-can-cb.hpp b/CAN-binder/low-can-binding/binding/low-can-cb.hpp index 6dc2221d..0efde63a 100644 --- a/CAN-binder/low-can-binding/binding/low-can-cb.hpp +++ b/CAN-binder/low-can-binding/binding/low-can-cb.hpp @@ -15,11 +15,14 @@ * limitations under the License. */ + #pragma once + #include #include #include #include "../can/can-signals.hpp" +#include "../diagnostic/diagnostic-message.hpp" #include "../utils/socketcan-bcm.hpp" struct event_filter_t @@ -34,9 +37,11 @@ class low_can_subscription_t { private: int index_; + struct afb_event event_; /// Signal part std::shared_ptr can_signal_; + std::vector > diagnostic_message_; /// Filtering part struct event_filter_t event_filter_; @@ -47,22 +52,34 @@ public: low_can_subscription_t(struct event_filter_t event_filter); low_can_subscription_t(const low_can_subscription_t& s) = delete; low_can_subscription_t(low_can_subscription_t&& s); + ~low_can_subscription_t(); low_can_subscription_t& operator=(const low_can_subscription_t& s); explicit operator bool() const; int get_index() const; + struct afb_event& get_event(); const std::shared_ptr get_can_signal() const; - const std::string get_sig_name() const; + const std::shared_ptr get_diagnostic_message(uint32_t pid) const; + const std::vector > get_diagnostic_message() const; + const std::shared_ptr get_diagnostic_message(const std::string& name) const; + const std::string get_name() const; + const std::string get_name(uint32_t pid) const; float get_frequency() const; float get_min() const; float get_max() const; utils::socketcan_bcm_t& get_socket(); + void set_event(struct afb_event event); void set_frequency(float freq); void set_min(float min); void set_max(float max); + struct utils::simple_bcm_msg make_bcm_head(uint32_t can_id, uint32_t flags, const struct timeval& timeout, const struct timeval& frequency_thinning) const; + void add_bcm_frame(const struct can_frame& cfd, struct utils::simple_bcm_msg& bcm_msg) const; + int open_socket(); int create_rx_filter(); int create_rx_filter(std::shared_ptr sig); + int create_rx_filter(std::shared_ptr sig); + int create_rx_filter(utils::simple_bcm_msg& bcm_msg); };