X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=CAN-binder%2Flow-can-binding%2Fbinding%2Flow-can-cb.hpp;h=ad3f74fed8fba0757e41ea231dd96f11bdd91fd6;hb=e9b00c3af0c469726e32755715a69395ad1d3718;hp=1608db7d5a88b54db3b1efd180e7d0fc9879c97b;hpb=1f4eb8c5562bf5c0bc6ebd1b35977cd71d9b3a83;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 1608db7d..ad3f74fe 100644 --- a/CAN-binder/low-can-binding/binding/low-can-cb.hpp +++ b/CAN-binder/low-can-binding/binding/low-can-cb.hpp @@ -15,7 +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 @@ -23,33 +30,27 @@ struct event_filter_t float frequency; float min; float max; + event_filter_t() : frequency{NAN}, min{NAN}, max{NAN} {} }; class low_can_subscription_t { private: int index_; + struct afb_event event_; /// Signal part - std::string sig_name_; - std::string bus_name_; - uint32_t can_id_; - uint8_t bit_position_; /*!< bitPosition_ - The starting bit of the signal in its CAN message (assuming - * non-inverted bit numbering, i.e. the most significant bit of - * each byte is 0) */ - uint8_t bit_size_; /*!< bit_size_ - The width of the bit field in the CAN message. */ - float factor_; /*!< factor_ - The final value will be multiplied by this factor. Use 1 if you - * don't need a factor. */ - float offset_; /*!< offset_ - The final value will be added to this offset. Use 0 if you - * don't need an offset. */ + std::shared_ptr can_signal_; + std::shared_ptr diagnostic_message_; /// Filtering part - struct event_filter_t event_filter_ = {-1.0, -1.0, -1.0}; + struct event_filter_t event_filter_; utils::socketcan_bcm_t socket_; public: low_can_subscription_t(); low_can_subscription_t(struct event_filter_t event_filter); + low_can_subscription_t(struct event_filter_t event_filter, std::shared_ptr diagnostic_message); low_can_subscription_t(const low_can_subscription_t& s) = delete; low_can_subscription_t(low_can_subscription_t&& s); @@ -57,16 +58,19 @@ public: explicit operator bool() const; int get_index() const; - const std::string get_sig_name() const; + struct afb_event& get_event(); + const std::shared_ptr get_can_signal() const; + const std::string get_name() 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); int create_rx_filter(); - int create_rx_filter(const std::string& bus_name, const std::string& sig_name, uint32_t can_id, uint8_t bit_position, uint8_t bit_size, float factor, float offset); + int create_rx_filter(std::shared_ptr sig); };