5 #include <gtest/gtest.h>
11 TEST(GlobalTimeSyncSlave, Basic)
31 ASSERT_LE(0, gtss.
start());
39 uavcan::protocol::GlobalTimeSync gts;
40 gts.previous_transmission_timestamp_usec = 0;
42 gts.previous_transmission_timestamp_usec = master_clock.
utc;
44 ASSERT_EQ(0, slave_clock.
utc);
45 ASSERT_EQ(1000000, master_clock.
utc);
46 std::cout <<
"Master mono=" << master_clock.
monotonic <<
" utc=" << master_clock.
utc << std::endl;
47 std::cout <<
"Slave mono=" << slave_clock.
monotonic <<
" utc=" << slave_clock.
utc << std::endl;
57 gts.previous_transmission_timestamp_usec = master_clock.
utc;
59 ASSERT_EQ(1000000, slave_clock.
utc);
60 ASSERT_EQ(1000000, master_clock.
utc);
61 std::cout <<
"Master mono=" << master_clock.
monotonic <<
" utc=" << master_clock.
utc << std::endl;
62 std::cout <<
"Slave mono=" << slave_clock.
monotonic <<
" utc=" << slave_clock.
utc << std::endl;
64 master_clock.
utc += 1000000;
65 slave_clock.
utc += 1000000;
75 gts.previous_transmission_timestamp_usec = master_clock.
utc;
77 ASSERT_EQ(2000000, slave_clock.
utc);
78 ASSERT_EQ(2000000, master_clock.
utc);
80 master_clock.
utc += 1000000;
81 slave_clock.
utc += 1000000;
91 gts.previous_transmission_timestamp_usec = master_clock.
utc;
93 ASSERT_EQ(3000000, slave_clock.
utc);
94 ASSERT_EQ(3000000, master_clock.
utc);
96 master_clock.
utc += 1000000;
97 slave_clock.
utc += 1000000;
98 ASSERT_EQ(4000000, slave_clock.
utc);
99 ASSERT_EQ(4000000, master_clock.
utc);
113 TestNode master2_node(master2_can, master2_clock, 8);
120 gts.previous_transmission_timestamp_usec = 0;
122 gts.previous_transmission_timestamp_usec = master2_clock.
utc;
124 ASSERT_EQ(4000000, slave_clock.
utc);
125 ASSERT_EQ(100, master2_clock.
utc);
127 master2_clock.
utc += 1000000;
137 ASSERT_EQ(100, slave_clock.
utc);
145 gts.previous_transmission_timestamp_usec = 99999999;
149 ASSERT_EQ(100, slave_clock.
utc);
153 ASSERT_EQ(100, slave_clock.
utc);
161 slave_clock.
advance(100000000);
168 #if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN) || (BYTE_ORDER != LITTLE_ENDIAN)
169 # error "This test cannot be executed on this platform"
176 frame.setStartOfTransfer(
true);
177 frame.setEndOfTransfer(
true);
178 EXPECT_EQ(7,
frame.setPayload(
reinterpret_cast<uint8_t*
>(&usec), 7));
186 ASSERT_TRUE(
frame.compile(can_frame));
191 TEST(GlobalTimeSyncSlave, Validation)
200 slave_can.
ifaces.at(i).enable_utc_timestamping =
true;
208 ASSERT_LE(0, gtss.
start());
211 ASSERT_EQ(0, slave_clock.
utc);
226 ASSERT_EQ(1000, slave_clock.
utc);
231 ASSERT_EQ(1000, slave_clock.
utc);
232 std::cout << slave_clock.
monotonic << std::endl;
242 ASSERT_EQ(1000, slave_clock.
utc);
243 std::cout << slave_clock.
monotonic << std::endl;
254 ASSERT_EQ(3000, slave_clock.
utc);
255 std::cout << slave_clock.
monotonic << std::endl;
276 ASSERT_EQ(5000, slave_clock.
utc);
277 std::cout << slave_clock.
monotonic << std::endl;
281 TEST(GlobalTimeSyncSlave, Suppression)
290 slave_can.
ifaces.at(i).enable_utc_timestamping =
true;
298 ASSERT_LE(0, gtss.
start());
299 ASSERT_EQ(0, slave_clock.
utc);
313 ASSERT_EQ(0, slave_clock.
utc);