X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fcan_reader.cpp;h=f984c70a0efa0f9f2d5d5c5054e6a7ebad9e6445;hb=035493b81d5bb6d909de05e9a06a0f61588a35aa;hp=aab47b65e38625da3651124b4c58b11c437f37f2;hpb=ec95cbf8d430f9616eff050f510268f9901944b6;p=apps%2Fagl-service-can-low-level.git diff --git a/src/can_reader.cpp b/src/can_reader.cpp index aab47b65..f984c70a 100644 --- a/src/can_reader.cpp +++ b/src/can_reader.cpp @@ -16,20 +16,25 @@ * limitations under the License. */ -#include -#include +#include "can_reader.hpp" -#include +#include "low-can-binding.hpp" +#include "can-utils.hpp" -#include "can-utils.h" - -void can_reader(can_bus_t &can_bus) +void can_reader(can_bus_dev_t &can_bus_dev, can_bus_t& can_bus) { can_message_t can_message; - while(can_bus.is_running()) + while(can_bus_dev.is_running()) { - can_message.convert_from_canfd_frame(canbus.read()); - can_bus.insert_new_can_message(can_message); + std::unique_lock can_frame_lock(can_frame_mutex); + new_can_frame.wait(can_frame_lock); + can_message.convert_from_canfd_frame(can_bus_dev.read()); + can_frame_mutex.unlock(); + + std::lock_guard can_message_lock(can_message_mutex); + can_bus.push_new_can_message(can_message); + can_message_mutex.unlock(); + new_can_message.notify_one(); } } \ No newline at end of file