Program Listing for File utilities.hpp

Return to documentation for file (/tmp/ws/src/myactuator_rmd/include/myactuator_rmd/can/utilities.hpp)

#ifndef MYACTUATOR_RMD__CAN__UTILITIES
#define MYACTUATOR_RMD__CAN__UTILITIES
#pragma once

#include <chrono>
#include <ostream>
#include <ratio>

#include <linux/can.h>
#include <sys/time.h>


std::ostream& operator << (std::ostream& os, struct ::can_frame const& frame) noexcept;

namespace myactuator_rmd {

  template <class Rep, class Period>
  [[nodiscard]]
  constexpr struct ::timeval toTimeval(std::chrono::duration<Rep, Period> const& duration) noexcept {
    auto const usec {std::chrono::duration_cast<std::chrono::duration<Rep, std::micro>>(duration)};
    struct ::timeval tv {};
    tv.tv_sec = static_cast<::time_t>(usec.count()/std::micro::den);
    tv.tv_usec = static_cast<long int>(usec.count())%std::micro::den;
    return tv;
  }

}

#endif // MYACTUATOR_RMD__CAN__UTILITIES