Apollo  6.0
Open source self driving car software
adc_motioncontrol1_10.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright 2018 The Apollo Authors. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *****************************************************************************/
16 
17 #pragma once
18 
19 #include "modules/canbus/proto/chassis_detail.pb.h"
21 
22 #include "gtest/gtest_prod.h"
23 
24 namespace apollo {
25 namespace canbus {
26 namespace transit {
27 
29  ::apollo::canbus::ChassisDetail> {
30  public:
31  static const int32_t ID;
32 
34 
35  uint32_t GetPeriod() const override;
36 
37  void UpdateData(uint8_t* data) override;
38 
39  void Reset() override;
40 
41  // config detail: {'description': 'Setpoint for steering wheel angle. Positive
42  // for CW', 'offset': 0.0, 'precision': -0.05, 'len': 16, 'name':
43  // 'ADC_CMD_SteerWheelAngle', 'is_signed_var': True, 'physical_range':
44  // '[-1638.4|1638.35]', 'bit': 27, 'type': 'double', 'order': 'intel',
45  // 'physical_unit': 'deg'}
47  double adc_cmd_steerwheelangle);
48 
49  // config detail: {'description': 'Select steering control mode', 'enum': {0:
50  // 'ADC_CMD_STEERINGCONTROLMODE_NONE', 1: 'ADC_CMD_STEERINGCONTROLMODE_ANGLE',
51  // 2: 'ADC_CMD_STEERINGCONTROLMODE_RESERVED_CURVATURE', 3:
52  // 'ADC_CMD_STEERINGCONTROLMODE_RESERVED'}, 'precision': 1.0, 'len': 2,
53  // 'name': 'ADC_CMD_SteeringControlMode', 'is_signed_var': False, 'offset':
54  // 0.0, 'physical_range': '[0|3]', 'bit': 4, 'type': 'enum', 'order': 'intel',
55  // 'physical_unit': ''}
57  Adc_motioncontrol1_10::Adc_cmd_steeringcontrolmodeType
58  adc_cmd_steeringcontrolmode);
59 
60  // config detail: {'description': '(Reserved) Control parking brake',
61  // 'offset': 0.0, 'precision': 1.0, 'len': 1, 'name': 'ADC_CMD_ParkingBrake',
62  // 'is_signed_var': False, 'physical_range': '[0|1]', 'bit': 53, 'type':
63  // 'bool', 'order': 'intel', 'physical_unit': 'T/F'}
64  Adcmotioncontrol110* set_adc_cmd_parkingbrake(bool adc_cmd_parkingbrake);
65 
66  // config detail: {'description': 'Transmission control - only used in direct
67  // longitudinal control', 'enum': {0: 'ADC_CMD_GEAR_P_PARK', 1:
68  // 'ADC_CMD_GEAR_D_DRIVE', 2: 'ADC_CMD_GEAR_N_NEUTRAL', 3:
69  // 'ADC_CMD_GEAR_R_REVERSE'}, 'precision': 1.0, 'len': 3, 'name':
70  // 'ADC_CMD_Gear', 'is_signed_var': False, 'offset': 0.0, 'physical_range':
71  // '[0|7]', 'bit': 50, 'type': 'enum', 'order': 'intel', 'physical_unit': ''}
73  Adc_motioncontrol1_10::Adc_cmd_gearType adc_cmd_gear);
74 
75  // config detail: {'description': 'Motion Control 1 checksum', 'offset': 0.0,
76  // 'precision': 1.0, 'len': 8, 'name': 'ADC_MotionControl1_Checksum',
77  // 'is_signed_var': False, 'physical_range': '[0|255]', 'bit': 56, 'type':
78  // 'int', 'order': 'intel', 'physical_unit': ''}
80  int adc_motioncontrol1_checksum);
81 
82  // config detail: {'description': 'Brake pressure for direct longitudinal
83  // control', 'offset': 0.0, 'precision': 0.0556, 'len': 11, 'name':
84  // 'ADC_CMD_BrakePercentage', 'is_signed_var': False, 'physical_range':
85  // '[0|113.8132]', 'bit': 6, 'type': 'double', 'order': 'intel',
86  // 'physical_unit': '%'}
88  double adc_cmd_brakepercentage);
89 
90  // config detail: {'description': 'Throttle pedal position percentage for
91  // direct longitudinal control', 'offset': 0.0, 'precision': 0.1, 'len': 10,
92  // 'name': 'ADC_CMD_ThrottlePosition', 'is_signed_var': False,
93  // 'physical_range': '[0|100]', 'bit': 17, 'type': 'double', 'order': 'intel',
94  // 'physical_unit': '%'}
96  double adc_cmd_throttleposition);
97 
98  // config detail: {'description': 'Motion control 1 Heartbeat counter',
99  // 'offset': 0.0, 'precision': 1.0, 'len': 2, 'name':
100  // 'ADC_MotionControl1_Counter', 'is_signed_var': False, 'physical_range':
101  // '[0|3]', 'bit': 54, 'type': 'int', 'order': 'intel', 'physical_unit': ''}
103  int adc_motioncontrol1_counter);
104 
105  // config detail: {'description': 'Request from ADC to LLC for autonomy',
106  // 'enum': {0: 'ADC_CMD_AUTONOMYREQUEST_AUTONOMY_NOT_REQUESTED', 1:
107  // 'ADC_CMD_AUTONOMYREQUEST_AUTONOMY_REQUESTED', 2:
108  // 'ADC_CMD_AUTONOMYREQUEST_RESERVED0', 3:
109  // 'ADC_CMD_AUTONOMYREQUEST_RESERVED1'}, 'precision': 1.0, 'len': 2, 'name':
110  // 'ADC_CMD_AutonomyRequest', 'is_signed_var': False, 'offset': 0.0,
111  // 'physical_range': '[0|3]', 'bit': 0, 'type': 'enum', 'order': 'intel',
112  // 'physical_unit': ''}
114  Adc_motioncontrol1_10::Adc_cmd_autonomyrequestType
115  adc_cmd_autonomyrequest);
116 
117  // config detail: {'description': 'Select longitudinal control mode', 'enum':
118  // {0: 'ADC_CMD_LONGITUDINALCONTROLMODE_NONE', 1:
119  // 'ADC_CMD_LONGITUDINALCONTROLMODE_RESERVED_VELOCITY_AND_ACCELERATION', 2:
120  // 'ADC_CMD_LONGITUDINALCONTROLMODE_RESERVED_FORCE', 3:
121  // 'ADC_CMD_LONGITUDINALCONTROLMODE_DIRECT_THROTTLE_BRAKE'}, 'precision': 1.0,
122  // 'len': 2, 'name': 'ADC_CMD_LongitudinalControlMode', 'is_signed_var':
123  // False, 'offset': 0.0, 'physical_range': '[0|3]', 'bit': 2, 'type': 'enum',
124  // 'order': 'intel', 'physical_unit': ''}
126  Adc_motioncontrol1_10::Adc_cmd_longitudinalcontrolmodeType
127  adc_cmd_longitudinalcontrolmode);
128 
129  FRIEND_TEST(adc_motioncontrol1_10Test, part1);
130  FRIEND_TEST(adc_motioncontrol1_10Test, part2);
131  FRIEND_TEST(adc_motioncontrol1_10Test, part3);
132  FRIEND_TEST(adc_motioncontrol1_10Test, part4);
133 
134  private:
135  // config detail: {'description': 'Setpoint for steering wheel angle. Positive
136  // for CW', 'offset': 0.0, 'precision': -0.05, 'len': 16, 'name':
137  // 'ADC_CMD_SteerWheelAngle', 'is_signed_var': True, 'physical_range':
138  // '[-1638.4|1638.35]', 'bit': 27, 'type': 'double', 'order': 'intel',
139  // 'physical_unit': 'deg'}
140  void set_p_adc_cmd_steerwheelangle(uint8_t* data,
141  double adc_cmd_steerwheelangle);
142 
143  // config detail: {'description': 'Select steering control mode', 'enum': {0:
144  // 'ADC_CMD_STEERINGCONTROLMODE_NONE', 1: 'ADC_CMD_STEERINGCONTROLMODE_ANGLE',
145  // 2: 'ADC_CMD_STEERINGCONTROLMODE_RESERVED_CURVATURE', 3:
146  // 'ADC_CMD_STEERINGCONTROLMODE_RESERVED'}, 'precision': 1.0, 'len': 2,
147  // 'name': 'ADC_CMD_SteeringControlMode', 'is_signed_var': False, 'offset':
148  // 0.0, 'physical_range': '[0|3]', 'bit': 4, 'type': 'enum', 'order': 'intel',
149  // 'physical_unit': ''}
150  void set_p_adc_cmd_steeringcontrolmode(
151  uint8_t* data, Adc_motioncontrol1_10::Adc_cmd_steeringcontrolmodeType
152  adc_cmd_steeringcontrolmode);
153 
154  // config detail: {'description': '(Reserved) Control parking brake',
155  // 'offset': 0.0, 'precision': 1.0, 'len': 1, 'name': 'ADC_CMD_ParkingBrake',
156  // 'is_signed_var': False, 'physical_range': '[0|1]', 'bit': 53, 'type':
157  // 'bool', 'order': 'intel', 'physical_unit': 'T/F'}
158  void set_p_adc_cmd_parkingbrake(uint8_t* data, bool adc_cmd_parkingbrake);
159 
160  // config detail: {'description': 'Transmission control - only used in direct
161  // longitudinal control', 'enum': {0: 'ADC_CMD_GEAR_P_PARK', 1:
162  // 'ADC_CMD_GEAR_D_DRIVE', 2: 'ADC_CMD_GEAR_N_NEUTRAL', 3:
163  // 'ADC_CMD_GEAR_R_REVERSE'}, 'precision': 1.0, 'len': 3, 'name':
164  // 'ADC_CMD_Gear', 'is_signed_var': False, 'offset': 0.0, 'physical_range':
165  // '[0|7]', 'bit': 50, 'type': 'enum', 'order': 'intel', 'physical_unit': ''}
166  void set_p_adc_cmd_gear(uint8_t* data,
167  Adc_motioncontrol1_10::Adc_cmd_gearType adc_cmd_gear);
168 
169  // config detail: {'description': 'Motion Control 1 checksum', 'offset': 0.0,
170  // 'precision': 1.0, 'len': 8, 'name': 'ADC_MotionControl1_Checksum',
171  // 'is_signed_var': False, 'physical_range': '[0|255]', 'bit': 56, 'type':
172  // 'int', 'order': 'intel', 'physical_unit': ''}
173  void set_p_adc_motioncontrol1_checksum(uint8_t* data,
174  int adc_motioncontrol1_checksum);
175 
176  // config detail: {'description': 'Brake pressure for direct longitudinal
177  // control', 'offset': 0.0, 'precision': 0.0556, 'len': 11, 'name':
178  // 'ADC_CMD_BrakePercentage', 'is_signed_var': False, 'physical_range':
179  // '[0|113.8132]', 'bit': 6, 'type': 'double', 'order': 'intel',
180  // 'physical_unit': '%'}
181  void set_p_adc_cmd_brakepercentage(uint8_t* data,
182  double adc_cmd_brakepercentage);
183 
184  // config detail: {'description': 'Throttle pedal position percentage for
185  // direct longitudinal control', 'offset': 0.0, 'precision': 0.1, 'len': 10,
186  // 'name': 'ADC_CMD_ThrottlePosition', 'is_signed_var': False,
187  // 'physical_range': '[0|100]', 'bit': 17, 'type': 'double', 'order': 'intel',
188  // 'physical_unit': '%'}
189  void set_p_adc_cmd_throttleposition(uint8_t* data,
190  double adc_cmd_throttleposition);
191 
192  // config detail: {'description': 'Motion control 1 Heartbeat counter',
193  // 'offset': 0.0, 'precision': 1.0, 'len': 2, 'name':
194  // 'ADC_MotionControl1_Counter', 'is_signed_var': False, 'physical_range':
195  // '[0|3]', 'bit': 54, 'type': 'int', 'order': 'intel', 'physical_unit': ''}
196  void set_p_adc_motioncontrol1_counter(uint8_t* data,
197  int adc_motioncontrol1_counter);
198 
199  // config detail: {'description': 'Request from ADC to LLC for autonomy',
200  // 'enum': {0: 'ADC_CMD_AUTONOMYREQUEST_AUTONOMY_NOT_REQUESTED', 1:
201  // 'ADC_CMD_AUTONOMYREQUEST_AUTONOMY_REQUESTED', 2:
202  // 'ADC_CMD_AUTONOMYREQUEST_RESERVED0', 3:
203  // 'ADC_CMD_AUTONOMYREQUEST_RESERVED1'}, 'precision': 1.0, 'len': 2, 'name':
204  // 'ADC_CMD_AutonomyRequest', 'is_signed_var': False, 'offset': 0.0,
205  // 'physical_range': '[0|3]', 'bit': 0, 'type': 'enum', 'order': 'intel',
206  // 'physical_unit': ''}
207  void set_p_adc_cmd_autonomyrequest(
208  uint8_t* data, Adc_motioncontrol1_10::Adc_cmd_autonomyrequestType
209  adc_cmd_autonomyrequest);
210 
211  // config detail: {'description': 'Select longitudinal control mode', 'enum':
212  // {0: 'ADC_CMD_LONGITUDINALCONTROLMODE_NONE', 1:
213  // 'ADC_CMD_LONGITUDINALCONTROLMODE_RESERVED_VELOCITY_AND_ACCELERATION', 2:
214  // 'ADC_CMD_LONGITUDINALCONTROLMODE_RESERVED_FORCE', 3:
215  // 'ADC_CMD_LONGITUDINALCONTROLMODE_DIRECT_THROTTLE_BRAKE'}, 'precision': 1.0,
216  // 'len': 2, 'name': 'ADC_CMD_LongitudinalControlMode', 'is_signed_var':
217  // False, 'offset': 0.0, 'physical_range': '[0|3]', 'bit': 2, 'type': 'enum',
218  // 'order': 'intel', 'physical_unit': ''}
219  void set_p_adc_cmd_longitudinalcontrolmode(
220  uint8_t* data, Adc_motioncontrol1_10::Adc_cmd_longitudinalcontrolmodeType
221  adc_cmd_longitudinalcontrolmode);
222 
223  private:
224  double adc_cmd_steerwheelangle_;
225  Adc_motioncontrol1_10::Adc_cmd_steeringcontrolmodeType
226  adc_cmd_steeringcontrolmode_;
227  bool adc_cmd_parkingbrake_;
228  Adc_motioncontrol1_10::Adc_cmd_gearType adc_cmd_gear_;
229  int adc_motioncontrol1_checksum_;
230  double adc_cmd_brakepercentage_;
231  double adc_cmd_throttleposition_;
232  int adc_motioncontrol1_counter_;
233  Adc_motioncontrol1_10::Adc_cmd_autonomyrequestType adc_cmd_autonomyrequest_;
234  Adc_motioncontrol1_10::Adc_cmd_longitudinalcontrolmodeType
235  adc_cmd_longitudinalcontrolmode_;
236 };
237 
238 } // namespace transit
239 } // namespace canbus
240 } // namespace apollo
Adcmotioncontrol110 * set_adc_motioncontrol1_checksum(int adc_motioncontrol1_checksum)
Adcmotioncontrol110 * set_adc_cmd_parkingbrake(bool adc_cmd_parkingbrake)
Adcmotioncontrol110 * set_adc_cmd_autonomyrequest(Adc_motioncontrol1_10::Adc_cmd_autonomyrequestType adc_cmd_autonomyrequest)
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
Definition: adc_motioncontrol1_10.h:28
This is the base class of protocol data.
Definition: protocol_data.h:44
Adcmotioncontrol110 * set_adc_cmd_steerwheelangle(double adc_cmd_steerwheelangle)
Adcmotioncontrol110 * set_adc_cmd_brakepercentage(double adc_cmd_brakepercentage)
Adcmotioncontrol110 * set_adc_cmd_throttleposition(double adc_cmd_throttleposition)
void UpdateData(uint8_t *data) override
Adcmotioncontrol110 * set_adc_cmd_gear(Adc_motioncontrol1_10::Adc_cmd_gearType adc_cmd_gear)
static const int32_t ID
Definition: adc_motioncontrol1_10.h:31
Adcmotioncontrol110 * set_adc_motioncontrol1_counter(int adc_motioncontrol1_counter)
The class of ProtocolData.
FRIEND_TEST(adc_motioncontrol1_10Test, part1)
Adcmotioncontrol110 * set_adc_cmd_steeringcontrolmode(Adc_motioncontrol1_10::Adc_cmd_steeringcontrolmodeType adc_cmd_steeringcontrolmode)
Adcmotioncontrol110 * set_adc_cmd_longitudinalcontrolmode(Adc_motioncontrol1_10::Adc_cmd_longitudinalcontrolmodeType adc_cmd_longitudinalcontrolmode)