25using ::apollo::drivers::canbus::Byte;
32 static const uint32_t PERIOD = 10 * 1000;
37 set_steering_angle_p(data, steering_angle_);
38 set_enable_p(data, steering_enable_);
39 set_clear_driver_override_flag_p(data, clear_driver_override_flag_);
40 set_ignore_driver_override_p(data, ignore_driver_override_);
41 set_steering_angle_speed_p(data, steering_angle_speed_);
42 set_watchdog_counter_p(data, watchdog_counter_);
43 set_disable_audible_warning_p(data, disable_audible_warning_);
47 steering_angle_ = 0.0;
48 steering_enable_ =
false;
49 clear_driver_override_flag_ =
false;
50 ignore_driver_override_ =
false;
51 steering_angle_speed_ = 0.0;
52 watchdog_counter_ = 0;
53 disable_audible_warning_ =
false;
57 steering_angle_ = angle;
62 steering_enable_ =
true;
67 steering_enable_ =
false;
72 steering_angle_speed_ = angle_speed;
79void Steering64::set_steering_angle_p(uint8_t *data,
double angle) {
80 angle = ProtocolData::BoundedValue(-470.0, 470.0, angle);
81 int32_t x =
static_cast<int32_t
>(angle / 0.100000);
89 t =
static_cast<uint8_t
>(x & 0xFF);
90 Byte frame_low(data + 0);
91 frame_low.set_value(t, 0, 8);
94 t =
static_cast<uint8_t
>(x & 0xFF);
95 Byte frame_high(data + 1);
96 frame_high.set_value(t, 0, 8);
99void Steering64::set_enable_p(uint8_t *bytes,
bool enable) {
100 Byte frame(bytes + 2);
108void Steering64::set_clear_driver_override_flag_p(uint8_t *bytes,
bool clear) {
109 Byte frame(bytes + 2);
117void Steering64::set_ignore_driver_override_p(uint8_t *bytes,
bool ignore) {
118 Byte frame(bytes + 2);
126void Steering64::set_steering_angle_speed_p(uint8_t *data,
double angle_speed) {
127 angle_speed = ProtocolData::BoundedValue(0.0, 500.0, angle_speed);
128 int32_t x =
static_cast<int32_t
>(angle_speed / 2.000000);
130 Byte frame(data + 3);
131 frame.set_value(
static_cast<uint8_t
>(x), 0, 8);
134void Steering64::set_watchdog_counter_p(uint8_t *data, int32_t count) {
135 count = ProtocolData::BoundedValue(0, 255, count);
136 Byte frame(data + 7);
137 frame.set_value(
static_cast<uint8_t
>(count), 0, 8);
140void Steering64::set_disable_audible_warning_p(uint8_t *data,
bool disable) {
141 Byte frame(data + 2);
one of the protocol data of lincoln vehicle
virtual void UpdateData(uint8_t *data)
update the data
Steering64 * set_enable()
set steering request enable to true
virtual void Reset()
reset the private variables
virtual uint32_t GetPeriod() const
get the data period
Steering64 * set_steering_angle_speed(double angle_speed)
set steering angle speed
Steering64 * set_steering_angle(double angle)
set steering angle
Steering64 * set_disable()
set steering request disable to true
the class of Steering64 (for lincoln vehicle)