return socket_;
}
-std::shared_ptr<can_message_definition_t> can_signal_t::get_message() const
+can_message_definition_t* can_signal_t::get_message() const
{
return parent_;
}
return last_value_;
}
-void can_signal_t::set_parent(std::shared_ptr<can_message_definition_t> parent)
+void can_signal_t::set_parent(can_message_definition_t* parent)
{
parent_ = parent;
}
last_value_ = val;
}
-/// @brief Create a RX_SETUP receive job using the BCM socket.
+/// @brief Create a RX_SETUP receive job used by the BCM socket.
///
/// @return 0 if ok else -1
int can_signal_t::create_rx_filter()
memset(&cfd, 0, sizeof(cfd));
memset(&bcm_msg.msg_head, 0, sizeof(bcm_msg.msg_head));
float val = (float)(1 << bit_size_)-1;
- float freq = frequency_.frequency_to_period();
- if(freq <= 0)
- freq = 0.000001f;
+ struct timeval freq = frequency_.get_timeval_from_period();
bcm_msg.msg_head.opcode = RX_SETUP;
bcm_msg.msg_head.can_id = can_id;
bcm_msg.msg_head.flags = SETTIMER|RX_NO_AUTOTIMER;
- bcm_msg.msg_head.ival2.tv_sec = long(freq);
- bcm_msg.msg_head.ival2.tv_usec = (freq - (long)freq) * 1000000;
+ bcm_msg.msg_head.ival2.tv_sec = freq.tv_sec ;
+ bcm_msg.msg_head.ival2.tv_usec = freq.tv_usec;
bcm_msg.msg_head.nframes = 1;
bitfield_encode_float(val,
bit_position_,
return 0;
return -1;
}
-
-void can_signal_t::read_socket()
-{
- can_message_t msg;
- can_bus_t& cbm = configuration_t::instance().get_can_bus_manager();
- socket_ >> msg;
- std::lock_guard<std::mutex> can_message_lock(cbm.get_can_message_mutex());
- { cbm.push_new_can_message(msg); }
- cbm.get_new_can_message_cv().notify_one();
-}
\ No newline at end of file