61 {
62
63 out_msg->mutable_header()->set_timestamp_sec(
64 scan_msg->basetime() / 1000000000.0);
65 out_msg->mutable_header()->set_module_name(
66 scan_msg->header().module_name());
67 out_msg->mutable_header()->set_frame_id(scan_msg->header().frame_id());
68 out_msg->set_height(1);
69 out_msg->set_measurement_time(scan_msg->basetime() / 1000000000.0);
70 out_msg->mutable_header()->set_sequence_num(
71 scan_msg->header().sequence_num());
72 gps_base_usec_ = scan_msg->basetime();
73
74 const unsigned char *difop_ptr
75 = (const unsigned char *)scan_msg->difop_pkts(0).data().c_str();
76 uint8_t version_data = static_cast<uint8_t>(difop_ptr[1202]);
77
79 if (2 == version_data) {
80 for (int i = 0; i < 16; i++) {
81 uint16_t vert_angle = static_cast<uint16_t>(
82 difop_ptr[234 + 2 * i] * 256
83 + difop_ptr[234 + 2 * i + 1]);
84
85 if (vert_angle > 32767) {
86 vert_angle = vert_angle - 65535;
87 }
88
90 = (
static_cast<float>(vert_angle) / 100.f) *
DEG_TO_RAD;
95 > 1.5) {
97 }
98 } else {
100 }
105 > 1.5) {
107 }
108 } else {
110 }
111 }
113 }
114 } else {
115 for (int i = 0; i < 16; i++) {
116 uint16_t vert_angle = static_cast<uint16_t>(
117 difop_ptr[245 + 2 * i] * 256
118 + difop_ptr[245 + 2 * i + 1]);
119
120 if (vert_angle > 32767) {
121 vert_angle = vert_angle - 65535;
122 }
123
125 = (
static_cast<float>(vert_angle) / 100.f) *
DEG_TO_RAD;
126
131 > 1.5) {
133 }
134 } else {
136 }
141 > 1.5) {
143 }
144 } else {
146 }
147 }
149 }
150 }
151 }
152
153 size_t packets_size = scan_msg->firing_pkts_size();
154 packet_number_ = packets_size;
155 block_num = 0;
156
157 for (size_t i = 0; i < packets_size; ++i) {
158 Unpack(scan_msg->firing_pkts(static_cast<int>(i)), out_msg, i);
161 }
162
163 if (out_msg->point().empty()) {
164
166 }
167
168 out_msg->set_width(out_msg->point_size());
169}
optional bool config_vert