calculate and return the chassis.
157 {
158 chassis_.Clear();
159
160 Gem chassis_detail;
162
163
166 }
167
169 chassis_.set_error_code(chassis_error_code());
170
171
172 chassis_.set_engine_started(true);
173
174
175 if (chassis_detail.has_vehicle_speed_rpt_6f() &&
176 chassis_detail.vehicle_speed_rpt_6f().has_vehicle_speed()) {
177 chassis_.set_speed_mps(static_cast<float>(
178 chassis_detail.vehicle_speed_rpt_6f().vehicle_speed()));
179 } else {
180 chassis_.set_speed_mps(0);
181 }
182
183
184 chassis_.set_fuel_range_m(0);
185
186 if (chassis_detail.has_accel_rpt_68() &&
187 chassis_detail.accel_rpt_68().has_output_value()) {
188 chassis_.set_throttle_percentage(
189 static_cast<float>(chassis_detail.accel_rpt_68().output_value()));
190 } else {
191 chassis_.set_throttle_percentage(0);
192 }
193
194 if (chassis_detail.has_brake_rpt_6c() &&
195 chassis_detail.brake_rpt_6c().has_output_value()) {
196 chassis_.set_brake_percentage(
197 static_cast<float>(chassis_detail.brake_rpt_6c().output_value()));
198 } else {
199 chassis_.set_brake_percentage(0);
200 }
201
202
203 if (chassis_detail.has_shift_rpt_66() &&
204 chassis_detail.shift_rpt_66().has_output_value()) {
206
207 if (chassis_detail.shift_rpt_66().output_value() ==
210 }
211 if (chassis_detail.shift_rpt_66().output_value() ==
214 }
215 if (chassis_detail.shift_rpt_66().output_value() ==
218 }
219
220 chassis_.set_gear_location(gear_pos);
221 } else {
223 }
224
225
226
227 if (chassis_detail.has_steering_rpt_1_6e() &&
228 chassis_detail.steering_rpt_1_6e().has_output_value()) {
229 chassis_.set_steering_percentage(
230 static_cast<float>(chassis_detail.steering_rpt_1_6e().output_value() *
232 } else {
233 chassis_.set_steering_percentage(0);
234 }
235
236 if (chassis_detail.has_global_rpt_6a() &&
237 chassis_detail.global_rpt_6a().has_pacmod_status()) {
238 if (chassis_detail.global_rpt_6a().pacmod_status() ==
243 } else {
245 }
246 } else {
248 }
249
250
251
252
253 if (chassis_detail.has_light() &&
254 chassis_detail.light().has_turn_light_type() &&
257 chassis_.mutable_signal()->set_turn_signal(
259 } else if (chassis_detail.light().turn_light_type() ==
261 chassis_.mutable_signal()->set_turn_signal(
263 } else {
264 chassis_.mutable_signal()->set_turn_signal(
266 }
267 } else {
268 chassis_.mutable_signal()->set_turn_signal(
270 }
271
272
273
274 if (chassis_error_mask_) {
275 chassis_.set_chassis_error_mask(chassis_error_mask_);
276 }
277
278
282 chassis_.mutable_engage_advice()->set_advice(
284 } else {
285 chassis_.mutable_engage_advice()->set_advice(
287 chassis_.mutable_engage_advice()->set_reason(
288 "CANBUS not ready, firmware error or emergency button pressed!");
289 }
290
291 return chassis_;
292}
common::VehicleParam vehicle_params_
MessageManager< ::apollo::canbus::Gem > * message_manager_
virtual Chassis::DrivingMode driving_mode()
Globalcmd69 * set_clear_override(Global_cmd_69::Clear_overrideType clear_override)
optional float brake_percentage
optional bool parking_brake
optional float throttle_percentage
@ CLEAR_OVERRIDE_DON_T_CLEAR_ACTIVE_OVERRIDES
@ PACMOD_STATUS_CONTROL_ENABLED
optional double max_steer_angle