diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-04-26 00:19:18 +0200 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-04-27 01:03:34 +0200 |
commit | e00c07be2835dd082862730189c87baacbfbdbeb (patch) | |
tree | 01799010ff05c0ec69754bef0d4fde5e0ea5181c /CAN-binder/low-can-binding/can/can-bus-dev.cpp | |
parent | 3294f6fd9ad00d9412518b13b528ae14067cb3cf (diff) |
Reworked reading CAN devices from BCM socket.
Now reading thread hold in can_bus_t object instead of can_bus_dev_t and reading
happens using select().
Change-Id: Ib8cc68c4484679168519f3c0fa485fedd1616c74
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'CAN-binder/low-can-binding/can/can-bus-dev.cpp')
-rw-r--r-- | CAN-binder/low-can-binding/can/can-bus-dev.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/CAN-binder/low-can-binding/can/can-bus-dev.cpp b/CAN-binder/low-can-binding/can/can-bus-dev.cpp index df0c0d6..955e617 100644 --- a/CAN-binder/low-can-binding/can/can-bus-dev.cpp +++ b/CAN-binder/low-can-binding/can/can-bus-dev.cpp @@ -27,6 +27,7 @@ #include "can-message.hpp" #include "../low-can-binding.hpp" #include "canutil/write.h" +#include "../bitfield/bitfield.h" /// @brief Class constructor /// @@ -45,6 +46,9 @@ int can_bus_dev_t::get_index() const { return index_; } +utils::socketcan_t& can_bus_dev_t::get_socket() +{ + return can_socket_; } /// @brief Open the can socket and returning it @@ -125,13 +129,12 @@ int can_bus_dev_t::create_rx_filter(const can_signal_t& s) struct utils::canfd_bcm_msg bcm_msg; uint8_t bit_size = s.get_bit_size(); - float val = (float)exp2(bit_size); - uint64_t filter = eightbyte_encode_float(val, s.get_bit_position(), bit_size, s.get_factor(), s.get_offset()); + float val = (float)exp2(bit_size)-1; bcm_msg.msg_head.opcode = RX_SETUP; bcm_msg.msg_head.can_id = can_id; bcm_msg.msg_head.nframes = 1; - U64_DATA(&bcm_msg.frames[0]) = filter; + bitfield_encode_float(val, s.get_bit_position(), bit_size, s.get_factor(), s.get_offset(), bcm_msg.frames[0].data, CANFD_MAX_DLEN); if(can_socket_ << bcm_msg) return 0; |