GrabBag/SDK/Lidar/rslidar/rs_driver/test/decoder_rs16_test.cpp

57 lines
1.4 KiB
C++

#include <gtest/gtest.h>
#include <rs_driver/driver/decoder/decoder_RS16.hpp>
#include <rs_driver/msg/point_cloud_msg.hpp>
#include <rs_driver/utility/dbg.hpp>
using namespace robosense::lidar;
typedef PointXYZIRT PointT;
typedef PointCloudT<PointT> PointCloud;
TEST(TestDecoderRS16, getEchoMode)
{
ASSERT_TRUE(DecoderRS16<PointCloud>::getEchoMode(0) == RSEchoMode::ECHO_DUAL);
ASSERT_TRUE(DecoderRS16<PointCloud>::getEchoMode(1) == RSEchoMode::ECHO_SINGLE);
ASSERT_TRUE(DecoderRS16<PointCloud>::getEchoMode(2) == RSEchoMode::ECHO_SINGLE);
}
TEST(TestDecoderRS16, RS16DifopPkt2Adapter)
{
uint8_t pitch_cali[48] =
{
0x00, 0x3a, 0x98, // 15.000
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x3a, 0x98, // 15.000
};
RS16DifopPkt src;
src.rpm = 0;
src.fov = {0};
src.return_mode = 0;
src.sn = {0};
src.eth = {0};
src.version = {0};
src.status = {0};
memcpy (src.pitch_cali, pitch_cali, 48);
AdapterDifopPkt dst;
RS16DifopPkt2Adapter(src, dst);
ASSERT_EQ(dst.vert_angle_cali[0].sign, 1);
ASSERT_EQ(ntohs(dst.vert_angle_cali[0].value), 150);
ASSERT_EQ(dst.vert_angle_cali[8].sign, 0);
ASSERT_EQ(ntohs(dst.vert_angle_cali[8].value), 150);
ASSERT_EQ(dst.horiz_angle_cali[0].sign, 0);
ASSERT_EQ(ntohs(dst.horiz_angle_cali[0].value), 0);
}