remove usage of time point init and fini that are unnecessary now

switch rcl_time_point_get_now to be rcl_clock_get_now
This commit is contained in:
Tully Foote 2017-10-10 18:09:03 -07:00
parent d273703e09
commit 7b26e19900
3 changed files with 17 additions and 92 deletions

View file

@ -237,43 +237,6 @@ RCL_WARN_UNUSED
rcl_ret_t
rcl_system_clock_fini(rcl_clock_t * clock);
/// Initialize a time point using the clock.
/**
* This function will initialize the time_point using the clock
* as a reference.
* If the clock is null it will use the system default clock.
*
* This will allocate all necessary internal structures, and initialize variables.
* The clock may be of types `RCL_ROS_TIME`, `RCL_STEADY_TIME`, or
* `RCL_SYSTEM_TIME`.
*
* \param[in] time_point the handle to the clock which is being initialized.
* \param[in] clock_type the type of the clock that clock will be used for reference.
* \return `RCL_RET_OK` if the last call time was retrieved successfully, or
* \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or
* \return `RCL_RET_ERROR` an unspecified error occur.
*/
RCL_PUBLIC
RCL_WARN_UNUSED
rcl_ret_t
rcl_time_point_init(rcl_time_point_t * time_point, rcl_clock_type_t * clock_type);
/// Finalize a time_point
/**
* Finalize the time_point such that it is ready for deallocation.
*
* This will deallocate all necessary internal structures, and clean up any variables.
*
* \param[in] time_point the handle to the time_point which is being finalized.
* \return `RCL_RET_OK` if the last call time was retrieved successfully, or
* \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or
* \return `RCL_RET_ERROR` an unspecified error occur.
*/
RCL_PUBLIC
RCL_WARN_UNUSED
rcl_ret_t
rcl_time_point_fini(rcl_time_point_t * time_point);
/// Initialize a duration using the clock.
/**
* This function will initialize the duration using the clock as a reference.
@ -344,7 +307,7 @@ rcl_difference_times(
RCL_PUBLIC
RCL_WARN_UNUSED
rcl_ret_t
rcl_time_point_get_now(rcl_clock_t * clock, rcl_time_point_t * time_point);
rcl_clock_get_now(rcl_clock_t * clock, rcl_time_point_t * time_point);
/// Enable the ROS time abstraction override.
@ -396,7 +359,7 @@ RCL_PUBLIC
RCL_WARN_UNUSED
rcl_ret_t
rcl_is_enabled_ros_time_override(
rcl_time_source_t * time_source, bool * is_enabled);
rcl_clock_t * time_source, bool * is_enabled);
/// Set the current time for this `RCL_ROS_TIME` time source.
/**
@ -415,7 +378,7 @@ RCL_PUBLIC
RCL_WARN_UNUSED
rcl_ret_t
rcl_set_ros_time_override(
rcl_time_source_t * time_source, rcl_time_point_value_t time_value);
rcl_clock_t * time_source, rcl_time_point_value_t time_value);
#if __cplusplus
}

View file

@ -188,24 +188,6 @@ rcl_system_clock_fini(rcl_clock_t * clock)
return RCL_RET_OK;
}
rcl_ret_t
rcl_time_point_init(rcl_time_point_t * time_point, rcl_clock_type_t * clock_type)
{
RCL_CHECK_ARGUMENT_FOR_NULL(time_point, RCL_RET_INVALID_ARGUMENT, rcl_get_default_allocator());
RCL_CHECK_ARGUMENT_FOR_NULL(clock_type, RCL_RET_INVALID_ARGUMENT, rcl_get_default_allocator());
time_point->clock_type = *clock_type;
return RCL_RET_OK;
}
rcl_ret_t
rcl_time_point_fini(rcl_time_point_t * time_point)
{
RCL_CHECK_ARGUMENT_FOR_NULL(time_point, RCL_RET_INVALID_ARGUMENT, rcl_get_default_allocator());
(void)time_point;
return RCL_RET_OK;
}
rcl_ret_t
rcl_duration_init(rcl_duration_t * duration, rcl_clock_type_t * clock_type)
{
@ -238,17 +220,18 @@ rcl_difference_times(
if (finish->nanoseconds < start->nanoseconds) {
rcl_time_point_value_t intermediate = start->nanoseconds - finish->nanoseconds;
delta->nanoseconds = -1 * (int) intermediate;
} else {
delta->nanoseconds = (int)(finish->nanoseconds - start->nanoseconds);
}
delta->nanoseconds = (int)(finish->nanoseconds - start->nanoseconds);
return RCL_RET_OK;
}
rcl_ret_t
rcl_time_point_get_now(rcl_clock_t * clock, rcl_time_point_t * time_point)
rcl_clock_get_now(rcl_clock_t * clock, rcl_time_point_t * time_point)
{
// TODO(tfoote) switch to use external time source
RCL_CHECK_ARGUMENT_FOR_NULL(time_point, RCL_RET_INVALID_ARGUMENT, rcl_get_default_allocator());
if (time_point->clock_type && clock->get_now) {
if (clock->type && clock->get_now) {
return clock->get_now(clock->data,
&(time_point->nanoseconds));
}

View file

@ -82,12 +82,10 @@ TEST_F(CLASSNAME(TestTimeFixture, RMW_IMPLEMENTATION), test_rcl_ros_time_set_ove
ret = rcl_is_enabled_ros_time_override(ros_clock, &is_enabled);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
EXPECT_EQ(is_enabled, false);
ret = rcl_time_point_init(&query_now, &(ros_clock->type));
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
assert_no_malloc_begin();
assert_no_free_begin();
// Check for normal operation (not allowed to alloc).
ret = rcl_time_point_get_now(ros_clock, &query_now);
ret = rcl_clock_get_now(ros_clock, &query_now);
assert_no_malloc_end();
assert_no_realloc_end();
assert_no_free_end();
@ -95,7 +93,7 @@ TEST_F(CLASSNAME(TestTimeFixture, RMW_IMPLEMENTATION), test_rcl_ros_time_set_ove
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
EXPECT_NE(query_now.nanoseconds, 0u);
// Compare to std::chrono::system_clock time (within a second).
ret = rcl_time_point_get_now(ros_clock, &query_now);
ret = rcl_clock_get_now(ros_clock, &query_now);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
{
std::chrono::system_clock::time_point now_sc = std::chrono::system_clock::now();
@ -119,7 +117,7 @@ TEST_F(CLASSNAME(TestTimeFixture, RMW_IMPLEMENTATION), test_rcl_ros_time_set_ove
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
EXPECT_EQ(is_enabled, false);
// get real
ret = rcl_time_point_get_now(ros_clock, &query_now);
ret = rcl_clock_get_now(ros_clock, &query_now);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
{
std::chrono::system_clock::time_point now_sc = std::chrono::system_clock::now();
@ -137,7 +135,7 @@ TEST_F(CLASSNAME(TestTimeFixture, RMW_IMPLEMENTATION), test_rcl_ros_time_set_ove
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
EXPECT_EQ(is_enabled, true);
// get sim
ret = rcl_time_point_get_now(ros_clock, &query_now);
ret = rcl_clock_get_now(ros_clock, &query_now);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
EXPECT_EQ(query_now.nanoseconds, set_point);
// disable
@ -148,7 +146,7 @@ TEST_F(CLASSNAME(TestTimeFixture, RMW_IMPLEMENTATION), test_rcl_ros_time_set_ove
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
EXPECT_EQ(is_enabled, false);
// get real
ret = rcl_time_point_get_now(ros_clock, &query_now);
ret = rcl_clock_get_now(ros_clock, &query_now);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
{
std::chrono::system_clock::time_point now_sc = std::chrono::system_clock::now();
@ -172,19 +170,11 @@ TEST_F(CLASSNAME(TestTimeFixture, RMW_IMPLEMENTATION), test_rcl_init_for_clock_a
ret = rcl_ros_clock_init(&source);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
rcl_time_point_t a_time;
ret = rcl_time_point_init(&a_time, &(source.type));
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
rcl_clock_t * ros_clock =
reinterpret_cast<rcl_clock_t *>(calloc(1, sizeof(rcl_clock_t)));
rcl_ret_t retval = rcl_ros_clock_init(ros_clock);
EXPECT_EQ(retval, RCL_RET_OK) << rcl_get_error_string_safe();
rcl_time_point_t default_time;
ret = rcl_time_point_init(&default_time, &(ros_clock->type));
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
// assert_no_malloc_begin();
// assert_no_free_begin();
// // Do stuff in here
@ -205,10 +195,6 @@ TEST_F(CLASSNAME(TestTimeFixture, RMW_IMPLEMENTATION), test_rcl_init_for_clock_a
// const int k_tolerance_ms = 1000;
// EXPECT_LE(llabs(now_diff), RCL_MS_TO_NS(k_tolerance_ms)) << "system_clock differs";
// }
ret = rcl_time_point_fini(&a_time);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
ret = rcl_ros_clock_fini(&source);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
}
TEST(CLASSNAME(rcl_time, RMW_IMPLEMENTATION), clock_validation) {
@ -285,16 +271,16 @@ TEST(CLASSNAME(rcl_time, RMW_IMPLEMENTATION), rcl_time_difference) {
rcl_ret_t retval = rcl_ros_clock_init(ros_clock);
EXPECT_EQ(retval, RCL_RET_OK) << rcl_get_error_string_safe();
EXPECT_TRUE(ros_clock != nullptr);
EXPECT_TRUE(ros_clock->data != nullptr);
EXPECT_EQ(ros_clock->type, RCL_ROS_TIME);
rcl_ret_t ret;
rcl_time_point_t a, b;
ret = rcl_time_point_init(&a, &(ros_clock->type));
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
ret = rcl_time_point_init(&b, &(ros_clock->type));
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
a.nanoseconds = 1000;
b.nanoseconds = 2000;
a.clock_type = RCL_ROS_TIME;
b.clock_type = RCL_ROS_TIME;
rcl_duration_t d;
ret = rcl_duration_init(&d, &(ros_clock->type));
@ -310,10 +296,6 @@ TEST(CLASSNAME(rcl_time, RMW_IMPLEMENTATION), rcl_time_difference) {
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
EXPECT_EQ(d.nanoseconds, -1000);
EXPECT_EQ(d.clock_type, RCL_ROS_TIME);
rcl_time_point_t e;
ret = rcl_time_point_init(&e, &(ros_clock->type));
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
}
static bool pre_callback_called = false;
@ -340,9 +322,6 @@ TEST(CLASSNAME(rcl_time, RMW_IMPLEMENTATION), rcl_time_update_callbacks) {
rcl_ret_t ret;
rcl_time_point_value_t set_point = 1000000000ull;
ret = rcl_time_point_init(&query_now, &(ros_clock->type));
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
// set callbacks
ros_clock->pre_update = pre_callback;
ros_clock->post_update = post_callback;
@ -352,7 +331,7 @@ TEST(CLASSNAME(rcl_time, RMW_IMPLEMENTATION), rcl_time_update_callbacks) {
EXPECT_FALSE(post_callback_called);
// Query it to do something different. no changes expected
ret = rcl_time_point_get_now(ros_clock, &query_now);
ret = rcl_clock_get_now(ros_clock, &query_now);
EXPECT_EQ(ret, RCL_RET_OK) << rcl_get_error_string_safe();
EXPECT_FALSE(pre_callback_called);