Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert functions between duration and ignition::time #85

Merged
merged 2 commits into from
Sep 14, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions include/ignition/msgs/Utility.hh
Original file line number Diff line number Diff line change
Expand Up @@ -147,11 +147,11 @@ namespace ignition
IGNITION_MSGS_VISIBLE
float Convert(const msgs::Float &_m);

/// \brief Convert a msgs::Time to a std::chrono::steady_clock::time_point
/// \brief Convert a msgs::Time to a std::chrono::steady_clock::duration
/// \param[in] _time The message to convert
/// \return A std::chrono::steady_clock::time_point object
/// \return A std::chrono::steady_clock::duration object
IGNITION_MSGS_VISIBLE
std::chrono::steady_clock::time_point Convert(const msgs::Time &_time);
std::chrono::steady_clock::duration Convert(const msgs::Time &_time);

/// \brief Convert a ignition::math::Vector3d to a msgs::Vector3d
/// \param[in] _v The vector to convert
Expand Down Expand Up @@ -249,13 +249,13 @@ namespace ignition
IGNITION_MSGS_VISIBLE
msgs::Float Convert(const float &_f);

/// \brief Convert a std::chrono::steady_clock::time_point to a msgs::Time
/// \param[in] _time_point The std::chrono::system_clock::time_poin to
/// \brief Convert a std::chrono::steady_clock::duration to a msgs::Time
/// \param[in] _time_point The std::chrono::system_clock::duration to
/// convert
/// \return A msgs::Time object
IGNITION_MSGS_VISIBLE
msgs::Time Convert(
const std::chrono::steady_clock::time_point &_time_point);
const std::chrono::steady_clock::duration &_time_point);

/// \brief Convert a string to a msgs::Joint::Type enum.
/// \param[in] _str Joint type string.
Expand Down
9 changes: 5 additions & 4 deletions src/Utility.cc
Original file line number Diff line number Diff line change
Expand Up @@ -206,9 +206,10 @@ namespace ignition
}

/////////////////////////////////////////////////
std::chrono::steady_clock::time_point Convert(const msgs::Time &_time)
std::chrono::steady_clock::duration Convert(const msgs::Time &_time)
{
return math::secNsecToTimePoint(_time.sec(), _time.nsec());;
return std::chrono::seconds(_time.sec()) +
std::chrono::nanoseconds(_time.nsec());
}

/////////////////////////////////////////////////
Expand Down Expand Up @@ -346,10 +347,10 @@ namespace ignition
}

/////////////////////////////////////////////////
msgs::Time Convert(const std::chrono::steady_clock::time_point &_timePoint)
msgs::Time Convert(const std::chrono::steady_clock::duration &_time_point)
{
std::pair<uint64_t, uint64_t> timeSecAndNsecs =
ignition::math::timePointToSecNsec(_timePoint);
ignition::math::durationToSecNsec(_time_point);
msgs::Time msg;
msg.set_sec(timeSecAndNsecs.first);
msg.set_nsec(timeSecAndNsecs.second);
Expand Down
10 changes: 5 additions & 5 deletions src/Utility_TEST.cc
Original file line number Diff line number Diff line change
Expand Up @@ -319,16 +319,16 @@ TEST(UtilityTest, ConvertFloat)
/////////////////////////////////////////////////
TEST(UtilityTest, ConvertTimePoint)
{
std::chrono::steady_clock::time_point timePoint =
math::secNsecToTimePoint(0, 0);
std::chrono::steady_clock::duration timePoint =
std::chrono::steady_clock::duration::zero();
msgs::Time msg = msgs::Convert(timePoint);
EXPECT_EQ(0, msg.sec());
EXPECT_EQ(0, msg.nsec());

std::chrono::steady_clock::time_point s = msgs::Convert(msg);
EXPECT_EQ(s, math::secNsecToTimePoint(0, 0));
std::chrono::steady_clock::duration s = msgs::Convert(msg);
EXPECT_EQ(s, std::chrono::steady_clock::duration::zero());

timePoint = math::secNsecToTimePoint(200, 999);
timePoint = std::chrono::seconds(200) + std::chrono::nanoseconds(999);
msg = msgs::Convert(timePoint);
EXPECT_EQ(200, msg.sec());
EXPECT_EQ(999, msg.nsec());
Expand Down